MAATRIX / Блог / Outline VPN на Ubuntu 24.04 через Docker: установка

Outline VPN на Ubuntu 24.04 через Docker: установка

MAATRIX

Outline — это протокол и набор приложений от Jigsaw (подразделение Google), который решает конкретную проблему: как дать доступ к VPN нескольким людям, не заставляя каждого лезть в консоль сервера. Вы разворачиваете сервер один раз официальным скриптом, а дальше управляете пользователями из отдельного приложения Outline Manager — добавляете, переименовываете, отключаете ключи в пару кликов. Разберём установку на Ubuntu 24.04 через Docker от начала до первого работающего ключа доступа.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что такое Outline и как он устроен

Outline состоит из трёх частей:

  • Outline Server — Docker-контейнер (shadowbox), который крутится на вашем VPS и реализует протокол Shadowsocks с дополнительным слоем поверх стандартного OSS-клиента. Это не отдельный VPN-протокол с нуля, а прикладной уровень поверх Shadowsocks с TLS-подобной маскировкой трафика.
  • Outline Manager — десктопное приложение (Windows, macOS, Linux), через которое администратор подключается к серверу по защищённому API и управляет ключами доступа. Никакого SSH для повседневных задач не требуется.
  • Outline Client — приложение для конечных пользователей (Windows, macOS, Linux, iOS, Android, ChromeOS), в которое вставляется ключ доступа (ss://...) или инвайт-ссылка.

Ключевая идея: у сервера есть один API-ключ управления (для Outline Manager) и произвольное количество ключей доступа (по одному на пользователя). Отзыв доступа у конкретного человека — это удаление одного ключа в интерфейсе Manager, без перезапуска сервера и без работы в терминале.

Технически внутри Docker поднимается один контейнер shadowbox, который слушает два типа портов: порт управления (API) и порты доступа для ключей (по умолчанию один общий порт для всех ключей, но можно раздавать разные).

Требования к серверу

Для комфортной работы Outline на несколько пользователей достаточно самого простого VPS:

ПараметрМинимумКомфортно
CPU1 vCPU1-2 vCPU
RAM512 МБ1 ГБ
Диск5 ГБ10-20 ГБ
ОСUbuntu 24.04 LTSUbuntu 24.04 LTS
Сетьпубличный IPv4публичный IPv4, безлимитный или щедрый трафик

Нагрузка на CPU и память у Shadowsocks-подобных протоколов невысокая — сервер на 1 vCPU / 1 ГБ RAM спокойно тянет несколько десятков активных клиентов при обычном веб-сёрфинге и стриминге. Диск в основном съедает Docker-образ (около 100-150 МБ) плюс логи.

Понадобится root-доступ или пользователь с правами sudo, а также открытый исходящий доступ в интернет для скачивания образа контейнера из registry.

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Установка Outline Server через официальный скрипт

Официальный путь установки — один bash-скрипт, который сам ставит Docker (если его ещё нет), поднимает контейнер, генерирует самоподписанный сертификат и настраивает порты. Вручную писать docker-compose.yml не нужно — это осознанное решение разработчиков Outline: минимизировать шаги, на которых можно ошибиться.

Обновите систему и запустите установку:

sudo apt update && sudo apt upgrade -y
sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)"

Скрипт задаёт вопросы по ходу установки (обычно молча выполняет всё сам) и в конце печатает готовый JSON-блок для подключения Outline Manager:

CONGRATULATIONS! Your Outline server is up and running.

To manage your Outline server, please copy the following line (including curly brackets)
into Step 2 of the Outline Manager interface:

{"apiUrl":"https://203.0.113.10:33189/AbCdEf1234567890","certSha256":"9F2A...E71C"}

Сохраните эту строку целиком — она понадобится один раз, при первом подключении Manager к серверу. Если вывод потерялся (закрыли терминал раньше времени), файл с этой же строкой лежит на сервере:

cat /opt/outline/access.txt

