Skip to content

USATUKirill96/shadowsocks-vray-playbooks

Repository files navigation

Тут есть инструкция по настройке бесплатной машины от microsoft azure для вашего сервера

English versuion available here

Скрипт для автоматического деплоя Shadowsocks + v2ray на удаленном сервере и генерации клиенстких конфигов

  1. Что это и для чего
  2. Что делает скрипт на сервере
  3. Предварительная настройка
  4. Настройка локального окружения
  5. Конфиги для сервера
  6. Выгрузка и теги
  7. Настройка клиента
  8. Типичные ошибки и их исправления

Что это и для чего

  • Shadowsocks - быстрый защищенный и гибкий в настройке прокси-сервер
  • v2ray - инструмент для построения коммуникации между клиентской машиной и сервером

Данный скрипт разворачивает Shadowsocks сервер с плагином v2ray, соединение происходит через websocket(https), поэтому потребуется зарегистрировать домен для вашего сервера.

Вместе они позволяют построить защищенную и трудную в обнаружении сеть для проксирования запроса и обхода блокировок. v2ray зарекомендовал себя как отличный инструмент для обхода ограничений в китае, в отличие от VPN соединения он не так очевиден для провайдера, минимизирует потери в скорости и сокращает расход батареи мобильного телефона. v2ray не предназначен для защиты трафика. В первую очередь, это средство обхода блокировок. Пакеты могут идти мимо туннеля, а в случае проблем с сетью ваше устройство скорее всего просто пустит трафик напрямую

Что сделает скрипт

  • На сервере:

    Если кратко, устанавливает докер, открывает порты, запускает в контейнере Nginx, Shadowsocks-rust и контейнер с сертботом. Если более полно, то шаги описаны на Схеме

  • На клиенте:

    Генерирует config.json для настройки ss-local клиента и qr-код для настройки мобильных клиентов

Предварительная настройка

  1. В первую очередь потребуется vps сервер. Достаточно минимальной конфигурации памяти, процессора и накопителя, ориентируйтесь на ежемесячный объем трафика. Google, Amazon и Oracle предоставляют бесплатные VM инстансы сроком от года до пожизненного пользования, список можно посмотреть тут.

  2. Также для сервера потребуется зарегистрировать домен. Существует множество сервисов, предоставляющих возможность бесплатно зарегистрировать домен с автоматическим продлением список, пример.

Настройка локального окружения

Вам потребуется:

  • Python 3.7
  • Virtualenv

Установка python 3.7

Для windows:

  1. Скачать Windows x86-64 executable installer
  2. Запустить
  3. Установить

Для Ubuntu linux

sudo apt update
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.7 build-essential python3-dev

Для MacOS

brew install [email protected]

Установка virtualenv

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 клиентов Источник скрипта

Настройка клиента

Ubuntu linux

Выполните в терминале команды:

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

Android

Установите клиент shadowsocks и плагин v2ray

В самом клиенте нажмите на иконку с добавлением конфигураций

и выберите "Сканировать qr код"

Отсканируйте qr код из client-config/qrcode.png

Windows

  • Скачайте последнюю версию shadowsocks и распакуйте архив
  • Скачайте последнюю версию v2ray распакуйте архив, переименуйте файл внутри в v2ray.exe и сохраните в папку с shadowsocks
  • Запустите Shadowsocks.exe, заполните поля как в конфиге client-config/shadowsocks-libev.json или импортируйте из него настройки

iOS

Установите Shadowrocket из магазина приложений и отсканируйте qr код из папки client-config/qrcode.png

Типичные ошибки и их исправления

Сервера Oracle и iptables

Если прокси по какой-то причине не заработал, запустите предварительную настройку и выгрузку заново, указав тег disable-iptables для предварительной настройки. Так же справедливо для серверов других провайдеров

Firewall от провайдера

Проверьте, что в панели управления VPS провайдера не установлены дополнительные ограничения