差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

兩邊的前次修訂版 前次修改
下次修改
前次修改
tech:ovpn-admin [2024/06/25 00:26] – [安裝設定] jonathantech:ovpn-admin [2025/01/20 10:03] (目前版本) – alpine 2.21 需要加上 /dev/net/tun jonathan
行 1: 行 1:
 ====== 安裝 ovpn-admin (OpenVPN + 簡易 WebUI) 方案 ====== ====== 安裝 ovpn-admin (OpenVPN + 簡易 WebUI) 方案 ======
-  * 雖然已找到 [[tech/dockovpn|DockOVPN (OpenVPN Docker方案)]], 但還是希望能找到有 WebUI 可方便管理 VPN 帳號方案+  * 為解決 [[tech/dockovpn|DockOVPN (OpenVPN Docker方案)]] 無 WebUI 可管理 VPN 帳號, 因此找到這 **[[https://github.com/flant/ovpn-admin|ovpn-admin]]** 方案
   * 安裝環境   * 安裝環境
     * VM : 2 vCore, 2G RAM, 32G SSD     * VM : 2 vCore, 2G RAM, 32G SSD
-    * OS : Alpine 3.19 + Docker Compose+    * OS : Alpine 3.21 + Docker Compose
   * 規劃環境   * 規劃環境
     * OpenVPN 內部網路 : 10.16.0.0/24     * OpenVPN 內部網路 : 10.16.0.0/24
行 9: 行 9:
  
 ===== 安裝設定 ===== ===== 安裝設定 =====
-  - Alpine 3.19 Kernel 啟用 ip_tables<cli>+  - Alpine 3.21 Kernel 啟用 ip_tables<cli>
 modprobe ip_tables modprobe ip_tables
 echo 'ip_tables' >> /etc/modules echo 'ip_tables' >> /etc/modules
 reboot reboot
 +</cli>
 +  - 加上 tun device <cli>
 +mkdir -p /dev/net
 +mknod /dev/net/tun c 10 200
 +chmod 666 /dev/net/tun
 +# 檢查模組是否已載入
 +lsmod | grep tun
 +# 如果沒有載入,則執行:
 +modprobe tun
 +echo "tun" >> /etc/modules
 </cli> </cli>
   - 編輯 docker-compose.yml <file>   - 編輯 docker-compose.yml <file>
行 18: 行 28:
   openvpn:   openvpn:
     container_name: openvpn     container_name: openvpn
 +    restart: unless-stopped
     image: flant/ovpn-admin:openvpn-latest     image: flant/ovpn-admin:openvpn-latest
     command: /etc/openvpn/setup/configure.sh     command: /etc/openvpn/setup/configure.sh
行 26: 行 37:
     cap_add:     cap_add:
       - NET_ADMIN       - NET_ADMIN
 +    devices:
 +      - /dev/net/tun 
     ports:     ports:
       - 443:1194 # for openvpn       - 443:1194 # for openvpn
行 35: 行 48:
   ovpn-admin:   ovpn-admin:
     container_name: ovpn-admin     container_name: ovpn-admin
 +    restart: unless-stopped
     image: flant/ovpn-admin     image: flant/ovpn-admin
     command: /app/ovpn-admin     command: /app/ovpn-admin
行 53: 行 67:
       - ./easyrsa_master:/mnt/easyrsa       - ./easyrsa_master:/mnt/easyrsa
       - ./ccd_master:/mnt/ccd       - ./ccd_master:/mnt/ccd
 +  openvpn-monitor:
 +    container_name: openvpn-monitor
 +    restart: unless-stopped
 +    image: ruimarinho/openvpn-monitor
 +    environment:
 +      TZ: "Asia/Taipei"
 +      OPENVPNMONITOR_DEFAULT_DATETIMEFORMAT: "%%Y/%%m/%%d %%H:%%M:%%S"
 +      OPENVPNMONITOR_SITES_0_SHOWDISCONNECT: "False"
 +      OPENVPNMONITOR_SITES_0_PORT: "8989"
 +      OPENVPNMONITOR_SITES_0_NAME: "openvpn"
 +      OPENVPNMONITOR_SITES_0_HOST: "localhost"
 +      OPENVPNMONITOR_SITES_0_ALIAS: "openvpn"
 +      OPENVPNMONITOR_DEFAULT_SITE: "My OpenVPN Sever"
 +      OPENVPNMONITOR_DEFAULT_MAPS: "True"
 +      OPENVPNMONITOR_DEFAULT_LONGITUDE: "121.51"
 +      OPENVPNMONITOR_DEFAULT_LOGO: ""
 +      OPENVPNMONITOR_DEFAULT_LATITUDE: "24.98"
 +    network_mode: service:openvpn
   nginx:   nginx:
     container_name: nginx     container_name: nginx
 +    restart: unless-stopped
     image: nginx:latest     image: nginx:latest
     ports:     ports:
行 66: 行 99:
   listen 8080;   listen 8080;
   server_name 127.0.0.1;   server_name 127.0.0.1;
 +
 +  location /mon {
 +    rewrite /mon(.*) /$1 break;
 +    proxy_pass http://openvpn:80;
 +  }
  
   location / {   location / {
行 78: 行 116:
 htpasswd -c .htpasswd jonathan htpasswd -c .htpasswd jonathan
 cat .htpasswd cat .htpasswd
-</cli> 應該可以看到類似 jonathan:$arpxxxxxxxxxxx 這樣的內容, 之後新增其他帳號就不需要 -c Exp. htpasswd .htpasswd myadm+</cli> 應該可以看到類似 jonathan:$arpxxxxxxxxxxx 這樣的內容, 之後新增其他帳號就不需要 -c Exp. htpasswd .htpasswd myadm <WRAP center round tip 60%> 
 +如果要驗證 htpasswd 設定的密碼是否正確, 可以用 **htpasswd -vb .htpasswd 帳號 密碼** 進行驗證 Exp.<cli> 
 +ovpn-admin-246:~# htpasswd -vb .htpasswd myadm MyPasswod*** 
 +Password for user everstar correct. 
 +</cli> 
 +</WRAP>
   - 啟動 ovpn-admin 服務 <cli>   - 啟動 ovpn-admin 服務 <cli>
 +mkdir -p Dockovpn
 +chmod a+w Dockovpn
 docker compose up -d docker compose up -d
 </cli> </cli>
 +
 +  * 如果要管理 vpn 帳號 - http://server-ip:8080/
 +    * ++看範例畫面|{{:tech:螢幕擷取畫面_2024-06-25_155418.png|}}++
 +  * 如果要看線上 vpn 用戶 - http://server-ip:8080/mon
 +    * ++看範例畫面|{{:tech:螢幕擷取畫面_2024-06-25_155441.png|}}++
  
 ===== 安裝 openvpn-snmp-stats 強化監控 ===== ===== 安裝 openvpn-snmp-stats 強化監控 =====
行 125: 行 175:
       - ./easyrsa_master:/etc/openvpn/easyrsa       - ./easyrsa_master:/etc/openvpn/easyrsa
       - ./ccd_master:/etc/openvpn/ccd       - ./ccd_master:/etc/openvpn/ccd
 +      - ./Dockovpn:/tmp
       - ./openvpn.conf:/etc/openvpn/setup/openvpn.conf       - ./openvpn.conf:/etc/openvpn/setup/openvpn.conf
   :   :
行 130: 行 181:
     - 重新啟動 docker compose 讓設定生效<cli>docker compose up -d</cli>     - 重新啟動 docker compose 讓設定生效<cli>docker compose up -d</cli>
     - 讓所有 VPN Client 斷線重新連入     - 讓所有 VPN Client 斷線重新連入
 +
 +==== 2. 想修改 Openvpn 為 UDP 模式  =====
 +  * 目前版本 [[https://github.com/flant/ovpn-admin/blob/master/setup/configure.sh|configure.sh]] 內是直接寫 Listen TCP , 除非比照 openvpn.conf 方式自己修改後掛上去處理<file>
 +:
 +openvpn --config /etc/openvpn/openvpn.conf --client-config-dir /etc/openvpn/ccd --port 1194 --proto tcp --management 127.0.0.1 8989 --dev tun0 --server ${OVPN_SRV_NET} ${OVPN_SRV_MASK}
 +</file>
  
 ===== 參考網址 ===== ===== 參考網址 =====
  • tech/ovpn-admin.1719246368.txt.gz
  • 上一次變更: 2024/06/25 00:26
  • jonathan