来源仓库: https://github.com/moli-xia/ocserv-docker
一个轻量引导脚本加主部署脚本的 OCserv (OpenConnect Server) Docker 部署工具,支持一键配置、快速部署、自定义部署、Let's Encrypt 证书申请续签,以及与宿主机 nginx / OpenResty / 宝塔面板环境共存。
- Windows、Android、macOS 客户端请见 Releases 页面。
- 一键配置:
install.sh自动拉起主部署脚本,优先推荐 - 单脚本整合:
ocserv_deploy.sh同时负责部署、证书申请和续签 - 端口共存: 宿主机
443被占用时,自动切换到8443+ - 宝塔兼容: 检测到宝塔面板后,自动尝试放行实际使用的端口
- 防火墙处理: 同时兼容
ufw、firewalld、iptables - 证书管理: 集成 Let's Encrypt 申请和自动续签
- 容器化部署: 基于 Docker,便于隔离、迁移和维护
- Linux 系统: Ubuntu 18.04+, Debian 9+, CentOS 7+, Rocky, AlmaLinux
- Docker 已安装并正常运行
- 域名已解析到服务器 IP
- 申请证书时可访问
80/tcp - 若使用云服务器,还需在安全组中放行实际端口
方式一: 使用 curl
bash <(curl -fsSL https://raw.githubusercontent.com/moli-xia/ocserv-docker/main/install.sh)方式二: 使用 wget
wget -qO- https://raw.githubusercontent.com/moli-xia/ocserv-docker/main/install.sh | bash说明:
- 引导脚本会自动下载或复用最新的
ocserv_deploy.sh - 不带参数时默认进入交互式菜单
- 也可以直接透传参数,例如快速部署:
bash <(curl -fsSL https://raw.githubusercontent.com/moli-xia/ocserv-docker/main/install.sh) -- -q方式一: 使用 git clone
git clone https://github.com/moli-xia/ocserv-docker.git
cd ocserv-docker
chmod +x install.sh ocserv_deploy.sh
./install.sh方式二: 使用 wget
mkdir -p ocserv-docker && cd ocserv-docker
wget -O install.sh https://raw.githubusercontent.com/moli-xia/ocserv-docker/main/install.sh
wget -O ocserv_deploy.sh https://raw.githubusercontent.com/moli-xia/ocserv-docker/main/ocserv_deploy.sh
chmod +x install.sh ocserv_deploy.sh
./install.sh方式三: 使用 curl
mkdir -p ocserv-docker && cd ocserv-docker
curl -L https://raw.githubusercontent.com/moli-xia/ocserv-docker/main/install.sh -o install.sh
curl -L https://raw.githubusercontent.com/moli-xia/ocserv-docker/main/ocserv_deploy.sh -o ocserv_deploy.sh
chmod +x install.sh ocserv_deploy.sh
./install.sh./ocserv_deploy.sh默认账号:
- 用户名:
NoRoute - 密码:
654321
运行命令:
./ocserv_deploy.sh -q./ocserv_deploy.sh -cocserv-docker/
├── ocserv_deploy.sh
├── install.sh
├── README.md
├── LICENSE
└── .gitignore
部署后的默认配置目录:
/opt/ocserv/
├── ocserv.conf
├── ocpasswd
├── server-cert.pem
├── server-key.pem
├── ca-cert.pem
└── domain.txt
- 引导脚本:
install.sh - 协议: AnyConnect
- 容器内端口:
443/tcp和443/udp - 宿主机端口: 优先使用
443,占用时自动改用8443+ - 配置目录:
/opt/ocserv
- 如果服务器安装了宝塔面板,脚本会优先尝试通过
bt命令放行端口 - 如果宝塔放行失败,脚本会继续尝试
ufw、firewalld或iptables - 若服务器在云厂商上,还需要手动同步安全组规则
直接运行脚本,在菜单中选择 3. 管理SSL证书 即可。
快速部署和自定义部署完成后,脚本会询问是否立即申请 Let's Encrypt 证书。
申请证书时,脚本可能会临时停止占用 80 端口的 nginx,证书申请结束后会自动尝试恢复 nginx 和宝塔面板服务。
脚本会创建 /etc/cron.daily/ocserv-renew,用于自动续签证书并重启容器加载新证书。
- 安装 Cisco AnyConnect 或兼容客户端
- 输入服务器地址
- 使用用户名和密码登录
sudo apt install openconnect
sudo openconnect your-server.com如果实际使用的是备用端口,请写成:
sudo openconnect https://your-server.com:8443- 安装 Cisco AnyConnect 或兼容客户端
- 新建 VPN 连接
- 输入服务器地址、用户名和密码
因为 OCserv 不是普通 Web 应用,原来如果直接映射宿主机 443,就会和宿主机 nginx 抢占同一端口。
现在脚本会自动检测:
443可用: 直接使用443443被占用: 自动改用8443+
这样宿主机 nginx 和 OCserv 可以同时运行。
常见原因:
- 宝塔防火墙未放行实际使用端口
- 云服务器安全组未同步放行
- 宿主机端口已监听,但外网规则未开放
- 检查域名解析是否正确
- 确保
80/tcp可访问 - 检查
nginx、防火墙和安全组设置
docker ps -a
docker logs ocservdocker start ocserv
docker stop ocserv
docker restart ocserv
docker logs -f ocserv
docker ps --filter "name=ocserv"本项目采用 MIT License。
请确保你有合法使用 VPN 的权限,并遵守所在地法律法规。