這是本文件的舊版!
[Draft]安裝 ovpn-admin (OpenVPN + 簡易 WebUI) 方案
- 雖然已找到 DockOVPN (OpenVPN Docker方案), 但還是希望能找到有 WebUI 可方便管理 VPN 帳號的方案
- 安裝環境
- VM : 2 vCore, 2G RAM, 32G SSD
- OS : Alpine 3.19 + Docker Compose
- 規劃環境
- OpenVPN 內部網路 : 10.16.0.0/24
- 外部聯入 VPN : vpn.mydomain.com TCP Port 443
安裝設定
- Alpine 3.19 Kernel 啟用 ip_tables
modprobe ip_tables echo 'ip_tables' >> /etc/modules reboot
- 編輯 docker-compose.yml
services: openvpn: container_name: openvpn image: flant/ovpn-admin:openvpn-latest command: /etc/openvpn/setup/configure.sh environment: OVPN_SERVER_NET: "10.16.0.0" OVPN_SERVER_MASK: "255.255.255.0" OVPN_PASSWD_AUTH: "true" cap_add: - NET_ADMIN ports: - 443:1194 # for openvpn - 127.0.0.1:8888:8080 # for nginx auth ovpn-admin mode volumes: - ./easyrsa_master:/etc/openvpn/easyrsa - ./ccd_master:/etc/openvpn/ccd #- ./openvpn.conf:/etc/openvpn/setup/openvpn.conf ovpn-admin: container_name: ovpn-admin image: flant/ovpn-admin command: /app/ovpn-admin environment: OVPN_DEBUG: "true" OVPN_VERBOSE: "true" OVPN_NETWORK: "10.16.0.0/24" OVPN_CCD: "true" OVPN_CCD_PATH: "/mnt/ccd" EASYRSA_PATH: "/mnt/easyrsa" OVPN_SERVER: "vpn.mydomain.com:443:tcp" OVPN_INDEX_PATH: "/mnt/easyrsa/pki/index.txt" OVPN_AUTH: "true" OVPN_AUTH_DB_PATH: "/mnt/easyrsa/pki/users.db" LOG_LEVEL: "debug" network_mode: service:openvpn volumes: - ./easyrsa_master:/mnt/easyrsa - ./ccd_master:/mnt/ccd nginx: container_name: nginx image: nginx:latest ports: - 8080:8080 # for nginx - 8081:8081 # for nginx #volumes: # - ./.htpasswd:/etc/nginx/.htpasswd:ro # - ./default.conf:/etc/nginx/conf.d/default.conf:ro
FAQ
1. 想修改 server.conf
- 將 /etc/openvpn/setup/openvpn.conf 複製出來, 改成自己想要的版本, 在掛上去使用
- 處理方式
docker cp openvpn:/etc/openvpn/setup/openvpn.conf .
vi openvpn.conf
Exp. 加上 route 172.16.0.0/24 , route 172.16.1.0/24
: push "route 172.16.0.0 255.255.255.0" push "route 172.16.1.0 255.255.255.0"
vi docker-compose.yml
啟用 openvpn: → volumes: → ./openvpn.conf:/etc/openvpn/setup/openvpn.conf
services: openvpn: : : volumes: - ./easyrsa_master:/etc/openvpn/easyrsa - ./ccd_master:/etc/openvpn/ccd - ./openvpn.conf:/etc/openvpn/setup/openvpn.conf :
- 重新啟動 docker compose 讓設定生效
docker compose up -d
- 讓所有 VPN Client 斷線重新連入
2. 管理介面設定登入帳號密碼
- 增加 nginx 當 reverse proxy 設定 .htpasswd 來實現
- 處理方式
- 編輯 default.conf
vi default.conf
server { listen 8080; server_name 127.0.0.1; location / { auth_basic "Pass"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://127.0.0.1:8888; } }
- 產生管理者帳號密碼檔 .htpasswd Exp. 建立管理者 jonathan
apk add apache2-utils htpasswd -c .htpasswd jonathan cat .htpasswd
應該可以看到類似 jonathan:$arpxxxxxxxxxxx 這樣的內容, 之後新增其他帳號就不需要 -c Exp. htpasswd .htpasswd myadm
- 修改 docker-compose.yml