По умолчанию скрипт сам выбирает случайный порт управления и случайный порт доступа в диапазоне 1024-65535 — так серверу сложнее попасть под массовые сканеры портов. Если нужны конкретные порты (например, для белого списка на файрволе провайдера), задайте их флагами:

sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)" -- --api-port=8443 --keys-port=443

Проверить, что контейнер поднялся и работает:

sudo docker ps

В списке должен быть контейнер shadowbox в статусе Up, а рядом с ним обычно виден и watchtower — вспомогательный контейнер, который следит за выходом новых версий образа и умеет обновлять shadowbox автоматически.

Открытие портов в файрволе

Скрипт установки сам добавляет правила в iptables/ufw, если файрвол уже активен на момент установки, но лучше проверить руками — особенно если UFW включили позже или сервер стоит за файрволом облачного провайдера (Security Group / Cloud Firewall).

Нужно открыть два порта — из вывода установки (в примере выше: 33189 для управления и порт доступа, который скрипт выведет отдельной строкой как Keys port):

sudo ufw allow 33189/tcp
sudo ufw allow 33189/udp
sudo ufw allow <KEYS_PORT>/tcp
sudo ufw allow <KEYS_PORT>/udp
sudo ufw status

Если сервер арендован в облаке, где помимо ufw на самой машине есть ещё файрвол на уровне панели управления или облачного дашборда — правила нужно продублировать и там, иначе Outline Manager не сможет достучаться до API даже при верно настроенном ufw. Общую логику настройки firewall на чистой Ubuntu 24.04 разбирали в статье про настройку файрвола с нуля.

Подключение Outline Manager и добавление сервера

Outline Manager — обычное десктопное приложение, скачивается с официального сайта getoutline.org для Windows, macOS или Linux. Процесс подключения:

  1. Установите и запустите Outline Manager.
  2. На стартовом экране выберите «Set up Outline anywhere» (или аналог — «У меня уже есть сервер»), если ставили сервер вручную скриптом, а не через встроенный мастер Manager для DigitalOcean/GCP.
  3. Вставьте целиком JSON-строку из вывода установки ({"apiUrl":"...","certSha256":"..."}).
  4. Manager подключится к серверу по HTTPS, проверит сертификат по указанному в JSON хешу (certSha256) — это защита от подмены сервера посередине, раз сертификат самоподписанный и не проходит проверку через обычные CA.
  5. После успешного подключения появится дашборд сервера: имя, суммарный трафик, список ключей (изначально пустой, кроме дефолтного).

С этого момента управление полностью происходит из Manager — SSH нужен будет только для обновления системы, диагностики или переустановки контейнера, но не для повседневной работы с пользователями.

