Outline VPN на своём сервере: установка, Outline Manager и ключи доступа
Сервер Outline (Shadowsocks) в Docker одной командой, подключение к Outline Manager, выдача ключей ss://, управление через API без Manager, брандмауэр и удаление. Debian 12, Ubuntu 24.04.

Outline — бесплатный VPN от Jigsaw (подразделение Google). Три части: сервер, программа Outline Manager для управления и Outline Client для подключения. Главный плюс — простота: сервер ставится одной командой, а ключ доступа — одна строка, которую достаточно отправить человеку, и у него всё заработает. Инструкция для сервера Outline 1.12.x на Debian 12 и Ubuntu 24.04.
Как работает Outline и где его предел
Внутри — протокол Shadowsocks. У него нет узнаваемого рукопожатия: соединение зашифровано с первого байта и для наблюдателя выглядит как поток случайных данных. Провайдер не видит ни сайтов, ни самого факта использования конкретной программы — если смотреть только на содержимое.
Но отсутствие структуры само стало признаком. Обычный трафик почти всегда начинается с понятного заголовка вроде TLS ClientHello, и соединение «без лица» системы фильтрации научились помечать как подозрительное. Shadowsocks входит в список протоколов, которые в России планировали ограничивать, и пользователи периодически сообщают о его блокировке, чаще в мобильных сетях. Поэтому Outline хорош там, где важна простота — семья, небольшая команда. Если блокировки в вашей сети жёсткие, надёжнее протоколы с маскировкой под сайт: VLESS Reality или Amnezia.
Управление сервером идёт через API. При установке создаётся секретный адрес управления и самоподписанный сертификат; Outline Manager подключается по этому адресу и сверяет отпечаток. Строка, которую выдаёт установщик, — одновременно адрес и пароль к серверу.
Что нужно
- Сервер на tanaka.host с Debian 12 или Ubuntu 24.04. Нагрузка минимальная: сервер Outline занимает около 80 МБ памяти.
- Вход по SSH под
root. - Outline Manager на компьютере: Windows, macOS, Linux.
1. Docker
Сервер Outline живёт в контейнерах. Официальный скрипт (подробнее — в статье установка Docker):
# Устанавливаем Docker официальным скриптом
curl -fsSL https://get.docker.com | sh
2. Установка Outline
Запускаем от root без sudo: на чистом Debian 12 sudo может не быть, и команда, которую показывает Outline Manager, упадёт с sudo: command not found.
# Официальный скрипт установки сервера Outline
bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-apps/master/server_manager/install_scripts/install_server.sh)"
Через минуту скрипт напишет CONGRATULATIONS! Your Outline server is up and running и выведет зелёную строку в фигурных скобках — начинается с {"apiUrl": и заканчивается "}. Ниже — два случайно выбранных порта:
- Management port — порт управления, к нему подключается Outline Manager (TCP).
- Access key port — порт для устройств с ключами, нужен и по TCP, и по UDP.
Строка apiUrl — полный доступ к серверу. Кто её получит, сможет создавать и удалять ключи. Вставьте её в Outline Manager и нигде не публикуйте. Потеряли — она лежит на сервере в
/opt/outline/access.txt.
3. Подключите сервер к Outline Manager
- Откройте Outline Manager.
- В выборе сервера — «Настройте Outline где угодно» (Set up Outline anywhere).
- Команду установки, которую покажет программа, вы уже выполнили — пропустите.
- Вставьте всю зелёную строку вместе с фигурными скобками в поле «Вставьте сюда информацию, полученную при выполнении скрипта установки».
- «Готово».
Сервер появится в списке со счётчиками трафика по ключам.
4. Ключи доступа
Каждому человеку — свой ключ: его можно ограничить или отключить, не трогая остальных.
- «Добавить новый ключ».
- «Переименовать» → понятное имя.
- «Поделитесь доступом» → «Копировать ключ доступа».
Ключ — строка вида ss://.... Передайте её надёжным каналом. Лимит трафика на ключ — пункт «Задать лимит трафика».
5. Подключите устройство
Outline Client для всех платформ — на getoutline.org.
- Установите и откройте.
- «Добавить сервер».
- Вставьте ключ, подтвердите.
- «Подключить».
Если ключ уже в буфере обмена, приложение само предложит его добавить («Обнаружен ключ доступа»). Проверка — https://api.ipify.org показывает IP сервера.
Управление ключами без Outline Manager
Всё, что делает Manager, доступно через тот же API прямо с сервера:
# Адрес API из файла настроек Outline
API=$(grep apiUrl /opt/outline/access.txt | cut -d: -f2-)
# Создать ключ. В ответе будет поле accessUrl, это и есть ключ ss://
curl -sk -X POST "$API/access-keys"
# Назвать ключ номер 1 именем phone
curl -sk -X PUT "$API/access-keys/1/name" -d name=phone
# Ограничить ключ номер 1 объёмом 50 ГБ
curl -sk -X PUT -H "Content-Type: application/json" "$API/access-keys/1/data-limit" -d '{"limit":{"bytes":50000000000}}'
# Показать все ключи
curl -sk "$API/access-keys"
# Удалить ключ номер 2
curl -sk -X DELETE "$API/access-keys/2"
Ключ -k нужен из-за самоподписанного сертификата API.
Брандмауэр и обновления
Если включён UFW, откройте оба порта из вывода установщика — номера у вас свои:
# Порт управления, только TCP
ufw allow 56117/tcp
# Порт ключей, TCP и UDP
ufw allow 37686/tcp
ufw allow 37686/udp
Обновлять Outline вручную не нужно: вместе с сервером установщик запускает контейнер Watchtower, который раз в час проверяет новые версии и обновляет shadowbox сам.
Частые ошибки
sudo: command not found. На сервере нет sudo, а вы и так root — запускайте команду без sudo, как в шаге 2.
Outline Manager не подключается к серверу.
- Строка вставлена целиком, с фигурными скобками.
- Порт управления открыт в брандмауэре.
docker psпоказывает контейнерыshadowboxиwatchtowerв статусе Up.
Приложение подключается, но сайты не открываются.
- Порт ключей открыт и по TCP, и по UDP.
- Попробуйте другую сеть: если на Wi-Fi работает, а на мобильном нет — оператор режет Shadowsocks. Тогда VLESS Reality.
- Дальше — по шагам из статьи VPN не подключается.
Полностью удалить Outline.
docker rm -f shadowbox watchtower
rm -rf /opt/outline
Все ключи после этого перестанут работать.
Полезные команды
| Команда | Что делает |
|---|---|
docker logs --tail 50 shadowbox |
Журнал сервера |
cat /opt/outline/access.txt |
apiUrl и отпечаток сертификата |
curl -sk "$API/server" |
Имя, версия и порт сервера |
curl -sk "$API/metrics/transfer" |
Трафик по каждому ключу в байтах |