Sury Unlocker Script — это Bash-скрипт, созданный в ответ на геоблокировку в июле 2024 года, которая ограничила доступ к packages.sury.org для IP-адресов из России. После того как Ондржей Сурый (Ondřej Surý) ввёл географические ограничения для своих PHP PPA-репозиториев, этот скрипт был разработан как законное решение для получения доступа к этим важным ресурсам для разработки. Скрипт использует OpenVPN с поддержкой split-туннелинга для обхода IP-блокировок, поддерживая как дистрибутивы на базе Debian, так и на базе RHEL. Хотя репозитории Sury доступны только для Debian-систем, скрипт можно использовать как на хост-системах, так и в Docker-контейнерах, вне зависимости от операционной системы хоста. Включает поддержку аутентификации VPN и инструменты управления репозиториями.
Это связано с тем, что Роскомнадзор блокирует протоколы VPN, и тот, что используется здесь, вероятно, также заблокирован
Если вам нужно решение для локальной разработки в России, рассмотрите использование HLVPN: https://t.me/s/highloadofficial
- ✅ Поддержка разных дистрибутивов:
- Системы на базе Debian: Полная поддержка с возможностью установки репозиториев Sury (Debian, Ubuntu, Linux Mint и др.)
- Системы на базе RHEL: Работают как прокси-хост для VPN-туннеля. Идеально подходят для запуска Docker-контейнеров с Debian/Sury
- ✅ Гибкое развёртывание:
- На хост-системах RHEL можно запускать Docker-контейнеры с Debian и репозиториями Sury
- VPN-туннель на хосте автоматически работает для всех контейнеров
- ✅ Автоматическая настройка: Автоматически устанавливает и настраивает OpenVPN и утилиты для работы с DNS
- ✅ Split-туннелинг: Перенаправляет только определённый трафик через VPN
- ✅ Поддержка кастомных конфигураций:
- Возможность указания пользовательских
.ovpnфайлов - Поддержка VPN-серверов с аутентификацией (логин/пароль)
- Возможность указания пользовательских
- ✅ Управление репозиториями Sury:
- Установка репозиториев официальным методом
- Возможность полного удаления репозиториев при необходимости
- Поддерживаемые хост-системы:
- Любой дистрибутив Linux (на базе Debian или RHEL). Системы на базе RHEL предназначены для проксирования трафика к packages.sury.org, в основном для дальнейшего запуска Docker контейнеров с PHP Sury.
- Для репозиториев Sury:
- Поддерживаются только системы на базе Debian (хост или контейнер)
- Docker (опционально):
- Поддерживается на любой хост-системе для работы в контейнеризированной среде
- Получите
.ovpnфайл от вашего VPN-провайдера, находящегося за пределами России. - Бесплатные OpenVPN конфигурации можно найти на FreeOpenVPN.org. Обязательно используйте TCP-серверы.
- Поместите
.ovpnфайл в ту же директорию, где находится скрипт.
-
Клонируйте репозиторий:
Для систем на базе Debian:
apt install git -y && \ git clone https://github.com/alex2276564/sury-unlocker.git && \ cd sury-unlocker
Для систем на базе RHEL:
yum install git -y && \ git clone https://github.com/alex2276564/sury-unlocker.git && \ cd sury-unlocker
-
Подготовьте конфигурацию OpenVPN:
- Поместите ваш
.ovpnфайл в директориюsury-unlocker. - Имя файла может быть любым, главное, чтобы он находился в одной папке со скриптом.
- Поместите ваш
-
Сделайте скрипт исполняемым:
chmod +x sury-unlocker.sh
-
Запустите скрипт:
- С настройками по умолчанию:
./sury-unlocker.sh
- Или с указанием пользовательского имени файла
.ovpn:
./sury-unlocker.sh -path=your_custom_name.ovpn
-
Удалите репозитории Sury (опционально):
- Если после блокировки у вас появляется ошибка при
apt update, используйте эту команду для удаления Sury репозиториев:
./sury-unlocker.sh -deletesuryrepositories
- Если после блокировки у вас появляется ошибка при
-
Добавьте репозитории Sury официальным методом:
./sury-unlocker.sh -addsuryrepositories
- Если появляется ошибка при выполнении команды
addsuryrepositories, попробуйте следующее:-
Завершите текущее VPN-соединение командой
disableovpn:./sury-unlocker.sh -disableovpn
-
Удалите старый
.ovpnфайл из текущей директории, если вы не использовали опцию-path. -
Найдите новый бесплатный VPN-сервер, например, на FreeOpenVPN.org или OpenTunnel.net.
-
Снова подключитесь к VPN, используя новый
.ovpnфайл, и попробуйте снова добавить репозитории Sury. Повторяйте эти шаги до тех пор, пока репозитории не будут добавлены успешно.
-
- Если появляется ошибка при выполнении команды
-
Установите необходимый PHP:
- После успешного добавления репозиториев Sury вы можете установить нужную версию PHP, например:
apt install php7.4
- Обратите внимание, что установка PHP возможна только при активном VPN-соединении. Если VPN отключится, вам нужно будет повторно подключиться, используя новый VPN-сервер, и повторить попытку.
Перед запуском убедитесь, что ваш .ovpn файл находится в той же папке, что и скрипт.
Скрипт поддерживает множество опций для настройки его работы. Вот как его можно использовать:
Чтобы увидеть все доступные опции и их описание:
./sury-unlocker.sh -helpЗапустите скрипт без аргументов, чтобы автоматически настроить OpenVPN с поддержкой split-туннелинга для доступа к packages.sury.org:
./sury-unlocker.shУкажите пользовательский файл .ovpn с помощью опции -path:
./sury-unlocker.sh -path=/путь/к/вашему/имени_файла.ovpnЕсли ваш VPN требует аутентификации, вы можете указать имя пользователя и пароль:
./sury-unlocker.sh -username=ваше_имя_пользователя -password=ваш_парольЧтобы установить репозитории Sury с помощью официального установщика (только для систем на базе Debian или Docker-контейнеров на базе Debian, использовать только при включённом VPN):
./sury-unlocker.sh -addsuryrepositoriesЧтобы удалить репозитории Sury и связанные с ними файлы из вашей системы, используйте опцию -deletesuryrepositories:
./sury-unlocker.sh -deletesuryrepositoriesЕсли нужно остановить демон OpenVPN, используйте опцию -disableovpn:
./sury-unlocker.sh -disableovpnВы можете включить Sury Unlocker Script в свой Dockerfile, чтобы обойти блокировку Sury.org при создании или запуске контейнеризированных приложений. В этом примере убедитесь, что ваш файл конфигурации OpenVPN your_custom_name.ovpn находится в той же директории, что и Dockerfile. Этот файл будет скопирован в контейнер в процессе сборки.
-
Чтобы запустить OpenVPN внутри контейнера, необходимо предоставить контейнеру дополнительные привилегии. Это можно сделать двумя способами:
С использованием
docker run:docker run --cap-add=NET_ADMIN --device=/dev/net/tun:/dev/net/tun your-image-name
С использованием
docker-compose.yml:services: your-service: build: . cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun
-
Для хост-систем на базе Debian/RHEL: Если вы используете хост-систему на базе Debian или RHEL, вы можете запускать скрипт напрямую на хосте. После активации VPN на хосте все Docker-контейнеры автоматически будут использовать VPN-соединение через сеть хоста.
-
В примере Dockerfile ниже: OpenVPN будет активен только на этапе сборки (например, при установке PHP 7.4). После запуска контейнера VPN-соединение в этом примере не будет автоматически установлено.
FROM debian:latest
# Обновляем систему и устанавливаем зависимости для Sury Unlocker Script
# Эти пакеты необходимы для запуска скрипта и управления OpenVPN
RUN apt-get update && apt-get install -y \
git \
openvpn \
dnsutils
# Клонируем и настраиваем Sury Unlocker Script
RUN git clone https://github.com/alex2276564/sury-unlocker.git /opt/sury-unlocker
WORKDIR /opt/sury-unlocker
RUN chmod +x sury-unlocker.sh
# Копируем пользовательский файл .ovpn в контейнер
COPY your_custom_name.ovpn /opt/sury-unlocker/your_custom_name.ovpn
# Запускаем Sury Unlocker Script с пользовательской конфигурацией OpenVPN
RUN ./sury-unlocker.sh -path=/opt/sury-unlocker/your_custom_name.ovpn
# Устанавливаем репозитории Sury с помощью скрипта
RUN ./sury-unlocker.sh -addsuryrepositories
# Устанавливаем PHP 7.4 (или любой другой пакет из репозиториев Sury)
RUN apt-get install -y php7.4Без предоставления контейнеру соответствующих привилегий (включая возможность использовать устройство TUN и способность управлять сетью через NET_ADMIN) OpenVPN не будет работать внутри контейнера. Убедитесь, что вы запускаете ваш контейнер с необходимыми привилегиями, как показано в примерах выше.
Скрипт выполняет следующие шаги:
-
Определение ОС и проверка зависимостей
- Определяет операционную систему (Debian-based, RHEL-based или другая поддерживаемая система)
- Проверяет наличие необходимых инструментов и устанавливает их, если нужно:
openvpnдля подключения через VPNdnsutils(для Debian) илиbind-utils(для RHEL) для работы с DNS
-
Определение IP-адреса Скрипт определяет IPv4-адрес
packages.sury.orgс помощью командыnslookup, обеспечивая использование актуального IP, даже если он изменится -
Обработка аутентификации VPN
- Проверяет наличие параметров username/password
- При наличии создает временный файл аутентификации
- Автоматически интегрирует учетные данные в конфигурацию OpenVPN
-
Изменение конфигурации OpenVPN Внесение изменений в предоставленный
.ovpnфайл для включения split-туннелинга:route-nopull: предотвращает перенаправление всего трафика через VPN- Добавляет маршрут только для IP-адреса
packages.sury.org
-
Запуск OpenVPN-демона Запускает OpenVPN-демон в фоновом режиме с изменённой конфигурацией, перенаправляя через VPN только определённый трафик
-
Управление репозиториями Sury (только для Debian-систем) При использовании соответствующих опций:
-addsuryrepositories: устанавливает репозитории через официальный установщик-deletesuryrepositories: полностью удаляет все файлы репозиториев Sury- Автоматически проверяет совместимость системы перед операциями
-
Управление VPN-соединением
-disableovpn: корректно останавливает OpenVPN процессы- Автоматически очищает временные файлы аутентификации
- Восстанавливает стандартное сетевое поведение
-
OpenVPN не запускается
-
Проверьте корректность файла
.ovpnи его конфигурации. -
Изучите системные логи:
# Для систем на основе systemd journalctl -u openvpn # Или логи OpenVPN tail -f /var/log/openvpn.log
-
-
Проблемы с подключением к VPN
- Убедитесь, что VPN-сервер доступен.
- Используйте
.ovpnконфигурации с TCP. - Попробуйте альтернативные
.ovpnфайлы с FreeOpenVPN.org или OpenTunnel.net.
Если у вас возникнут какие-либо проблемы или у вас есть предложения по улучшению, пожалуйста, создайте issue в этом репозитории.
Проект распространяется по лицензии MIT. Подробнее см. в файле LICENSE.
[Alex] - [https://github.com/alex2276564]
Если вам понравился этот проект или он оказался полезным, поставьте ⭐ на GitHub!
Будем рады вашим предложениям, улучшениям и исправлениям. Пожалуйста, создавайте issue и отправляйте запросы на слияние.
- Сделайте форк репозитория.
- Создайте новую ветку (
git checkout -b feature/YourFeature). - Закоммитьте ваши изменения (`git commit -m 'Add some feature').
- Отправьте изменения в ветку (
git push origin feature/YourFeature). - Откройте Pull Request.
Спасибо, что используете Sury Unlocker Script! Надеемся, он поможет вам обойти блокировку Sury.org через OpenVPN. 🚀🔓🌐