在日常运维或个人网络环境搭建中,VPN 是一个绕不开的话题。它不仅能帮你安全访问内网,还能实现多机互联和加密通信。 传统方案很多,比如 OpenVPN、IPSec 等,但近几年一颗新星正在迅速崛起 —— WireGuard。而在容器化浪潮中,我们也有了更轻量、更安全的选择 —— Podman。本篇就是这个实战系列的第一篇:利用 Podman + Podman-Compose 部署 WireGuard 和 WireGuard-UI,快速打造一个可视化 VPN 服务。
1️⃣ Podman 和 WireGuard 简介
- Podman Podman 是一个轻量级容器引擎,号称 “Docker 的无守护进程替代品”。它最大的亮点是 无 root 模式,同时支持 OCI 标准镜像,安全性更高。对运维工程师来说,Podman 的命令几乎完全兼容 Docker,学习成本很低。
- WireGuard WireGuard 是 Linux 内核中的新一代 VPN 协议,号称“快到飞起的 VPN”。它只有 4000 行左右代码,相比 OpenVPN、IPSec 的十几万行代码更简单、更安全。它采用最先进的加密算法(如 ChaCha20、Curve25519),性能表现极佳,已经成为很多企业和开发者的首选。
- WireGuard-UI WireGuard 本身配置比较“硬核”,但 WireGuard-UI 提供了 Web 界面,让你可以方便地管理客户端、查看配置二维码,极大降低了使用门槛。
2️⃣ 安装 Podman 与 Podman-Compose
首先在你的 Linux 服务器上安装 Podman。这里以 CentOS / RHEL 系为例(Ubuntu 也类似):
# 更新系统
sudo yum -y update
# 安装 podman
sudo yum -y install podman
# 验证版本
podman --version
# 安装 podman-compose
pip3 install podman-compose
验证安装是否成功:
podman-compose version
示例如下:
[root@ip-172-31-6-116 bin]# pip3 install podman-compose
Collecting podman-compose
Downloading podman_compose-1.5.0-py3-none-any.whl (47 kB)
|████████████████████████████████| 47 kB 388 kB/s
Collecting python-dotenv
Downloading python_dotenv-1.1.1-py3-none-any.whl (20 kB)
Requirement already satisfied: pyyaml in /usr/lib64/python3.9/site-packages (from podman-compose) (5.4.1)
Installing collected packages: python-dotenv, podman-compose
Successfully installed podman-compose-1.5.0 python-dotenv-1.1.1
[root@ip-172-31-6-116 bin]# podman-compose version
podman-compose version 1.5.0
podman version 5.5.2
3️⃣ 使用 Podman-Compose 部署 WireGuard + WireGuard-UI
我们用 docker-compose.yml 格式的文件,Podman 可以直接兼容。
3.1 创建工作目录
mkdir -p ~/wireguard-vpn && cd ~/wireguard-vpn
3.2 编写 docker-compose.yml
创建 docker-compose.yml,podman-compose 是为了兼容 docker-compose 的生态,所以文件依然是docker-compose.yml:
注意:服务端要开放51820/UDP(WireGuard)和5000/TCP UI管理端口
version: "3.8"
services:
wireguard:
image:linuxserver/wireguard:latest
container_name:wireguard
cap_add:
-NET_ADMIN
-SYS_MODULE
environment:
-PUID=1000
-PGID=1000
-TZ=Asia/Shanghai
-SERVERURL=your.vpn.server.ip
-SERVERPORT=51820
-PEERS=5
-PEERDNS=1.1.1.1
-INTERNAL_SUBNET=10.13.13.0
volumes:
-./config:/config
-/lib/modules:/lib/modules
ports:
-51820:51820/udp
sysctls:
-net.ipv4.conf.all.src_valid_mark=1
restart:unless-stopped
wireguard-ui:
image:ngoduykhanh/wireguard-ui:latest
container_name:wireguard-ui
depends_on:
-wireguard
ports:
-5000:5000
volumes:
-./config:/data
restart: unless-stopped
3.3 启动服务
执行:
podman-compose up -d
确认容器运行:
podman ps
4️⃣ 打开 WireGuard-UI 界面
浏览器访问:
http://服务器IP:5000
进入 UI 界面,你可以:
- 创建和管理客户端配置
- 自动生成二维码,方便手机扫描接入
- 一键导出配置文件
这样,一个 Podman 驱动的 WireGuard VPN Server 就搭建完成了!
5️⃣ 总结
在这篇 实战系列一 中,我们完成了:
- 认识 Podman 与 WireGuard
- 安装 Podman + Podman-Compose
- 使用 compose 管理 WireGuard 与 UI
- 成功打开 Web 界面管理客户端
下一篇,我们将深入讲解 WireGuard 配置优化、密钥管理、客户端接入 等实战内容,让你的 VPN 更安全、更高效。
因为有你们的关注和反馈,分享才更有意义 ❤️。
👉 有需要的朋友可以加我 微信:jack_2013L,记得备注暗号【007】,就能入群和更多小伙伴一起交流~
💬 你在日常工作中有没有遇到相同的问题?欢迎在评论区留言,我会挑选一些有意思的留言在下篇文章里展开。
✨ 如果觉得内容对你有帮助,别忘了 关注 + 转发,这样你就不会错过后续的实战分享啦!
评论 (0)