SSD Nodes Learn Hosting plans →
Руководства Matt ConnorАвтор: Matt Connor · Обновлено 2026-09-09

Как самостоятельно установить Outline VPN на свой VPS

Пошаговая инструкция по развертыванию сервера Outline VPN. Узнайте, как настроить Shadowsocks, управлять ключами доступа и почему этот протокол не скрывает IP-адрес.

Что такое VPN-сервер Outline

Для самостоятельного развертывания VPN-сервера Outline на вашем VPS необходимо запустить два компонента: прокси-сервер Shadowsocks и небольшой REST-интерфейс (representational state transfer) для управления, работающий поверх него. Управление обоими компонентами осуществляется через настольное приложение Outline Manager, которое генерирует ключи доступа в виде строк ss://, передаваемых пользователям. Основная причина выбора Outline — необходимость доступа к интернету из сетей, блокирующих VPN. Данное решение не предназначено для обеспечения максимальной пропускной способности.

Прежде всего, уточним терминологию, так как результаты поиска часто смешивают эти понятия. Outline VPN — это инструмент для обхода блокировок, описанный на этой странице по адресу getoutline.org. Outline — это также название системы для ведения вики и базы знаний, размещенной на другом домене и поддерживаемой другими разработчиками. У них общее название, но нет ничего общего. Если вы искали вики, эта страница вам не подходит.

Кто разрабатывает Outline VPN

Большинство руководств до сих пор называют Outline продуктом Google. Это было верно в начале, но не соответствует действительности сейчас. Проект Outline был запущен в 2018 году компанией Jigsaw, инкубатором внутри Google. По состоянию на август 2026 года на официальном сайте проекта указано, что Outline принадлежит Outline Foundation — независимой некоммерческой организации, а исходный код находится в репозитории организации OutlineFoundation на GitHub. Это важно при оценке доверия к продукту: вопрос управления сегодня решается иначе, чем в 2018 году, и руководство, которое ошибается в указании владельца, вероятно, также ссылается на устаревший путь к репозиторию.

Что именно установщик размещает на вашем сервере

Скрипт установки не выполняет компиляцию. Он запускает Docker-контейнеры.

  • shadowbox из образа quay.io/outline/shadowbox:stable. Это сервер управления, который запускает outline-ss-server, бэкенд Shadowsocks проекта, в качестве плоскости передачи данных.
  • watchtower, который по таймеру опрашивает наличие более новой версии образа shadowbox (по умолчанию раз в час) и перезапускает контейнер при её обнаружении.
  • Самоподписанный TLS-сертификат (transport layer security) и закрытый ключ, записанные в каталог состояния сервера. Публичный центр сертификации не используется, поэтому менеджер фиксирует этот сертификат по его SHA-256 отпечатку вместо проверки цепочки доверия.

Состояние хранится в /opt/outline, а постоянные файлы — в /opt/outline/persisted-state.

Использование Watchtower требует осознанного решения, а не безразличия. Автоматическое обновление образов означает, что исправления безопасности применяются без вашего участия, но также означает, что версия, которую вы проверили, может измениться за ночь без прочтения вами списка изменений. Выберите то, что для вас важнее. Если вы хотите контролировать обновления самостоятельно, удалите контейнер watchtower и загружайте новые образы по собственному графику.

Предварительные требования, проверяемые установщиком

  • 64-битная архитектура x86. Скрипт завершает работу с ошибкой Unsupported machine type: ${MACHINE_TYPE}. Please run this script on a x86_64 machine. VPS на базе ARM не будет работать со стандартным образом, поэтому проверяйте архитектуру перед покупкой тарифа.
  • Docker. Если Docker отсутствует, скрипт предложит установить его, выведя Would you like to install Docker? This will run 'curl https://get.docker.com/ | sh'.. Если Docker установлен, но демон не запущен, скрипт выдаст ошибку с вопросом о статусе демона. Запустите его командой sudo systemctl enable --now docker и повторите установку.
  • Публичный IPv4-адрес, который скрипт может определить самостоятельно. Он опрашивает внешние сервисы, в настоящее время icanhazip.com, ipinfo.io и конечную точку Google, чтобы узнать адрес для записи в URL управления. При нахождении за NAT (network address translation) или на сервере, где исходящий HTTP-трафик заблокирован, этот запрос завершается неудачей, и вам потребуется указать адрес вручную с помощью --hostname.
  • root-права через sudo.

В документации проекта указано, что поддерживаемыми базовыми системами являются Ubuntu 20.04 LTS или Debian 10. Поскольку всё работает в контейнерах, более новые версии Ubuntu обычно также работают, но в этом случае вы выходите за рамки конфигураций, тестируемых разработчиками проекта.

