| build | ||
| .env | ||
| .gitignore | ||
| docker-compose.yml | ||
| README.md | ||
Назначение
Адаптация проекта https://github.com/simonmicro/Pritunl-Fake-API для развертывания Pritunl + Pritunl FakeAPI с помощью Docker Compose
Как это работает
- В контейнерах Docker запускаются:
pritunl-serverсам VPN сервер + установленная в контейнере MongoDBpritunl-fakeapi-nginxРеализация API сервера лицензирования Pritunlpritunl-fakeapi-fpmРеализация API сервера лицензирования Pritunl
- В docker compose подменяется адреса серверов лицензирования
app.pritunl.comиauth.pritunl.comна адрес контейнера с nginx - Генерируются сертификат CA и серверные сертификаты для доменных имен
app.pritunl.comиauth.pritunl.com. CA сертификат добавляется в доверенные в контейнереpritunl-server. Серверные сертификаты добавляются в качестве серверных в контейнерpritunl-fakeapi-nginx - Используются сгенерированные самоподписанные сертификаты для обеспечения TLS между Pritunl и FakeAPI сервером лицензирования
Протестировано
Только использование OpenVPN клиента. Работа с официальным клиентом Pritunl не тестировалась.
Требования
- Установленный Docker и Docker Compose в соотвествии с документацией https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository . Пакеты docker.io и docker-compose не поддерживаются.
- Пользователь с доступом к Docker без sudo
sudo usermod -aG docker ${USER}
Установка
- Клонировать репозиторий /opt/pritunl-fakeapi . Можно использовать любой путь на сервере. /opt/pritunl-fakeapi используется в примерах команд ниже.
sudo mkdir /opt/pritunl-fakeapi -p && \
sudo chown ${USER}:${USER} /opt/pritunl-fakeapi && \
git clone https://github.com/nd4y/Pritunl-Fake-API.git /opt/pritunl-fakeapi
-
Рекомендуется сгенерировать сертификаты удостоверяющего центра и сервера. Вы можете использовать уже сгененированные сертификаты из этого репозитория, однако, это может негативно отразиться на безопастности решения. Рекомендуется генерировать новые сертификаты для каждой инсталляции. Команды для выпуска сертификатов протестированы на OpenSSL 1.1.1w (Debian 11) и OpenSSL 1.1.1f (Ubuntu 22.04 LTS).
- Перейти в каталог и удалить имеющиеся сертификаты
cd /opt/pritunl-fakeapi/build/certs && rm -f *.pem - Выпустить сертификат удостоверяющго центра
openssl req -x509 -newkey rsa:4096 -keyout ca.key.pem -out ca.crt.pem -sha256 -days 3650 -nodes -subj "/CN=Self-Signed Root Certification Authority"- Выпустить запрос на сертификат сервера
openssl req -newkey rsa:4096 -nodes -days 3650 -keyout tls.key.pem -out tls.req.pem -subj "/CN=Self-Signed Server Certificate" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:app.pritunl.com,DNS:auth.pritunl.com"))- Подписать запрос на сертификат сервера сертификатом удоствоверяющего центра
openssl x509 -req -in tls.req.pem -CA ca.crt.pem -CAkey ca.key.pem -out tls.crt.pem -CAcreateserial -days 3650 -extensions SAN -extfile <(printf "[SAN]\nsubjectAltName=DNS:app.pritunl.com,DNS:auth.pritunl.com")- Удалить файл приватного ключа удостоверяющего центра, файл запроса сертификата сервера и srl файл.
rm -f ca.key.pem tls.req.pem ca.crt.srlВ каталоге
/opt/pritunl-fakeapi/build/certsдолжны быть 3 файла: 1. ca.crt.pem - Сертификат CA, выпустивший tls.crt.pem. При сборке копируется в контейнерpritunl-server2. tls.crt.pem - Сертификат, подписанный ca.crt.pem и имеющий в SAN DNS:app.pritunl.com,DNS:auth.pritunl.com . При сборке копируется в контейнерpritunl-fakeapi-nginx3. tls.key.pem - Закрытый ключ к сертификату подписанному ca.crt.pem и имеющий в SAN DNS:app.pritunl.com,DNS:auth.pritunl.com . При сборке копируется в контейнерpritunl-fakeapi-nginx - Перейти в каталог и удалить имеющиеся сертификаты
-
Запустить контейнеры
cd /opt/pritunl-fakeapi && docker compose up -d --build
- Получить первичные логин и пароль для входа, выполнив команду
docker compose exec pritunl pritunl default-password - Перейти в Web Interface Pritunl
http://SERVER_IP:80, введя логин и пароль, полученные на предыдущем шаге, где SERVER_IP - IP адрес (или доменное имя) хоста, на который выполнялась установка. - В веб интерфейсе Pritunl активировать подписку, введя ключ активации
active ultimate