feat(ru): full Russia/offline support (#RF)

- Add lib/download_helper.sh: proxy detection, GitHub mirrors, offline cache, tarball fallback
- Rewrite install_nfqws.sh: offline bundle support, bol-van/zapret via git clone + tarball + mirror fallback
- Rewrite sync_from_upstream.sh: proxy aware, --offline flag, graceful degradation
- Add prepare_offline_bundle.sh: create tar.gz with sources + lists + fake bins on machine WITH internet
- Add .env.example: GITHUB_PROXY, HTTPS_PROXY configuration
- Update install.sh: check GitHub reachability, suggest proxy/offline, --offline flag
- Update README: Russia section at top, Offline section, VPN/proxy examples, .env guide
This commit is contained in:
2026-05-10 20:11:08 +04:00
parent 1bca276c7f
commit 2a6a358baf
7 changed files with 675 additions and 174 deletions
+125
View File
@@ -6,6 +6,39 @@ Linux-аналог популярного репозитория [Flowseal/zapre
---
## Важно для пользователей из России
GitHub заблокирован в РФ. Установщик **автоматически использует** прокси/зеркала, но рекомендуется:
1. **Если есть VPN/прокси** — самый простой способ:
```bash
# Вариант A: системный прокси
export HTTPS_PROXY=socks5://127.0.0.1:1080
sudo ./install.sh
# Вариант B: proxychains
proxychains ./install.sh
```
2. **Если нет VPN на целевой машине** — подготовьте офлайн-пакет:
```bash
# На машине С интернетом (с VPN):
cd /opt/zapret
proxychains ./prepare_offline_bundle.sh
# Перенесите zapret-discord-youtube-linux-bundle.tar.gz
# на целевую машину, распакуйте и:
sudo ./install.sh --offline
```
3. **Если установка падает на скачивании**:
- Проверьте `.env.example` → создайте `.env` с `GITHUB_PROXY=...`
- Или передайте прокси через переменную окружения
Подробнее: раздел **Offline / РФ** внизу.
---
## Быстрый старт
```bash
@@ -369,6 +402,98 @@ sudo ./update.sh --full-auto
---
## Работа в России / Offline-режим
### Почему нужен прокси или offline-бандл
- `github.com` заблокирован в РФ
- Оригинальный репозиторий лежит на GitHub (Flowseal/zapret-discord-youtube)
- Исходники `nfqws` тоже на GitHub (bol-van/zapret)
- Наш проект на **Gitea**, поэтому клонирование работает, но внутренние скачивания (lists, hosts, bol-van/zapret) — используют GitHub
### Вариант 1: Установка с VPN/прокси (рекомендуется)
```bash
# Системный прокси
export HTTPS_PROXY=socks5://127.0.0.1:1080
export HTTP_PROXY=socks5://127.0.0.1:1080
sudo ./install.sh
# Или proxychains
proxychains ./install.sh
```
Также можно настроить `~/.bashrc`:
```bash
echo 'export HTTPS_PROXY=socks5://127.0.0.1:1080' >> ~/.bashrc
source ~/.bashrc
```
### Вариант 2: Offline-бандл (без интернета на целевой машине)
На машине **с интернетом** (например, у друга, или с VPN на работе):
```bash
cd /opt/zapret
proxychains ./prepare_offline_bundle.sh
```
Получите файл: `zapret-discord-youtube-linux-bundle.tar.gz`
На машине **без интернета**:
```bash
cd /opt
sudo tar -xzf zapret-discord-youtube-linux-bundle.tar.gz
cd zapret-bundle-*/installed-scripts
sudo ./install.sh --offline
```
Бандл содержит:
- Исходники `bol-van/zapret` (для сборки nfqws)
- `lists/*.txt` (свежие домены)
- `.service/hosts` (статичные IP)
- Все скрипты и стратегии
### Вариант 3: Установка на Windows и перенос в Linux
1. Скачать репозиторий на Windows (где VPN работает)
2. Перенести на Linux через флешку/сеть
3. На Linux запустить `sudo ./install.sh --offline`
### Если GitHub заблокирован — поведение скриптов
| Скрипт | Поведение при отсутствии интернета |
|--------|-----------------------------------|
| `install.sh` | Предупреждает, спрашивает, можно запустить `--offline` |
| `sync_from_upstream.sh` | Переключается в offline-режим, использует `.bundle/` |
| `update.sh` | Если sync не удался — сообщает и выходит |
| `install_nfqws.sh` | Предлагает proxychains, `--offline`, или `prepare_offline_bundle.sh` |
### Настройка прокси через .env
```bash
cp .env.example .env
nano .env
```
```
GITHUB_PROXY=socks5://127.0.0.1:1080
```
Скрипты автоматически прочитают `.env` при запуске.
### Обновление при заблокированном GitHub
```bash
# С VPN/proxy на целевой машине:
sudo ./update.sh --full-auto
# Или через proxychains:
proxychains ./update.sh --full-auto
```
---
## Лицензия
MIT License.