实战系列一:用 Podman + WireGuard 打造你的下一代轻量级 VPN(UI 可视化管理)

实战系列一:用 Podman + WireGuard 打造你的下一代轻量级 VPN(UI 可视化管理)

奥黛丽·逐爱者
2025-08-30 / 0 评论 / 0 阅读 / 正在检测是否收录...
大家好,我是一名从一线打拼出来的老运维,十多年折腾在系统维护、故障抢修、上线发布、运维管理一线,踩过不少坑,也总结了不少实战经验。如果你喜欢这类技术文章,欢迎关注 + 转发支持!
大家如果有问题,也可以问问我的智能助手,有可能在以往的文章找到答案哦:有问必答助手

在日常运维或个人网络环境搭建中,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.ymlpodman-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 更安全、更高效。


END


重点提醒

因为有你们的关注和反馈,分享才更有意义 ❤️。

👉 有需要的朋友可以加我 微信:jack_2013L,记得备注暗号【007】,就能入群和更多小伙伴一起交流~

💬 你在日常工作中有没有遇到相同的问题?欢迎在评论区留言,我会挑选一些有意思的留言在下篇文章里展开。

✨ 如果觉得内容对你有帮助,别忘了 关注 + 转发,这样你就不会错过后续的实战分享啦!



0

评论 (0)

取消