From 0c2a5429d08510863add28b6c790c77cc35cc6d7 Mon Sep 17 00:00:00 2001 From: Owen Date: Wed, 10 Dec 2025 18:27:25 -0500 Subject: [PATCH] Add image, update small items --- docs.json | 570 +++++++++--------- images/private_access_controls.png | Bin 0 -> 28068 bytes manage/clients/add-client.mdx | 2 +- manage/clients/install-client.mdx | 16 +- .../{access.mdx => authentication.mdx} | 8 +- manage/sites/install-site.mdx | 3 - 6 files changed, 294 insertions(+), 305 deletions(-) create mode 100644 images/private_access_controls.png rename manage/resources/private/{access.mdx => authentication.mdx} (86%) diff --git a/docs.json b/docs.json index a18f322..6324b71 100644 --- a/docs.json +++ b/docs.json @@ -1,288 +1,288 @@ { - "$schema": "https://mintlify.com/docs.json", - "theme": "aspen", - "name": "Pangolin Docs", - "description": "Pangolin is the easiest to use identity-based remote access platform based on WireGuard.", - "colors": { - "primary": "#F36117", - "light": "#F36117", - "dark": "#F36117" - }, - "favicon": "/favicon.svg", - "navigation": { - "tabs": [ - { - "tab": "Docs", - "groups": [ - { - "group": "About", - "pages": [ - "about/how-pangolin-works", - "about/pangolin-vs-reverse-proxy-vs-vpn" - ] - }, - { - "group": "Manage Pangolin", - "pages": [ - { - "group": "Sites", - "icon": "plug", - "pages": [ - "manage/sites/understanding-sites", - "manage/sites/install-site", - "manage/sites/install-kubernetes", - "manage/sites/configure-site", - "manage/sites/update-site", - "manage/sites/credentials" - ] - }, - { - "group": "Resources", - "icon": "link", - "pages": [ - "manage/resources/understanding-resources", - { - "group": "Public Resources", - "pages": [ - "manage/resources/public/authentication", - "manage/resources/public/targets", - "manage/healthchecks-failover", - "manage/resources/public/raw-resources" - ] - }, - { - "group": "Private Resources", - "pages": [ - "manage/resources/private/destinations", - "manage/resources/private/access", - "manage/resources/private/alias" - ] - } - ] - }, - { - "group": "Clients", - "icon": "desktop", - "pages": [ - "manage/clients/add-client", - "manage/clients/install-client", - "manage/clients/configure-client", - "manage/clients/update-client", - "manage/clients/credentials" - ] - }, - "manage/domains", - { - "group": "Access Control", - "icon": "user-group", - "pages": [ - "manage/access-control/create-user", - "manage/access-control/rules", - "manage/access-control/forwarded-headers", - "manage/access-control/login-page", - "manage/geoblocking", - "manage/access-control/mfa", - "manage/access-control/password-rotation", - "manage/access-control/session-length", - "manage/access-control/change-password", - "manage/access-control/security-keys" - ] - }, - { - "group": "Identity Providers", - "icon": "id-card", - "pages": [ - "manage/identity-providers/add-an-idp", - "manage/identity-providers/auto-provisioning", - "manage/identity-providers/openid-connect", - "manage/identity-providers/google", - "manage/identity-providers/azure", - "manage/identity-providers/pocket-id", - "manage/identity-providers/zitadel" - ] - }, - { - "group": "Logs & Analytics", - "icon": "chart-bar", - "pages": [ - "manage/analytics/request", - "manage/analytics/access", - "manage/analytics/action" - ] - }, - "manage/blueprints", - { - "group": "Remote Nodes", - "icon": "circle-nodes", - "pages": [ - "manage/remote-node/ha", - "manage/remote-node/nodes", - "manage/remote-node/quick-install-remote", - "manage/remote-node/convert-remote", - "manage/remote-node/config-file" - ] - }, - "manage/integration-api", - "manage/branding" - ] - }, - { - "group": "Self-host Pangolin", - "pages": [ - "self-host/quick-install", - "self-host/choosing-a-vps", - { - "group": "Manual Installation", - "pages": [ - "self-host/manual/docker-compose", - "self-host/manual/unraid" - ] - }, - "self-host/dns-and-networking", - { - "group": "Advanced Configuration", - "pages": [ - "self-host/advanced/config-file", - "self-host/advanced/wild-card-domains", - "self-host/advanced/cloudflare-proxy", - "self-host/advanced/without-tunneling", - "self-host/advanced/container-cli-tool", - "self-host/advanced/database-options", - "self-host/advanced/integration-api", - "self-host/advanced/enable-geoblocking", - "self-host/advanced/metrics", - "self-host/telemetry" - ] - }, - "self-host/how-to-update", - { - "group": "Community Guides", - "pages": [ - "self-host/community-guides/overview", - "self-host/community-guides/crowdsec", - "self-host/community-guides/metrics", - "self-host/community-guides/homeassistant", - "self-host/community-guides/middlewaremanager", - "self-host/community-guides/traefiklogsdashboard", - "self-host/community-guides/geolite2automation" - ] - }, - "self-host/supporter-program", - "self-host/enterprise-edition" - ] - }, - { - "group": "Development", - "pages": [ - "development/system-architecture", - "development/contributing", - "development/feature-requests-and-bug-reports" - ] - }, - { - "group": "Additional Resources", - "pages": [ - "additional-resources/changelog", - "additional-resources/trust-center" - ] - } - ] - }, - { - "tab": "Blog", - "href": "https://pangolin.net/blog" - }, - { - "tab": "Website", - "href": "https://pangolin.net/" - } - ], - "global": { - "anchors": [ - { - "anchor": "GitHub", - "href": "https://github.com/fosrl/pangolin", - "icon": "github" - }, - { - "anchor": "Slack", - "href": "https://pangolin.net/slack", - "icon": "slack" - }, - { - "anchor": "Discord", - "href": "https://pangolin.net/discord", - "icon": "discord" - } - ] - } - }, - "interaction": { - "drilldown": true - }, - "logo": { - "light": "/logo/light.png", - "dark": "/logo/dark.png", - "href": "https://docs.pangolin.net" - }, - "navbar": { - "links": [ - { - "label": "Log In", - "href": "https://app.pangolin.net/auth/login" - }, - { - "label": "Contact Us", - "icon": "envelope", - "href": "mailto:contact@pangolin.net" - } - ], - "primary": { - "type": "button", - "label": "Pangolin Dashboard", - "href": "https://app.pangolin.net/auth/signup" - } - }, - "footer": { - "socials": { - "github": "https://github.com/fosrl/pangolin", - "linkedin": "https://linkedin.com/company/digpangolin" - } - }, - "integrations": { - "posthog": { - "apiKey": "phc_RIHQ7o2Y2hf8qms2nP62vpoJHEvsrw6TieflQGQO7yI", - "apiHost": "https://pangolin.net/relay-O7yI" - } - }, - "contextual": { - "options": [ - "copy", - "view", - "chatgpt", - "claude", - "perplexity", - { - "title": "Request a feature", - "description": "Open a GitHub discussion to request a new feature", - "icon": "plus", - "href": "https://github.com/fosrl/pangolin/discussions" - } - ] - }, - "redirects": [ - { - "source": "/telemetry", - "destination": "/self-host/telemetry" + "$schema": "https://mintlify.com/docs.json", + "theme": "aspen", + "name": "Pangolin Docs", + "description": "Pangolin is the easiest to use identity-based remote access platform based on WireGuard.", + "colors": { + "primary": "#F36117", + "light": "#F36117", + "dark": "#F36117" }, - { - "source": "/community/:slug*", - "destination": "/self-host/:slug*" + "favicon": "/favicon.svg", + "navigation": { + "tabs": [ + { + "tab": "Docs", + "groups": [ + { + "group": "About", + "pages": [ + "about/how-pangolin-works", + "about/pangolin-vs-reverse-proxy-vs-vpn" + ] + }, + { + "group": "Manage Pangolin", + "pages": [ + { + "group": "Sites", + "icon": "plug", + "pages": [ + "manage/sites/understanding-sites", + "manage/sites/install-site", + "manage/sites/install-kubernetes", + "manage/sites/configure-site", + "manage/sites/update-site", + "manage/sites/credentials" + ] + }, + { + "group": "Resources", + "icon": "link", + "pages": [ + "manage/resources/understanding-resources", + { + "group": "Public Resources", + "pages": [ + "manage/resources/public/authentication", + "manage/resources/public/targets", + "manage/healthchecks-failover", + "manage/resources/public/raw-resources" + ] + }, + { + "group": "Private Resources", + "pages": [ + "manage/resources/private/authentication", + "manage/resources/private/destinations", + "manage/resources/private/alias" + ] + } + ] + }, + { + "group": "Clients", + "icon": "desktop", + "pages": [ + "manage/clients/add-client", + "manage/clients/install-client", + "manage/clients/configure-client", + "manage/clients/update-client", + "manage/clients/credentials" + ] + }, + "manage/domains", + { + "group": "Access Control", + "icon": "user-group", + "pages": [ + "manage/access-control/create-user", + "manage/access-control/rules", + "manage/access-control/forwarded-headers", + "manage/access-control/login-page", + "manage/geoblocking", + "manage/access-control/mfa", + "manage/access-control/password-rotation", + "manage/access-control/session-length", + "manage/access-control/change-password", + "manage/access-control/security-keys" + ] + }, + { + "group": "Identity Providers", + "icon": "id-card", + "pages": [ + "manage/identity-providers/add-an-idp", + "manage/identity-providers/auto-provisioning", + "manage/identity-providers/openid-connect", + "manage/identity-providers/google", + "manage/identity-providers/azure", + "manage/identity-providers/pocket-id", + "manage/identity-providers/zitadel" + ] + }, + { + "group": "Logs & Analytics", + "icon": "chart-bar", + "pages": [ + "manage/analytics/request", + "manage/analytics/access", + "manage/analytics/action" + ] + }, + "manage/blueprints", + { + "group": "Remote Nodes", + "icon": "circle-nodes", + "pages": [ + "manage/remote-node/ha", + "manage/remote-node/nodes", + "manage/remote-node/quick-install-remote", + "manage/remote-node/convert-remote", + "manage/remote-node/config-file" + ] + }, + "manage/integration-api", + "manage/branding" + ] + }, + { + "group": "Self-host Pangolin", + "pages": [ + "self-host/quick-install", + "self-host/choosing-a-vps", + { + "group": "Manual Installation", + "pages": [ + "self-host/manual/docker-compose", + "self-host/manual/unraid" + ] + }, + "self-host/dns-and-networking", + { + "group": "Advanced Configuration", + "pages": [ + "self-host/advanced/config-file", + "self-host/advanced/wild-card-domains", + "self-host/advanced/cloudflare-proxy", + "self-host/advanced/without-tunneling", + "self-host/advanced/container-cli-tool", + "self-host/advanced/database-options", + "self-host/advanced/integration-api", + "self-host/advanced/enable-geoblocking", + "self-host/advanced/metrics", + "self-host/telemetry" + ] + }, + "self-host/how-to-update", + { + "group": "Community Guides", + "pages": [ + "self-host/community-guides/overview", + "self-host/community-guides/crowdsec", + "self-host/community-guides/metrics", + "self-host/community-guides/homeassistant", + "self-host/community-guides/middlewaremanager", + "self-host/community-guides/traefiklogsdashboard", + "self-host/community-guides/geolite2automation" + ] + }, + "self-host/supporter-program", + "self-host/enterprise-edition" + ] + }, + { + "group": "Development", + "pages": [ + "development/system-architecture", + "development/contributing", + "development/feature-requests-and-bug-reports" + ] + }, + { + "group": "Additional Resources", + "pages": [ + "additional-resources/changelog", + "additional-resources/trust-center" + ] + } + ] + }, + { + "tab": "Blog", + "href": "https://pangolin.net/blog" + }, + { + "tab": "Website", + "href": "https://pangolin.net/" + } + ], + "global": { + "anchors": [ + { + "anchor": "GitHub", + "href": "https://github.com/fosrl/pangolin", + "icon": "github" + }, + { + "anchor": "Slack", + "href": "https://pangolin.net/slack", + "icon": "slack" + }, + { + "anchor": "Discord", + "href": "https://pangolin.net/discord", + "icon": "discord" + } + ] + } + }, + "interaction": { + "drilldown": true + }, + "logo": { + "light": "/logo/light.png", + "dark": "/logo/dark.png", + "href": "https://docs.pangolin.net" + }, + "navbar": { + "links": [ + { + "label": "Log In", + "href": "https://app.pangolin.net/auth/login" + }, + { + "label": "Contact Us", + "icon": "envelope", + "href": "mailto:contact@pangolin.net" + } + ], + "primary": { + "type": "button", + "label": "Pangolin Dashboard", + "href": "https://app.pangolin.net/auth/signup" + } + }, + "footer": { + "socials": { + "github": "https://github.com/fosrl/pangolin", + "linkedin": "https://linkedin.com/company/digpangolin" + } + }, + "integrations": { + "posthog": { + "apiKey": "phc_RIHQ7o2Y2hf8qms2nP62vpoJHEvsrw6TieflQGQO7yI", + "apiHost": "https://pangolin.net/relay-O7yI" + } + }, + "contextual": { + "options": [ + "copy", + "view", + "chatgpt", + "claude", + "perplexity", + { + "title": "Request a feature", + "description": "Open a GitHub discussion to request a new feature", + "icon": "plus", + "href": "https://github.com/fosrl/pangolin/discussions" + } + ] + }, + "redirects": [ + { + "source": "/telemetry", + "destination": "/self-host/telemetry" + }, + { + "source": "/community/:slug*", + "destination": "/self-host/:slug*" + } + ], + "seo": { + "metatags": { + "canonical": "https://docs.pangolin.net" + } } - ], - "seo": { - "metatags": { - "canonical": "https://docs.pangolin.net" - } - } -} +} \ No newline at end of file diff --git a/images/private_access_controls.png b/images/private_access_controls.png new file mode 100644 index 0000000000000000000000000000000000000000..853c143aeb776ea6c45d6d1cf2e7d29653b016d2 GIT binary patch literal 28068 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 literal 0 HcmV?d00001 diff --git a/manage/clients/add-client.mdx b/manage/clients/add-client.mdx index 91aa40e..3ff8ac4 100644 --- a/manage/clients/add-client.mdx +++ b/manage/clients/add-client.mdx @@ -63,7 +63,7 @@ Clients can relay traffic through a Pangolin server - through Gerbil specificall While functional, it does not always connect reliably and can fall back to relaying. We plan to work to improve the reliability over time by implementing more methods for those behind CGNAT or hard nats. -Take a look at Tailscale's recommendations [these docs](https://tailscale.com/kb/1361/firewall) for some firewall changes you might be able to make to improve hole punch reliability and performance. +Take a look at [these docs](https://tailscale.com/kb/1361/firewall) for some firewall changes you might be able to make to improve hole punch reliability and performance. This should help to: - Increase performance (speed/bandwidth) diff --git a/manage/clients/install-client.mdx b/manage/clients/install-client.mdx index 3171d08..117ff23 100644 --- a/manage/clients/install-client.mdx +++ b/manage/clients/install-client.mdx @@ -153,18 +153,6 @@ olm \ --endpoint https://example.com ``` -### Permanent Installation - -Install to your PATH (may need to run as root): - -```bash -mv ./olm /usr/local/bin -``` - - -The quick installer will do this step for you. - - ### Systemd Service Create a basic systemd service: @@ -285,11 +273,11 @@ Get-EventLog -LogName Application -Source "OlmWireguardService" -Newest 10 Olm creates a native tun interface. This usually requires sudo / admin permissions. Some notes: - **Windows**: Olm will run as a service. You can use the commands described [Configure Client](/manage/clients/configure-client) to manage it. You can use this to run it in the background if needed! -- **LXC containers**: Need to be configured to allow tun access. See below. +- **LXC containers**: Need to be configured to allow tun access. On Proxmox see below. - **Linux**: May require root privileges or specific capabilities to create tun interfaces. - **macOS**: May require additional permissions for network interface creation. -#### LXC Container Configuration +#### LXC Proxmox 1. Create your LXC container. 2. Go to the Resources tab of the container. diff --git a/manage/resources/private/access.mdx b/manage/resources/private/authentication.mdx similarity index 86% rename from manage/resources/private/access.mdx rename to manage/resources/private/authentication.mdx index ea8115e..93eb399 100644 --- a/manage/resources/private/access.mdx +++ b/manage/resources/private/authentication.mdx @@ -1,5 +1,5 @@ --- -title: "Access" +title: "Authentication" description: "Only allow access to Resources to specific users, roles, and machines" --- @@ -11,4 +11,8 @@ Access can be granted in several ways: * **Users:** Assign access to Resources to specific users. Only those users will gain access to the Resource when they connect. * **Machines:** Assign access to Resources to specific machines. Only those machines will gain access to the Resource when they connect. Note that machines can not be put into roles. -When removing access to a resource, the client will automatically tear down the WireGuard tunnel to that Resource if there are no other Resources accessible on that site. \ No newline at end of file +When removing access to a resource, the client will automatically tear down the WireGuard tunnel to that Resource if there are no other Resources accessible on that site. + + + + \ No newline at end of file diff --git a/manage/sites/install-site.mdx b/manage/sites/install-site.mdx index 0123bbe..e3f9d3a 100644 --- a/manage/sites/install-site.mdx +++ b/manage/sites/install-site.mdx @@ -39,9 +39,6 @@ newt \ --secret h51mmlknrvrwv8s4r1i210azhumt6isgbpyavxodibx1k2d6 \ --endpoint https://app.pangolin.net ``` - -The quick installer will do this step for you. - ### Systemd Service