pritunl

pritunl活跃维护

基于 Python 的企业级 VPN 服务器,支持 OpenVPN 与 WireGuard 协议,提供 Web 管理界面和集中式用户认证,适合团队搭建自托管远程访问网络。

Enterprise VPN server

1.34.4803.56发布于 2026-11-06 13:28 UTC5,040star +2 / 7 天670fork同步于 2026-11-10 23:37 UTC

怎么上手

由 README 提炼,执行前请确认
sudo dnf -y install mongodb-org
sudo dnf --allowerasing -y install pritunl-openvpn
硬件要求按 README 说明

README 未说明 CPU、内存或 GPU 要求;安装脚本针对 x86_64 架构(使用 go1.27.2.linux-amd64 与 -march=x86-64-v2),未提及 GPU 或显存。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

基于 OpenVPN 协议的分布式企业 VPN 服务器,用于搭建集中管理的远程接入网络

基于 Python 的企业级 VPN 服务器,支持 OpenVPN 与 WireGuard 协议,提供 Web 管理界面和集中式用户认证,适合团队搭建自托管远程访问网络。

核心能力

  • 基于 OpenVPN 协议提供企业级 VPN 接入
  • 支持分布式多节点部署架构
  • 内置 Web 管理服务 pritunl-web 与 DNS 服务 pritunl-dns
  • 可选 ndppd 组件支持 IPv6 NDP 代理
  • 提供 SELinux 策略模块以加固服务运行

容易踩的坑

单机部署需先安装并启动 MongoDB,否则服务无法运行;源码安装需手动设置 VERSION 环境变量为具体版本号,脚本中为占位符 X.XX.XXXX.XX;需自行编译安装 Python 3.12.15 与 Go 1.27.2,并额外 go install pritunl-web 和 pritunl-dns 两个组件。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本1.34.4803.56
  1. 1.34.4803.56pritunl v1.34.4803.56最新正式版2026-11-06 · 2026-11-06 13:28 UTC
    • Fix host settings modification
  2. 1.34.4763.45pritunl v1.34.4763.452026-09-27 · 2026-09-27 10:50 UTC
    查看更新说明
    • Add OpenVPN mobile sso support
    • Add local otp admin authentication
    • Fix IP pool issues
    • Improve routing options
  3. 1.34.4681.89pritunl v1.34.4681.892026-07-07 · 2026-07-07 21:30 UTC
    查看更新说明
    • Web interface improvements
    • Update libraries
  4. 1.34.4649.96pritunl v1.34.4649.962026-06-05 · 2026-06-05 23:05 UTC
    查看更新说明
    • Fix ipaddress migration
  5. 1.34.4646.94pritunl v1.34.4646.942026-06-02 · 2026-06-02 22:34 UTC
    查看更新说明
    • Update libraries

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    pritunl: enterprise vpn server

    github twitter substack forum

    Pritunl is a distributed enterprise vpn server built using the OpenVPN protocol. Documentation and more information can be found at the home page pritunl.com

    pritunl

    Install From Source

    # Install MongoDB if running single host configuration
    sudo tee /etc/yum.repos.d/mongodb-org.repo << EOF
    [mongodb-org]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/10/mongodb-org/9.0/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-9.asc
    EOF
    
    sudo dnf -y install mongodb-org
    sudo systemctl start mongod
    sudo systemctl enable mongod
    
    # Install OpenVPN
    sudo tee /etc/yum.repos.d/pritunl.repo << EOF
    [pritunl]
    name=Pritunl Repository
    baseurl=https://repo.pritunl.com/stable/yum/almalinux/10/
    gpgcheck=1
    enabled=1
    gpgkey=https://raw.githubusercontent.com/pritunl/pgp/master/pritunl_repo_pub.asc
    EOF
    
    sudo dnf --allowerasing -y install pritunl-openvpn
    
    # [Optional] Install ndppd for IPv6 NDP proxying
    sudo dnf -y install pritunl-ndppd
    
    # Set current pritunl version X.XX.XXXX.XX
    export VERSION="X.XX.XXXX.XX"
    
    sudo dnf -y install gcc git-core wget rsync openssl-devel bzip2-devel libffi-devel sqlite-devel xz-devel zlib-devel selinux-policy selinux-policy-devel policycoreutils-python-utils python3 net-tools openssl iptables ipset ca-certificates psmisc
    
    wget https://www.python.org/ftp/python/3.12.15/Python-3.12.15.tgz
    echo "de1a241a519e0a3374fea98988d0b52c886743f9d953f23be8269cc7b59c5fab Python-3.12.15.tgz" | sha256sum -c - && tar xf Python-3.12.15.tgz
    rm Python-3.12.15.tgz
    
    cd "./Python-3.12.15"
    gcc_major=$(gcc -dumpversion | cut -d. -f1)
    base_cflags="-fstack-protector-strong -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -Werror=format-security -mtune=generic -grecord-gcc-switches"
    if [ "$gcc_major" -ge 7 ]; then
        gcc7_flags="-fno-semantic-interposition"
        cflags="$base_cflags $gcc7_flags"
        ldflags="-fno-semantic-interposition"
    else
        cflags="$base_cflags"
        ldflags=""
    fi
    if [ "$gcc_major" -ge 8 ]; then
        gcc8_flags="-fstack-clash-protection -fcf-protection"
        cflags="$cflags $gcc8_flags"
    fi
    if [ "$gcc_major" -ge 11 ]; then
        arch_flags="-march=x86-64-v2"
        cflags="$cflags $arch_flags"
    fi
    export CFLAGS_NODIST="$cflags"
    export LDFLAGS_NODIST="$ldflags"
    sudo rm -rf /usr/lib/pritunl
    sudo mkdir /usr/lib/pritunl
    ./configure --prefix=/usr/lib/pritunl/usr --libdir=/usr/lib/pritunl/usr/lib --enable-optimizations --enable-ipv6 --enable-loadable-sqlite-extensions --disable-shared --with-lto --with-computed-gotos=yes --with-platlibdir=lib
    sudo make ENSUREPIP=no install
    sudo /usr/lib/pritunl/usr/bin/python3 -m ensurepip
    cd ../
    sudo rm -rf ./Python-3.12.15
    
    sudo rm -rf /usr/local/go
    wget https://go.dev/dl/go1.27.2.linux-amd64.tar.gz
    echo "ecbadb99091a3f46e31f5f934b068b1864eafa7995211b39eaddf76996045fe5 go1.27.2.linux-amd64.tar.gz" | sha256sum -c - && sudo tar -C /usr/local -xf go1.27.2.linux-amd64.tar.gz
    rm -f go1.27.2.linux-amd64.tar.gz
    
    tee -a ~/.bashrc << 'EOF'
    export GOPATH=$HOME/go
    export GOROOT=/usr/local/go
    export PATH=/usr/local/go/bin:$PATH
    EOF
    source ~/.bashrc
    
    sudo systemctl stop pritunl || true
    
    sudo mkdir -p /var/lib/pritunl
    
    go install -v github.com/pritunl/pritunl-web@latest
    go install -v github.com/pritunl/pritunl-dns@latest
    sudo rm -f /usr/bin/pritunl-dns
    sudo rm -f /usr/bin/pritunl-web
    sudo cp -f ~/go/bin/pritunl-dns /usr/bin/pritunl-dns
    sudo cp -f ~/go/bin/pritunl-web /usr/bin/pritunl-web
    
    wget https://github.com/pritunl/pritunl/archive/refs/tags/$VERSION.tar.gz
    tar xf $VERSION.tar.gz
    rm $VERSION.tar.gz
    cd ./pritunl-$VERSION
    sudo /usr/lib/pritunl/usr/bin/pip3 install --require-hashes -r requirements-build.txt
    sudo /usr/lib/pritunl/usr/bin/pip3 install --require-hashes -r requirements.txt
    /usr/lib/pritunl/usr/bin/python3 setup.py build
    sudo /usr/lib/pritunl/usr/bin/python3 setup.py install
    sudo ln -sf /usr/lib/pritunl/usr/bin/pritunl /usr/bin/pritunl
    
    sudo groupadd -r pritunl-web || true
    sudo useradd -r -g pritunl-web -s /sbin/nologin -c 'Pritunl web server' pritunl-web || true
    
    # [Optional] SELinux profile
    cd selinux9
    ln -s /usr/share/selinux/devel/Makefile
    make
    sudo make load
    sudo cp pritunl.pp /usr/share/selinux/packages/pritunl.pp
    sudo cp pritunl_dns.pp /usr/share/selinux/packages/pritunl_dns.pp
    sudo cp pritunl_web.pp /usr/share/selinux/packages/pritunl_web.pp
    sudo semodule -i /usr/share/selinux/packages/pritunl.pp /usr/share/selinux/packages/pritunl_dns.pp /usr/share/selinux/packages/pritunl_web.pp
    sudo restorecon -v -R /tmp/pritunl* || true
    sudo restorecon -v -R /run/pritunl* || true
    sudo restorecon -v /etc/systemd/system/pritunl.service || true
    sudo restorecon -v /usr/lib/systemd/system/pritunl.service || true
    sudo restorecon -v /etc/systemd/system/pritunl-web.service || true
    sudo restorecon -v /usr/lib/systemd/system/pritunl-web.service || true
    sudo restorecon -v /usr/lib/pritunl/bin/pritunl || true
    sudo restorecon -v /usr/lib/pritunl/bin/python || true
    sudo restorecon -v /usr/lib/pritunl/bin/python3 || true
    sudo restorecon -v /usr/lib/pritunl/bin/python3.6 || true
    sudo restorecon -v /usr/lib/pritunl/bin/python3.9 || true
    sudo restorecon -v /usr/lib/pritunl/usr/bin/pritunl || true
    sudo restorecon -v /usr/lib/pritunl/usr/bin/python || true
    sudo restorecon -v /usr/lib/pritunl/usr/bin/python3 || true
    sudo restorecon -v /usr/lib/pritunl/usr/bin/python3.6 || true
    sudo restorecon -v /usr/lib/pritunl/usr/bin/python3.9 || true
    sudo restorecon -v /usr/bin/pritunl-web || true
    sudo restorecon -v /usr/bin/pritunl-dns || true
    sudo restorecon -v -R /var/lib/pritunl || true
    sudo restorecon -v /var/log/pritunl* || true
    
    cd ../../
    sudo rm -rf ./pritunl-$VERSION
    
    sudo systemctl daemon-reload
    sudo systemctl start pritunl
    sudo systemctl enable pritunl
    

    License

    Please refer to the LICENSE file for a copy of the license.