Тут есть инструкция по настройке бесплатной машины от microsoft azure для вашего сервера
English versuion available here
Скрипт для автоматического деплоя Shadowsocks + v2ray на удаленном сервере и генерации клиенстких конфигов
- Что это и для чего
- Что делает скрипт на сервере
- Предварительная настройка
- Настройка локального окружения
- Конфиги для сервера
- Выгрузка и теги
- Настройка клиента
- Типичные ошибки и их исправления
- Shadowsocks - быстрый защищенный и гибкий в настройке прокси-сервер
- v2ray - инструмент для построения коммуникации между клиентской машиной и сервером
Данный скрипт разворачивает Shadowsocks сервер с плагином v2ray, соединение происходит через websocket(https), поэтому потребуется зарегистрировать домен для вашего сервера.
Вместе они позволяют построить защищенную и трудную в обнаружении сеть для проксирования запроса и обхода блокировок. v2ray зарекомендовал себя как отличный инструмент для обхода ограничений в китае, в отличие от VPN соединения он не так очевиден для провайдера, минимизирует потери в скорости и сокращает расход батареи мобильного телефона. v2ray не предназначен для защиты трафика. В первую очередь, это средство обхода блокировок. Пакеты могут идти мимо туннеля, а в случае проблем с сетью ваше устройство скорее всего просто пустит трафик напрямую
-
На сервере:
Если кратко, устанавливает докер, открывает порты, запускает в контейнере Nginx, Shadowsocks-rust и контейнер с сертботом. Если более полно, то шаги описаны на Схеме
-
На клиенте:
Генерирует config.json для настройки ss-local клиента и qr-код для настройки мобильных клиентов
-
В первую очередь потребуется vps сервер. Достаточно минимальной конфигурации памяти, процессора и накопителя, ориентируйтесь на ежемесячный объем трафика. Google, Amazon и Oracle предоставляют бесплатные VM инстансы сроком от года до пожизненного пользования, список можно посмотреть тут.
-
Также для сервера потребуется зарегистрировать домен. Существует множество сервисов, предоставляющих возможность бесплатно зарегистрировать домен с автоматическим продлением список, пример.
Вам потребуется:
- Python 3.7
- Virtualenv
- Скачать Windows x86-64 executable installer
- Запустить
- Установить
sudo apt update
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.7
brew install python@3.7
python3.7 -m pip install virtualenv
Находясь в текущей директории введите
python3.7 -m virtualenv venv --python 3.7
source venv/bin/activate
pip install -r requirements.txt
Впоследствии используйте `source venv/bin/activate' для активации виртуального окружения перед выгрузкой
Создайте в корневой директории проекта файл variables.yml (Должен лежать рядом с variables.example.yml) и заполните его по примеру из variables.example.yml:
- user: Имя пользователя на сервере
- host: Домен, оформленный для сервера
- email: Электронная почта
- proxy_password: Пароль для доступа к прокси
- method: Метод шифрования. Можно оставить как в примере
- local_port: Порт, на котором будет работать ваш локальный сервер
- fast_open: true для ускорения работы сервера. Работает на ядрах 3.1+ (на вашем скорее всего работает)
- endpoint: эндпоинт для прокси. Можно поставить что-то наименее подозрительное для провайдера
- enable_firewall: yes для включения фаервола после стартовой настройки. Если на сервере уже есть ваши проекты, и вы не знаете для чего это, включение может вызвать ошибки в их работе
В директории inventories создайте файл hosts.ini
по образцу из inventories/hosts.example.ini
- server ansible_host= Домен, оформленный для сервера или айпи адрес сервера
Для работы прокси сервера на удаленной машине должен быть установлен docker, docker-compose, а также открыты 80 и 443 порты. Если этого нет, произведите первичную настройку командой
ansible-playbook -i inventories/hosts.ini --extra-vars "@variables.yml" deploy/setup.yml
После успешной настройки выгрузите прокси сервер и генератор ключей командой
ansible-playbook -i inventories/hosts.ini --extra-vars "@variables.yml" deploy/server.yml
Доступные теги для первичной настройки сервера:
- disable-iptables - Очищает конфиги iptables. Актуально для серверов oracle, которые используют их как фаервол
Доступные теги для выгрузки на сервер:
- nginx - выгрузка конфига nginx. Нужно запустить если решите изменить эндпоинт для прокси-сервера после запуска
- shadowsocks - выгрузка shadowsocks. Нужно запустить если решите изменить конфиги прокси-сервера
- keys - выгрузка генерации ssl сертификата. Нужно запустить если сменили адрес хоста для сервера
ansible-playbook -i inventories/hosts.ini --extra-vars "@variables.yml" deploy/client.yml
Запустите для генерации конфигов клиентских устройств. В папке client-config
вы обнаружите следующие файлы:
- shadowsocks-libev.config для настройки клиента ubuntu
- config.json для настройки windows и mac клиентов
- qrcode.png для настройки android и ios клиентов Источник скрипта
Выполните в терминале команды:
sudo apt update
sudo apt install shadowsocks-libev
sudo apt install shadowsocks-v2ray-plugin
Это установит клиентское приложение и плагин из репозитория
Скопируйте клиентский конфиг в папку с конфигом ss-client:
cp client-config/shadowsocks-libev.json /etc/shadowsocks-libev/config.json
Запустите сервер командой
ss-local
Установите клиент shadowsocks и плагин v2ray
В самом клиенте нажмите на иконку с добавлением конфигураций
и выберите "Сканировать qr код"
Отсканируйте qr код из client-config/qrcode.png
- Скачайте последнюю версию shadowsocks и распакуйте архив
- Скачайте последнюю версию v2ray распакуйте архив, переименуйте файл внутри в v2ray.exe и сохраните в папку с shadowsocks
- Запустите Shadowsocks.exe, заполните поля как в конфиге client-config/shadowsocks-libev.json или импортируйте из него настройки
Установите Shadowrocket из магазина приложений и отсканируйте qr код из папки client-config/qrcode.png
Если прокси по какой-то причине не заработал, запустите предварительную настройку и выгрузку заново,
указав тег disable-iptables
для предварительной настройки. Так же справедливо для серверов других провайдеров
Проверьте, что в панели управления VPS провайдера не установлены дополнительные ограничения