Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 54 You must be signed in to star a gist
  • Fork 12 You must be signed in to fork a gist
  • Save JohnyDeath/3f93899dc78f90cc57ae52b41ea29bac to your computer and use it in GitHub Desktop.
Save JohnyDeath/3f93899dc78f90cc57ae52b41ea29bac to your computer and use it in GitHub Desktop.
Инструкция по развертыванию собственного VPN-сервиса на базе Outline VPN

Установка Outline VPN на Ubuntu 20.04

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

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

Прежде чем начать

Вам нужен сервер. Да, его нужно арендовать, учитывая его местоположение. Например, если Вам нужно получать доступ к ресурсам, которые недоступны в текущем местоположении, но доступны, например, в Канаде, то смело арендуйте виртуальную машину в AWS, Digital Ocean или любом другом месте.

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

  • 1 ядро CPU.
  • 1 ГБ RAM (можно и меньше).
  • 10 GB HDD для файлов ОС в основном.

Стоимость аренды такого сервера от 3$ до 5$ в месяц, плюс-минус. По необходимости ресурсов можно добавлять поболее. Операционная система - Ubuntu 20.04, т.к. инструкция именно для нее :)

Как арендовать виртуальную машину тут рассматривать не будем, все зависит от провайдера.

Начальная настройка сервера

И так, виртуальная машина арендована, доступ к ней по SSH имеется, Ubuntu установлена. Далее устанавливаем последние обновления.

sudo apt update
sudo apt upgrade

Сделайте перезагрузку машины после этого, если есть необходимость после установки обновлений.

Сразу настроим брэндмауэр, чтобы защитить машину от несанкционированного доступа.

sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp

Открываем доступ через SSH.

sudo ufw allow 22/tcp

Если у Вас статический IP, то для безопасности доступ по SSH можно разрешить только для него.

sudo ufw allow from <ВашПостоянныйIP> to any port 22

И включаем брэндмауэр.

sudo ufw enable

Отлично! Машина защищена. Идем дальше.

Установка Outline Server

Для установки воспользуемся готовыми скриптами из проекта outline-server компании Jigsaw.

Скрипт находится по адресу:

https://github.com/Jigsaw-Code/outline-server/blob/master/src/server_manager/install_scripts/install_server.sh

Для установки достаточно выполнить следующую команду.

sudo wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh | bash

Будет установлен Docker и службы самого Outline, а также все зависимости. При необходимости Вы можете установить Docker самостоятельно перед запуском скрипта.

sudo curl https://get.docker.com | sh

Когда скрипт закончит, то выведет примерно такое содержимое.

{ 
  "apiUrl": "https://0.0.0.0:0000/XXXXXXXXXXXX", 
  "certSha256": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 
}

Сохраните это себе на будущее. По факту сервер Outline VPN уже установлен и нам лишь нужно его настроить для своих нужд.

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

Управление серверном VPN, в т.ч. раздача доступов, осуществляется с помощью Outline Manager, доступной для Windows, Max и Linux.

При запуске нужно добавить сервер и выбрать "Настроить Outline где угодно". Появится инструкция по установке с помощью скрипта, который мы ранее запускали. А после поле для ввода ключа и адреса, который Вы до этого сохранили.

После этого у Вас появится доступ к управлению сервером.

Добавляем ключ

В Outline Manager добавляем новый ключ в управлении сервером. Программа покажет ссылку на инструкцию и сам ключ в виде строки:

ss://XXXXXXXXXXXX@9.9.9.9:0/?outline=1

Скопируйте этот ключ, он понадобиться при запуске клиента Outline.

Клиент для подключения

И последний шаг - установка клиента для подключения. Есть приложения для Android, Windows, Chrome, iOS, MacOS, Linux.

При первом запуске нужно нажать "Добавить сервер" и вставить полученный выше ключ.

Готово!

Послесловие

Теперь Вы можете использовать Outline VPN. Надеюсь, что Вы будете его использовать без злого умысла.

Полезные ссылки

@MaxKuklyaev
Copy link

