ShadowSocks

Поднимаем ShadowSocks сервер на Debian или Ubuntu

ShadowSocks – это очень быстрый, лучший в своём роде прокси сервер, который способен обходить Великий Китайский Фаервол, в отличие от большинства VPN поставщиков. ShadowSocks настолько хорошо маскирует трафик под HTTPS-соединение, что в сравнении с VPN трафиком, Великий Фаервол не способен его идентифицировать и соответственно заблокировать. Чего не скажешь о подавляющем числе VPN серверов, которые благодаря наученным нейросетям Китайский Фаервол легко обнаруживает.

В этой небольшой статье я показываю, как поднять свой ShadowSocks сервер и тем самым обезопасить своё пребывание в Интернете. Статья является исключительно ознакомительной и не призывает использовать данный инструмент для нарушения законов!

Арендуем сервер под ShadowSocks

Можно арендовать VPS на XorekCloud в Европе за копейки, с самым стартовым конфигом.

При установке лучше выбрать Ubuntu 22 или 24.

Установка Docker

Для начала установим Docker и Docker-compose:
apt install -y docker.io docker-compose

Установка и настройка ShadowSocks

Далее разворачиваем ShadowSocks контейнер:

bash
docker run -d \
  --name shadowsocks \
  -p 8388:8388 \
  -p 8388:8388/udp \
  --restart unless-stopped \
  shadowsocks/shadowsocks-libev \
  ss-server -s 0.0.0.0 -p 8388 -k SUPER_PASSWORD -m aes-256-gcm

Вместо SUPER_PASSWORD пишем свой супер сложный пароль для доступа к соксу.

Открываем указанный порт для доступа по tcp и udp, если необходимо:

bash
iptables -A INPUT -p tcp --dport 8388 -j ACCEPT
iptables -A INPUT -p udp --dport 8388 -j ACCEPT

Генерируем конфиг строку

Осталось сформировать конфиг-строку для подключения на клиенте.
Я написал утилиту, с помощью которой это удобно сделать, всего лишь вбив параметры точки доступа в соответствующие поля.

Параметры точки доступа у нас примерно такие (заменить на свои):

text
Server IP:  <IP_СЕРВЕРА>
Port:       8388
Password:   SUPER_PASSWORD
Method:     aes-256-gcm

Осталось полученную конфиг-строку отдать клиенту ShadowSocks.

Клиенты ShadowSocks

Клиенты под все платформы есть тут. Сам я использую Outline и для Mac OS, и для iOS.

Павел Гвоздь

Поддерживается **жирный**, *курсив*, `код`, ```блок кода```, > цитата, ссылки и переносы строк