Установка сервера Outline VPN

Это команда из официальной документации проекта по адресу developer.getoutline.org, актуальная на август 2026 года. Рекомендуется брать её непосредственно из источника, а не доверять копиям в руководствах, включая данное: репозиторий уже однажды менял адрес, и использование устаревшей ссылки приводит к установке из архивных путей.

sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/OutlineFoundation/outline-apps/master/server_manager/install_scripts/install_server.sh)"

Изучите скрипт перед запуском. Передача содержимого удаленного URL напрямую в оболочку root означает выполнение любого кода, который этот URL отдает в данный момент, а проверка занимает всего минуту:

wget -qO- https://raw.githubusercontent.com/OutlineFoundation/outline-apps/master/server_manager/install_scripts/install_server.sh | less

Три опциональных флага позволяют задать значения вручную вместо использования сгенерированных:

Usage: install_server.sh [--hostname <hostname>] [--api-port <port>] [--keys-port <port>]

  --hostname   The hostname to be used to access the management API and access keys
  --api-port   The port number for the management API
  --keys-port  The port number for the access keys

Не ожидайте фиксированных номеров портов. Если не использовать --api-port и --keys-port, скрипт выбирает случайный порт выше 1023 для каждого из них. У Outline нет стандартного порта, и любое руководство, предлагающее конкретный номер, ссылается на свою собственную установку, а не на вашу. Узнайте порты из вывода вашего запуска.

В случае успеха скрипт выводит баннер, начинающийся с CONGRATULATIONS! Your Outline server is up and running., и просит скопировать следующую строку, включая фигурные скобки, в интерфейс Outline Manager. Эта строка имеет следующий вид:

{"apiUrl":"https://<your ip>:<api port>/<random secret>","certSha256":"<fingerprint>"}

Затем он указывает, какие именно порты необходимо открыть, подставляя выбранные им номера:

Make sure to open the following ports on your firewall, router or cloud provider:
- Management port ${API_PORT}, for TCP
- Access key port ${ACCESS_KEY_PORT}, for TCP and UDP

Если вы закрыли терминал и потеряли эту строку конфигурации, она сохранена на сервере. sudo cat /opt/outline/access.txt выведет её повторно.

Перед открытием менеджера убедитесь, что контейнеры действительно запущены:

sudo docker ps

Вы должны увидеть shadowbox и watchtower, оба со статусом Up. Если контейнер shadowbox постоянно перезапускается, менеджер не сможет подключиться, а sudo docker logs shadowbox покажет причину этого.

Почему не следует без необходимости открывать порт API управления

Взгляните еще раз на apiUrl. Там нет ни имени пользователя, ни пароля. Аутентификация осуществляется через случайный сегмент пути в этом URL, и это весь механизм защиты. Любой, кто может подключиться к порту управления и знает этот путь, может прочитать все ключи доступа на сервере и удалить их все.

Предложение самого скрипта по настройке UFW (ufw — это Uncomplicated Firewall в Ubuntu) открывает порт управления для всего интернета:

sudo ufw allow ${API_PORT}/tcp

Это удобно, но это больше, чем вам нужно. Порт для ключей доступа должен быть открыт для всего мира, так как именно к нему подключаются ваши пользователи. Порт управления должен быть доступен только оттуда, где вы запускаете Outline Manager. Ограничьте его:

sudo ufw allow <keys port>/tcp
sudo ufw allow <keys port>/udp
sudo ufw allow from <your admin ip> to any port <api port> proto tcp

Еще лучше — оставьте порт управления закрытым на внешнем брандмауэре и обращайтесь к нему через уже настроенный приватный туннель. Если вы выполнили инструкции из руководства по развертыванию собственного VPN на базе WireGuard на VPS, сервер Outline может подключиться к этому туннелю и отвечать на запросы API только по своему туннельному адресу. В этом случае сканирование портов вашего публичного IP покажет только порт для ключей доступа и ничего больше. Помните, что у большинства провайдеров есть сетевой брандмауэр в панели управления в дополнение к брандмауэру на самом сервере, и настройки обоих должны согласовываться.

Еще два факта об этой строке конфигурации. Документация Outline называет её конфиденциальной и рекомендует передавать её только тем, кому нужен доступ к управлению, и только через зашифрованные каналы связи, а не через обычную электронную почту или чат. Отозвать доступ крайне сложно: для сервера, установленного вручную, документированный способ аннулировать скомпрометированную конфигурацию управления — это полная переустановка, которая также сбрасывает все выданные вами ключи доступа пользователей. Относитесь к этой строке как к паролю root вашего сервера, потому что на практике это он и есть.

Выпуск и отзыв ключей доступа

Outline Manager создает ключи нажатием кнопки. В основе этого процесса лежит обычный HTTP-запрос к секретному API-пути, поэтому его можно автоматизировать с помощью скриптов:

API="https://SERVER_IP:API_PORT/SECRET_PATH"  # the apiUrl from access.txt
curl -k "$API/access-keys"
curl -k -X POST "$API/access-keys"
curl -k -X PUT "$API/access-keys/3/name" -H 'Content-Type: application/json' -d '{"name":"anna-laptop"}'
curl -k -X DELETE "$API/access-keys/3"

Флаг -k необходим, так как используется самоподписанный сертификат. Без него curl прерывает выполнение с ошибкой SSL certificate problem: self-signed certificate и не отправляет запрос. API также поддерживает лимиты данных для каждого ключа: используйте PUT /access-keys/{id}/data-limit для установки лимита и DELETE /access-keys/{id}/data-limit для его снятия. Это позволяет предотвратить ситуацию, когда резервное копирование данных с одного устройства исчерпывает весь месячный лимит трафика.

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

Четко понимайте, чего удаление не делает. Строка ss:// — это секретный ключ, который вы уже отправили пользователю. Удаление ключа на сервере запрещает его использование, что находится под вашим контролем. Это не удаляет сообщение, которое вы отправили ранее. Если ключ скомпрометирован, удалите его и выпустите новый, не полагаясь на то, что копия ключа у пользователя исчезнет.

Outline — это прокси, а не полноценный туннель

Это различие часто удивляет тех, кто переходит с WireGuard. Shadowsocks передает TCP- и UDP-соединения через прокси. На сервере нет сетевого интерфейса, адреса узла, записи в таблице маршрутизации и нет представления о подсети, находящейся за сервером. outline-ss-server поддерживает TCP и UDP, поэтому браузеры, приложения и DNS работают через него. ping не поддерживает, так как ICMP (internet control message protocol) не входит в число протоколов, которые передает прокси Shadowsocks. Проверьте с помощью curl https://ifconfig.me и убедитесь, что возвращаемый адрес принадлежит вашему серверу, а не вам.

Последствия стоит обозначить прямо. Вы не можете получить доступ к частной сети за сервером Outline так, как узел WireGuard получает доступ к 10.20.0.0/16, поскольку у Outline нет маршрутов для передачи. Вы не можете объединить два сервера между собой с его помощью. Трафик между клиентами (peer-to-peer) отсутствует. Это также исключает распространенную домашнюю настройку, при которой телефон синхронизирует фотопленку с собственным сервером фотографий через туннель. Если ваша цель именно такая, сначала выберите сервер из сравнения PhotoPrism и Immich и настройте на нем полноценный VPN, а не прокси. Если вам нужна настоящая сеть с адресами и маршрутами, Outline — неподходящий инструмент, и сравнение WireGuard и OpenVPN станет лучшей отправной точкой.

Что делает обфускация, а чего она не делает

Shadowsocks шифрует и аутентифицирует данные начиная с первого байта. Здесь нет рукопожатия в открытом виде, поля версии протокола, обмена сертификатами или фиксированного заголовка. В сети соединение выглядит как поток случайных байтов, направляемых на высокий порт. В этом заключается основной аргумент в пользу Outline: система DPI (глубокого анализа пакетов), настроенная на распознавание рукопожатия WireGuard или опкода OpenVPN в первом пакете, здесь не находит соответствий. outline-ss-server также поставляется с защитой от повторов (replay protection), которая включается через --replay_history. Это нейтрализует один из видов активного зондирования, когда цензор повторяет перехваченный пакет, чтобы увидеть, как ответит ваш сервер.

Теперь честная часть.

  • Она не скрывает сам поток. Ваш трафик по-прежнему идет на один адрес, в больших объемах и в течение длительного времени. Анализу времени и объема данных неважно, что содержимое пакетов невозможно прочитать.
  • Она не делает вас анонимным. Ваш провайдер знает, кто арендовал сервер, и обычно хранит ваши платежные данные, а каждый посещаемый вами сайт видит адрес вашего сервера. Разница между арендой VPS и покупкой VPN-сервиса объясняет, почему сервер, оформленный на ваше имя, меняет модель угроз, а не устраняет её.
  • Она не помогает при блокировке адреса. Если цензор блокирует IP вашего сервера, обфускация становится бесполезной, так как до сервера просто ничего не доходит для обработки.
  • Она не предотвращает распространение ключей. Ключ, опубликованный в публичном чате, может быть получен цензором. Это сразу дает ему понять, какой именно адрес нужно заблокировать.

Последние два пункта объясняют, почему обход блокировок в больших масштабах требует использования множества адресов, их ротации и осторожной выдачи. Именно эту проблему решает проект Tor с помощью мостов. Поэтому, если ваш противник блокирует адреса быстрее, чем вы успеваете арендовать новые серверы, прочитайте как мосты Tor и подключаемые транспорты предоставляют скрытые точки входа, прежде чем арендовать второй VPS.

Выбор между Outline и альтернативами

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

Выбирайте WireGuard, если сеть пропускает его трафик. Он работает быстрее, интегрирован в ядро, предоставляет маршрутизируемую сеть и требует гораздо меньше усилий для поддержки. Полная инструкция по сборке приведена в руководстве по VPN-серверу WireGuard.

Выбирайте мост (bridge) или подключаемый транспорт (pluggable transport), если противник блокирует IP-адреса, а не протоколы, или если вам нужна анонимность наряду с доступом.

Выбирайте mesh-сеть с панелью управления, если ваша задача — управление парком устройств, а не обход цензуры, так как ручная раздача ключей и распределение адресов перестают масштабироваться примерно после десятка машин. Self-hosted сервер NetBird берет этот учет на себя. Если вы не хотите запускать собственную панель управления, сначала изучите условия бесплатного тарифа Tailscale, так как сеть для дома или небольшой команды часто укладывается в его лимиты и не требует затрат на эксплуатацию.

FAQ

Является ли Outline VPN тем же самым, что и Outline wiki?

Нет. Это не связанные между собой проекты, которые просто имеют одинаковое название. Outline VPN — это инструмент для обхода цензуры, доступный по адресу getoutline.org. Он состоит из сервера Shadowsocks и REST API для управления, работающего через десктопное приложение Outline Manager. Outline wiki — это база знаний для команд, размещаемая на собственном сервере и на другом домене. Поисковые запросы по фразе "self-host Outline" выдают результаты для обоих проектов. Проверяйте домен перед тем, как копировать любую команду установки.

Является ли Outline VPN по-прежнему продуктом Google?

Нет, по состоянию на август 2026 года это не так. Проект Outline был запущен в 2018 году компанией Jigsaw, которая является инкубатором внутри Google, и именно из этой истории в старых руководствах возникло упоминание "Google VPN". На официальном сайте проекта теперь указано, что владельцем Outline является Outline Foundation — независимая некоммерческая организация, а исходные репозитории находятся в организации OutlineFoundation на GitHub.

Какие порты использует сервер Outline?

Фиксированного ответа нет, так как это заложено в архитектуру. Если вы не передадите флаги --api-port и --keys-port установщику, он выберет случайный порт выше 1023 для API управления и другой порт для ключей доступа. В конце процесса установки он выведет оба порта и предложит открыть порт управления для TCP, а порт ключа доступа — для TCP и UDP в вашем локальном брандмауэре и в сетевом брандмауэре провайдера. Если вы потеряли эти данные, sudo cat /opt/outline/access.txt вернет URL управления, содержащий нужный порт.

Могу ли я использовать Outline для доступа к своей частной сети?

Нет. Shadowsocks проксирует TCP- и UDP-соединения, а не создает туннель третьего уровня (Layer 3), поэтому у сервера нет интерфейса и маршрутов к ресурсам, находящимся за ним. Участнику WireGuard можно назначить AllowedIPs = 10.20.0.0/16, чтобы он получил доступ к этому диапазону. В Outline нет аналогичной настройки, так как ему нечего маршрутизировать. Используйте WireGuard для доступа к частной сети, а Outline оставьте для выхода в публичный интернет.

Как ограничить кому-либо доступ?

Удалите ключ доступа этого пользователя в Outline Manager или с помощью DELETE /access-keys/{id} через API управления. Сервер немедленно прекратит принимать этот ключ. Это работает корректно только в том случае, если у каждого пользователя есть свой собственный ключ, поэтому создавайте по одному ключу на человека и называйте их именами пользователей. Отзыв административного доступа — гораздо более сложная задача: задокументированное решение для конфигурации управления, которой вы поделились на сервере с ручной установкой, — это полная переустановка, которая одновременно сбрасывает все ключи пользователей.

#outline-vpn#shadowsocks#vpn#censorship-circumvention#self-hosting#docker