一个基于 Web 的 docker-ipsec-vpn-server 管理面板,支持用户管理、IKEv2 证书管理和实时状态监控。
- 🔐 用户管理 - 添加、删除、修改 VPN 用户密码
- 📜 证书管理 - 生成和撤销 IKEv2 证书 (.p12)
- 📊 实时监控 - WebSocket 实时显示连接状态
- 📝 日志查看 - 查看 VPN 容器日志
- 🔒 安全认证 - JWT + Session 双认证机制
- 📱 响应式设计 - 支持桌面和移动设备
- 克隆项目
cd vpnmgr- 安装依赖
pip install -r requirements.txt- 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置管理员密码等- 启动服务
python start.py访问 http://localhost:8080,默认用户名 admin,密码 admin123
# 构建并启动
docker-compose up -d
# 查看日志
docker-compose logs -f编辑 .env 文件:
# 管理员账号
ADMIN_USERNAME=admin
ADMIN_PASSWORD=your-secure-password
# 安全密钥 (请修改)
SECRET_KEY=your-secret-key
# Docker 容器名称 (必须与你的 VPN 容器名称一致)
VPN_CONTAINER_NAME=ipsec-vpn-server
# 服务器设置
HOST=0.0.0.0
PORT=8080- 进入"用户管理"页面
- 点击"添加用户"按钮
- 输入用户名和密码(可点击随机生成按钮)
- 保存即可,用户会立即生效
- 进入"证书管理"页面
- 点击"生成证书"按钮
- 输入客户端名称(如:iPhone-张三)
- 下载 .p12 文件并安装到设备
各平台安装方式:
- iOS/macOS: 通过邮件/AirDrop 发送,点击安装
- Windows: 双击导入到"个人"证书存储
- Android: 设置 -> 安全 -> 从存储安装证书
概览页面通过 WebSocket 实时显示:
- VPN 容器运行状态
- 当前活跃连接数
- 已连接用户信息
vpnmgr/
├── vpnmgr/
│ ├── main.py # FastAPI 主应用
│ ├── config.py # 配置管理
│ ├── schemas.py # Pydantic 模型
│ ├── models/ # 数据库模型
│ │ ├── database.py
│ │ ├── vpn_user.py
│ │ └── ikev2_cert.py
│ ├── utils/ # 工具模块
│ │ ├── vpn_manager.py # Docker 容器管理
│ │ └── auth.py # 认证工具
│ ├── templates/ # HTML 模板
│ └── static/ # 静态文件
│ ├── css/
│ └── js/
├── requirements.txt
├── docker-compose.yml
├── Dockerfile
├── start.py
└── README.md
本管理面板通过 Docker API 与 hwdsl2/ipsec-vpn-server 容器通信,执行以下操作:
- 添加/删除 VPN 用户(通过
useradd/userdel或chpasswd) - 生成 IKEv2 证书(通过
ikev2.sh脚本) - 获取连接状态(通过
ipsec whack --trafficstatus) - 获取容器日志
注意:如果 VPN 容器名称不是默认的 ipsec-vpn-server,请在 .env 中修改 VPN_CONTAINER_NAME。
- 修改默认密码 - 部署后立即修改
ADMIN_PASSWORD - 更换密钥 - 修改
SECRET_KEY为一个随机字符串 - 使用 HTTPS - 生产环境建议使用 HTTPS 反向代理
- 限制访问 - 通过防火墙限制管理面板访问IP
server {
listen 443 ssl http2;
server_name vpnmgr.example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}确保 VPN Manager 有权限访问 Docker:
# 如果使用 docker-compose,确保挂载了 docker.sock
-v /var/run/docker.sock:/var/run/docker.sock:ro
# 或者直接运行,确保用户在 docker 组
sudo usermod -aG docker $USER检查 VPN 容器是否运行:
docker ps | grep ipsec-vpn-server
docker logs ipsec-vpn-server如果使用反向代理,确保配置了 WebSocket 支持(见上方 Nginx 配置)。
- Backend: FastAPI, SQLAlchemy, Docker SDK
- Frontend: Vanilla JS, CSS3, Font Awesome
- Database: SQLite (async via aiosqlite)
- Real-time: WebSocket
MIT License