{"id":13460112,"url":"https://github.com/pritunl/pritunl","last_synced_at":"2026-02-05T01:09:50.483Z","repository":{"id":10587135,"uuid":"12798028","full_name":"pritunl/pritunl","owner":"pritunl","description":"Enterprise VPN server","archived":false,"fork":false,"pushed_at":"2024-04-08T16:05:49.000Z","size":39912,"stargazers_count":4279,"open_issues_count":12,"forks_count":588,"subscribers_count":136,"default_branch":"master","last_synced_at":"2024-04-14T20:23:05.118Z","etag":null,"topics":["pritunl","vpn","vpn-server"],"latest_commit_sha":null,"homepage":"https://forum.pritunl.com","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pritunl.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2013-09-13T00:30:53.000Z","updated_at":"2024-04-18T23:39:43.087Z","dependencies_parsed_at":"2023-02-12T21:31:46.231Z","dependency_job_id":"30497cbe-5acf-4f53-9b54-3310e19da751","html_url":"https://github.com/pritunl/pritunl","commit_stats":{"total_commits":13912,"total_committers":34,"mean_commits":409.1764705882353,"dds":0.003953421506613042,"last_synced_commit":"22cc12adddf09a8ee00e4bd2c5e155cc04b562e9"},"previous_names":[],"tags_count":533,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pritunl%2Fpritunl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pritunl%2Fpritunl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pritunl%2Fpritunl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pritunl%2Fpritunl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pritunl","download_url":"https://codeload.github.com/pritunl/pritunl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222004160,"owners_count":16914873,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["pritunl","vpn","vpn-server"],"created_at":"2024-07-31T10:00:35.740Z","updated_at":"2026-02-05T01:09:50.459Z","avatar_url":"https://github.com/pritunl.png","language":"Python","funding_links":[],"categories":["语言资源库","Python","Uncategorized","Python (1887)","\u003ca id=\"d62a971d37c69db9f3b9187318c3921a\"\u003e\u003c/a\u003e工具","others","Application Recommendation","vpn","WireGuard \u0026 VPN Tools"],"sub_categories":["python","Uncategorized","\u003ca id=\"8ea8f890cf767c3801b5e7951fca3570\"\u003e\u003c/a\u003e公网访问局域网","📡 Web Tools"],"readme":"# pritunl: enterprise vpn server\n\n[![github](https://img.shields.io/badge/github-pritunl-11bdc2.svg?style=flat)](https://github.com/pritunl)\n[![twitter](https://img.shields.io/badge/twitter-pritunl-55acee.svg?style=flat)](https://twitter.com/pritunl)\n[![medium](https://img.shields.io/badge/medium-pritunl-b32b2b.svg?style=flat)](https://pritunl.medium.com)\n[![forum](https://img.shields.io/badge/discussion-forum-ffffff.svg?style=flat)](https://forum.pritunl.com)\n\n[Pritunl](https://github.com/pritunl/pritunl) is a distributed enterprise\nvpn server built using the OpenVPN protocol. Documentation and more\ninformation can be found at the home page [pritunl.com](https://pritunl.com)\n\n[![pritunl](www/img/logo_code.png)](https://pritunl.com)\n\n## Install From Source\n\n```bash\n# Install MongoDB if running single host configuration\nsudo tee /etc/yum.repos.d/mongodb-org.repo \u003c\u003c EOF\n[mongodb-org]\nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/8.2/x86_64/\ngpgcheck=1\nenabled=1\ngpgkey=https://pgp.mongodb.com/server-8.0.asc\nEOF\n\nsudo dnf -y install mongodb-org\nsudo systemctl start mongod\nsudo systemctl enable mongod\n\n# Install OpenVPN\nsudo tee /etc/yum.repos.d/pritunl.repo \u003c\u003c EOF\n[pritunl]\nname=Pritunl Repository\nbaseurl=https://repo.pritunl.com/stable/yum/oraclelinux/9/\ngpgcheck=1\nenabled=1\ngpgkey=https://raw.githubusercontent.com/pritunl/pgp/master/pritunl_repo_pub.asc\nEOF\n\nsudo dnf --allowerasing -y install pritunl-openvpn\n\n# [Optional] Install ndppd for IPv6 NDP proxying\nsudo dnf -y install pritunl-ndppd\n\n# Set current pritunl version X.XX.XXXX.XX\nexport VERSION=\"X.XX.XXXX.XX\"\n\nsudo 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\n\nwget https://www.python.org/ftp/python/3.9.23/Python-3.9.23.tar.xz\necho \"61a42919e13d539f7673cf11d1c404380e28e540510860b9d242196e165709c9 Python-3.9.23.tar.xz\" | sha256sum -c - \u0026\u0026 tar xf Python-3.9.23.tar.xz\nrm Python-3.9.23.tar.xz\n\ncd \"./Python-3.9.23\"\ngcc_major=$(gcc -dumpversion | cut -d. -f1)\nbase_cflags=\"-fstack-protector-strong -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -Werror=format-security -mtune=generic -grecord-gcc-switches\"\nif [ \"$gcc_major\" -ge 7 ]; then\n    gcc7_flags=\"-fno-semantic-interposition\"\n    cflags=\"$base_cflags $gcc7_flags\"\n    ldflags=\"-fno-semantic-interposition\"\nelse\n    cflags=\"$base_cflags\"\n    ldflags=\"\"\nfi\nif [ \"$gcc_major\" -ge 8 ]; then\n    gcc8_flags=\"-fstack-clash-protection -fcf-protection\"\n    cflags=\"$cflags $gcc8_flags\"\nfi\nif [ \"$gcc_major\" -ge 11 ]; then\n    arch_flags=\"-march=x86-64-v2\"\n    cflags=\"$cflags $arch_flags\"\nfi\nexport CFLAGS_NODIST=\"$cflags\"\nexport LDFLAGS_NODIST=\"$ldflags\"\nsudo rm -rf /usr/lib/pritunl\nsudo mkdir /usr/lib/pritunl\n./configure --prefix=/usr --libdir=/usr/lib --enable-optimizations --enable-ipv6 --enable-loadable-sqlite-extensions --disable-shared --with-lto --with-computed-gotos=yes --with-platlibdir=lib\nsudo make DESTDIR=\"/usr/lib/pritunl\" install\ncd ../\nsudo rm -rf ./Python-3.9.23\nsudo /usr/lib/pritunl/usr/bin/python3 -m ensurepip\nsudo /usr/lib/pritunl/usr/bin/python3 -m pip install pip==23.3.2\n\nsudo rm -rf /usr/local/go\nwget https://go.dev/dl/go1.25.5.linux-amd64.tar.gz\necho \"9e9b755d63b36acf30c12a9a3fc379243714c1c6d3dd72861da637f336ebb35b go1.25.5.linux-amd64.tar.gz\" | sha256sum -c - \u0026\u0026 sudo tar -C /usr/local -xf go1.25.5.linux-amd64.tar.gz\nrm -f go1.25.5.linux-amd64.tar.gz\n\ntee -a ~/.bashrc \u003c\u003c 'EOF'\nexport GOPATH=$HOME/go\nexport GOROOT=/usr/local/go\nexport PATH=/usr/local/go/bin:$PATH\nEOF\nsource ~/.bashrc\n\nsudo systemctl stop pritunl || true\n\nsudo mkdir -p /var/lib/pritunl\n\ngo install -v github.com/pritunl/pritunl-web@latest\ngo install -v github.com/pritunl/pritunl-dns@latest\nsudo rm -f /usr/bin/pritunl-dns\nsudo rm -f /usr/bin/pritunl-web\nsudo cp -f ~/go/bin/pritunl-dns /usr/bin/pritunl-dns\nsudo cp -f ~/go/bin/pritunl-web /usr/bin/pritunl-web\n\nwget https://github.com/pritunl/pritunl/archive/refs/tags/$VERSION.tar.gz\ntar xf $VERSION.tar.gz\nrm $VERSION.tar.gz\ncd ./pritunl-$VERSION\nsudo /usr/lib/pritunl/usr/bin/pip3 install --require-hashes -r requirements.txt\n/usr/lib/pritunl/usr/bin/python3 setup.py build\nsudo /usr/lib/pritunl/usr/bin/python3 setup.py install\nsudo ln -sf /usr/lib/pritunl/usr/bin/pritunl /usr/bin/pritunl\n\nsudo groupadd -r pritunl-web || true\nsudo useradd -r -g pritunl-web -s /sbin/nologin -c 'Pritunl web server' pritunl-web || true\n\n# [Optional] SELinux profile\ncd selinux9\nln -s /usr/share/selinux/devel/Makefile\nmake\nsudo make load\nsudo cp pritunl.pp /usr/share/selinux/packages/pritunl.pp\nsudo cp pritunl_dns.pp /usr/share/selinux/packages/pritunl_dns.pp\nsudo cp pritunl_web.pp /usr/share/selinux/packages/pritunl_web.pp\nsudo semodule -i /usr/share/selinux/packages/pritunl.pp /usr/share/selinux/packages/pritunl_dns.pp /usr/share/selinux/packages/pritunl_web.pp\nsudo restorecon -v -R /tmp/pritunl* || true\nsudo restorecon -v -R /run/pritunl* || true\nsudo restorecon -v /etc/systemd/system/pritunl.service || true\nsudo restorecon -v /usr/lib/systemd/system/pritunl.service || true\nsudo restorecon -v /etc/systemd/system/pritunl-web.service || true\nsudo restorecon -v /usr/lib/systemd/system/pritunl-web.service || true\nsudo restorecon -v /usr/lib/pritunl/bin/pritunl || true\nsudo restorecon -v /usr/lib/pritunl/bin/python || true\nsudo restorecon -v /usr/lib/pritunl/bin/python3 || true\nsudo restorecon -v /usr/lib/pritunl/bin/python3.6 || true\nsudo restorecon -v /usr/lib/pritunl/bin/python3.9 || true\nsudo restorecon -v /usr/lib/pritunl/usr/bin/pritunl || true\nsudo restorecon -v /usr/lib/pritunl/usr/bin/python || true\nsudo restorecon -v /usr/lib/pritunl/usr/bin/python3 || true\nsudo restorecon -v /usr/lib/pritunl/usr/bin/python3.6 || true\nsudo restorecon -v /usr/lib/pritunl/usr/bin/python3.9 || true\nsudo restorecon -v /usr/bin/pritunl-web || true\nsudo restorecon -v /usr/bin/pritunl-dns || true\nsudo restorecon -v -R /var/lib/pritunl || true\nsudo restorecon -v /var/log/pritunl* || true\n\ncd ../../\nsudo rm -rf ./pritunl-$VERSION\n\nsudo systemctl daemon-reload\nsudo systemctl start pritunl\nsudo systemctl enable pritunl\n```\n\n## License\n\nPlease refer to the [`LICENSE`](LICENSE) file for a copy of the license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpritunl%2Fpritunl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpritunl%2Fpritunl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpritunl%2Fpritunl/lists"}