Если Manager не подключается — первым делом проверьте, что порт управления открыт снаружи (например, curl -k https://IP:PORT с другой машины должен хотя бы вернуть ответ, а не таймаут), и что не истёк какой-нибудь промежуточный файрвол между клиентом и сервером.

Управление пользователями и ключами доступа

Каждый пользователь Outline получает отдельный ключ доступа — уникальную ссылку вида ss://BASE64DATA@IP:PORT/?outline=1. В интерфейсе Outline Manager это делается так:

  • Добавить ключ: кнопка «Add key» — Manager сам генерирует новый ключ и присваивает ему имя по умолчанию (Key #1, Key #2...), которое можно переименовать под конкретного человека.
  • Передать ключ: кнопка рядом с ключом копирует ссылку в буфер обмена или формирует инвайт-страницу на getoutline.org/invite с QR-кодом — пользователю не нужно ничего объяснять про протоколы, достаточно открыть ссылку и нажать «подключиться» в приложении Outline Client.
  • Ограничить трафик: для ключа можно задать лимит данных (например, 50 ГБ в месяц) — при достижении лимита ключ автоматически перестаёт пропускать трафик, пока лимит не сбросят или не увеличат.
  • Отозвать доступ: удаление ключа в Manager мгновенно обрывает доступ этого пользователя — никаких дополнительных действий на сервере не требуется.

Общий лимит трафика на весь сервер также настраивается в разделе Settings — полезно, если тариф VPS ограничен по исходящему трафику и вы не хотите неожиданно упереться в лимит провайдера.

Пользователь на своей стороне ставит приложение Outline Client (доступно во всех основных сторах), вставляет полученный ключ и подключается — интерфейс максимально простой, без настроек протокола, DNS или маршрутов, что и было целью Jigsaw при разработке Outline: сделать VPN, который не требует объяснений.

Обслуживание, обновление и бэкап

Данные сервера (ключи, конфигурация, сертификат) хранятся в директории /opt/outline/persisted-state на хосте — она смонтирована в контейнер как volume, поэтому переживает перезапуск и пересоздание контейнера:

sudo ls -la /opt/outline/persisted-state/

Для бэкапа достаточно скопировать эту директорию (например, tar + выгрузка на другой сервер или в объектное хранилище) — при восстановлении на новой машине нужно развернуть тот же образ shadowbox и подложить эту директорию до первого запуска контейнера, тогда все существующие ключи продолжат работать с тем же API-ключом управления.

Контейнер watchtower, который скрипт установки поднимает рядом с shadowbox, следит за новыми версиями образа в registry и обновляет сервер автоматически, без вмешательства администратора. Проверить логи обновлений:

sudo docker logs watchtower --tail 50

Если хотите обновлять вручную и контролировать момент обновления — можно остановить и удалить контейнер watchtower, тогда обновления shadowbox придётся выполнять руками через docker pull нового образа и пересоздание контейнера с теми же параметрами и volume.

Общие принципы работы с Docker-контейнерами на продакшн-сервере — здоровье, логи, лимиты ресурсов — стоит держать в голове и для Outline; базовая установка Docker на чистой системе описана в статье про установку Docker на Ubuntu 24.04 с нуля, а общие практики безопасности контейнеров — в материале про безопасность Docker.

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Чем Outline отличается от обычного Shadowsocks или WireGuard?

Под капотом Outline использует протокол на базе Shadowsocks, но добавляет удобный слой управления: Outline Manager для администратора и готовые клиенты для пользователей. Если нужен максимальный контроль над параметрами протокола или интеграция в существующую инфраструктуру — присмотритесь к сравнению WireGuard и OpenVPN, но для быстрой раздачи доступа нескольким людям Outline обычно проще.

Можно ли поставить Outline без Docker?

Официально поддерживается только установка через Docker-контейнер — это осознанное решение разработчиков ради предсказуемости окружения и упрощения обновлений. Ручная сборка из исходников возможна теоретически, но не является поддерживаемым сценарием и не описана в официальной документации.

Что делать, если забыл JSON-ключ для Outline Manager?

Он навсегда сохранён на сервере в файле /opt/outline/access.txt — прочитайте его через SSH (cat /opt/outline/access.txt) и вставьте заново в Manager на новой машине администратора.

Как поменять порт управления или порт доступа после установки?

Проще всего переустановить сервер с флагами --api-port и --keys-port заново (старые ключи при этом инвалидируются). Ручное редактирование конфигурации внутри контейнера возможно, но официально не задокументировано и рискует сломать сертификат управления.

Нужен ли отдельный домен для Outline?

Нет, сервер работает по IP-адресу с самоподписанным сертификатом, который Manager проверяет по хешу certSha256 из строки подключения. Домен не обязателен, хотя ничто не мешает поставить перед сервером собственный DNS-A-запись для удобства.

Сколько пользователей выдержит один сервер?

Зависит от канала и профиля нагрузки, а не от самого Outline — протокол лёгкий по CPU. Ориентировочно на VPS с 1-2 vCPU комфортно себя чувствуют несколько десятков одновременных подключений с обычным веб-трафиком; для видео и торрентов ограничение упрётся в пропускную способность сети раньше, чем в CPU.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →