mirror of
https://github.com/fosrl/docs-v2.git
synced 2026-02-08 05:56:45 +00:00
Add docs for managed
This commit is contained in:
@@ -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.
|
||||
</Card>
|
||||
|
||||
<Card title="Hybrid" icon="circle-nodes" href="/manage/high-availability#hybrid-deployment">
|
||||
Host your own multiple points of presence with cloud coordination and automatic failover. Data always transits yours servers.
|
||||
<Card title="Managed" icon="circle-nodes" href="/manage/managed">
|
||||
Host your own multiple points of presence with cloud coordination and automatic failover. Data always transits your servers.
|
||||
</Card>
|
||||
|
||||
<Card title="Self-Hosted" icon="server" href="/self-host/quick-install">
|
||||
|
||||
@@ -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",
|
||||
|
||||
94
images/ha.svg
Normal file
94
images/ha.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 53 KiB |
@@ -8,7 +8,7 @@ Pangolin is an open-source and identity-aware tunneled reverse proxy server. Pan
|
||||
<img src="/images/fossorial-dashboard.png" alt="Pangolin Dashboard"/>
|
||||
</Frame>
|
||||
|
||||
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.
|
||||
|
||||
<Columns cols={2}>
|
||||
<Card title="How it works" icon="map" href="/about/how-pangolin-works">
|
||||
|
||||
@@ -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.
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Pangolin Cloud" icon="cloud" href="https://pangolin.fossorial.io/auth/signup">
|
||||
Network of points of presence with automatic failover and routing to your backend services.
|
||||
</Card>
|
||||
|
||||
<Card title="Hybrid" icon="circle-nodes" href="/manage/high-availability#hybrid-deployment">
|
||||
Host your own multiple points of presence with cloud coordination and automatic failover. Data always transits your servers.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
## 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.
|
||||
|
||||
<Tip>
|
||||
Hybrid deployment is ideal for organizations that need high availability while maintaining control over their infrastructure and data transit.
|
||||
</Tip>
|
||||
|
||||
## Contact Us
|
||||
|
||||
For hybrid deployments, points of presence, and high availability contact us:
|
||||
- **Email**: [numbat@fossorial.io](mailto:numbat@fossorial.io)
|
||||
36
manage/managed.mdx
Normal file
36
manage/managed.mdx
Normal file
@@ -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.
|
||||
|
||||
<Tip>
|
||||
You can deploy a managed Pangolin PoP in seconds [using the installer](../self-host/quick-install-managed).
|
||||
</Tip>
|
||||
|
||||
### 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.
|
||||
|
||||
<Frame>
|
||||
<img src="/images/ha.svg" width="400" centered/>
|
||||
</Frame>
|
||||
|
||||
<Note>
|
||||
For detailed information about how points of presence work and their advantages, see our [Points of Presence](/manage/points-of-presence) documentation.
|
||||
</Note>
|
||||
|
||||
### 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.
|
||||
|
||||
<Tip>
|
||||
Managed deployment is ideal for organizations that need high availability while maintaining control over their infrastructure and data transit.
|
||||
</Tip>
|
||||
@@ -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.
|
||||
</Card>
|
||||
|
||||
<Card title="Hybrid" icon="circle-nodes" href="/manage/high-availability#hybrid-deployment">
|
||||
Host your own multiple points of presence with cloud coordination and automatic failover. Data always transits yours servers.
|
||||
<Card title="Managed" icon="circle-nodes" href="/manage/managed">
|
||||
Host your own multiple points of presence with cloud coordination and automatic failover. Data always transits your servers.
|
||||
</Card>
|
||||
|
||||
<Card title="Self-Hosted" icon="server" href="/self-host/quick-install">
|
||||
@@ -96,14 +96,9 @@ Think of points of presence as the "front doors" to your applications - users co
|
||||
</CardGroup>
|
||||
|
||||
<Warning>
|
||||
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.
|
||||
</Warning>
|
||||
|
||||
<Tip>
|
||||
Hybrid deployment is ideal for organizations that need high availability while maintaining control over their infrastructure and data transit.
|
||||
Managed deployment is ideal for organizations that need high availability while maintaining control over their infrastructure and data transit.
|
||||
</Tip>
|
||||
|
||||
## Contact Us
|
||||
|
||||
For hybrid deployments, points of presence, and high availability contact us:
|
||||
- **Email**: [numbat@fossorial.io](mailto:numbat@fossorial.io)
|
||||
|
||||
@@ -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"
|
||||
```
|
||||
|
||||
<Warning>
|
||||
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.
|
||||
</Note>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="certificates_path" type="string">
|
||||
Path where SSL certificates are stored. This is used only with managed Pangolin deployments.
|
||||
|
||||
**Example**: `/var/certificates`
|
||||
|
||||
**Default**: `/var/certificates`
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="monitor_interval" type="integer">
|
||||
Interval in milliseconds for monitoring configuration changes.
|
||||
|
||||
**Example**: `5000`
|
||||
|
||||
**Default**: `5000`
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="dynamic_cert_config_path" type="string">
|
||||
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`
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="dynamic_router_config_path" type="string">
|
||||
Path to the dynamic router configuration file.
|
||||
|
||||
**Example**: `/var/dynamic/router_config.yml`
|
||||
|
||||
**Default**: `/var/dynamic/router_config.yml`
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="site_types" type="array of strings">
|
||||
Supported site types for Traefik configuration.
|
||||
|
||||
**Example**: `["newt", "wireguard", "local"]`
|
||||
|
||||
**Default**: `["newt", "wireguard", "local"]`
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="file_mode" type="boolean">
|
||||
Whether to use file-based configuration mode for Traefik.
|
||||
|
||||
**Example**: `false`
|
||||
|
||||
**Default**: `false`
|
||||
|
||||
<Note>
|
||||
When enabled, uses file-based dynamic configuration instead of API-based updates.
|
||||
</Note>
|
||||
</ResponseField>
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
@@ -543,6 +606,54 @@ This section contains the complete reference for all configuration options in `c
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
### Managed Configuration
|
||||
|
||||
<ResponseField name="managed" type="object">
|
||||
Managed deployment configuration for connecting self-hosted instances to managed services.
|
||||
|
||||
<Expandable title="Managed">
|
||||
{/* <ResponseField name="name" type="string">
|
||||
Display name for the managed deployment.
|
||||
|
||||
**Example**: `My Self-Hosted Instance`
|
||||
</ResponseField> */}
|
||||
|
||||
<ResponseField name="id" type="string">
|
||||
Unique identifier for the managed deployment. Generated from the installer or the [Pangolin dashboard](https://pangolin.fossorial.io).
|
||||
|
||||
**Example**: `he4g78wevj25msf`
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="secret" type="string">
|
||||
Secret key for authenticating with the managed service. Generated from the installer or the [Pangolin dashboard](https://pangolin.fossorial.io).
|
||||
|
||||
**Example**: `n7sd18twfko0q0vrb7wyclqzbvvnx1fqt7ezv8xewhdb9s7d`
|
||||
|
||||
<Warning>
|
||||
Keep this secret secure and do not share it publicly.
|
||||
</Warning>
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="endpoint" type="string">
|
||||
The managed service endpoint to connect to. This can only change with enterprise deployments.
|
||||
|
||||
**Example**: `https://pangolin.fossorial.io`
|
||||
|
||||
**Default**: `https://pangolin.fossorial.io`
|
||||
</ResponseField>
|
||||
|
||||
<ResponseField name="redirect_endpoint" type="string">
|
||||
Custom redirect endpoint for authentication flows. This can only change for enterprise deployments.
|
||||
|
||||
**Example**: `https://my-pangolin.example.com`
|
||||
|
||||
<Note>
|
||||
If not specified, the default dashboard URL will be used.
|
||||
</Note>
|
||||
</ResponseField>
|
||||
</Expandable>
|
||||
</ResponseField>
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Some configuration values can be set using environment variables for enhanced security:
|
||||
|
||||
124
self-host/convert-managed.mdx
Normal file
124
self-host/convert-managed.mdx
Normal file
@@ -0,0 +1,124 @@
|
||||
---
|
||||
title: "Convert to Managed"
|
||||
description: "Learn how to convert your self-hosted Pangolin instance to a managed deployment"
|
||||
---
|
||||
|
||||
<Info>
|
||||
Check out the [Managed Deployment Guide](/self-host/managed-deployment) for more information on deploying a managed instance of Pangolin.
|
||||
</Info>
|
||||
|
||||
## 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?
|
||||
|
||||
<Warning>
|
||||
**Always backup your data before updating.** Copy your `config` directory to a safe location so you can roll back if needed.
|
||||
</Warning>
|
||||
|
||||
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
|
||||
|
||||
<Steps>
|
||||
<Step title="Sign up">
|
||||
Create an account on [Pangolin Cloud](https://pangolin.fossorial.io/auth/signup) if you don't have one already.
|
||||
</Step>
|
||||
|
||||
<Step title="Generate credentials">
|
||||
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.
|
||||
</Step>
|
||||
|
||||
<Step title="Prepare your instance">
|
||||
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.
|
||||
</Step>
|
||||
|
||||
|
||||
<Step title="Paste in the credentials">
|
||||
Exit your `config/config.yml` and paste the generated ID and secret managed config at the bottom of the file:
|
||||
|
||||
```yaml
|
||||
managed:
|
||||
id: <your-generated-id>
|
||||
secret: <your-generated-secret>
|
||||
```
|
||||
|
||||
You can leave the rest of your config the same.
|
||||
</Step>
|
||||
|
||||
|
||||
<Step title="Update your docker-compose">
|
||||
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
|
||||
```
|
||||
</Step>
|
||||
|
||||
<Step title="Add ping to Traefik">
|
||||
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"
|
||||
```
|
||||
</Step>
|
||||
|
||||
<Step title="Bring up the stack">
|
||||
Start the updated stack with Docker Compose:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
</Step>
|
||||
|
||||
<Step title="Configure your account">
|
||||
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.
|
||||
|
||||
<Tip>
|
||||
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.
|
||||
</Tip>
|
||||
|
||||
In the future, we plan to allow importing config!
|
||||
</Step>
|
||||
|
||||
</Steps>
|
||||
@@ -77,7 +77,7 @@ Pangolin requires these ports to be open on your VPS:
|
||||
<Card title="UDP Port 51820">
|
||||
**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).
|
||||
</Card>
|
||||
|
||||
<Card title="UDP Port 21820">
|
||||
|
||||
@@ -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
|
||||
|
||||
234
self-host/manual/managed.mdx
Normal file
234
self-host/manual/managed.mdx
Normal file
@@ -0,0 +1,234 @@
|
||||
---
|
||||
title: "Docker Compose Managed"
|
||||
description: "Deploy managed Pangolin manually using Docker Compose without the automated installer"
|
||||
---
|
||||
|
||||
<Tip>
|
||||
This guide is for managed Pangolin. If you are looking for self-hosted Pangolin please see the [Docker Compose](self-host/docker-compose) guide.
|
||||
</Tip>
|
||||
|
||||
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 (*)
|
||||
```
|
||||
|
||||
<Info>
|
||||
Files marked with `(*)` must be created manually. Volumes and other files are generated automatically by the services.
|
||||
</Info>
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Configuration Files">
|
||||
**`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
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Generated Files">
|
||||
**`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
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Docker Files">
|
||||
**`docker-compose.yml`**: Service definitions
|
||||
- Defines Pangolin, Gerbil, and Traefik services
|
||||
- Network configuration and volume mounts
|
||||
- Health checks and dependencies
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Steps>
|
||||
<Step title="Create configuration directory">
|
||||
```bash
|
||||
mkdir -p config/traefik config/db
|
||||
```
|
||||
</Step>
|
||||
|
||||
<Step title="Create configuration files">
|
||||
Create the main configuration files (see below):
|
||||
|
||||
- `docker-compose.yml` (in project root)
|
||||
- `config/traefik/traefik_config.yml`
|
||||
- `config/config.yml`
|
||||
</Step>
|
||||
|
||||
<Step title="Update domain">
|
||||
Edit the configuration files to replace:
|
||||
|
||||
- `154.123.45.67` with your actual domain OR public IP address of the PoP
|
||||
|
||||
<Warning>
|
||||
Ensure your domain DNS is properly configured to point to your server's IP address if you choose DNS.
|
||||
</Warning>
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Starting the Stack
|
||||
|
||||
<Steps>
|
||||
<Step title="Start the services">
|
||||
```bash
|
||||
sudo docker compose up -d
|
||||
```
|
||||
</Step>
|
||||
|
||||
<Step title="Monitor startup">
|
||||
```bash
|
||||
sudo docker compose logs -f
|
||||
```
|
||||
</Step>
|
||||
|
||||
<Step title="Verify services">
|
||||
```bash
|
||||
sudo docker compose ps
|
||||
```
|
||||
|
||||
All services should show "Up" status after a few minutes.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## 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"
|
||||
```
|
||||
102
self-host/quick-install-managed.mdx
Normal file
102
self-host/quick-install-managed.mdx
Normal file
@@ -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"
|
||||
---
|
||||
|
||||
<Note>
|
||||
|
||||
[Why would I want to deploy a managed Pangolin instance?](../manage/managed.mdx)
|
||||
|
||||
</Note>
|
||||
|
||||
## 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)
|
||||
|
||||
<Tip>
|
||||
**Recommended**: Ubuntu 20.04+ or Debian 11+ for best compatibility and performance.
|
||||
</Tip>
|
||||
|
||||
## 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
|
||||
|
||||
<Steps>
|
||||
<Step title="Download the installer">
|
||||
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.
|
||||
</Step>
|
||||
|
||||
<Step title="Run the installer">
|
||||
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.
|
||||
</Step>
|
||||
|
||||
<Step title="Do you already have credentials from the dashboard?">
|
||||
|
||||
If you are on your game and have already generated credentials for this PoP in the dashboard enter them here.
|
||||
|
||||
<Tip>
|
||||
If you don't have them yet you can just select no when asked and we will create it in a later step.
|
||||
</Tip>
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="The public addressable IP address for this PoP">
|
||||
|
||||
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.
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Generate credentials">
|
||||
|
||||
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.
|
||||
|
||||
<Tip>
|
||||
More than one account can use the same PoP credentials. This is useful for teams.
|
||||
</Tip>
|
||||
|
||||
</Step>
|
||||
|
||||
</Steps>
|
||||
|
||||
## 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 */}
|
||||
@@ -118,7 +118,7 @@ https://pangolin.example.com/auth/initial-setup
|
||||
```
|
||||
|
||||
<Check>
|
||||
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.
|
||||
</Check>
|
||||
</Step>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user