From a59af90173b8396c9a555d238e551ea34b5733d3 Mon Sep 17 00:00:00 2001 From: Owen Date: Thu, 21 Aug 2025 16:31:33 -0700 Subject: [PATCH] Add docs for managed --- about/how-pangolin-works.mdx | 4 +- docs.json | 7 +- images/ha.svg | 94 +++++++++++ index.mdx | 2 +- manage/high-availability.mdx | 44 ------ manage/managed.mdx | 36 +++++ manage/points-of-presence.mdx | 17 +- self-host/advanced/config-file.mdx | 111 +++++++++++++ self-host/convert-managed.mdx | 124 +++++++++++++++ self-host/dns-and-networking.mdx | 2 +- self-host/manual/docker-compose.mdx | 11 ++ self-host/manual/managed.mdx | 234 ++++++++++++++++++++++++++++ self-host/quick-install-managed.mdx | 102 ++++++++++++ self-host/quick-install.mdx | 2 +- 14 files changed, 728 insertions(+), 62 deletions(-) create mode 100644 images/ha.svg delete mode 100644 manage/high-availability.mdx create mode 100644 manage/managed.mdx create mode 100644 self-host/convert-managed.mdx create mode 100644 self-host/manual/managed.mdx create mode 100644 self-host/quick-install-managed.mdx diff --git a/about/how-pangolin-works.mdx b/about/how-pangolin-works.mdx index 6355e21..1786b37 100644 --- a/about/how-pangolin-works.mdx +++ b/about/how-pangolin-works.mdx @@ -40,8 +40,8 @@ Points of presence provide a mesh of high availability - if one location goes do Large network of points of presence with automatic failover and routing to your backend services. - - Host your own multiple points of presence with cloud coordination and automatic failover. Data always transits yours servers. + + Host your own multiple points of presence with cloud coordination and automatic failover. Data always transits your servers. diff --git a/docs.json b/docs.json index da9681e..5ad882a 100644 --- a/docs.json +++ b/docs.json @@ -26,7 +26,7 @@ "group": "Manage Pangolin", "pages": [ "manage/points-of-presence", - "manage/high-availability", + "manage/managed", { "group": "Sites", "pages": [ @@ -74,15 +74,18 @@ "group": "Self-host Pangolin", "pages": [ "self-host/quick-install", + "self-host/quick-install-managed", { "group": "Manual Installation", "pages": [ "self-host/manual/docker-compose", - "self-host/manual/unraid" + "self-host/manual/unraid", + "self-host/manual/managed" ] }, "self-host/choosing-a-vps", "self-host/dns-and-networking", + "self-host/convert-managed", "self-host/how-to-update", "self-host/supporter-program", "self-host/system-architecture", diff --git a/images/ha.svg b/images/ha.svg new file mode 100644 index 0000000..f2301c1 --- /dev/null +++ b/images/ha.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.mdx b/index.mdx index 815621a..d4f3f6c 100644 --- a/index.mdx +++ b/index.mdx @@ -8,7 +8,7 @@ Pangolin is an open-source and identity-aware tunneled reverse proxy server. Pan Pangolin Dashboard -Pangolin establishes secure connections from edge networks to cloud exit nodes, bypassing the need for public inbound ports and complex firewall configurations. Pangolin is incredibly useful for exposing local services, IoT devices, or internal applications to the internet without direct exposure, enhancing security by reducing attack surface and simplifying network management. Additionally, Pangolin acts as an identity-aware proxy by authenticating every request against admin-defined access controls and rules. +Pangolin establishes secure connections from edge networks to cloud PoPs, bypassing the need for public inbound ports and complex firewall configurations. Pangolin is incredibly useful for exposing local services, IoT devices, or internal applications to the internet without direct exposure, enhancing security by reducing attack surface and simplifying network management. Additionally, Pangolin acts as an identity-aware proxy by authenticating every request against admin-defined access controls and rules. diff --git a/manage/high-availability.mdx b/manage/high-availability.mdx deleted file mode 100644 index 9ef80c0..0000000 --- a/manage/high-availability.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "High Availability" -description: "Learn about Pangolin's high availability options and how to ensure your applications remain accessible" ---- - -Pangolin provides multiple deployment options to ensure your applications remain highly available and accessible to users worldwide. - - - - Network of points of presence with automatic failover and routing to your backend services. - - - - Host your own multiple points of presence with cloud coordination and automatic failover. Data always transits your servers. - - - -## How It Works - -For detailed information about how points of presence work and their advantages, see our [Points of Presence](/manage/points-of-presence) documentation. - -## Hybrid Deployment - -The hybrid model allows you to host your own points of presence while leveraging Pangolin Cloud's coordination and failover capabilities: - -### How It Works - -- **You Host the Exit Node**: Manage the infrastructure for your points of presence, which connect your Newt tunnels. -- **We Handle the Rest**: Pangolin Cloud manages the control plane, DNS, certificate management, database, and backups. -- **Failover Made Simple**: Host multiple exit nodes with automatic failover between them. Optionally, if your nodes are unavailable, traffic automatically fails over to our cloud nodes. - -### Benefits - -- **Data Control**: Traffic flows through your servers, giving you control over data transit costs, privacy, and works with your security policies. -- **High Availability**: Eliminates the complexity of managing high availability while still owning your own infrastrcture. - - -Hybrid deployment is ideal for organizations that need high availability while maintaining control over their infrastructure and data transit. - - -## Contact Us - -For hybrid deployments, points of presence, and high availability contact us: -- **Email**: [numbat@fossorial.io](mailto:numbat@fossorial.io) diff --git a/manage/managed.mdx b/manage/managed.mdx new file mode 100644 index 0000000..d4493f0 --- /dev/null +++ b/manage/managed.mdx @@ -0,0 +1,36 @@ +--- +title: "Self host a Managed PoP" +description: "Learn about Pangolin's managed deployment mode" +--- + +In this deployment modality you can host your own points of presence with cloud coordination and automatic failover. Data always transits your servers and the cloud handles orchestration between all of your PoPs. + +Its essentially just the normal self hosted pangolin setup, but with added benefits of cloud integration and coordinated failover. + + + You can deploy a managed Pangolin PoP in seconds [using the installer](../self-host/quick-install-managed). + + +### How It Works + +- **You Host the PoP**: Manage the infrastructure for your points of presence, which connect your Newt tunnels. +- **We Handle the Rest**: Pangolin Cloud manages the control plane, DNS, certificate management, database, and backups. +- **Failover Made Simple**: Host multiple PoPs with automatic failover between them. Optionally, if your PoPs are unavailable, traffic automatically fails over to our cloud PoPs. + + + + + + + For detailed information about how points of presence work and their advantages, see our [Points of Presence](/manage/points-of-presence) documentation. + + +### Benefits + +- **Data Control**: Traffic flows through your servers, giving you control over data transit costs, privacy, and works with your security policies. +- **High Availability**: Eliminates the complexity of managing high availability while still owning your own infrastructure. +- **Less Management Overhead**: While we update the cloud with new features you don't need to touch your PoPs unless you want to. + + +Managed deployment is ideal for organizations that need high availability while maintaining control over their infrastructure and data transit. + \ No newline at end of file diff --git a/manage/points-of-presence.mdx b/manage/points-of-presence.mdx index 8d67fce..24469f5 100644 --- a/manage/points-of-presence.mdx +++ b/manage/points-of-presence.mdx @@ -1,5 +1,5 @@ --- -title: "Points of Presence" +title: "HA & Points of Presence" description: "Learn about Pangolin's network of points of presence and how they provide highly available, low-latency access to your applications" --- @@ -86,8 +86,8 @@ Think of points of presence as the "front doors" to your applications - users co Network of points of presence with automatic failover and routing to your backend services. - - Host your own multiple points of presence with cloud coordination and automatic failover. Data always transits yours servers. + + Host your own multiple points of presence with cloud coordination and automatic failover. Data always transits your servers. @@ -96,14 +96,9 @@ Think of points of presence as the "front doors" to your applications - users co -Self-hosted Pangolin provides only a single point of presence and is not highly available. Consider Pangolin Cloud or hybrid deployment for production environments requiring high availability. +Self-hosted Pangolin provides only a single point of presence and is not highly available. Consider Pangolin Cloud or managed deployment for production environments requiring high availability. -Hybrid deployment is ideal for organizations that need high availability while maintaining control over their infrastructure and data transit. - - -## Contact Us - -For hybrid deployments, points of presence, and high availability contact us: -- **Email**: [numbat@fossorial.io](mailto:numbat@fossorial.io) +Managed deployment is ideal for organizations that need high availability while maintaining control over their infrastructure and data transit. + \ No newline at end of file diff --git a/self-host/advanced/config-file.mdx b/self-host/advanced/config-file.mdx index 3094006..d1f4f88 100644 --- a/self-host/advanced/config-file.mdx +++ b/self-host/advanced/config-file.mdx @@ -32,6 +32,17 @@ flags: disable_user_create_org: true ``` +In managed mode: + +```yaml title="config.yml" +gerbil: + start_port: 51820 + base_endpoint: "154.123.45.67" # REPLACE WITH YOUR IP OR DOMAIN + +managed: + id: "he4g78wevj25msf" + secret: "n7sd18twfko0q0vrb7wyclqzbvvnx1fqt7ezv8xewhdb9s7d" +``` Generate a strong secret for `server.secret`. Use at least 32 characters with a mix of letters, numbers, and special characters. @@ -336,6 +347,58 @@ This section contains the complete reference for all configuration options in `c These middlewares must be defined in your Traefik dynamic configuration. + + + Path where SSL certificates are stored. This is used only with managed Pangolin deployments. + + **Example**: `/var/certificates` + + **Default**: `/var/certificates` + + + + Interval in milliseconds for monitoring configuration changes. + + **Example**: `5000` + + **Default**: `5000` + + + + Path to the dynamic certificate configuration file. This is used only with managed Pangolin deployments. + + **Example**: `/var/dynamic/cert_config.yml` + + **Default**: `/var/dynamic/cert_config.yml` + + + + Path to the dynamic router configuration file. + + **Example**: `/var/dynamic/router_config.yml` + + **Default**: `/var/dynamic/router_config.yml` + + + + Supported site types for Traefik configuration. + + **Example**: `["newt", "wireguard", "local"]` + + **Default**: `["newt", "wireguard", "local"]` + + + + Whether to use file-based configuration mode for Traefik. + + **Example**: `false` + + **Default**: `false` + + + When enabled, uses file-based dynamic configuration instead of API-based updates. + + @@ -543,6 +606,54 @@ This section contains the complete reference for all configuration options in `c +### Managed Configuration + + + Managed deployment configuration for connecting self-hosted instances to managed services. + + + {/* + Display name for the managed deployment. + + **Example**: `My Self-Hosted Instance` + */} + + + Unique identifier for the managed deployment. Generated from the installer or the [Pangolin dashboard](https://pangolin.fossorial.io). + + **Example**: `he4g78wevj25msf` + + + + Secret key for authenticating with the managed service. Generated from the installer or the [Pangolin dashboard](https://pangolin.fossorial.io). + + **Example**: `n7sd18twfko0q0vrb7wyclqzbvvnx1fqt7ezv8xewhdb9s7d` + + + Keep this secret secure and do not share it publicly. + + + + + The managed service endpoint to connect to. This can only change with enterprise deployments. + + **Example**: `https://pangolin.fossorial.io` + + **Default**: `https://pangolin.fossorial.io` + + + + Custom redirect endpoint for authentication flows. This can only change for enterprise deployments. + + **Example**: `https://my-pangolin.example.com` + + + If not specified, the default dashboard URL will be used. + + + + + ## Environment Variables Some configuration values can be set using environment variables for enhanced security: diff --git a/self-host/convert-managed.mdx b/self-host/convert-managed.mdx new file mode 100644 index 0000000..8d7667d --- /dev/null +++ b/self-host/convert-managed.mdx @@ -0,0 +1,124 @@ +--- +title: "Convert to Managed" +description: "Learn how to convert your self-hosted Pangolin instance to a managed deployment" +--- + + +Check out the [Managed Deployment Guide](/self-host/managed-deployment) for more information on deploying a managed instance of Pangolin. + + +## Who is this for? + +Use this guide if you have a self-hosted Pangolin instance and want to convert it to a managed deployment. It's pretty easy! + +## What will happen to my data? + + +**Always backup your data before updating.** Copy your `config` directory to a safe location so you can roll back if needed. + + +Your existing Pangolin data will stay in the database, so feel free to try managed deployment without losing anything. If you want to go back, just reverse these steps. + +## Migration + + + + Create an account on [Pangolin Cloud](https://pangolin.fossorial.io/auth/signup) if you don't have one already. + + + + In the Pangolin Cloud dashboard, navigate to the "Self-hosted" section and generate a new ID and secret for this PoP. Make sure to copy this config, as you'll need it later. + + + + On your self-hosted Pangolin server: + + 1. Stop the Pangolin service: + ```bash + docker-compose down + ``` + 2. Ensure you have a backup of your `config` directory. + 3. Make sure your instance is [up to date](./how-to-update) with the latest versions of Pangolin, Gerbil, and Traefik. + + + + + Exit your `config/config.yml` and paste the generated ID and secret managed config at the bottom of the file: + + ```yaml + managed: + id: + secret: + ``` + + You can leave the rest of your config the same. + + + + + We need to update your `docker-compose.yml` file to use the new managed configuration. Its a good idea to backup the old one. + + First change the gerbil port `443:443` to `443:8443`. This will send traffic to the Gerbil SNI proxy server before hitting Traefik downstream. + + ``` + gerbil: + ports: + - "443:8443" # <----- It should look like this now + ``` + + Second, add a volume to sync the certs and file based Traefik config between Pangolin and Traefik. At the bottom of the file: + + ```yaml + volumes: + pangolin-data: + ``` + + Then in Traefik: + ```yaml + traefik: + volumes: + - ./config/traefik:/etc/traefik:ro # Volume to store the Traefik configuration + - ./config/letsencrypt:/letsencrypt # Volume to store the Let's Encrypt certificates + - ./config/traefik/logs:/var/log/traefik # Volume to store Traefik logs + # Shared volume for certificates and dynamic config in file mode + - pangolin-data:/var/certificates:ro + - pangolin-data:/var/dynamic:ro + ``` + + And in Pangolin + ```yaml + pangolin: + volumes: + - ./config:/app/config + - pangolin-data:/var/certificates + - pangolin-data:/var/dynamic + ``` + + + + Edit your `config/traefik/traefik_config.yml` file to add a ping endpoint for health checks. Add this to the bottom of the file: + + ```yaml + ping: + entryPoint: "web" + ``` + + + + Start the updated stack with Docker Compose: + ```bash + docker-compose up -d + ``` + + + + Pangolin is now controlled through the [Pangolin Cloud](https://pangolin.fossorial.io/auth/signup) dashboard. Make sure to bring your domain and recreate your sites and resources. + + + If you move your whole domain away from your VPS to Pangolin Cloud, make sure to update your `base_endpoint` under the `gerbil:` section of your `config.yml` to be the IP address of your instance otherwise we cant resolve your instance in DNS. + + + In the future, we plan to allow importing config! + + + diff --git a/self-host/dns-and-networking.mdx b/self-host/dns-and-networking.mdx index 14c2012..3e36569 100644 --- a/self-host/dns-and-networking.mdx +++ b/self-host/dns-and-networking.mdx @@ -77,7 +77,7 @@ Pangolin requires these ports to be open on your VPS: **Site Tunnels** - This is the default port for sites (Newt) to establish tunnels to the cloud exit node. + This is the default port for sites (Newt) to establish tunnels to the proxy (Gerbil). diff --git a/self-host/manual/docker-compose.mdx b/self-host/manual/docker-compose.mdx index 206b751..e750b21 100644 --- a/self-host/manual/docker-compose.mdx +++ b/self-host/manual/docker-compose.mdx @@ -144,6 +144,8 @@ services: restart: unless-stopped volumes: - ./config:/app/config + - pangolin-data:/var/certificates + - pangolin-data:/var/dynamic healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3001/api/v1/"] interval: "3s" @@ -186,11 +188,17 @@ services: volumes: - ./config/traefik:/etc/traefik:ro # Volume to store the Traefik configuration - ./config/letsencrypt:/letsencrypt # Volume to store the Let's Encrypt certificates + # Shared volume for certificates and dynamic config in file mode + - pangolin-data:/var/certificates:ro + - pangolin-data:/var/dynamic:ro networks: default: driver: bridge name: pangolin + +volumes: + pangolin-data: ``` ## Traefik Static Configuration @@ -242,6 +250,9 @@ entryPoints: serversTransport: insecureSkipVerify: true + +ping: + entryPoint: "web" ``` ## Traefik Dynamic Configuration diff --git a/self-host/manual/managed.mdx b/self-host/manual/managed.mdx new file mode 100644 index 0000000..df9cfb8 --- /dev/null +++ b/self-host/manual/managed.mdx @@ -0,0 +1,234 @@ +--- +title: "Docker Compose Managed" +description: "Deploy managed Pangolin manually using Docker Compose without the automated installer" +--- + + +This guide is for managed Pangolin. If you are looking for self-hosted Pangolin please see the [Docker Compose](self-host/docker-compose) guide. + + +This guide walks you through setting up Pangolin manually using Docker Compose without the automated installer. This approach gives you full control over the configuration and deployment process. + +This guide assumes you already have a Linux server with Docker and Docker Compose installed. If you don't, please refer to the [official Docker documentation](https://docs.docker.com/get-docker/) for installation instructions. You must also have root access to the server. + +## Prerequisites + +Checkout the [quick install guide](self-host/quick-install-managed) for more info regarding what is needed before you install Pangolin. + +## File Structure + +Create the following directory structure for your Pangolin deployment: + +``` +. +├── config/ +│ ├── config.yml (*) +│ ├── db/ +│ │ └── db.sqlite +│ ├── key +│ └── traefik/ +│ ├── traefik_config.yml (*) +└── docker-compose.yml (*) +``` + + +Files marked with `(*)` must be created manually. Volumes and other files are generated automatically by the services. + + + + + **`config/config.yml`**: Main Pangolin configuration file + - Contains all Pangolin settings and options + - See [Configuration Guide](/pangolin/configuration/config) for details + + **`config/traefik/traefik_config.yml`**: Traefik static configuration + - Global Traefik settings and entry points + + + + **`config/db/db.sqlite`**: SQLite database file + - Created automatically on first startup + - Contains all Pangolin data and settings + + **`config/key`**: Private key file + - Generated by Gerbil service + - Used for WireGuard tunnel encryption + + + + **`docker-compose.yml`**: Service definitions + - Defines Pangolin, Gerbil, and Traefik services + - Network configuration and volume mounts + - Health checks and dependencies + + + + + + ```bash + mkdir -p config/traefik config/db + ``` + + + + Create the main configuration files (see below): + + - `docker-compose.yml` (in project root) + - `config/traefik/traefik_config.yml` + - `config/config.yml` + + + + Edit the configuration files to replace: + + - `154.123.45.67` with your actual domain OR public IP address of the PoP + + + Ensure your domain DNS is properly configured to point to your server's IP address if you choose DNS. + + + + +## Starting the Stack + + + + ```bash + sudo docker compose up -d + ``` + + + + ```bash + sudo docker compose logs -f + ``` + + + + ```bash + sudo docker compose ps + ``` + + All services should show "Up" status after a few minutes. + + + +## Docker Compose Configuration + +Create `docker-compose.yml` in your project root: + +```yaml title="docker-compose.yml" +services: + pangolin: + image: fosrl/pangolin:latest # https://github.com/fosrl/pangolin/releases + container_name: pangolin + restart: unless-stopped + volumes: + - ./config:/app/config + - pangolin-data:/var/certificates + - pangolin-data:/var/dynamic + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:3001/api/v1/"] + interval: "3s" + timeout: "3s" + retries: 15 + + gerbil: + image: fosrl/gerbil:latest # https://github.com/fosrl/gerbil/releases + container_name: gerbil + restart: unless-stopped + depends_on: + pangolin: + condition: service_healthy + command: + - --reachableAt=http://gerbil:3003 + - --generateAndSaveKeyTo=/var/config/key + - --remoteConfig=http://pangolin:3001/api/v1/ + volumes: + - ./config/:/var/config + cap_add: + - NET_ADMIN + - SYS_MODULE + ports: + - 51820:51820/udp + - 21820:21820/udp + - 443:8443 + - 80:80 + + traefik: + image: traefik:v3.4.0 + container_name: traefik + restart: unless-stopped + network_mode: service:gerbil # Ports appear on the gerbil service + depends_on: + pangolin: + condition: service_healthy + command: + - --configFile=/etc/traefik/traefik_config.yml + volumes: + - ./config/traefik:/etc/traefik:ro # Volume to store the Traefik configuration + - ./config/letsencrypt:/letsencrypt # Volume to store the Let's Encrypt certificates + # Shared volume for certificates and dynamic config in file mode + - pangolin-data:/var/certificates:ro + - pangolin-data:/var/dynamic:ro + +networks: + default: + driver: bridge + name: pangolin + +volumes: + pangolin-data: +``` + +## Traefik Static Configuration + +Create `config/traefik/traefik_config.yml`: + +```yaml title="config/traefik/traefik_config.yml" +api: + insecure: true + dashboard: true + +providers: + file: + directory: "/var/dynamic" + watch: true + +experimental: + plugins: + badger: + moduleName: "github.com/fosrl/badger" + version: "v1.2.0" + +log: + level: "INFO" + format: "common" + +entryPoints: + web: + address: ":80" + websecure: + address: ":443" + transport: + respondingTimeouts: + readTimeout: "30m" + +serversTransport: + insecureSkipVerify: true + +ping: + entryPoint: "web" +``` + +## Pangolin Configuration + +```yaml title="config/config.yml" +gerbil: + start_port: 51820 + base_endpoint: "154.123.45.67" # REPLACE WITH YOUR IP OR DOMAIN + +managed: + id: "he4g78wevj25msf" + secret: "n7sd18twfko0q0vrb7wyclqzbvvnx1fqt7ezv8xewhdb9s7d" +``` \ No newline at end of file diff --git a/self-host/quick-install-managed.mdx b/self-host/quick-install-managed.mdx new file mode 100644 index 0000000..3d08539 --- /dev/null +++ b/self-host/quick-install-managed.mdx @@ -0,0 +1,102 @@ +--- +title: "Quick Install Managed" +description: "Deploy your own managed Pangolin reverse proxy server in under 10 minutes with our automated installer" +--- + + + +[Why would I want to deploy a managed Pangolin instance?](../manage/managed.mdx) + + + +## Prerequisites + +Before you begin, ensure you have: + +- **Linux server** with root access and public IP address +- **Open ports on firewall** for 80 (TCP), 443 (TCP), 51820 (UDP), and 21820 (UDP for clients) + + +**Recommended**: Ubuntu 20.04+ or Debian 11+ for best compatibility and performance. + + +## Choose Your Server + +Need help choosing? See our [complete VPS guide](/self-host/choosing-a-vps) for suggestions. + +## DNS & Networking + +Before installing Pangolin, ensure you've opened the required port on your firewall. See our guide on [DNS & networking](/self-host/dns-and-networking) for more information. + +## Installation Process + + + + Connect to your server via SSH and download the installer: + + ```bash + curl -fsSL https://digpangolin.com/get-installer.sh | bash + ``` + + The installer supports both AMD64 (x86_64) and ARM64 architectures. + + + + Execute the installer with root privileges: + + ```bash + sudo ./installer + ``` + + The installer places all files in the current directory. Move the installer to your desired installation directory before running it. + + + + +If you are on your game and have already generated credentials for this PoP in the dashboard enter them here. + + +If you don't have them yet you can just select no when asked and we will create it in a later step. + + + + + + + Enter either the public IP address of your server or a domain name that resolves to it. + + If you choose to use a domain keep in mind this just resolves your PoP on the internet while the actual subdomains for resources will be managed in the cloud. + + + + + +If you did not enter credentials earlier then you should see something like the following: + +``` +Your managed credentials have been obtained successfully. + ID: he4g78wevj25msf + Secret: n7sd18twfko0q0vrb7wyclqzbvvnx1fqt7ezv8xewhdb9s7d +``` + +Go to the [Pangolin dashboard](https://pangolin.fossorial.io/) and log in. Navigate to the "Self-hosted" section and add a new PoP. Use this ID and secret to register your PoP. + + +More than one account can use the same PoP credentials. This is useful for teams. + + + + + + +## Post-Installation Setup + +Once installation completes successfully, you'll see: + +``` +Installation complete! +``` + +Navigate to the [Pangolin dashboard](https://pangolin.fossorial.io/) and create sites, resources, and targets for your managed PoP. + +{/* ## Video Walkthrough */} diff --git a/self-host/quick-install.mdx b/self-host/quick-install.mdx index e74dede..a28be93 100644 --- a/self-host/quick-install.mdx +++ b/self-host/quick-install.mdx @@ -118,7 +118,7 @@ https://pangolin.example.com/auth/initial-setup ``` - The dashboard should load with SSL certificate automatically configured. It might take a few minutes for the first cert to validate, so don't worry if the brwoser throws an insecure warning. + The dashboard should load with SSL certificate automatically configured. It might take a few minutes for the first cert to validate, so don't worry if the browser throws an insecure warning.