Add clustering deployment guidelines

This commit is contained in:
Owen
2026-09-11 15:49:47 -04:00
parent 2904fa44f6
commit 79f584ee24
8 changed files with 34 additions and 63 deletions
+9 -11
View File
@@ -303,6 +303,14 @@
"self-host/manual/podman-quadlets"
]
},
{
"group": "Clustering",
"pages": [
"self-host/clustering/understanding-clustering",
"self-host/clustering/requirements",
"self-host/clustering/deploy-a-cluster"
]
},
"self-host/dns-and-networking",
{
"group": "Advanced Configuration",
@@ -318,15 +326,6 @@
"self-host/advanced/observability",
"self-host/advanced/enable-geolocation",
"self-host/advanced/enable-asn-lookup",
{
"group": "Clustering",
"icon": "server",
"pages": [
"self-host/advanced/clustering/understanding-clustering",
"self-host/advanced/clustering/requirements",
"self-host/advanced/clustering/deploy-a-cluster"
]
},
"self-host/advanced/traefik-log-rotation",
"self-host/telemetry"
]
@@ -514,8 +513,7 @@
"redirects": [
{
"source": "/self-host/advanced/clustering",
"destination": "/self-host/advanced/clustering/understanding-clustering",
"permanent": true
"destination": "/self-host/advanced/clustering/understanding-clustering"
},
{
"source": "/self-host/advanced/enable-geoblocking",
Binary file not shown.

After

Width:  |  Height:  |  Size: 721 KiB

+4 -3
View File
@@ -1,9 +1,10 @@
---
title: "Site to Cloud"
description: "Turn a remote node into a network concentrator that routes traffic between a cloud VPC and your Pangolin sites"
title: "Site to Cloud Backhaul"
description: "Turn a remote node into a network concentrator that routes traffic between a cloud VPC and your Pangolin sites for edge to cloud backhaul"
---
<Note>
Site to cloud is an advanced [remote node](/manage/remote-node/understanding-nodes) configuration available in [Pangolin Cloud](https://app.pangolin.net/auth/signup).
Site to cloud is an advanced [remote node](/manage/remote-node/understanding-nodes) configuration available in [Pangolin Cloud](https://app.pangolin.net/auth/signup) and [Enterprise Edition](/self-host/enterprise-edition).
</Note>
A standard remote node terminates WireGuard tunnels and proxies HTTP(S) traffic to your resources. A **backhaul** node goes a step further: it acts as an IP router between an entire network, such as a cloud VPC, and your Pangolin sites. Instead of just forwarding individual resource connections, the node forwards whole subnets, letting hosts on either side reach each other without needing to install site and client on every machine.
+12 -6
View File
@@ -6,7 +6,7 @@ description: "Deploy your own remote Pangolin node in under 10 minutes with our
Before you begin, ensure you have:
- **Pangolin Cloud** account. You can [create a free account here](https://app.pangolin.net/auth/signup). No subscription required.
- **Pangolin Cloud** account. You can [create a free account here](https://app.pangolin.net/auth/signup) OR a [clustered self-hosted Pangolin Enterprise deployment](/self-host/clustering/understanding-clustering).
- **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).
@@ -43,6 +43,14 @@ Before installing Pangolin, ensure you've opened the required port on your firew
```
The installer places all files in the current directory. Move the installer to your desired installation directory before running it.
<Note>
If you're not using Pangolin Cloud (`app.pangolin.net`) and instead have a self-hosted Pangolin Enterprise deployment, pass its URL with the `--pangolin-endpoint` flag so the installer requests node credentials from your instance instead:
```bash
sudo ./installer --pangolin-endpoint https://pangolin.example.com
```
</Note>
</Step>
<Step title="Do you already have credentials from the dashboard?">
@@ -64,7 +72,7 @@ If you don't have them yet you can just select no when asked and we will create
</Note>
<Warning>
If you choose to use a domain keep in mind this just resolves your node on the internet while the actual subdomains for resources will be managed in the cloud.
If you choose to use a domain keep in mind this just resolves your node on the internet while the actual subdomains for resources will be managed in the server.
</Warning>
</Step>
@@ -79,7 +87,7 @@ Your managed credentials have been obtained successfully.
Secret: n7sd18twfko0q0vrb7wyclqzbvvnx1fqt7ezv8xewhdb9s7d
```
Go to the [Pangolin dashboard](https://app.pangolin.net/) and log in. Navigate to the "Self-hosted" section and add a new node. Select the adopt method. Use this ID and secret to register your node.
Go to the [Pangolin dashboard](https://app.pangolin.net/) (or your own panel's URL if you passed `--pangolin-endpoint`) and log in. Navigate to the "Self-hosted" section and add a new node. Select the adopt method. Use this ID and secret to register your node.
<Tip>
More than one account can use the same node credentials. This is useful for teams.
@@ -97,6 +105,4 @@ Once installation completes successfully, you'll see:
Installation complete!
```
Navigate to the [Pangolin dashboard](https://app.pangolin.net/) and create sites, resources, and targets for your remote node.
{/* ## Video Walkthrough */}
Navigate to the [Pangolin dashboard](https://app.pangolin.net/) (or your own dashboard if self-hosted) and create sites, resources, and targets for your remote node.
+3 -1
View File
@@ -3,7 +3,9 @@ title: "Remote Nodes"
description: "Control your own Pangolin node with cloud management"
---
<Note>
Remote Nodes are available in [Pangolin Cloud](https://app.pangolin.net/auth/signup).
Remote nodes are only available in [Pangolin
Cloud](https://app.pangolin.net/auth/signup) and [Enterprise
Edition](/self-host/enterprise-edition).
</Note>
Remote nodes, you run your own Pangolin node - your tunnels, SSL termination, and traffic all stay on your server and use your bandwidth. The difference is that management and monitoring are handled through our cloud. The node just handles terminating Wireguard tunnels, serving HTTP(S) traffic, and routing relayed client connections - it is essentially a remote networking hub.
@@ -31,9 +31,7 @@ Throughout this guide, replace the following placeholders with your own values:
| `LOAD_BALANCER_IP` | IP address of the load balancer in front of the cluster |
| `pangolin.example.com` | Your dashboard domain - DNS points at the load balancer, not at either node |
<Warning>
You need a domain for the Pangolin UI and API (`pangolin.example.com` in this guide), pointed at your load balancer. **The load balancer is responsible for TLS on this domain** - terminate HTTPS there and forward plain HTTP to the nodes' dashboard port. The nodes' built-in ACME client only issues certificates for resource domains under the delegated nameserver zone, not for the dashboard domain itself. See [Requirements](/self-host/advanced/clustering/requirements#dashboard-domain).
</Warning>
<Steps>
@@ -35,11 +35,9 @@ For sizing information, see [Choosing a VPS](/self-host/choosing-a-vps) - the sa
You also need a domain for the Pangolin UI and API itself (e.g. `pangolin.example.com`) - this is separate from the nameserver domain above, which is the nameserver to resolve resource DNS.
<Warning>
Point this domain's DNS record at your **load balancer**, not at either node directly. The load balancer is also responsible for obtaining and serving the TLS certificate for this domain - the nodes' built-in ACME client only issues certificates for resource domains under the delegated nameserver zone, not for the dashboard domain. Terminate TLS at the load balancer and forward plain HTTP to the nodes.
You must also set this domain as `app.dashboard_url` and add it to `server.cors.origins` in every node's `config.yml`. See [Deploy a Cluster](/self-host/advanced/clustering/deploy-a-cluster).
</Warning>
### Required Ports
@@ -15,44 +15,12 @@ In a clustered configuration, multiple Pangolin instances operate together, shar
A Pangolin cluster consists of several coordinated components that work together to provide high availability and seamless failover.
```mermaid
flowchart TB
Users(["Users / Browsers"])
Sites(["Site Connectors (Newt)"])
LB["Load Balancer<br/>(your own)<br/>TCP 80 · 443 · 3000 · UDP 53"]
subgraph Node1["Node 1"]
direction TB
G1["Gerbil<br/>WireGuard + SNI proxy"]
T1["Traefik<br/>TLS termination"]
P1["Pangolin<br/>UI · API · DNS · ACME client"]
G1 --- T1 --- P1
end
subgraph Node2["Node 2"]
direction TB
G2["Gerbil<br/>WireGuard + SNI proxy"]
T2["Traefik<br/>TLS termination"]
P2["Pangolin<br/>UI · API · DNS"]
G2 --- T2 --- P2
end
PG[("PostgreSQL<br/>shared state + certs")]
RD[("Valkey / Redis<br/>pub/sub + sessions")]
Users --> LB
LB --> G1
LB --> G2
Sites -. WireGuard tunnel .-> G1
Sites -. WireGuard tunnel .-> G2
G1 <-. cross-node request routing .-> G2
P1 <--> PG
P2 <--> PG
P1 <--> RD
P2 <--> RD
```
<Frame>
<img
src="/images/ha-deployment-diagram.png"
alt="Diagram showing the cluster deployment"
/>
</Frame>
### Pangolin Instances