Блокировки Роскомнадзора 2026: что сломалось в Linux, AI и API — и как с этим жить

Блокировки Роскомнадзора 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. Перед установкой проверь свежие релизы на официальных страницах.

Андрей Анатольевич
Author: Андрей Анатольевич

Руководитель ИТ / Кризис-менеджер 25 лет в IT: от инженера в МегаФоне до руководителя отдела. Знаю, как выглядит бардак: нестабильные сети, устаревшая инфраструктура, конфликты в команде, раздутые сроки. Помогаю бизнесу выходить из кризиса: навожу порядок в легаси, стабилизирую то, что разваливается, выстраиваю прогнозируемые процессы. Не раз возвращал к жизни ИТ-структуры — знаю цену хаосу. 📍 Ищу проект для полной реорганизации / стабилизации. 📬 Telegram: @over_dude ✉️ mail@it-apteka.com

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →

Мы ВКонтакте

IT-Аптека — советы, новости и помощь рядом.

Вступить в группу ВКонтакте →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх