這是本文件的舊版!


[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
  1. Alpine 3.19 Kernel 啟用 ip_tables

    modprobe ip_tables
    echo 'ip_tables' >> /etc/modules
    reboot

  2. 編輯 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
          - 8080:8080 # for ovpn-admin because of network_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
  • 將 /etc/openvpn/setup/openvpn.conf 複製出來, 改成自己想要的版本, 在掛上去使用
  • 處理方式
    1. docker cp openvpn:/etc/openvpn/setup/openvpn.conf .

    2. 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"
    3. 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
        :
    4. 重新啟動 docker compose 讓設定生效

      docker compose up -d

    5. 讓所有 VPN Client 斷線重新連入
  • 增加 nginx 當 reverse proxy 設定 .htpasswd 來實現
  • 處理方式
    1. 編輯 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;
        }
      }
    2. 產生管理者帳號密碼檔 .htpasswd Exp. 建立管理者 jonathan

      apk add apache2-utils
      htpasswd -c .htpasswd jonathan
      cat .htpasswd

      應該可以看到類似 jonathan:$arpxxxxxxxxxxx 這樣的內容, 之後新增其他帳號就不需要 -c Exp. htpasswd .htpasswd myadm

    3. 修改 docker-compose.yml
      
      
  • tech/ovpn-admin.1719242475.txt.gz
  • 上一次變更: 2024/06/24 23:21
  • jonathan