FHj
Не очень понятно, как с помощью Outline заходить по ss
Павел Гвоздь
→ FHj
Создаёте при помощи утилиты (https://gvozdb.ru/utils/shadowsocks-config/) свой конфиг, добавляете в Outline методом копипаста и подключаетесь...
Игорь
Подскажите а в строке "server": "0.0.0.0", - менять данные на ip своего сервера ?
Павел Гвоздь
→ Игорь
Нет, делаем так, как описано в инструкции.
Константин
ДОбрый день. Спасибо за статью, очень полезно! Одн вопрос - где в конфиге прописывается имя сервера? Хочу, чтобы в клиенте Outline когда подключаются к моему серверу у них там высвечивалось мое имя, а не стандартное Outline VPN Server.
И еще.. не могли бы вы выложить код этой утилиты в открытый доступ? В текущее время вбивать какие-либо доступы на сторонние сайты слишком опасно(( Надеюсь на понимание..
Павел Гвоздь
→ Константин
где в конфиге прописывается имя сервера
В поле "Название конфига", наверное)
не могли бы вы выложить код этой утилиты в открытый доступ?
Не мог бы. Если надо, можете самостоятельно скопировать из кода страницы...
Антон
Павел, подскажите пожалуйста, если сайты перестали работать и начали отдавать код 522, может что-то в файрвол добавить? Как починить?)
Павел Гвоздь
→ Антон
Не знаю, я не сталкивался с таким.
Денис
Здравствуйте! Подскажите пожалуйста, а можно этим же скриптом сделать несколько конфигов-профилей нескольким пользователям?
Павел Гвоздь
→ Денис
Не пробовал.
Антон
Попробовал на разных версиях Debian все заканчивается на
[ERROR] Sorry,debian bookworm is too old or unsupport, please update to retry.

Пробывал 10,11 и 12 Debian

#############################################################
# shadowsocks python server install for Debian / Ubuntu #
# Thanks: @clowwindy <https://twitter.com/clowwindy> #
# Author: Wave WorkShop <waveworkshop@outlook.com> #
# Github: https://github.com/shadowsocks/shadowsocks #
#############################################################

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
bc lsb-release
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 116 kB of archives.
After this operation, 264 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bookworm/main amd64 bc amd64 1.07.1-3+b1 [110 kB]
Get:2 http://deb.debian.org/debian bookworm/main amd64 lsb-release all 12.0-1 [6416 B]
Fetched 116 kB in 1s (121 kB/s)
Selecting previously unselected package bc.
(Reading database ... 19150 files and directories currently installed.)
Preparing to unpack .../bc_1.07.1-3+b1_amd64.deb ...
Unpacking bc (1.07.1-3+b1) ...
Selecting previously unselected package lsb-release.
Preparing to unpack .../lsb-release_12.0-1_all.deb ...
Unpacking lsb-release (12.0-1) ...
Setting up bc (1.07.1-3+b1) ...
Setting up lsb-release (12.0-1) ...
Processing triggers for man-db (2.11.2-2) ...
[ERROR] Sorry,debian bookworm is too old or unsupport, please update to retry.
root@Outline:~#
Павел Гвоздь
→ Антон
Обновил немного статью. Вам подойдёт установка по второму варианту для Debian 11+.
Dim
[ERROR] Sorry,debian bookworm is too old or unsupport, please update to retry.
Аналогичная проблема, гайд нерабочий....
Павел Гвоздь
→ Dim
Обновил немного статью. Вам подойдёт установка по второму варианту для Debian 11+.
Sin
параметр
"mode": "tcp_only" или "tcp_and_udp"
это не параметр доступа к самому серверу, а режим ретрансляции, только tcp или еще и udp
в этом фишка шадоусокса, он умеет не только tcp прогонять, как классический прокси, но и udp, поэтому он может работать в роли впн сервера, например для андроид устройств
а для подключения достаточно tcp
Александр
как настраивать shadowsocks для нескольких пользователей?
что должно отличаться? server_port или local_port?
сделал два server_port, два local_port и в итоге для обоих конфигов
Sep 10 12:10:12 my-srv ss-server[6799]: 2024-09-10 22:10:12 ERROR: fast_open_connect: Invalid argument
Sep 10 12:10:12 my-srv ss-server[6799]: 2024-09-10 22:10:12 ERROR: getpeername: Transport endpoint is not connected
Алексей
Ubuntu 22.04
[Error] libsodium install failed!
Где копать?
Кирилл
→ Алексей
[Error] libsodium install failed!
Та же ошибка
Павел Гвоздь
→ Алексей
Попробуйте так:
pecl install -f libsodium

или так:
apt install libsodium libsodium-dev

либо в крайнем случае так:
wget https://download.libsodium.org/libsodium/releases/LATEST.tar.gz
tar -xzf LATEST.tar.gz
cd libsodium-stable/
./configure
make && make check
make install
pecl install -f libsodium
Uno
Подскажите пожалуйста, поставил убунту версии 22.04. Пошел по второму варианту установки. Столкнулся с тем, что при настройке отсутствует конфигурационный файл shadowsocks.conf
Дмитрий
→ Uno
в новой версии shadowsocks этот файл называется shadowsocks.json
Павел
Command 'pecl' not found, but can be installed with:
apt install php-pear

Debian & Ubuntu одинаковые ошибки
lex
sudo apt install shadowsocks-libev
nano /etc/shadowsocks-libev/config.json

зачем эта вся лабуда?)
Aleksandr
Добрый день! Проделал все шаги на Ubuntu 22.04, но получаю ошибку /etc/init.d/shadowsocks: permission denied

Возможно стоит прописать в туториале:
sudo chmod +x /etc/init.d/shadowsocks
Алексей
Здравствуйте!
На момент 17.07.2025 не работает уже этот вариант с обходом блокировок в России? У меня отвалился впн, арендовал новый сервер, по новой настроил, все прошло без ошибок, но также не работает.
Андрей
Этот комментарий был заменён котом Шрёдингера.
Alexandr CLaystone
Для ОС Ubuntu 22.04 скрипты не подходят, на разных этапах вылезают разные ошибки.

Поставил Ubuntu 20.04 - инструкция подходит, всё корректно работает.
Антон
Подскажите, пожалуйста, данный ВПН поможет заходить на сайт Gemini и пользоваться им?
Ки
Комментарий самоуничтожился, не выдержав глубины обсуждения.