Skip to content

OpenVPN Pritunl

Matvey Gladkikh edited this page Apr 21, 2025 · 32 revisions

Tested on Debian 10/11 (mongodb uses "buster" apt repo for "bullseye" (not an error)). Docs: https://docs.pritunl.com/docs.

Install Pritunl:

curl -L https://raw.githubusercontent.com/matveynator/sysadminscripts/main/pritunl | sudo bash

Uninstall:

For full uninstall edit /etc/rc.local

apt-get --purge remove pritunl* mongodb-* openvpn
# /etc/rc.local Добавляем черные дыры для немаршрутизируемых адресов, а pritunl (openvpn) добавит от себя исключающий маршрут на свою внутрянку если что
ip route add blackhole 10.0.0.0/8
ip route add blackhole 172.16.0.0/12
ip route add blackhole 192.168.0.0/16
ip route add blackhole 169.254.0.0/16
ip route add blackhole 224.0.0.0/4
ip route add blackhole 240.0.0.0/4

#bookworm

#!/bin/bash

set -e

echo "🔄 Обновление системы..."
sudo apt update && sudo apt upgrade -y

echo "📦 Установка зависимостей..."
sudo apt install -y gnupg curl ca-certificates apt-transport-https \
  software-properties-common lsb-release wget dnsutils

echo "🔐 Добавление GPG-ключа MongoDB 5.0..."
curl -fsSL https://pgp.mongodb.com/server-5.0.asc \
  | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb-server-5.0.gpg

echo "➕ Добавление репозитория MongoDB 5.0 (Bullseye)..."
echo "deb [ signed-by=/etc/apt/trusted.gpg.d/mongodb-server-5.0.gpg ] \
https://repo.mongodb.org/apt/debian bullseye/mongodb-org/5.0 main" \
  | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list > /dev/null

echo "🔐 Добавление GPG-ключа Pritunl..."
curl -fsSL https://raw.githubusercontent.com/pritunl/pgp/master/pritunl_repo_pub.asc \
  | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/pritunl.gpg

echo "➕ Добавление репозитория Pritunl..."
echo "deb [ signed-by=/etc/apt/trusted.gpg.d/pritunl.gpg ] \
https://repo.pritunl.com/stable/apt $(lsb_release -cs) main" \
  | sudo tee /etc/apt/sources.list.d/pritunl.list > /dev/null

echo "🔄 Обновление списка пакетов..."
sudo apt update

echo "📥 Установка libssl1.1 для совместимости с MongoDB 5.0..."
wget http://security.debian.org/debian-security/pool/updates/main/o/openssl/\
libssl1.1_1.1.1w-0+deb11u2_amd64.deb \
  -O /tmp/libssl1.1.deb
sudo dpkg -i /tmp/libssl1.1.deb

echo "🔄 Повторное обновление пакетов..."
sudo apt update

echo "📥 Установка MongoDB и Pritunl..."
sudo apt install -y mongodb-org pritunl

echo "✏️ Записываем корректный MongoDB‑URI в конфиг Pritunl..."
sudo tee /etc/pritunl.conf > /dev/null <<EOF
{
  "mongodb_uri": "mongodb://127.0.0.1:27017/pritunl?retryWrites=true&w=majority"
}
EOF

echo "⚙️ Включаем и перезапускаем сервисы..."
sudo systemctl enable mongod pritunl
sudo systemctl restart mongod pritunl

echo "✅ Установка завершена!"
echo

echo "🔑 Ключ для первичной настройки Pritunl:"
sudo pritunl setup-key
echo

echo "🔐 Пароль администратора для веб‑интерфейса:"
sudo pritunl default-password
echo

# Вычисляем основной IP и пробуем сделать обратный DNS
IP=$(hostname -I | awk '{print $1}')
PTR=$(dig +short -x $IP | head -n1 | sed 's/\.$//')
if [ -n "$PTR" ]; then
  TARGET="$PTR"
else
  TARGET="$IP"
fi

echo "🌐 Откройте в браузере: https://$TARGET"

Clone this wiki locally