<h1>Блокировки Роскомнадзора 2026: что сломалось в Linux, AI и API — и как с этим жить</h1>
"Дисклаймер"
Статья написана на основе открытых источников: публикаций СМИ, официальных заявлений Роскомнадзора и Минцифры, отраслевых отчётов и комментариев экспертов.<br />
Все источники входят в общедоступный "белый список" — ссылки приведены в конце статьи.<br />
Материал носит информационный характер. Команды и конфигурации описывают легальные технические практики: настройку внутренней инфраструктуры, зеркалирование публичных репозиториев и управление корпоративной сетью. Автор не призывает к нарушению законодательства Российской Федерации.
<h2>Диагноз: что произошло 15 апреля</h2>
<p>Ты поднял пайплайн утром. <a class="wpil_keyword_link" href="https://it-apteka.com/tag/docker/" target="_blank" rel="noopener" title="Docker" data-wpil-keyword-link="linked" data-wpil-monitor-id="1580">Docker</a> pull завис. npm install отвалился с таймаутом. <code>git clone https://github.com/...</code> идёт третью минуту. Знакомо?</p>
<p>15 апреля 2026 года — не очередная волна блокировок. Это структурный сдвиг. Минцифры разослало платформам методички по выявлению VPN-трафика: анализ протоколов, поведенческие паттерны, блокировка по DPI без привязки к IP. Роскомнадзор выделил 2,27 млрд рублей на собственный ИИ-фильтр.</p>
<p>Компании, которые не подключились к системе — теряют IT-аккредитацию и налоговые льготы. Те, что подключились — начали резать трафик своим же пользователям.</p>
<p>Что получишь в этой статье:</p>
<ul>
<li>Конкретные причины поломок в трёх направлениях: Linux, AI, API</li>
<li>Готовые рецепты — с командами, не с теорией</li>
<li>Архитектуру выживания для команды от 3 до 50 человек</li>
<li>Таблицы зеркал, портов, совместимости</li>
<li>FAQ на реальные вопросы из чатов</li>
</ul>
<p>Времени на это уйдёт — зависит от твоей инфраструктуры. Базовые зеркала поднять за час. Полноценный self-hosted стек — день работы.</p>
<pre class="mermaid">
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
A["Запрос разработчика"] --> B["ТСПУ РКН"]
B --> C{"DPI-анализ"}
C -->|"Чистый трафик"| D["Целевой ресурс"]
C -->|"VPN/Proxy сигнатура"| E["Блокировка или замедление"]
C -->|"Подозрительный паттерн"| F["Замедление + логирование"]
style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style B fill:#f8fafc,stroke:#ef4444,stroke-width:2px,color:#dc2626
style C fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
style D fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style E fill:#f8fafc,stroke:#ef4444,stroke-width:2px,color:#dc2626
style F fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
</pre>
<h2>Часть 1. Linux: как ТСПУ положило kernel.org</h2>
<h3>Что случилось с git.kernel.org в феврале 2026</h3>
<p>Февраль 2026. ТСПУ начало применять ковровую фильтрацию по IP-диапазонам CDN при замедлении <a class="wpil_keyword_link" href="https://t.me/it_apteka_com/34" target="_blank" rel="noopener" title="Telegram" data-wpil-keyword-link="linked" data-wpil-monitor-id="1579">Telegram</a>. Попутно прилетело по <a class="wpil_keyword_link" href="https://it-apteka.com/tag/git/" target="_blank" rel="noopener" title="Git" data-wpil-keyword-link="linked" data-wpil-monitor-id="1577">git</a>.kernel.org — поддомен оказался в тех же диапазонах.</p>
<p>Симптомы были вот такие:</p>
<pre><code class="language-bash">
$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Cloning into 'linux'...
fatal: unable to connect to git.kernel.org:
git.kernel.org[0: 145.40.68.75]: errno=Connection timed out
</code></pre>
<p>Главная страница kernel.org открывалась. Поддомен git.kernel.org — нет. Проблема держалась с 12 по 17 февраля 2026 и дольше в зависимости от провайдера.</p>
<p>Пострадали Astra Linux, RED OS, Alt Linux, «Базальт СПО». Команды не могли получать патчи безопасности и обновления ядра. Алексей Смирнов из «Базальт СПО» прямо написал: блокировка мешает работе, и это не единственный случай. Роскомнадзор ответил стандартно: решений по ограничению сервисов Linux не поступало. Побочный эффект.</p>
<h3>Почему это критично</h3>
<p>Российские ОС зависят от глобального upstream Linux на 90%+. Даже после формального импортозамещения. Задержка патчей безопасности — это прямая уязвимость в госсекторе и КИИ. Разработчики уходят на VPN, что создаёт новые риски. К апрелю 2026 задержки в релизах обновлений ощущались при тестировании Linux 7.0 (вышел 12 апреля).</p>
<h3>Рецепт для Linux-команды</h3>
<p>Шаг 1. Настрой зеркало kernel.org внутри инфраструктуры.</p>
<pre><code class="language-bash">
# Клонируем через CDN-зеркало (cdn.kernel.org работает отдельно от git.kernel.org)
git clone https://cdn.kernel.org/pub/scm/linux/kernel/git/stable/linux.git --depth=1
# Или через зеркало kernel.ubuntu.com (часто доступно когда kernel.org нет)
git clone https://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack
# Зеркало MIT (CSAIL) - почти всегда доступно
git clone https://mirrors.mit.edu/kernel.org/pub/scm/linux/kernel/git/stable/linux.git
</code></pre>
<p>Шаг 2. Настрой локальный bare-репозиторий на внутреннем сервере.</p>
<pre><code class="language-bash">
# На внутреннем сервере 192.168.1.10
mkdir -p /srv/mirrors/linux-kernel
cd /srv/mirrors/linux-kernel
git clone --bare https://mirrors.mit.edu/kernel.org/pub/scm/linux/kernel/git/stable/linux.git .
# Автообновление через cron - раз в 6 часов
echo "0 */6 * * * root cd /srv/mirrors/linux-kernel && git fetch --all" >> /etc/cron.d/kernel-mirror
</code></pre>
<p>Шаг 3. Разработчики переключаются на внутреннее зеркало.</p>
<pre><code class="language-bash">
# Вместо git.kernel.org используем внутренний сервер
git clone git://192.168.1.10/linux-kernel
# Или через SSH
git clone user@192.168.1.10:/srv/mirrors/linux-kernel
</code></pre>
<h3>Таблица зеркал kernel.org</h3>
<table>
<thead>
<tr>
<th>Зеркало</th>
<th>URL</th>
<th>Доступность из РФ</th>
<th>Тип</th>
</tr>
</thead>
<tbody>
<tr>
<td>MIT CSAIL</td>
<td>mirrors.mit.edu</td>
<td>Стабильно</td>
<td>rsync/HTTP</td>
</tr>
<tr>
<td>kernel.ubuntu.com</td>
<td>git.launchpad.net</td>
<td>Стабильно</td>
<td>Git</td>
</tr>
<tr>
<td>cdn.kernel.org</td>
<td>cdn.kernel.org</td>
<td>Нестабильно</td>
<td>HTTP/rsync</td>
</tr>
<tr>
<td>Yandex Mirror</td>
<td>mirror.yandex.ru/kernel.org</td>
<td>Стабильно</td>
<td>HTTP</td>
</tr>
<tr>
<td>MGTS Mirror</td>
<td>mirror.mgts.ru</td>
<td>Стабильно</td>
<td>HTTP</td>
</tr>
</tbody>
</table>
<h3>Связанные ресурсы, которые тоже прилетело</h3>
<p>Вместе с kernel.org под раздачу попали смежные ресурсы. Проверь их статус если работаешь с любым из этого:</p>
<ul>
<li>docs.kernel.org — документация ядра</li>
<li>patchwork.kernel.org — патч-трекер</li>
<li>lore.kernel.org — архив рассылок</li>
<li>elixir.bootlin.com — онлайн cross-reference кода ядра</li>
</ul>
<p>По состоянию на апрель 2026 ситуация плавающая: утром доступно, вечером нет. Зависит от провайдера и того, не прилетело ли сегодня по Telegram снова.</p>
<h2>Часть 2. AI-разработка: Hugging Face, OpenAI API и суверенный ИИ</h2>
<h3>Что упало первым</h3>
<p>Разработка ИИ получила двойной удар. Сначала — блокировки CDN, через которые раздаются веса моделей. Потом — законопроект Минцифры марта 2026 про суверенный ИИ, который обязывает регистрировать внутренние модели в реестре российского ПО ради льгот.</p>
<p>Конкретно что не работает или работает через боль:</p>
<ul>
<li>Hugging Face Hub — скачивание моделей (Llama 3, Mistral, Gemma 2) зависает на CDN</li>
<li>OpenAI API, Anthropic API, Grok — inference-запросы требуют корпоративных прокси</li>
<li>GitHub Copilot — нестабильно из-за проблем с GitHub API</li>
<li>Weights & Biases, MLflow cloud — телеметрия экспериментов</li>
<li>Google Colab, Kaggle — GPU в облаке через VPN теперь под вопросом</li>
</ul>
<h3>Ирония 2026 года</h3>
<p>Роскомнадзор тратит 2,27 млрд рублей на ИИ для блокировки VPN-трафика. Разработчики российских AI-решений тратят миллионы на обход тех же самых фильтров чтобы скачать обучающие данные и веса моделей. Это не парадокс — это просто наш быт.</p>
<h3>Рецепт: self-hosted зеркало Hugging Face</h3>
<p>Шаг 1. Поднять локальное зеркало HuggingFace Hub на внутреннем сервере.</p>
<pre><code class="language-bash">
# Устанавливаем huggingface_hub
pip install huggingface_hub
# Скачиваем модель через VPN один раз и сохраняем локально
huggingface-cli download mistralai/Mistral-7B-Instruct-v0.3 \
--local-dir /srv/models/mistral-7b \
--local-dir-use-symlinks False
</code></pre>
<p>Шаг 2. Поднять локальный API-сервер с моделью через Ollama или vLLM.</p>
<pre><code class="language-bash">
# Вариант через Ollama (проще)
curl -fsSL https://ollama.ai/install.sh | sh
# Добавляем модель из локальной директории
ollama create mistral-local -f /srv/models/mistral-7b/Modelfile
# Запускаем
ollama serve &
ollama run mistral-local
</code></pre>
<pre><code class="language-bash">
# Вариант через vLLM (для продакшна, OpenAI-совместимый API)
pip install vllm
python -m vllm.entrypoints.openai.api_server \
--model /srv/models/mistral-7b \
--host 0.0.0.0 \
--port 8000
</code></pre>
<p>Шаг 3. Приложения переключаются на внутренний endpoint.</p>
<pre><code class="language-python">
from openai import OpenAI
# Вместо api.openai.com - внутренний сервер
client = OpenAI(
base_url="http://192.168.1.20:8000/v1",
api_key="not-needed-for-local"
)
response = client.chat.completions.create(
model="mistral-local",
messages=[{"role": "user", "content": "Привет"}]
)
print(response.choices[0].message.content)
</code></pre>
<h3>Таблица: AI-инструменты и альтернативы</h3>
<table>
<thead>
<tr>
<th>Инструмент</th>
<th>Статус апрель 2026</th>
<th>Альтернатива</th>
<th>Сложность перехода</th>
</tr>
</thead>
<tbody>
<tr>
<td>Hugging Face Hub</td>
<td>Нестабильно</td>
<td>Self-hosted + Ollama/vLLM</td>
<td>Средняя</td>
</tr>
<tr>
<td>OpenAI API</td>
<td>Через прокси</td>
<td>Local vLLM + OpenAI-compat API</td>
<td>Средняя</td>
</tr>
<tr>
<td>GitHub Copilot</td>
<td>Нестабильно</td>
<td>Continue.dev + local LLM</td>
<td>Низкая</td>
</tr>
<tr>
<td>Google Colab GPU</td>
<td>Через прокси</td>
<td>Yandex Cloud GPU, Nebius AI</td>
<td>Высокая</td>
</tr>
<tr>
<td>Weights & Biases</td>
<td>Нестабильно</td>
<td>MLflow self-hosted</td>
<td>Низкая</td>
</tr>
<tr>
<td>YandexGPT API</td>
<td>Работает</td>
<td>—</td>
<td>—</td>
</tr>
<tr>
<td>GigaChat API</td>
<td>Работает</td>
<td>—</td>
<td>—</td>
</tr>
</tbody>
</table>
<h3>Стоимость перехода на self-hosted AI</h3>
<p>Честные цифры. Полноценный inference-сервер для команды из 10 разработчиков:</p>
<ul>
<li>Сервер с NVIDIA A100 40GB аренда — от 150 000 руб/мес в российских облаках</li>
<li>Сервер с 2x RTX 4090 покупка — от 700 000 руб. разово</li>
<li>Yandex Cloud GPU (a100) — от 200 руб/час</li>
<li>Nebius AI (основан на Yandex, работает без VPN) — от $0.8/GPU-час</li>
</ul>
<p>Реальный рост стоимости AI-разработки по сравнению с «просто OpenAI API» — в 1,5-2 раза. Это не предположение. Это цифры от команд которые уже перешли.</p>
<h2>Часть 3. API и DevOps: CI/CD под ударом</h2>
<h3>Что происходит с пайплайнами</h3>
<p>CI/CD — это вереница HTTP-запросов к внешним ресурсам. Каждый из них теперь под вопросом.</p>
<p>Типичный пайплайн упирается в:</p>
<ul>
<li>GitHub API — push, pull, Actions, webhooks</li>
<li>Docker Hub — базовые образы (ubuntu, python, node)</li>
<li>PyPI (pypi.org) — pip install в каждом билде</li>
<li>npm registry (registry.npmjs.org) — npm ci в каждом билде</li>
<li>crates.io — Rust-проекты</li>
<li>pkg.go.dev — Go-модули</li>
</ul>
<p>Статистика апреля 2026 из разных команд: падение CI/CD в 30-40% запусков. Время сборки выросло на 50-200%. Не потому что код стал хуже — потому что <code>apt-get update</code> ждёт ответа от archive.ubuntu.com три минуты.</p>
<h3>Архитектура выживания DevOps</h3>
<pre class="mermaid">
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
DEV["Разработчик"] --> GIT["GitFlic / Gitea (внутренний)"]
GIT --> CI["CI-сервер (Gitea Actions / Jenkins)"]
CI --> NEXUS["Nexus / Artifactory (зеркала пакетов)"]
CI --> REG["Harbor (container registry)"]
NEXUS --> PYPI["Зеркало PyPI"]
NEXUS --> NPM["Зеркало npm"]
NEXUS --> MAVEN["Зеркало Maven/Go"]
REG --> DHUB["Кеш Docker Hub"]
CI --> PROD["Продакшн"]
style DEV fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style GIT fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style CI fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style NEXUS fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style REG fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style PROD fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style PYPI fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#475569
style NPM fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#475569
style MAVEN fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#475569
style DHUB fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#475569
</pre>
<h3>Шаг 1. Поднять Nexus Repository Manager</h3>
<pre><code class="language-bash">
# Через Docker Compose
cat > /srv/nexus/docker-compose.yml << 'EOF'
version: '3.8'
services:
nexus:
image: sonatype/nexus3:latest
ports:
- "8081:8081"
- "5000:5000"
volumes:
- nexus-data:/nexus-data
restart: unless-stopped
volumes:
nexus-data:
EOF
docker compose -f /srv/nexus/docker-compose.yml up -d
</code></pre>
<p>После запуска открой http://192.168.1.10:8081. Начальный пароль - в файле <code>/nexus-data/admin.password</code> внутри контейнера.</p>
<pre><code class="language-bash">
# Достаём начальный пароль
docker exec nexus-nexus-1 cat /nexus-data/admin.password
</code></pre>
<h3>Шаг 2. Создать прокси-репозиторий для PyPI</h3>
<p>В Nexus UI: Repository - Repositories - Create repository - pypi (proxy).</p>
<p>Настройки:</p>
<pre><code class="language-text">
Name: pypi-proxy
Remote Storage: https://pypi.org
Blob store: default
Maximum component age: 1440 (минут = 24 часа)
</code></pre>
<p>Настраиваем pip на внутренний репозиторий:</p>
<pre><code class="language-bash">
# В проекте создаём pip.conf
mkdir -p ~/.pip
cat > ~/.pip/pip.conf << 'EOF'
[global]
index-url = http://192.168.1.10:8081/repository/pypi-proxy/simple/
trusted-host = 192.168.1.10
EOF
</code></pre>
<h3>Шаг 3. Зеркало npm</h3>
<pre><code class="language-bash">
# Создаём npm-proxy в Nexus аналогично PyPI
# Remote Storage: https://registry.npmjs.org
# Настраиваем npm
npm config set registry http://192.168.1.10:8081/repository/npm-proxy/
</code></pre>
<h3>Шаг 4. Harbor как registry для Docker-образов</h3>
<pre><code class="language-bash">
# Скачиваем Harbor installer
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-online-installer-v2.10.0.tgz
tar xzvf harbor-online-installer-v2.10.0.tgz
cd harbor
# Копируем конфиг
cp harbor.yml.tmpl harbor.yml
# Минимальная правка harbor.yml
# hostname: 192.168.1.10
# http: port: 5000
# https: закомментировать если нет сертификата
./install.sh
</code></pre>
<p>После запуска настраиваем <a href="https://it-apteka.com/ustanovka-i-nastrojka-socks5-proxy-dante-v-docker-compose/" title="Установка и настройка SOCKS5 proxy Dante в Docker Compose" target="_blank" rel="noopener" data-wpil-monitor-id="1574">proxy cache для Docker</a> Hub в Harbor UI: Administration - Registries - New Endpoint - Docker Hub. Потом: Projects - New Project - включить "Proxy cache".</p>
<h3>Шаг 5. Переключить CI на внутренние зеркала</h3>
<p>Пример для GitHub Actions / Gitea Actions:</p>
<pre><code class="language-yaml">
# .gitea/workflows/build.yml
name: Build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
container:
image: 192.168.1.10:5000/library/python:3.12 # из Harbor
steps:
- uses: actions/checkout@v4
- name: Install deps
env:
PIP_INDEX_URL: http://192.168.1.10:8081/repository/pypi-proxy/simple/
PIP_TRUSTED_HOST: 192.168.1.10
run: pip install -r requirements.txt
</code></pre>
<h3>Таблица портов внутренней инфраструктуры</h3>
<table>
<thead>
<tr>
<th>Сервис</th>
<th>Порт</th>
<th>Протокол</th>
<th>Назначение</th>
</tr>
</thead>
<tbody>
<tr>
<td>Nexus UI</td>
<td>8081</td>
<td>HTTP/HTTPS</td>
<td>Веб-интерфейс, API</td>
</tr>
<tr>
<td>Harbor</td>
<td>5000</td>
<td>HTTP/HTTPS</td>
<td>Docker registry</td>
</tr>
<tr>
<td>Gitea</td>
<td>3000</td>
<td>HTTP/HTTPS</td>
<td>Git-сервер</td>
</tr>
<tr>
<td>Gitea SSH</td>
<td>2222</td>
<td>SSH</td>
<td>Git push/pull</td>
</tr>
<tr>
<td>vLLM API</td>
<td>8000</td>
<td>HTTP</td>
<td>OpenAI-compat inference</td>
</tr>
<tr>
<td>Ollama</td>
<td>11434</td>
<td>HTTP</td>
<td>Local LLM API</td>
</tr>
<tr>
<td>MLflow</td>
<td>5001</td>
<td>HTTP</td>
<td>ML experiment tracking</td>
</tr>
</tbody>
</table>
<h2>Часть 4. Экономика: сколько это стоит</h2>
<h3>Цифры которые уже не удивляют</h3>
<p>По данным Top10VPN, российская экономика потеряла от интернет-ограничений в 2025 году более 1 трлн рублей - 11,9 млрд долларов. Россия первая в мире по потерям от шатдаунов, опередив все остальные страны вместе взятые.</p>
<p>Прогноз на 2026 год при запуске полноценных ИИ-фильтров РКН - плюс 15-20% к этим потерям.</p>
<p>Что это значит для разработки конкретно:</p>
<ul>
<li>Средний разработчик теряет 1-2 часа в день на обход ограничений</li>
<li>600+ тыс. IT-специалистов - десятки миллионов потерянных рабочих часов ежемесячно</li>
<li>Стоимость инфраструктуры выросла на 20-30%</li>
<li>630+ tech-компаний обанкротились за 11 месяцев 2025 года</li>
<li>AI-проекты задерживаются на 3-6 месяцев из-за проблем с доступом к данным и моделям</li>
</ul>
<h3>Прямые операционные потери команды</h3>
<table>
<thead>
<tr>
<th>Статья потерь</th>
<th>Размер команды 5 чел.</th>
<th>Размер команды 20 чел.</th>
<th>Размер команды 50 чел.</th>
</tr>
</thead>
<tbody>
<tr>
<td>Потеря продуктивности (1.5 ч/день)</td>
<td>~150 000 руб/мес</td>
<td>~600 000 руб/мес</td>
<td>~1 500 000 руб/мес</td>
</tr>
<tr>
<td>Дополнительная инфраструктура</td>
<td>~30 000 руб/мес</td>
<td>~80 000 руб/мес</td>
<td>~200 000 руб/мес</td>
</tr>
<tr>
<td>Задержка релизов (среднее)</td>
<td>+2-3 дня/спринт</td>
<td>+3-5 дней/спринт</td>
<td>+5-7 дней/спринт</td>
</tr>
</tbody>
</table>
<p>Расчёт грубый. Но порядок цифр правильный.</p>
<h2>Часть 5. Проверка - всё ли работает</h2>
<h3>Диагностика доступности ресурсов</h3>
<pre><code class="language-bash">
#!/bin/bash
# Скрипт проверки доступности ресурсов для разработки
# Запусти и посмотри что красное
RESOURCES=(
"https://git.kernel.org"
"https://github.com"
"https://pypi.org"
"https://registry.npmjs.org"
"https://hub.docker.com"
"https://huggingface.co"
"https://crates.io"
"https://pkg.go.dev"
)
echo "=== Проверка доступности ресурсов ==="
for url in "${RESOURCES[@]}"; do
code=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 --max-time 10 "$url")
if [ "$code" -ge 200 ] && [ "$code" -lt 400 ]; then
echo "OK [$code] $url"
else
echo "FAIL[$code] $url"
fi
done
</code></pre>
<h3>Проверка внутренних зеркал</h3>
<pre><code class="language-bash">
# Nexus работает?
curl -s http://192.168.1.10:8081/service/rest/v1/status | python3 -m json.tool
# Harbor работает?
curl -s http://192.168.1.10:5000/v2/ -u "admin:password"
# PyPI через Nexus работает?
pip install requests --index-url http://192.168.1.10:8081/repository/pypi-proxy/simple/ --dry-run
# Docker pull через Harbor работает?
docker pull 192.168.1.10:5000/dockerhub-cache/library/python:3.12
# vLLM отвечает?
curl http://192.168.1.10:8000/v1/models
</code></pre>
<h3>Проверка CI/CD пайплайна</h3>
<pre><code class="language-bash">
# Запусти тестовый пайплайн с явными таймаутами
# Если упал - смотри какой именно шаг
# Пример диагностики медленного pip install
pip install -r requirements.txt \
--index-url http://192.168.1.10:8081/repository/pypi-proxy/simple/ \
-v 2>&1 | grep -E "(Downloading|Looking|Found|ERROR)"
</code></pre>
<h2>Часть 6. Осложнения - что идёт не так</h2>
<h3>Типичные ошибки и как их чинить</h3>
"Ошибка:
<br />
Симптом: pip install завершается ошибкой даже через внутренний Nexus.<br />
Причина: Nexus не может достучаться до pypi.org с сервера.<br />
Решение: настроить HTTP <a href="https://it-apteka.com/acme-nginx-nastrojka-let-s-encrypt-vruchnuju-i-cherez-nginx-proxy-manager/" title="ACME + Nginx: настройка Let’s Encrypt вручную и через Nginx Proxy Manager" target="_blank" rel="noopener" data-wpil-monitor-id="1575">proxy</a> для самого Nexus или обновить кеш вручную.<br />
<pre><code class="language-bash">
# В nexus/nexus.properties добавляем proxy для исходящих запросов
# Файл обычно в /nexus-data/etc/nexus.properties
cat >> /nexus-data/etc/nexus.properties << 'EOF'
javax.net.ssl.trustStore=/nexus-data/truststore.jks
nexus.httpclient.proxy.http.host=your-proxy.internal
nexus.httpclient.proxy.http.port=3128
EOF
</code></pre>
"Ошибка:
<br />
Симптом: docker pull 192.168.1.10:5000/… возвращает 401.<br />
Причина: не выполнен docker login на внутренний registry.<br />
<pre><code class="language-bash">
docker login 192.168.1.10:5000 -u admin -p your-password
# Если Harbor без TLS - нужно добавить в insecure-registries
# /etc/docker/daemon.json
cat > /etc/docker/daemon.json << 'EOF'
{
"insecure-registries": ["192.168.1.10:5000"]
}
EOF
systemctl restart docker
</code></pre>
"Ошибка:
<br />
Симптом: git clone начался, показал Cloning into… и завис.<br />
Причина: ТСПУ режет TLS хендшейк до git-сервера, не разрывая TCP-соединение.<br />
Решение: явные таймауты в git и переход на SSH вместо HTTPS.<br />
<pre><code class="language-bash">
# Глобальные таймауты для git
git config --global http.lowSpeedLimit 1000
git config --global http.lowSpeedTime 30
# Диагностика - смотрим где зависает
GIT_CURL_VERBOSE=1 git clone https://github.com/your/repo 2>&1 | head -50
# Переходим на SSH если есть возможность
git remote set-url origin git@github.com:your/repo.git
</code></pre>
"Ошибка:
<br />
Симптом: actions/checkout@v4 возвращает error: RPC failed; curl 28 Operation timed out.<br />
Причина: раннер не может подключиться к github.com для клонирования.<br />
Решение: использовать self-hosted runner или перейти на Gitea Actions с Gitea runner.<br />
<pre><code class="language-bash">
# Устанавливаем Gitea runner
# На сервере с Gitea
wget https://dl.gitea.com/act_runner/latest/act_runner-linux-amd64
chmod +x act_runner-linux-amd64
./act_runner-linux-amd64 register \
--instance http://192.168.1.10:3000 \
--token YOUR_RUNNER_TOKEN \
--name internal-runner \
--labels ubuntu-latest:docker://192.168.1.10:5000/library/ubuntu:22.04
</code></pre>
"Ошибка:
<br />
Симптом: huggingface-cli download показывает скорость 10-50 KB/s вместо нормальных мегабайт.<br />
Причина: CDN Hugging Face (Cloudflare) попадает под ковровую фильтрацию.<br />
Решение: использовать альтернативные endpoint или скачивать через сервер за рубежом.<br />
<pre><code class="language-bash">
# Альтернативный endpoint через hf-mirror.com (китайское зеркало, часто доступно)
HF_ENDPOINT=https://hf-mirror.com huggingface-cli download \
mistralai/Mistral-7B-Instruct-v0.3 \
--local-dir /srv/models/mistral-7b
# Или через modelscope (другое зеркало)
pip install modelscope
python -c "from modelscope import snapshot_download; snapshot_download('AI-ModelScope/Mistral-7B-Instruct-v0.3')"
</code></pre>
<h2>Часть 7. Безопасность внутренней инфраструктуры</h2>
"Это
<br />
Когда поднимаешь внутренние зеркала — ты берёшь на себя ответственность за их <a class="wpil_keyword_link" href="https://it-apteka.com/category/security/" target="_blank" rel="noopener" title="Безопасность" data-wpil-keyword-link="linked" data-wpil-monitor-id="1578">безопасность</a>. Nexus и Harbor с дефолтными паролями admin/admin в инфраструктуре — это не решение проблем, это создание новых.<br />
<h3>Минимальный чеклист безопасности</h3>
<pre><code class="language-bash">
# 1. Смени дефолтные пароли СРАЗУ после установки
# Nexus, Harbor, Gitea - везде меняй admin пароль в первый запуск
# 2. Настрой firewall - Nexus и Harbor не должны быть доступны извне
ufw allow from 192.168.0.0/16 to any port 8081
ufw allow from 192.168.0.0/16 to any port 5000
ufw deny 8081
ufw deny 5000
# 3. Включи TLS для всех внутренних сервисов (Let's Encrypt или внутренний CA)
# Генерируем внутренний CA
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 1826 -key ca.key -out ca.crt \
-subj "/C=RU/O=YourCompany Internal CA/CN=internal.ca"
# 4. Включи RBAC в Harbor
# Administration - Users - создай отдельных пользователей с минимальными правами
# 5. Настрой ротацию логов
cat >> /etc/logrotate.d/nexus << 'EOF'
/nexus-data/log/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
}
EOF
</code></pre>
<h3>Резервное копирование зеркал</h3>
<pre><code class="language-bash">
#!/bin/bash
# Бэкап Nexus blob store
BACKUP_DIR=/backup/nexus/$(date +%Y%m%d)
mkdir -p $BACKUP_DIR
# Nexus должен быть в режиме read-only во время бэкапа
# или используем snapshot на уровне файловой системы
rsync -av --delete /nexus-data/blobs/ $BACKUP_DIR/blobs/
rsync -av /nexus-data/db/ $BACKUP_DIR/db/
# Harbor - экспортируем через replication или просто rsync
rsync -av /data/harbor/ /backup/harbor/$(date +%Y%m%d)/
# Что бэкапим:
# Nexus: /nexus-data (конфиги + blobs)
# Harbor: /data/harbor (registry данные)
# Gitea: /data/gitea (репозитории + база)
echo "Backup completed: $BACKUP_DIR"
</code></pre>
<h2>Часть 8. Альтернативные решения</h2>
<h3>GitFlic как замена GitHub</h3>
<p>GitFlic - российская платформа, работает без VPN, есть API совместимый с GitHub в базовых операциях. Из коробки: приватные репозитории, CI/CD, issue tracker. Ограничения: экосистема меньше, сторонние интеграции нужно проверять.</p>
<pre><code class="language-bash">
# Добавляем GitFlic как remote
git remote add gitflic https://gitflic.ru/project/yourname/yourrepo.git
# Push в GitFlic
git push gitflic main
# Или переносим основной remote
git remote set-url origin https://gitflic.ru/project/yourname/yourrepo.git
</code></pre>
<h3>Gitea как полностью self-hosted Git</h3>
<pre><code class="language-bash">
# Быстрый старт через Docker
docker run -d \
--name gitea \
-p 3000:3000 \
-p 2222:22 \
-v /srv/gitea:/data \
--restart=always \
gitea/gitea:latest
</code></pre>
<h3>Альтернативный стек для команды</h3>
<table>
<thead>
<tr>
<th>Компонент</th>
<th>Заменяет</th>
<th>Решение</th>
<th>Лицензия</th>
</tr>
</thead>
<tbody>
<tr>
<td>Хостинг кода</td>
<td>GitHub</td>
<td>Gitea / GitFlic</td>
<td>MIT / Проприетарная</td>
</tr>
<tr>
<td>CI/CD</td>
<td>GitHub Actions</td>
<td>Gitea Actions / Jenkins</td>
<td>MIT / Apache 2.0</td>
</tr>
<tr>
<td>Пакеты Python</td>
<td>PyPI</td>
<td>Nexus proxy</td>
<td>Apache 2.0</td>
</tr>
<tr>
<td>Пакеты npm</td>
<td>npmjs.org</td>
<td>Nexus proxy / Verdaccio</td>
<td>Apache 2.0 / MIT</td>
</tr>
<tr>
<td>Docker images</td>
<td>Docker Hub</td>
<td>Harbor + proxy cache</td>
<td>Apache 2.0</td>
</tr>
<tr>
<td>LLM inference</td>
<td>OpenAI API</td>
<td>vLLM / Ollama</td>
<td>Apache 2.0 / MIT</td>
</tr>
<tr>
<td>ML tracking</td>
<td>W&B</td>
<td>MLflow self-hosted</td>
<td>Apache 2.0</td>
</tr>
<tr>
<td>Мониторинг</td>
<td>Datadog</td>
<td>Prometheus + Grafana</td>
<td>Apache 2.0</td>
</tr>
</tbody>
</table>
<h2>Часть 9. Профилактика: не ломать снова</h2>
<h3>Мониторинг доступности</h3>
<pre><code class="language-bash">
# Простой мониторинг через cron + алерты в Telegram
cat > /usr/local/bin/check-mirrors.sh << 'EOF'
#!/bin/bash
TELEGRAM_TOKEN="your_bot_token"
CHAT_ID="your_chat_id"
check_url() {
local url=$1
local name=$2
code=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 --max-time 10 "$url")
if [ "$code" -lt 200 ] || [ "$code" -ge 400 ]; then
msg="ALERT: $name ($url) - HTTP $code at $(date)"
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID&text=$msg" > /dev/null
fi
}
check_url "http://192.168.1.10:8081/service/rest/v1/status" "Nexus"
check_url "http://192.168.1.10:5000/v2/" "Harbor"
check_url "http://192.168.1.10:3000" "Gitea"
check_url "http://192.168.1.10:8000/v1/models" "vLLM"
EOF
chmod +x /usr/local/bin/check-mirrors.sh
echo "*/5 * * * * root /usr/local/bin/check-mirrors.sh" >> /etc/cron.d/mirror-check
</code></pre>
<h3>Автообновление зеркал</h3>
<pre><code class="language-bash">
# Обновление Linux kernel mirror
cat > /etc/cron.d/mirrors << 'EOF'
# Ядро Linux - каждые 6 часов
0 */6 * * * root cd /srv/mirrors/linux-kernel && git fetch --all 2>&1 | logger -t kernel-mirror
# Синхронизация PyPI snapshots - раз в сутки (если нужно полное зеркало, не прокси)
30 2 * * * root /usr/local/bin/sync-pypi.sh 2>&1 | logger -t pypi-sync
EOF
</code></pre>
<h3>Документирование инфраструктуры</h3>
<p>Одна строка в crontab без комментария - через полгода никто не помнит зачем она. Документируй всё что поднял. Хотя бы в README.md в Gitea.</p>
<pre><code class="language-bash">
# Минимальный шаблон документации для внутренней инфраструктуры
cat > /srv/README.md << 'EOF'
# Внутренняя инфраструктура для обхода блокировок
## Сервисы
- Nexus: http://192.168.1.10:8081 (пакеты Python, npm, Docker)
- Harbor: http://192.168.1.10:5000 (Docker registry)
- Gitea: http://192.168.1.10:3000 (Git)
- vLLM: http://192.168.1.10:8000 (LLM inference)
## Обновлено
$(date +%Y-%m-%d) - $(whoami)
## Доступы
Логины в Bitwarden, тег "internal-infra"
## Как восстановить после краша
1. Поднять docker compose -f /srv/nexus/docker-compose.yml up -d
2. Восстановить из бэкапа /backup/nexus/latest
3. Проверить check-mirrors.sh
EOF
</code></pre>
<h2>Часть 10. Долгосрочный прогноз</h2>
<h3>Куда движется отрасль</h3>
<p>К концу 2026 года IT-рынок России движется к расщеплению на два сегмента. Первый - суверенный: госзаказы, КИИ, полная изоляция от внешних инструментов. Второй - экспортный: команды с инфраструктурой за рубежом, работающие с международными клиентами.</p>
<p>Позитивный эффект блокировок - ускоренное развитие отечественных аналогов. GitFlic растёт. Yandex Cloud и Nebius расширяют GPU-мощности. GigaChat и YandexGPT получают больше вложений. Отечественные дистрибутивы Linux становятся более самостоятельными.</p>
<p>Негативный эффект - глобальная конкурентоспособность падает. Если тенденция продолжится, к 2027 году российский IT потеряет 20-25% темпов роста по оценкам аналитиков. Утечка мозгов продолжается - разработчики переезжают или переносят инфраструктуру туда где нет фильтров.</p>
<h3>Что делать прямо сейчас</h3>
<p>Ирония в том, что государство добивается импортозамещения - а блокировки тормозят именно тех, кто создаёт российские продукты. Но это наша реальность на 2026 год. Жить и работать в ней можно - нужен правильный стек.</p>
<p>Если у тебя команда до 10 человек - достаточно Nexus + Gitea + Ollama. Поднимается за день, поддерживается одним человеком.</p>
<p>Если 20+ человек - добавляй Harbor, выделяй отдельный сервер под зеркала, настраивай <a class="wpil_keyword_link" href="https://it-apteka.com/category/monitoring/" target="_blank" rel="noopener" title="Мониторинг" data-wpil-keyword-link="linked" data-wpil-monitor-id="1576">мониторинг</a> и бэкапы.</p>
<p>Если работаешь с AI - самое время разворачивать self-hosted inference. Модели класса Mistral 7B и Gemma 9B закрывают 80% задач помощи в коде и обработки текста. И работают без VPN и без задержек из Москвы в Сан-Франциско.</p>
"Если
<br />
Статья закрывает основные сценарии. Но инфраструктуры разные — у тебя может быть своя особенность. Пиши в комментарии или в чат — разберёмся. Заодно обновим статью.<br />
<h2>FAQ</h2>
<h3>Почему git.kernel.org заблокирован если Linux не запрещён?</h3>
<p>Потому что ТСПУ работает по IP-диапазонам и сигнатурам трафика, а не по белым спискам. Когда замедляют Telegram или блокируют VPN-сервисы - под раздачу попадают случайные ресурсы в тех же CDN-диапазонах. Роскомнадзор это признаёт, но не считает своей проблемой. Решение - внутренние зеркала.</p>
<h3>Как проверить что проблема в блокировке а не в моей сети?</h3>
<pre><code class="language-bash">
# Сравниваем MTR через разные интерфейсы
# Без VPN:
mtr --report --report-cycles 10 git.kernel.org
# С VPN (если работает):
mtr --report --report-cycles 10 git.kernel.org
# Смотрим где пакеты теряются. Потери на 3-5 хопе внутри России - ТСПУ.
# Потери дальше - проблема маршрутизации к конкретному ресурсу.
# Альтернатива - traceroute
traceroute -n github.com
# Быстрая проверка - сравниваем время ответа с VPN и без
time curl -s -o /dev/null https://github.com
time curl -s -o /dev/null --proxy socks5://127.0.0.1:1080 https://github.com
</code></pre>
<h3>Что если компания лишится IT-аккредитации из-за VPN?</h3>
<p>IT-аккредитация даёт льготы - сниженный налог на прибыль (0% до 2025, 5% с 2025), льготная ставка по взносам, отсрочка от армии для сотрудников. Потеря аккредитации - удар по операционным расходам. Компании с госзаказами также теряют возможность участвовать в тендерах. Поэтому крупные игроки (Сбер, Яндекс, VK) и начали блокировать VPN-пользователей - не потому что хотят, а потому что это условие сохранения льгот.</p>
<h3>Почему CI/CD падает даже когда GitHub работает?</h3>
<p>GitHub может быть доступен, но конкретный запрос из CI может уходить через другой маршрут или другой IP. Также: GitHub Actions использует несколько десятков IP-диапазонов, часть которых попадает под фильтры. Второй фактор - GitHub API rate limits на корпоративных IP. Третий - CDN для скачивания артефактов Actions отличается от CDN для git операций. Решение - self-hosted runners в твоей инфраструктуре.</p>
<h3>Как скачать модель с Hugging Face если она 70 гигабайт?</h3>
<p>Три варианта. Первый: арендовать VPS за рубежом, скачать туда, потом rsync в локальную сеть. Второй: использовать hf-mirror.com - китайское зеркало, часто доступно без VPN. Третий: использовать квантизированные версии - GGUF форматы в 4bit занимают в 4-6 раз меньше. Mistral 7B в Q4 весит около 4 GB вместо 14 GB в bf16.</p>
<pre><code class="language-bash">
# Скачать квантизированную модель (намного легче)
# TheBloke раньше был основным поставщиком GGUF, сейчас есть unsloth и другие
HF_ENDPOINT=https://hf-mirror.com huggingface-cli download \
unsloth/Mistral-7B-Instruct-v0.3-GGUF \
--include "Mistral-7B-Instruct-v0.3-Q4_K_M.gguf" \
--local-dir /srv/models/
# Запустить через llama.cpp без GPU
./llama.cpp/llama-server -m /srv/models/Mistral-7B-Instruct-v0.3-Q4_K_M.gguf --port 8080
</code></pre>
<h3>Что если внутренний Nexus сам стал недоступен?</h3>
<pre><code class="language-bash">
# Проверяем статус контейнера
docker ps | grep nexus
docker logs nexus-nexus-1 --tail 50
# Типичные причины:
# 1. Кончилось место на диске
df -h /nexus-data
# 2. OOM killer прибил процесс
dmesg | grep -i "out of memory" | tail -10
# 3. Порт занят
ss -tlnp | grep 8081
# Перезапуск
docker compose -f /srv/nexus/docker-compose.yml restart
</code></pre>
<h2>Системные требования для внутренней инфраструктуры</h2>
<table>
<thead>
<tr>
<th>Сервис</th>
<th>CPU</th>
<th>RAM</th>
<th>Диск</th>
<th>ОС</th>
</tr>
</thead>
<tbody>
<tr>
<td>Nexus Repository</td>
<td>2+ vCPU</td>
<td>4+ GB</td>
<td>100+ GB <a class="wpil_keyword_link" href="https://it-apteka.com/tag/ssd/" target="_blank" rel="noopener" title="ssd" data-wpil-keyword-link="linked" data-wpil-monitor-id="1581">SSD</a></td>
<td>Ubuntu 22.04 / RHEL 8+</td>
</tr>
<tr>
<td>Harbor Registry</td>
<td>2+ vCPU</td>
<td>4+ GB</td>
<td>200+ GB SSD</td>
<td>Ubuntu 22.04 / RHEL 8+</td>
</tr>
<tr>
<td>Gitea</td>
<td>1+ vCPU</td>
<td>1+ GB</td>
<td>50+ GB SSD</td>
<td>Ubuntu 22.04 / любая Linux</td>
</tr>
<tr>
<td>vLLM (GPU)</td>
<td>8+ vCPU</td>
<td>32+ GB</td>
<td>200+ GB SSD</td>
<td>Ubuntu 22.04 + CUDA 12+</td>
</tr>
<tr>
<td>Ollama (CPU)</td>
<td>8+ vCPU</td>
<td>16+ GB</td>
<td>50+ GB SSD</td>
<td>Ubuntu 22.04 / macOS 14+</td>
</tr>
<tr>
<td>MLflow</td>
<td>2+ vCPU</td>
<td>4+ GB</td>
<td>50+ GB SSD</td>
<td>Ubuntu 22.04 / любая Linux</td>
</tr>
</tbody>
</table>
<p>На момент публикации (апрель 2026) актуальны: Nexus 3.67, Harbor 2.10, Gitea 1.22, vLLM 0.4, Ollama 0.2. Перед установкой проверь свежие релизы на официальных страницах.</p>
Блокировки Роскомнадзора 2026: что сломалось в Linux, AI и API — и как с этим жить
Дисклаймер
Статья написана на основе открытых источников: публикаций СМИ, официальных заявлений Роскомнадзора и Минцифры, отраслевых отчётов и комментариев экспертов.
Все источники входят в общедоступный «белый список» — ссылки приведены в конце статьи.
Материал носит информационный характер. Команды и конфигурации описывают легальные технические практики: настройку внутренней инфраструктуры, зеркалирование публичных репозиториев и управление корпоративной сетью. Автор не призывает к нарушению законодательства Российской Федерации.
Диагноз: что произошло 15 апреля
Ты поднял пайплайн утром. Docker pull завис. npm install отвалился с таймаутом. git clone https://github.com/... идёт третью минуту. Знакомо?
15 апреля 2026 года — не очередная волна блокировок. Это структурный сдвиг. Минцифры разослало платформам методички по выявлению VPN-трафика: анализ протоколов, поведенческие паттерны, блокировка по DPI без привязки к IP. Роскомнадзор выделил 2,27 млрд рублей на собственный ИИ-фильтр.
Компании, которые не подключились к системе — теряют IT-аккредитацию и налоговые льготы. Те, что подключились — начали резать трафик своим же пользователям.
Что получишь в этой статье:
- Конкретные причины поломок в трёх направлениях: Linux, AI, API
- Готовые рецепты — с командами, не с теорией
- Архитектуру выживания для команды от 3 до 50 человек
- Таблицы зеркал, портов, совместимости
- FAQ на реальные вопросы из чатов
Времени на это уйдёт — зависит от твоей инфраструктуры. Базовые зеркала поднять за час. Полноценный self-hosted стек — день работы.
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
A["Запрос разработчика"] --> B["ТСПУ РКН"]
B --> C{"DPI-анализ"}
C -->|"Чистый трафик"| D["Целевой ресурс"]
C -->|"VPN/Proxy сигнатура"| E["Блокировка или замедление"]
C -->|"Подозрительный паттерн"| F["Замедление + логирование"]
style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style B fill:#f8fafc,stroke:#ef4444,stroke-width:2px,color:#dc2626
style C fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
style D fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style E fill:#f8fafc,stroke:#ef4444,stroke-width:2px,color:#dc2626
style F fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
Часть 1. Linux: как ТСПУ положило kernel.org
Что случилось с git.kernel.org в феврале 2026
Февраль 2026. ТСПУ начало применять ковровую фильтрацию по IP-диапазонам CDN при замедлении Telegram. Попутно прилетело по git.kernel.org — поддомен оказался в тех же диапазонах.
Симптомы были вот такие:
$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Cloning into 'linux'...
fatal: unable to connect to git.kernel.org:
git.kernel.org[0: 145.40.68.75]: errno=Connection timed out
Главная страница kernel.org открывалась. Поддомен git.kernel.org — нет. Проблема держалась с 12 по 17 февраля 2026 и дольше в зависимости от провайдера.
Пострадали Astra Linux, RED OS, Alt Linux, «Базальт СПО». Команды не могли получать патчи безопасности и обновления ядра. Алексей Смирнов из «Базальт СПО» прямо написал: блокировка мешает работе, и это не единственный случай. Роскомнадзор ответил стандартно: решений по ограничению сервисов Linux не поступало. Побочный эффект.
Почему это критично
Российские ОС зависят от глобального upstream Linux на 90%+. Даже после формального импортозамещения. Задержка патчей безопасности — это прямая уязвимость в госсекторе и КИИ. Разработчики уходят на VPN, что создаёт новые риски. К апрелю 2026 задержки в релизах обновлений ощущались при тестировании Linux 7.0 (вышел 12 апреля).
Рецепт для Linux-команды
Шаг 1. Настрой зеркало kernel.org внутри инфраструктуры.
# Клонируем через CDN-зеркало (cdn.kernel.org работает отдельно от git.kernel.org)
git clone https://cdn.kernel.org/pub/scm/linux/kernel/git/stable/linux.git --depth=1
# Или через зеркало kernel.ubuntu.com (часто доступно когда kernel.org нет)
git clone https://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack
# Зеркало MIT (CSAIL) - почти всегда доступно
git clone https://mirrors.mit.edu/kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Шаг 2. Настрой локальный bare-репозиторий на внутреннем сервере.
# На внутреннем сервере 192.168.1.10
mkdir -p /srv/mirrors/linux-kernel
cd /srv/mirrors/linux-kernel
git clone --bare https://mirrors.mit.edu/kernel.org/pub/scm/linux/kernel/git/stable/linux.git .
# Автообновление через cron - раз в 6 часов
echo "0 */6 * * * root cd /srv/mirrors/linux-kernel && git fetch --all" >> /etc/cron.d/kernel-mirror
Шаг 3. Разработчики переключаются на внутреннее зеркало.
# Вместо git.kernel.org используем внутренний сервер
git clone git://192.168.1.10/linux-kernel
# Или через SSH
git clone user@192.168.1.10:/srv/mirrors/linux-kernel
Таблица зеркал kernel.org
| Зеркало |
URL |
Доступность из РФ |
Тип |
| MIT CSAIL |
mirrors.mit.edu |
Стабильно |
rsync/HTTP |
| kernel.ubuntu.com |
git.launchpad.net |
Стабильно |
Git |
| cdn.kernel.org |
cdn.kernel.org |
Нестабильно |
HTTP/rsync |
| Yandex Mirror |
mirror.yandex.ru/kernel.org |
Стабильно |
HTTP |
| MGTS Mirror |
mirror.mgts.ru |
Стабильно |
HTTP |
Связанные ресурсы, которые тоже прилетело
Вместе с kernel.org под раздачу попали смежные ресурсы. Проверь их статус если работаешь с любым из этого:
- docs.kernel.org — документация ядра
- patchwork.kernel.org — патч-трекер
- lore.kernel.org — архив рассылок
- elixir.bootlin.com — онлайн cross-reference кода ядра
По состоянию на апрель 2026 ситуация плавающая: утром доступно, вечером нет. Зависит от провайдера и того, не прилетело ли сегодня по Telegram снова.
Часть 2. AI-разработка: Hugging Face, OpenAI API и суверенный ИИ
Что упало первым
Разработка ИИ получила двойной удар. Сначала — блокировки CDN, через которые раздаются веса моделей. Потом — законопроект Минцифры марта 2026 про суверенный ИИ, который обязывает регистрировать внутренние модели в реестре российского ПО ради льгот.
Конкретно что не работает или работает через боль:
- Hugging Face Hub — скачивание моделей (Llama 3, Mistral, Gemma 2) зависает на CDN
- OpenAI API, Anthropic API, Grok — inference-запросы требуют корпоративных прокси
- GitHub Copilot — нестабильно из-за проблем с GitHub API
- Weights & Biases, MLflow cloud — телеметрия экспериментов
- Google Colab, Kaggle — GPU в облаке через VPN теперь под вопросом
Ирония 2026 года
Роскомнадзор тратит 2,27 млрд рублей на ИИ для блокировки VPN-трафика. Разработчики российских AI-решений тратят миллионы на обход тех же самых фильтров чтобы скачать обучающие данные и веса моделей. Это не парадокс — это просто наш быт.
Рецепт: self-hosted зеркало Hugging Face
Шаг 1. Поднять локальное зеркало HuggingFace Hub на внутреннем сервере.
# Устанавливаем huggingface_hub
pip install huggingface_hub
# Скачиваем модель через VPN один раз и сохраняем локально
huggingface-cli download mistralai/Mistral-7B-Instruct-v0.3 \
--local-dir /srv/models/mistral-7b \
--local-dir-use-symlinks False
Шаг 2. Поднять локальный API-сервер с моделью через Ollama или vLLM.
# Вариант через Ollama (проще)
curl -fsSL https://ollama.ai/install.sh | sh
# Добавляем модель из локальной директории
ollama create mistral-local -f /srv/models/mistral-7b/Modelfile
# Запускаем
ollama serve &
ollama run mistral-local
# Вариант через vLLM (для продакшна, OpenAI-совместимый API)
pip install vllm
python -m vllm.entrypoints.openai.api_server \
--model /srv/models/mistral-7b \
--host 0.0.0.0 \
--port 8000
Шаг 3. Приложения переключаются на внутренний endpoint.
from openai import OpenAI
# Вместо api.openai.com - внутренний сервер
client = OpenAI(
base_url="http://192.168.1.20:8000/v1",
api_key="not-needed-for-local"
)
response = client.chat.completions.create(
model="mistral-local",
messages=[{"role": "user", "content": "Привет"}]
)
print(response.choices[0].message.content)
Таблица: AI-инструменты и альтернативы
| Инструмент |
Статус апрель 2026 |
Альтернатива |
Сложность перехода |
| Hugging Face Hub |
Нестабильно |
Self-hosted + Ollama/vLLM |
Средняя |
| OpenAI API |
Через прокси |
Local vLLM + OpenAI-compat API |
Средняя |
| GitHub Copilot |
Нестабильно |
Continue.dev + local LLM |
Низкая |
| Google Colab GPU |
Через прокси |
Yandex Cloud GPU, Nebius AI |
Высокая |
| Weights & Biases |
Нестабильно |
MLflow self-hosted |
Низкая |
| YandexGPT API |
Работает |
— |
— |
| GigaChat API |
Работает |
— |
— |
Стоимость перехода на self-hosted AI
Честные цифры. Полноценный inference-сервер для команды из 10 разработчиков:
- Сервер с NVIDIA A100 40GB аренда — от 150 000 руб/мес в российских облаках
- Сервер с 2x RTX 4090 покупка — от 700 000 руб. разово
- Yandex Cloud GPU (a100) — от 200 руб/час
- Nebius AI (основан на Yandex, работает без VPN) — от $0.8/GPU-час
Реальный рост стоимости AI-разработки по сравнению с «просто OpenAI API» — в 1,5-2 раза. Это не предположение. Это цифры от команд которые уже перешли.
Часть 3. API и DevOps: CI/CD под ударом
Что происходит с пайплайнами
CI/CD — это вереница HTTP-запросов к внешним ресурсам. Каждый из них теперь под вопросом.
Типичный пайплайн упирается в:
- GitHub API — push, pull, Actions, webhooks
- Docker Hub — базовые образы (ubuntu, python, node)
- PyPI (pypi.org) — pip install в каждом билде
- npm registry (registry.npmjs.org) — npm ci в каждом билде
- crates.io — Rust-проекты
- pkg.go.dev — Go-модули
Статистика апреля 2026 из разных команд: падение CI/CD в 30-40% запусков. Время сборки выросло на 50-200%. Не потому что код стал хуже — потому что apt-get update ждёт ответа от archive.ubuntu.com три минуты.
Архитектура выживания DevOps
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#ffffff',
'primaryTextColor': '#1e293b',
'primaryBorderColor': '#94a3b8',
'lineColor': '#64748b',
'fontSize': '15px',
'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
},
'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
DEV["Разработчик"] --> GIT["GitFlic / Gitea (внутренний)"]
GIT --> CI["CI-сервер (Gitea Actions / Jenkins)"]
CI --> NEXUS["Nexus / Artifactory (зеркала пакетов)"]
CI --> REG["Harbor (container registry)"]
NEXUS --> PYPI["Зеркало PyPI"]
NEXUS --> NPM["Зеркало npm"]
NEXUS --> MAVEN["Зеркало Maven/Go"]
REG --> DHUB["Кеш Docker Hub"]
CI --> PROD["Продакшн"]
style DEV fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style GIT fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style CI fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
style NEXUS fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style REG fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style PROD fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
style PYPI fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#475569
style NPM fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#475569
style MAVEN fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#475569
style DHUB fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#475569
Шаг 1. Поднять Nexus Repository Manager
# Через Docker Compose
cat > /srv/nexus/docker-compose.yml << 'EOF'
version: '3.8'
services:
nexus:
image: sonatype/nexus3:latest
ports:
- "8081:8081"
- "5000:5000"
volumes:
- nexus-data:/nexus-data
restart: unless-stopped
volumes:
nexus-data:
EOF
docker compose -f /srv/nexus/docker-compose.yml up -d
После запуска открой http://192.168.1.10:8081. Начальный пароль - в файле /nexus-data/admin.password внутри контейнера.
# Достаём начальный пароль
docker exec nexus-nexus-1 cat /nexus-data/admin.password
Шаг 2. Создать прокси-репозиторий для PyPI
В Nexus UI: Repository - Repositories - Create repository - pypi (proxy).
Настройки:
Name: pypi-proxy
Remote Storage: https://pypi.org
Blob store: default
Maximum component age: 1440 (минут = 24 часа)
Настраиваем pip на внутренний репозиторий:
# В проекте создаём pip.conf
mkdir -p ~/.pip
cat > ~/.pip/pip.conf << 'EOF'
[global]
index-url = http://192.168.1.10:8081/repository/pypi-proxy/simple/
trusted-host = 192.168.1.10
EOF
Шаг 3. Зеркало npm
# Создаём npm-proxy в Nexus аналогично PyPI
# Remote Storage: https://registry.npmjs.org
# Настраиваем npm
npm config set registry http://192.168.1.10:8081/repository/npm-proxy/
Шаг 4. Harbor как registry для Docker-образов
# Скачиваем Harbor installer
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-online-installer-v2.10.0.tgz
tar xzvf harbor-online-installer-v2.10.0.tgz
cd harbor
# Копируем конфиг
cp harbor.yml.tmpl harbor.yml
# Минимальная правка harbor.yml
# hostname: 192.168.1.10
# http: port: 5000
# https: закомментировать если нет сертификата
./install.sh
После запуска настраиваем proxy cache для Docker Hub в Harbor UI: Administration - Registries - New Endpoint - Docker Hub. Потом: Projects - New Project - включить "Proxy cache".
Шаг 5. Переключить CI на внутренние зеркала
Пример для GitHub Actions / Gitea Actions:
# .gitea/workflows/build.yml
name: Build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
container:
image: 192.168.1.10:5000/library/python:3.12 # из Harbor
steps:
- uses: actions/checkout@v4
- name: Install deps
env:
PIP_INDEX_URL: http://192.168.1.10:8081/repository/pypi-proxy/simple/
PIP_TRUSTED_HOST: 192.168.1.10
run: pip install -r requirements.txt
Таблица портов внутренней инфраструктуры
| Сервис |
Порт |
Протокол |
Назначение |
| Nexus UI |
8081 |
HTTP/HTTPS |
Веб-интерфейс, API |
| Harbor |
5000 |
HTTP/HTTPS |
Docker registry |
| Gitea |
3000 |
HTTP/HTTPS |
Git-сервер |
| Gitea SSH |
2222 |
SSH |
Git push/pull |
| vLLM API |
8000 |
HTTP |
OpenAI-compat inference |
| Ollama |
11434 |
HTTP |
Local LLM API |
| MLflow |
5001 |
HTTP |
ML experiment tracking |
Часть 4. Экономика: сколько это стоит
Цифры которые уже не удивляют
По данным Top10VPN, российская экономика потеряла от интернет-ограничений в 2025 году более 1 трлн рублей - 11,9 млрд долларов. Россия первая в мире по потерям от шатдаунов, опередив все остальные страны вместе взятые.
Прогноз на 2026 год при запуске полноценных ИИ-фильтров РКН - плюс 15-20% к этим потерям.
Что это значит для разработки конкретно:
- Средний разработчик теряет 1-2 часа в день на обход ограничений
- 600+ тыс. IT-специалистов - десятки миллионов потерянных рабочих часов ежемесячно
- Стоимость инфраструктуры выросла на 20-30%
- 630+ tech-компаний обанкротились за 11 месяцев 2025 года
- AI-проекты задерживаются на 3-6 месяцев из-за проблем с доступом к данным и моделям
Прямые операционные потери команды
| Статья потерь |
Размер команды 5 чел. |
Размер команды 20 чел. |
Размер команды 50 чел. |
| Потеря продуктивности (1.5 ч/день) |
~150 000 руб/мес |
~600 000 руб/мес |
~1 500 000 руб/мес |
| Дополнительная инфраструктура |
~30 000 руб/мес |
~80 000 руб/мес |
~200 000 руб/мес |
| Задержка релизов (среднее) |
+2-3 дня/спринт |
+3-5 дней/спринт |
+5-7 дней/спринт |
Расчёт грубый. Но порядок цифр правильный.
Часть 5. Проверка - всё ли работает
Диагностика доступности ресурсов
#!/bin/bash
# Скрипт проверки доступности ресурсов для разработки
# Запусти и посмотри что красное
RESOURCES=(
"https://git.kernel.org"
"https://github.com"
"https://pypi.org"
"https://registry.npmjs.org"
"https://hub.docker.com"
"https://huggingface.co"
"https://crates.io"
"https://pkg.go.dev"
)
echo "=== Проверка доступности ресурсов ==="
for url in "${RESOURCES[@]}"; do
code=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 --max-time 10 "$url")
if [ "$code" -ge 200 ] && [ "$code" -lt 400 ]; then
echo "OK [$code] $url"
else
echo "FAIL[$code] $url"
fi
done
Проверка внутренних зеркал
# Nexus работает?
curl -s http://192.168.1.10:8081/service/rest/v1/status | python3 -m json.tool
# Harbor работает?
curl -s http://192.168.1.10:5000/v2/ -u "admin:password"
# PyPI через Nexus работает?
pip install requests --index-url http://192.168.1.10:8081/repository/pypi-proxy/simple/ --dry-run
# Docker pull через Harbor работает?
docker pull 192.168.1.10:5000/dockerhub-cache/library/python:3.12
# vLLM отвечает?
curl http://192.168.1.10:8000/v1/models
Проверка CI/CD пайплайна
# Запусти тестовый пайплайн с явными таймаутами
# Если упал - смотри какой именно шаг
# Пример диагностики медленного pip install
pip install -r requirements.txt \
--index-url http://192.168.1.10:8081/repository/pypi-proxy/simple/ \
-v 2>&1 | grep -E "(Downloading|Looking|Found|ERROR)"
Часть 6. Осложнения - что идёт не так
Типичные ошибки и как их чинить
Ошибка: Nexus не проксирует PyPI
Симптом: pip install завершается ошибкой даже через внутренний Nexus.
Причина: Nexus не может достучаться до pypi.org с сервера.
Решение: настроить HTTP
proxy для самого Nexus или обновить кеш вручную.
# В nexus/nexus.properties добавляем proxy для исходящих запросов
# Файл обычно в /nexus-data/etc/nexus.properties
cat >> /nexus-data/etc/nexus.properties << 'EOF'
javax.net.ssl.trustStore=/nexus-data/truststore.jks
nexus.httpclient.proxy.http.host=your-proxy.internal
nexus.httpclient.proxy.http.port=3128
EOF
Ошибка: Docker pull через Harbor - unauthorized
Симптом: docker pull 192.168.1.10:5000/… возвращает 401.
Причина: не выполнен docker login на внутренний registry.
docker login 192.168.1.10:5000 -u admin -p your-password
# Если Harbor без TLS - нужно добавить в insecure-registries
# /etc/docker/daemon.json
cat > /etc/docker/daemon.json << 'EOF'
{
"insecure-registries": ["192.168.1.10:5000"]
}
EOF
systemctl restart docker
Ошибка: git clone завис без ошибки
Симптом: git clone начался, показал Cloning into… и завис.
Причина: ТСПУ режет TLS хендшейк до git-сервера, не разрывая TCP-соединение.
Решение: явные таймауты в git и переход на SSH вместо HTTPS.
# Глобальные таймауты для git
git config --global http.lowSpeedLimit 1000
git config --global http.lowSpeedTime 30
# Диагностика - смотрим где зависает
GIT_CURL_VERBOSE=1 git clone https://github.com/your/repo 2>&1 | head -50
# Переходим на SSH если есть возможность
git remote set-url origin git@github.com:your/repo.git
Ошибка: GitHub Actions падает на checkout
Симптом: actions/checkout@v4 возвращает error: RPC failed; curl 28 Operation timed out.
Причина: раннер не может подключиться к github.com для клонирования.
Решение: использовать self-hosted runner или перейти на Gitea Actions с Gitea runner.
# Устанавливаем Gitea runner
# На сервере с Gitea
wget https://dl.gitea.com/act_runner/latest/act_runner-linux-amd64
chmod +x act_runner-linux-amd64
./act_runner-linux-amd64 register \
--instance http://192.168.1.10:3000 \
--token YOUR_RUNNER_TOKEN \
--name internal-runner \
--labels ubuntu-latest:docker://192.168.1.10:5000/library/ubuntu:22.04
Ошибка: Hugging Face скачивает модель бесконечно медленно
Симптом: huggingface-cli download показывает скорость 10-50 KB/s вместо нормальных мегабайт.
Причина: CDN Hugging Face (Cloudflare) попадает под ковровую фильтрацию.
Решение: использовать альтернативные endpoint или скачивать через сервер за рубежом.
# Альтернативный endpoint через hf-mirror.com (китайское зеркало, часто доступно)
HF_ENDPOINT=https://hf-mirror.com huggingface-cli download \
mistralai/Mistral-7B-Instruct-v0.3 \
--local-dir /srv/models/mistral-7b
# Или через modelscope (другое зеркало)
pip install modelscope
python -c "from modelscope import snapshot_download; snapshot_download('AI-ModelScope/Mistral-7B-Instruct-v0.3')"
Часть 7. Безопасность внутренней инфраструктуры
Это раздел про безопасность - без шуток
Когда поднимаешь внутренние зеркала — ты берёшь на себя ответственность за их
безопасность. Nexus и Harbor с дефолтными паролями admin/admin в инфраструктуре — это не решение проблем, это создание новых.
Минимальный чеклист безопасности
# 1. Смени дефолтные пароли СРАЗУ после установки
# Nexus, Harbor, Gitea - везде меняй admin пароль в первый запуск
# 2. Настрой firewall - Nexus и Harbor не должны быть доступны извне
ufw allow from 192.168.0.0/16 to any port 8081
ufw allow from 192.168.0.0/16 to any port 5000
ufw deny 8081
ufw deny 5000
# 3. Включи TLS для всех внутренних сервисов (Let's Encrypt или внутренний CA)
# Генерируем внутренний CA
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 1826 -key ca.key -out ca.crt \
-subj "/C=RU/O=YourCompany Internal CA/CN=internal.ca"
# 4. Включи RBAC в Harbor
# Administration - Users - создай отдельных пользователей с минимальными правами
# 5. Настрой ротацию логов
cat >> /etc/logrotate.d/nexus << 'EOF'
/nexus-data/log/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
}
EOF
Резервное копирование зеркал
#!/bin/bash
# Бэкап Nexus blob store
BACKUP_DIR=/backup/nexus/$(date +%Y%m%d)
mkdir -p $BACKUP_DIR
# Nexus должен быть в режиме read-only во время бэкапа
# или используем snapshot на уровне файловой системы
rsync -av --delete /nexus-data/blobs/ $BACKUP_DIR/blobs/
rsync -av /nexus-data/db/ $BACKUP_DIR/db/
# Harbor - экспортируем через replication или просто rsync
rsync -av /data/harbor/ /backup/harbor/$(date +%Y%m%d)/
# Что бэкапим:
# Nexus: /nexus-data (конфиги + blobs)
# Harbor: /data/harbor (registry данные)
# Gitea: /data/gitea (репозитории + база)
echo "Backup completed: $BACKUP_DIR"
Часть 8. Альтернативные решения
GitFlic как замена GitHub
GitFlic - российская платформа, работает без VPN, есть API совместимый с GitHub в базовых операциях. Из коробки: приватные репозитории, CI/CD, issue tracker. Ограничения: экосистема меньше, сторонние интеграции нужно проверять.
# Добавляем GitFlic как remote
git remote add gitflic https://gitflic.ru/project/yourname/yourrepo.git
# Push в GitFlic
git push gitflic main
# Или переносим основной remote
git remote set-url origin https://gitflic.ru/project/yourname/yourrepo.git
Gitea как полностью self-hosted Git
# Быстрый старт через Docker
docker run -d \
--name gitea \
-p 3000:3000 \
-p 2222:22 \
-v /srv/gitea:/data \
--restart=always \
gitea/gitea:latest
Альтернативный стек для команды
| Компонент |
Заменяет |
Решение |
Лицензия |
| Хостинг кода |
GitHub |
Gitea / GitFlic |
MIT / Проприетарная |
| CI/CD |
GitHub Actions |
Gitea Actions / Jenkins |
MIT / Apache 2.0 |
| Пакеты Python |
PyPI |
Nexus proxy |
Apache 2.0 |
| Пакеты npm |
npmjs.org |
Nexus proxy / Verdaccio |
Apache 2.0 / MIT |
| Docker images |
Docker Hub |
Harbor + proxy cache |
Apache 2.0 |
| LLM inference |
OpenAI API |
vLLM / Ollama |
Apache 2.0 / MIT |
| ML tracking |
W&B |
MLflow self-hosted |
Apache 2.0 |
| Мониторинг |
Datadog |
Prometheus + Grafana |
Apache 2.0 |
Часть 9. Профилактика: не ломать снова
Мониторинг доступности
# Простой мониторинг через cron + алерты в Telegram
cat > /usr/local/bin/check-mirrors.sh < /dev/null
fi
}
check_url "http://192.168.1.10:8081/service/rest/v1/status" "Nexus"
check_url "http://192.168.1.10:5000/v2/" "Harbor"
check_url "http://192.168.1.10:3000" "Gitea"
check_url "http://192.168.1.10:8000/v1/models" "vLLM"
EOF
chmod +x /usr/local/bin/check-mirrors.sh
echo "*/5 * * * * root /usr/local/bin/check-mirrors.sh" >> /etc/cron.d/mirror-check
Автообновление зеркал
# Обновление Linux kernel mirror
cat > /etc/cron.d/mirrors <&1 | logger -t kernel-mirror
# Синхронизация PyPI snapshots - раз в сутки (если нужно полное зеркало, не прокси)
30 2 * * * root /usr/local/bin/sync-pypi.sh 2>&1 | logger -t pypi-sync
EOF
Документирование инфраструктуры
Одна строка в crontab без комментария - через полгода никто не помнит зачем она. Документируй всё что поднял. Хотя бы в README.md в Gitea.
# Минимальный шаблон документации для внутренней инфраструктуры
cat > /srv/README.md << 'EOF'
# Внутренняя инфраструктура для обхода блокировок
## Сервисы
- Nexus: http://192.168.1.10:8081 (пакеты Python, npm, Docker)
- Harbor: http://192.168.1.10:5000 (Docker registry)
- Gitea: http://192.168.1.10:3000 (Git)
- vLLM: http://192.168.1.10:8000 (LLM inference)
## Обновлено
$(date +%Y-%m-%d) - $(whoami)
## Доступы
Логины в Bitwarden, тег "internal-infra"
## Как восстановить после краша
1. Поднять docker compose -f /srv/nexus/docker-compose.yml up -d
2. Восстановить из бэкапа /backup/nexus/latest
3. Проверить check-mirrors.sh
EOF
Часть 10. Долгосрочный прогноз
Куда движется отрасль
К концу 2026 года IT-рынок России движется к расщеплению на два сегмента. Первый - суверенный: госзаказы, КИИ, полная изоляция от внешних инструментов. Второй - экспортный: команды с инфраструктурой за рубежом, работающие с международными клиентами.
Позитивный эффект блокировок - ускоренное развитие отечественных аналогов. GitFlic растёт. Yandex Cloud и Nebius расширяют GPU-мощности. GigaChat и YandexGPT получают больше вложений. Отечественные дистрибутивы Linux становятся более самостоятельными.
Негативный эффект - глобальная конкурентоспособность падает. Если тенденция продолжится, к 2027 году российский IT потеряет 20-25% темпов роста по оценкам аналитиков. Утечка мозгов продолжается - разработчики переезжают или переносят инфраструктуру туда где нет фильтров.
Что делать прямо сейчас
Ирония в том, что государство добивается импортозамещения - а блокировки тормозят именно тех, кто создаёт российские продукты. Но это наша реальность на 2026 год. Жить и работать в ней можно - нужен правильный стек.
Если у тебя команда до 10 человек - достаточно Nexus + Gitea + Ollama. Поднимается за день, поддерживается одним человеком.
Если 20+ человек - добавляй Harbor, выделяй отдельный сервер под зеркала, настраивай мониторинг и бэкапы.
Если работаешь с AI - самое время разворачивать self-hosted inference. Модели класса Mistral 7B и Gemma 9B закрывают 80% задач помощи в коде и обработки текста. И работают без VPN и без задержек из Москвы в Сан-Франциско.
Если что-то не заработало - пиши
Статья закрывает основные сценарии. Но инфраструктуры разные — у тебя может быть своя особенность. Пиши в комментарии или в чат — разберёмся. Заодно обновим статью.
FAQ
Почему git.kernel.org заблокирован если Linux не запрещён?
Потому что ТСПУ работает по IP-диапазонам и сигнатурам трафика, а не по белым спискам. Когда замедляют Telegram или блокируют VPN-сервисы - под раздачу попадают случайные ресурсы в тех же CDN-диапазонах. Роскомнадзор это признаёт, но не считает своей проблемой. Решение - внутренние зеркала.
Как проверить что проблема в блокировке а не в моей сети?
# Сравниваем MTR через разные интерфейсы
# Без VPN:
mtr --report --report-cycles 10 git.kernel.org
# С VPN (если работает):
mtr --report --report-cycles 10 git.kernel.org
# Смотрим где пакеты теряются. Потери на 3-5 хопе внутри России - ТСПУ.
# Потери дальше - проблема маршрутизации к конкретному ресурсу.
# Альтернатива - traceroute
traceroute -n github.com
# Быстрая проверка - сравниваем время ответа с VPN и без
time curl -s -o /dev/null https://github.com
time curl -s -o /dev/null --proxy socks5://127.0.0.1:1080 https://github.com
Что если компания лишится IT-аккредитации из-за VPN?
IT-аккредитация даёт льготы - сниженный налог на прибыль (0% до 2025, 5% с 2025), льготная ставка по взносам, отсрочка от армии для сотрудников. Потеря аккредитации - удар по операционным расходам. Компании с госзаказами также теряют возможность участвовать в тендерах. Поэтому крупные игроки (Сбер, Яндекс, VK) и начали блокировать VPN-пользователей - не потому что хотят, а потому что это условие сохранения льгот.
Почему CI/CD падает даже когда GitHub работает?
GitHub может быть доступен, но конкретный запрос из CI может уходить через другой маршрут или другой IP. Также: GitHub Actions использует несколько десятков IP-диапазонов, часть которых попадает под фильтры. Второй фактор - GitHub API rate limits на корпоративных IP. Третий - CDN для скачивания артефактов Actions отличается от CDN для git операций. Решение - self-hosted runners в твоей инфраструктуре.
Как скачать модель с Hugging Face если она 70 гигабайт?
Три варианта. Первый: арендовать VPS за рубежом, скачать туда, потом rsync в локальную сеть. Второй: использовать hf-mirror.com - китайское зеркало, часто доступно без VPN. Третий: использовать квантизированные версии - GGUF форматы в 4bit занимают в 4-6 раз меньше. Mistral 7B в Q4 весит около 4 GB вместо 14 GB в bf16.
# Скачать квантизированную модель (намного легче)
# TheBloke раньше был основным поставщиком GGUF, сейчас есть unsloth и другие
HF_ENDPOINT=https://hf-mirror.com huggingface-cli download \
unsloth/Mistral-7B-Instruct-v0.3-GGUF \
--include "Mistral-7B-Instruct-v0.3-Q4_K_M.gguf" \
--local-dir /srv/models/
# Запустить через llama.cpp без GPU
./llama.cpp/llama-server -m /srv/models/Mistral-7B-Instruct-v0.3-Q4_K_M.gguf --port 8080
Что если внутренний Nexus сам стал недоступен?
# Проверяем статус контейнера
docker ps | grep nexus
docker logs nexus-nexus-1 --tail 50
# Типичные причины:
# 1. Кончилось место на диске
df -h /nexus-data
# 2. OOM killer прибил процесс
dmesg | grep -i "out of memory" | tail -10
# 3. Порт занят
ss -tlnp | grep 8081
# Перезапуск
docker compose -f /srv/nexus/docker-compose.yml restart
Системные требования для внутренней инфраструктуры
| Сервис |
CPU |
RAM |
Диск |
ОС |
| Nexus Repository |
2+ vCPU |
4+ GB |
100+ GB SSD |
Ubuntu 22.04 / RHEL 8+ |
| Harbor Registry |
2+ vCPU |
4+ GB |
200+ GB SSD |
Ubuntu 22.04 / RHEL 8+ |
| Gitea |
1+ vCPU |
1+ GB |
50+ GB SSD |
Ubuntu 22.04 / любая Linux |
| vLLM (GPU) |
8+ vCPU |
32+ GB |
200+ GB SSD |
Ubuntu 22.04 + CUDA 12+ |
| Ollama (CPU) |
8+ vCPU |
16+ GB |
50+ GB SSD |
Ubuntu 22.04 / macOS 14+ |
| MLflow |
2+ vCPU |
4+ GB |
50+ GB SSD |
Ubuntu 22.04 / любая Linux |
На момент публикации (апрель 2026) актуальны: Nexus 3.67, Harbor 2.10, Gitea 1.22, vLLM 0.4, Ollama 0.2. Перед установкой проверь свежие релизы на официальных страницах.