Требуется еще добавить в правила ufw порты управления и доступа 1586 и 39885

sudo ufw allow 39885/tcp
sudo ufw allow 1586/tcp
sudo ufw allow 1586/udp

@levaxy
Copy link

levaxy commented Feb 2, 2024

Outline позволяет создать сеть? Я не могу найти настройки маршрутизации в VPN. Как я могу управлять назначением ip адресов в виртуальной сети? В частности мне это надо для RDP подключения через VPN. Набрав ipconfig -all на компьютере, подключенном к VPN я вижу адрес 10.0.85.2 для сетевого адаптера outline. Этот адрес одинаков для всех компьютеров, подключенных к outline VPN. По идее VPS должен назначать уникальные IP-адреса для устройств в своей сети.

@krisproger
Copy link

krisproger commented Feb 3, 2024

Outline позволяет создать сеть?

нет сеть не создается - это не совсем vpn - это скорее socks-прокси

@levaxy
Copy link

levaxy commented Feb 3, 2024

Outline позволяет создать сеть?

нет сеть не создается - это не совсем vpn - это скорее socks-прокси

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

@silinalexandr
Copy link

не устанавливается:
ubuntu@instance-20240205-1143:~$ sudo wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh | bash

Verifying that Docker is installed .......... NOT INSTALLED
Would you like to install Docker? This will run 'curl https://get.docker.com/ | sh'. [Y/n] > Installing Docker ........................... Y
OK
Verifying Docker installation OK
Verifying that Docker daemon is running ..... ...............
Sorry! Something went wrong. If you can't figure this out, please copy and paste all this output into the Outline Manager screen, and send it to us, to see if we can help you.
Full log: /tmp/outline_logV9fnSqym0t

В логе похоже на проблему с запуском докера:

Verifying Docker installation Verifying that Docker daemon is running
............... \nSorry! Something went wrong. If you can't figure this out, please copy and paste all this output into the Outline Manager screen, and send it to us, to see if we can help you.

@silinalexandr
Copy link

стартанул докер руками но проблема не ушла:
ubuntu@instance-20240205-1143:~$ cat /tmp/outline_logD79r2lzoNe
Verifying that Docker is installed
Verifying that Docker daemon is running
\nSorry! Something went wrong. If you can't figure this out, please copy and paste all this output into the Outline Manager screen, and send it to us, to see if we can help you.
Full log: /tmp/outline_logD79r2lzoNe

в логе все тоже самое что в аутпуте команды

@TonySD
Copy link

TonySD commented Feb 6, 2024

стартанул докер руками но проблема не ушла: ubuntu@instance-20240205-1143:~$ cat /tmp/outline_logD79r2lzoNe Verifying that Docker is installed Verifying that Docker daemon is running \nSorry! Something went wrong. If you can't figure this out, please copy and paste all this output into the Outline Manager screen, and send it to us, to see if we can help you. Full log: /tmp/outline_logD79r2lzoNe

в логе все тоже самое что в аутпуте команды

не устанавливается: ubuntu@instance-20240205-1143:~$ sudo wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh | bash

Verifying that Docker is installed .......... NOT INSTALLED
Would you like to install Docker? This will run 'curl https://get.docker.com/ | sh'. [Y/n] > Installing Docker ........................... Y
OK
Verifying Docker installation OK
Verifying that Docker daemon is running ..... ...............
Sorry! Something went wrong. If you can't figure this out, please copy and paste all this output into the Outline Manager screen, and send it to us, to see if we can help you.
Full log: /tmp/outline_logV9fnSqym0t

В логе похоже на проблему с запуском докера:

Verifying Docker installation Verifying that Docker daemon is running
............... \nSorry! Something went wrong. If you can't figure this out, please copy and paste all this output into the Outline Manager screen, and send it to us, to see if we can help you.

Запускай так
sudo wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh | sudo bash

@silinalexandr
Copy link

стартанул докер руками но проблема не ушла: ubuntu@instance-20240205-1143:~$ cat /tmp/outline_logD79r2lzoNe Verifying that Docker is installed Verifying that Docker daemon is running \nSorry! Something went wrong. If you can't figure this out, please copy and paste all this output into the Outline Manager screen, and send it to us, to see if we can help you. Full log: /tmp/outline_logD79r2lzoNe
в логе все тоже самое что в аутпуте команды

не устанавливается: ubuntu@instance-20240205-1143:~$ sudo wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh | bash

Verifying that Docker is installed .......... NOT INSTALLED
Would you like to install Docker? This will run 'curl https://get.docker.com/ | sh'. [Y/n] > Installing Docker ........................... Y
OK
Verifying Docker installation OK
Verifying that Docker daemon is running ..... ...............
Sorry! Something went wrong. If you can't figure this out, please copy and paste all this output into the Outline Manager screen, and send it to us, to see if we can help you.
Full log: /tmp/outline_logV9fnSqym0t

В логе похоже на проблему с запуском докера:

Verifying Docker installation Verifying that Docker daemon is running
............... \nSorry! Something went wrong. If you can't figure this out, please copy and paste all this output into the Outline Manager screen, and send it to us, to see if we can help you.

Запускай так sudo wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh | sudo bash

Офигенно! похоже все отработало! Благодарю!

@silinalexandr
Copy link

Блин... не все так уж шолокадно оказалось. После того как скрипт отработал и я получил ссылку для Outline manager я получил ошибку

Outline manager error
Выключать фаервол пробовал.
Похоже что скрипт настроил айпишник внутренний который на VMке. Как можно его на внешний поменять?

@YOKARAMANE
Copy link

YOKARAMANE commented Feb 12, 2024

Блин... не все так уж шолокадно оказалось. После того как скрипт отработал и я получил ссылку для Outline manager я получил ошибку

Outline manager error Выключать фаервол пробовал. Похоже что скрипт настроил айпишник внутренний который на VMке. Как можно его на внешний поменять?

Включи порты на ВПСке которые тебе написало в консоль или ВПН перед добавлением сервера

@Golandzia
Copy link

Блин... не все так уж шолокадно оказалось. После того как скрипт отработал и я получил ссылку для Outline manager я получил ошибку

Outline manager error Выключать фаервол пробовал. Похоже что скрипт настроил айпишник внутренний который на VMке. Как можно его на внешний поменять?

Решил проблему с помощью GPT, вводил следующие команды, если что понтия не имею что они значат но всё заработало

sudo iptables -I INPUT -p tcp --dport 1024:65535 -j ACCEPT

sudo netfilter-persistent save

sudo service iptables save

sudo ufw allow 1024:65535/tcp

sudo ufw reload

@silinalexandr
Copy link

Блин... не все так уж шолокадно оказалось. После того как скрипт отработал и я получил ссылку для Outline manager я получил ошибку
Outline manager error Выключать фаервол пробовал. Похоже что скрипт настроил айпишник внутренний который на VMке. Как можно его на внешний поменять?

Решил проблему с помощью GPT, вводил следующие команды, если что понтия не имею что они значат но всё заработало

sudo iptables -I INPUT -p tcp --dport 1024:65535 -j ACCEPT

sudo netfilter-persistent save

sudo service iptables save

sudo ufw allow 1024:65535/tcp

sudo ufw reload

Спасибо! Помогло. Странно вроде тут в гаде указано что нужно открыть конкретные порты и мы это делаем. Наверно от ОС зависит как это сделать правильно.

@igorshirinkin
Copy link

Всё? Заблокировали протокол? Ничего не помогает из вышеуказанного

@Golandzia
Copy link

Всё? Заблокировали протокол? Ничего не помогает из вышеуказанного

Хм, пока всё работает.
Может стоит снести и попробовать заново

@igorshirinkin
Copy link

Всё? Заблокировали протокол? Ничего не помогает из вышеуказанного

Хм, пока всё работает. Может стоит снести и попробовать заново

Спасибо за ответ.
Да, действительно работает. Забыл выключить после установки протокол wireguard, поэтому был конфликт.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment