From fbf9c0d527a145dd191ebeb94fb7a8193ad840b3 Mon Sep 17 00:00:00 2001 From: Owen Date: Thu, 16 Oct 2025 16:43:56 -0700 Subject: [PATCH 01/15] Fix typo --- self-host/advanced/enable-geoblocking.mdx | 2 +- self-host/advanced/integration-api.mdx | 16 ++++++---------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/self-host/advanced/enable-geoblocking.mdx b/self-host/advanced/enable-geoblocking.mdx index d1ae2cd..bc7a7e6 100644 --- a/self-host/advanced/enable-geoblocking.mdx +++ b/self-host/advanced/enable-geoblocking.mdx @@ -41,7 +41,7 @@ Then run the installer again: ``` - Update your Pangolin configuration to point to the new GeoIP database file. Edit your `config/config.json` file to include the following entry: + Update your Pangolin configuration to point to the new GeoIP database file. Edit your `config/config.yml` file to include the following entry: ```yaml server: diff --git a/self-host/advanced/integration-api.mdx b/self-host/advanced/integration-api.mdx index 2a31291..207707d 100644 --- a/self-host/advanced/integration-api.mdx +++ b/self-host/advanced/integration-api.mdx @@ -14,25 +14,20 @@ flags: enable_integration_api: true ``` -If you want to specify a port other than the default `3004`, you can do so in the config as well: +If you want to specify a port other than the default `3003`, you can do so in the config as well: ```yaml title="config.yml" server: - integration_port: 3004 # Specify different port + integration_port: 3003 # Specify different port ``` ## Configure Traefik Routing -Add the following configuration to your `dynamic_config.yml` to expose the Integration API at `https://api.example.com/v1`: +Add the following configuration to your `config/traefik/dynamic_config.yml` to expose the Integration API at `https://api.example.com/v1`: ```yaml title="dynamic_config.yml" -http: - middlewares: - redirect-to-https: - redirectScheme: - scheme: https - routers: + # Add the following two routers int-api-router-redirect: rule: "Host(`api.example.com`)" service: int-api-service @@ -50,10 +45,11 @@ http: certResolver: letsencrypt services: + # Add the following service int-api-service: loadBalancer: servers: - - url: "http://pangolin:3004" + - url: "http://pangolin:3003" ``` ## Access Documentation From 4257957788656f23424ae849957860f4915bd623 Mon Sep 17 00:00:00 2001 From: Ivo Brett Date: Fri, 17 Oct 2025 12:33:36 +0100 Subject: [PATCH 02/15] updated traefik logs doc for the new agent architecture --- .../community-guides/traefiklogsdashboard.mdx | 344 +++++++++++------- 1 file changed, 215 insertions(+), 129 deletions(-) diff --git a/self-host/community-guides/traefiklogsdashboard.mdx b/self-host/community-guides/traefiklogsdashboard.mdx index 2c0f4e4..2eb014c 100644 --- a/self-host/community-guides/traefiklogsdashboard.mdx +++ b/self-host/community-guides/traefiklogsdashboard.mdx @@ -1,34 +1,44 @@ --- -title: "Traefik Log Dashboard" +title: "Traefik Log Dashboard (v2 – Agent Architecture)" --- This is a community guide and is not officially supported. For issues or advanced configuration, please visit the [official repository](https://github.com/hhftechnology/traefik-log-dashboard). -If you’re already using the **Pangolin stack with Traefik as your reverse proxy**, you have powerful routing in place. But raw log files and scattered metrics make it difficult to truly understand traffic patterns. +If you’re already using the **Pangolin stack with Traefik as your reverse proxy**, you already have robust routing in place. +However, raw logs can be hard to interpret β€” making it difficult to visualize request patterns, latency, and geographic origins. -The **Enhanced Traefik Log Dashboard** adds **real-time monitoring, OpenTelemetry support, and geolocation analytics**, giving you a full picture of your traffic. +The **new Traefik Log Dashboard (v2)** introduces a **lightweight agent-based architecture** with **multi-instance scalability, enhanced GeoIP analytics, and a modern Next.js frontend** for real-time insights into your Traefik traffic. -## Features +--- -* **OpenTelemetry OTLP Support**: Real-time traces from Traefik v3+ -* **Hybrid Monitoring**: Combine OTLP traces with traditional log parsing -* **Geolocation**: MaxMind GeoIP integration with automatic updates -* **Analytics**: Live request rates, response times, error tracking -* **Production Ready**: Resource limits, health checks, optimized GC/memory +## πŸš€ Highlights (New in v2) + +* **Agent-based architecture**: The Go-powered agent parses logs, exposes metrics, and supports multiple Traefik instances. +* **Multi-agent support**: Monitor multiple Traefik setups (e.g., production, staging) from one dashboard. +* **Next.js 14 frontend**: Real-time charts, filters, and system stats in a responsive UI. +* **Enhanced GeoIP**: Supports both **City** and **Country** MaxMind databases. +* **System monitoring**: Built-in CPU, memory, and disk tracking. +* **Bearer token authentication**: Secure access between dashboard and agents. +* **Backward compatible** with existing Traefik log setups. + +--- ## Prerequisites -* Docker + Docker Compose -* Traefik v3.0+ (for OTLP) or v2.x (logs only) -* A working Pangolin stack +* Docker + Docker Compose +* Traefik v2.x or v3.x (logs in JSON format) +* A working **Pangolin stack** +* (Optional) MaxMind GeoLite2 databases (City + Country) -## Step 1: Configure Traefik +--- -### For OTLP + Logs (Recommended) +## Step 1: Configure Traefik Logs -Update `./config/traefik/traefik_config.yml`: +Ensure Traefik is outputting **JSON logs** and **access logs** are written to a file. + +Update your `./config/traefik/traefik_config.yml`: ```yaml log: @@ -39,178 +49,254 @@ log: accessLog: filePath: "/var/log/traefik/access.log" format: json + fields: + defaultMode: keep + headers: + defaultMode: keep +```` -tracing: - otlp: - http: - endpoint: "http://log-dashboard-backend:4318/v1/traces" - sampleRate: 0.1 # Adjust as needed - 0.1 for 10% sampling - globalAttributes: - environment: "production" - service.version: "v3.0" - deployment.environment: "pangolin" -``` +> πŸ’‘ Tip: JSON format is required for accurate parsing by the new agent. -### For Logs Only +--- + +## Step 2: Add Dashboard and Agent Services + +Extend your existing `docker-compose.yml` with the new services. ```yaml -log: - level: INFO - filePath: "/var/log/traefik/traefik.log" - -accessLog: - filePath: "/var/log/traefik/access.log" - format: json -``` - -## Step 2: Add Dashboard Services - -Extend your existing `docker-compose.yml` with: - -```yaml - log-dashboard-backend: - image: ghcr.io/hhftechnology/traefik-log-dashboard-backend:latest - container_name: log-dashboard-backend +# Traefik Log Dashboard Agent + traefik-agent: + image: hhftechnology/traefik-log-dashboard-agent:latest restart: unless-stopped ports: - - "4317:4317" # OTLP gRPC - - "4318:4318" # OTLP HTTP + - "5000:5000" volumes: + - ./data/positions:/data - ./config/traefik/logs:/logs:ro - - ./config/maxmind:/maxmind:ro + - ./config/maxmind:/geoip:ro environment: - - PORT=3001 - - TRAEFIK_LOG_FILE=/logs/access.log - - OTLP_ENABLED=true - - OTLP_GRPC_PORT=4317 - - OTLP_HTTP_PORT=4318 - - USE_MAXMIND=true - - MAXMIND_DB_PATH=/maxmind/GeoLite2-City.mmdb - - MAXMIND_FALLBACK_ONLINE=true - - GOGC=50 - - GOMEMLIMIT=500MiB + # Log Paths + - TRAEFIK_LOG_DASHBOARD_ACCESS_PATH=/logs/access.log + - TRAEFIK_LOG_DASHBOARD_ERROR_PATH=/logs/traefik.log + + # Authentication + - TRAEFIK_LOG_DASHBOARD_AUTH_TOKEN=YOUR_API_TOKEN + + # System Monitoring + - TRAEFIK_LOG_DASHBOARD_SYSTEM_MONITORING=true + + # GeoIP Configuration + - TRAEFIK_LOG_DASHBOARD_GEOIP_ENABLED=true + - TRAEFIK_LOG_DASHBOARD_GEOIP_CITY_DB=/geoip/GeoLite2-City.mmdb + - TRAEFIK_LOG_DASHBOARD_GEOIP_COUNTRY_DB=/geoip/GeoLite2-Country.mmdb + + # Log Format + - TRAEFIK_LOG_DASHBOARD_LOG_FORMAT=json + + # Server Port + - PORT=5000 + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5000/api/logs/status"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 10s - log-dashboard-frontend: - image: ghcr.io/hhftechnology/traefik-log-dashboard-frontend:latest - container_name: log-dashboard-frontend + # Traefik Log Dashboard - Web UI + traefik-dashboard: + image: hhftechnology/traefik-log-dashboard:dev-oltp + container_name: traefik-log-dashboard restart: unless-stopped ports: - - "3000:80" + - "3000:3000" environment: - - BACKEND_SERVICE=log-dashboard-backend - - BACKEND_PORT=3001 + # Agent Configuration + - AGENT_API_URL=http://traefik-agent:5000 + - AGENT_API_TOKEN=YOUR_API_TOKEN + - NODE_ENV=production + - PORT=3000 depends_on: - - log-dashboard-backend + traefik-agent: + condition: service_healthy + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s ``` -## Step 3: Setup MaxMind GeoIP (Optional but Recommended) +Please replace the YOUR_API_TOKEN with a secure token of your choice. -1. Create a free MaxMind account β†’ [GeoLite2 signup](https://www.maxmind.com/en/geolite2/signup) -2. Generate a license key -3. Create directory: +> πŸ†• The new agent replaces both `log-dashboard-backend` and `log-dashboard-frontend` from the previous guide. + +--- + +## Step 3: Setup MaxMind GeoIP (City + Country) + +GeoIP is optional but highly recommended for geographic analytics and maps. + +### 1. Create a free MaxMind account + +πŸ‘‰ [GeoLite2 Signup](https://www.maxmind.com/en/geolite2/signup) +Generate a license key and export it for Docker use: ```bash +export MAXMIND_LICENSE_KEY=your_license_key_here mkdir -p ./config/maxmind -export MAXMIND_LICENSE_KEY=your_key_here ``` -4. (Optional) Add updater service: +### 2. Add the GeoIP Database Updater + +Append this to your `docker-compose.yml`: ```yaml + # Optional: MaxMind GeoIP Database Updater maxmind-updater: image: alpine:latest - container_name: maxmind-db-updater + restart: "no" volumes: - ./config/maxmind:/data environment: - - MAXMIND_LICENSE_KEY=${MAXMIND_LICENSE_KEY} + - MAXMIND_LICENSE_KEY=${MAXMIND_LICENSE_KEY:-your-license-key-here} command: > sh -c " apk add --no-cache wget tar && cd /data && - wget -O GeoLite2-City.tar.gz 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=$MAXMIND_LICENSE_KEY&suffix=tar.gz' && - tar -xzf GeoLite2-City.tar.gz --strip-components=1 '*/GeoLite2-City.mmdb' && - rm -f GeoLite2-City.tar.gz + if [ ! -f GeoLite2-City.mmdb ] || [ \"$(find . -name 'GeoLite2-City.mmdb' -mtime +7)\" ]; then + echo 'Updating GeoLite2-City database...' + wget -O GeoLite2-City.tar.gz 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=${MAXMIND_LICENSE_KEY}&suffix=tar.gz' && + tar --wildcards -xzf GeoLite2-City.tar.gz --strip-components=1 '*/GeoLite2-City.mmdb' && + rm -f GeoLite2-City.tar.gz + fi && + if [ ! -f GeoLite2-Country.mmdb ] || [ \"$(find . -name 'GeoLite2-Country.mmdb' -mtime +7)\" ]; then + echo 'Updating GeoLite2-Country database...' + wget -O GeoLite2-Country.tar.gz 'https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key=${MAXMIND_LICENSE_KEY}&suffix=tar.gz' && + tar --wildcards -xzf GeoLite2-Country.tar.gz --strip-components=1 '*/GeoLite2-Country.mmdb' && + rm -f GeoLite2-Country.tar.gz + fi && + echo 'GeoIP databases updated successfully.' " ``` -## Step 4: Launch Stack +--- + +## Step 4: Launch the Stack ```bash docker compose up -d docker compose ps ``` +--- + ## Step 5: Access the Dashboard -* **Frontend UI** β†’ [http://localhost:3000](http://localhost:3000) +* **Web UI** β†’ [http://localhost:3000](http://localhost:3000) +* Default data source: `traefik-agent:5000` + +You should see real-time traffic metrics, GeoIP maps, error tracking, and system performance indicators. + +--- ## Key Features -* **Real-time statistics** (requests, response times, error rates) -* **Interactive world map** (request origins via MaxMind) -* **Service insights** (performance by router/service) -* **Hybrid monitoring** (OTLP + logs together) +βœ… **Real-time analytics** for request rates, response times, and errors +βœ… **GeoIP maps** with both City and Country-level resolution +βœ… **System health** (CPU, memory, disk) +βœ… **Multi-agent support** (monitor multiple Traefik instances) +βœ… **Secure API authentication** via token +βœ… **Responsive modern UI** + +--- + +## Advanced: Multi-Agent Setup + +You can deploy multiple `traefik-agent` instances across environments and connect them all to a single dashboard. + +Example: + +```yaml + traefik-agent-prod: + image: hhftechnology/traefik-log-dashboard-agent:latest + ports: ["5000:5000"] + environment: + - TRAEFIK_LOG_DASHBOARD_AUTH_TOKEN=prod_token + - TRAEFIK_LOG_DASHBOARD_ACCESS_PATH=/logs/access.log + - TRAEFIK_LOG_DASHBOARD_GEOIP_ENABLED=true + volumes: + - /var/log/traefik/prod:/logs:ro + - ./config/maxmind:/geoip:ro + - ./data/positions-prod:/data + + traefik-agent-staging: + image: hhftechnology/traefik-log-dashboard-agent:latest + ports: ["5001:5000"] + environment: + - TRAEFIK_LOG_DASHBOARD_AUTH_TOKEN=staging_token + - TRAEFIK_LOG_DASHBOARD_ACCESS_PATH=/logs/access.log + volumes: + - /var/log/traefik/staging:/logs:ro + - ./config/maxmind:/geoip:ro + + traefik-dashboard: + image: hhftechnology/traefik-log-dashboard:latest + ports: ["3000:3000"] + environment: + - NODE_ENV=production +``` + +Then, in the **Dashboard β†’ Settings β†’ Agents**, add each agent URL and token. + +--- ## Performance Tuning -For production or high-traffic environments, you may want to adjust settings to optimize resource usage and throughput. +| Setting | Description | Recommended | +| ----------------------------------------- | -------------------------------- | ------------- | +| `TRAEFIK_LOG_DASHBOARD_SYSTEM_MONITORING` | Enables system stats | `true` | +| `TRAEFIK_LOG_DASHBOARD_LOG_FORMAT` | Log parsing format | `json` | +| `GOMEMLIMIT` | Go memory cap | `512MiB–1GiB` | +| `GOGC` | Garbage collector aggressiveness | `20–50` | +| `sampleRate` (Traefik) | Sampling rate for OTLP tracing | `0.1` (10%) | -### Reduce OTLP Sampling -Lower sampling to avoid overwhelming storage and dashboards: - -```yaml -tracing: - sampleRate: 0.1 # 10% sampling in production -```` - -### Prefer gRPC over HTTP - -For lower latency and higher throughput, enable gRPC instead of HTTP: +Example (Traefik OTLP tracing): ```yaml tracing: otlp: grpc: - endpoint: "log-dashboard-backend:4317" + endpoint: "traefik-agent:5000" insecure: true + sampleRate: 0.1 ``` -### Tune Backend Memory - -Set environment variables in `log-dashboard-backend`: - -```yaml -environment: - - GOGC=20 # More aggressive garbage collection - - GOMEMLIMIT=1GiB # Hard memory limit -``` - -### Resource Limits - -Add CPU and memory constraints to containers: - -```yaml -deploy: - resources: - limits: - cpus: "1.0" - memory: 512M - reservations: - cpus: "0.2" - memory: 128M -``` - -These adjustments help keep the dashboard responsive while minimizing resource overhead. - - -## Troubleshooting - -* **OTLP not showing** β†’ Check Traefik `tracing` config + ports `4317/4318` -* **Logs not loading** β†’ Ensure Traefik logs in JSON, volume mounted correctly -* **GeoIP errors** β†’ Verify `MAXMIND_LICENSE_KEY` and DB path -* **Maxmind download errors** β†’ Check license key validity by trying url with key directly in your browser -* **Docker logs for Traefik not showing** β†’ Use `docker exec -it traefik tail -f /var/log/traefik/traefik.log` instead of `docker logs traefik -f` to see real-time logs on the command line. - --- +## Troubleshooting + +| Issue | Cause | Fix | +| --------------------- | ------------------------ | ------------------------------------------------------------------- | +| Dashboard not loading | Container not healthy | `docker compose ps` β†’ check `health` | +| No logs appearing | Wrong log path or format | Ensure `access.log` is JSON and volume mounted | +| GeoIP missing | Missing databases | Run `maxmind-updater` or mount both `.mmdb` files | +| Auth errors | Token mismatch | Verify `AGENT_API_TOKEN` matches `TRAEFIK_LOG_DASHBOARD_AUTH_TOKEN` | +| Slow UI | Large logs | Use JSON logs + incremental read; prune logs periodically | + +--- + +## Summary + +βœ… Replaces the old `log-dashboard-backend` + `log-dashboard-frontend` with the new **agent-based architecture** +βœ… Supports **multiple Traefik instances** +βœ… Adds **GeoLite2 Country + City databases** +βœ… Integrates **real-time analytics + system monitoring** +βœ… Uses **MaxMind license key** for authentication and updates + +--- + +**Project Repository** β†’ [https://github.com/hhftechnology/traefik-log-dashboard](https://github.com/hhftechnology/traefik-log-dashboard) +**Discord Community** β†’ [Join here](https://discord.gg/HDCt9MjyMJ) + +``` + From a1b2ea72520a7c5202f9c2260d199a55cb9d9fbb Mon Sep 17 00:00:00 2001 From: Ivo Brett Date: Fri, 17 Oct 2025 14:41:43 +0100 Subject: [PATCH 03/15] removed emojis and otlp --- .../community-guides/traefiklogsdashboard.mdx | 43 +++++++------------ 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/self-host/community-guides/traefiklogsdashboard.mdx b/self-host/community-guides/traefiklogsdashboard.mdx index 2eb014c..508aac1 100644 --- a/self-host/community-guides/traefiklogsdashboard.mdx +++ b/self-host/community-guides/traefiklogsdashboard.mdx @@ -13,7 +13,7 @@ The **new Traefik Log Dashboard (v2)** introduces a **lightweight agent-based ar --- -## πŸš€ Highlights (New in v2) +## Highlights (New in v2) * **Agent-based architecture**: The Go-powered agent parses logs, exposes metrics, and supports multiple Traefik instances. * **Multi-agent support**: Monitor multiple Traefik setups (e.g., production, staging) from one dashboard. @@ -55,7 +55,7 @@ accessLog: defaultMode: keep ```` -> πŸ’‘ Tip: JSON format is required for accurate parsing by the new agent. +> Tip: JSON format is required for accurate parsing by the new agent. --- @@ -138,7 +138,7 @@ GeoIP is optional but highly recommended for geographic analytics and maps. ### 1. Create a free MaxMind account -πŸ‘‰ [GeoLite2 Signup](https://www.maxmind.com/en/geolite2/signup) +[GeoLite2 Signup](https://www.maxmind.com/en/geolite2/signup) Generate a license key and export it for Docker use: ```bash @@ -201,12 +201,12 @@ You should see real-time traffic metrics, GeoIP maps, error tracking, and system ## Key Features -βœ… **Real-time analytics** for request rates, response times, and errors -βœ… **GeoIP maps** with both City and Country-level resolution -βœ… **System health** (CPU, memory, disk) -βœ… **Multi-agent support** (monitor multiple Traefik instances) -βœ… **Secure API authentication** via token -βœ… **Responsive modern UI** +**Real-time analytics** for request rates, response times, and errors +**GeoIP maps** with both City and Country-level resolution +**System health** (CPU, memory, disk) +**Multi-agent support** (monitor multiple Traefik instances) +**Secure API authentication** via token +**Responsive modern UI** --- @@ -256,20 +256,7 @@ Then, in the **Dashboard β†’ Settings β†’ Agents**, add each agent URL and token | ----------------------------------------- | -------------------------------- | ------------- | | `TRAEFIK_LOG_DASHBOARD_SYSTEM_MONITORING` | Enables system stats | `true` | | `TRAEFIK_LOG_DASHBOARD_LOG_FORMAT` | Log parsing format | `json` | -| `GOMEMLIMIT` | Go memory cap | `512MiB–1GiB` | -| `GOGC` | Garbage collector aggressiveness | `20–50` | -| `sampleRate` (Traefik) | Sampling rate for OTLP tracing | `0.1` (10%) | -Example (Traefik OTLP tracing): - -```yaml -tracing: - otlp: - grpc: - endpoint: "traefik-agent:5000" - insecure: true - sampleRate: 0.1 -``` --- @@ -287,16 +274,16 @@ tracing: ## Summary -βœ… Replaces the old `log-dashboard-backend` + `log-dashboard-frontend` with the new **agent-based architecture** -βœ… Supports **multiple Traefik instances** -βœ… Adds **GeoLite2 Country + City databases** -βœ… Integrates **real-time analytics + system monitoring** -βœ… Uses **MaxMind license key** for authentication and updates +Replaces the old `log-dashboard-backend` + `log-dashboard-frontend` with the new **agent-based architecture** +Supports **multiple Traefik instances** +Adds **GeoLite2 Country + City databases** +Integrates **real-time analytics + system monitoring** +Uses **MaxMind license key** for authentication and updates +More stable with less memory --- **Project Repository** β†’ [https://github.com/hhftechnology/traefik-log-dashboard](https://github.com/hhftechnology/traefik-log-dashboard) -**Discord Community** β†’ [Join here](https://discord.gg/HDCt9MjyMJ) ``` From 778292b77021de77ef7d0618a836d77d2f4a8755 Mon Sep 17 00:00:00 2001 From: Ivo Brett Date: Fri, 17 Oct 2025 14:43:07 +0100 Subject: [PATCH 04/15] removed emojis and otlp --- self-host/community-guides/traefiklogsdashboard.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/self-host/community-guides/traefiklogsdashboard.mdx b/self-host/community-guides/traefiklogsdashboard.mdx index 508aac1..b845bc0 100644 --- a/self-host/community-guides/traefiklogsdashboard.mdx +++ b/self-host/community-guides/traefiklogsdashboard.mdx @@ -128,7 +128,7 @@ Extend your existing `docker-compose.yml` with the new services. Please replace the YOUR_API_TOKEN with a secure token of your choice. -> πŸ†• The new agent replaces both `log-dashboard-backend` and `log-dashboard-frontend` from the previous guide. +> Note: The new agent replaces both `log-dashboard-backend` and `log-dashboard-frontend` from the previous guide. --- From 5223faa30e8d11e2ee20cfd07eccebec61e19df4 Mon Sep 17 00:00:00 2001 From: Ivo Brett Date: Fri, 17 Oct 2025 14:44:25 +0100 Subject: [PATCH 05/15] removed emojis and otlp --- self-host/community-guides/traefiklogsdashboard.mdx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/self-host/community-guides/traefiklogsdashboard.mdx b/self-host/community-guides/traefiklogsdashboard.mdx index b845bc0..75c9673 100644 --- a/self-host/community-guides/traefiklogsdashboard.mdx +++ b/self-host/community-guides/traefiklogsdashboard.mdx @@ -274,12 +274,12 @@ Then, in the **Dashboard β†’ Settings β†’ Agents**, add each agent URL and token ## Summary -Replaces the old `log-dashboard-backend` + `log-dashboard-frontend` with the new **agent-based architecture** -Supports **multiple Traefik instances** -Adds **GeoLite2 Country + City databases** -Integrates **real-time analytics + system monitoring** -Uses **MaxMind license key** for authentication and updates -More stable with less memory +- Replaces the old `log-dashboard-backend` + `log-dashboard-frontend` with the new **agent-based architecture** +- Supports **multiple Traefik instances** +- Adds **GeoLite2 Country + City databases** +- Integrates **real-time analytics + system monitoring** +- Uses **MaxMind license key** for authentication and updates +- More stable with less memory --- From 65d821a9e6b8d04571107120c4709a21a3ce1760 Mon Sep 17 00:00:00 2001 From: Ivo Brett Date: Fri, 17 Oct 2025 14:45:04 +0100 Subject: [PATCH 06/15] removed emojis and otlp --- self-host/community-guides/traefiklogsdashboard.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/self-host/community-guides/traefiklogsdashboard.mdx b/self-host/community-guides/traefiklogsdashboard.mdx index 75c9673..6f284de 100644 --- a/self-host/community-guides/traefiklogsdashboard.mdx +++ b/self-host/community-guides/traefiklogsdashboard.mdx @@ -278,7 +278,7 @@ Then, in the **Dashboard β†’ Settings β†’ Agents**, add each agent URL and token - Supports **multiple Traefik instances** - Adds **GeoLite2 Country + City databases** - Integrates **real-time analytics + system monitoring** -- Uses **MaxMind license key** for authentication and updates +- Uses **MaxMind license key** for GeoIP updates - More stable with less memory --- From 7fc72950d1f897a6321838878ccb62de2b493972 Mon Sep 17 00:00:00 2001 From: Ivo Brett Date: Fri, 17 Oct 2025 15:03:24 +0100 Subject: [PATCH 07/15] moved log dashboard to latest image tag --- self-host/community-guides/traefiklogsdashboard.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/self-host/community-guides/traefiklogsdashboard.mdx b/self-host/community-guides/traefiklogsdashboard.mdx index 6f284de..17cd212 100644 --- a/self-host/community-guides/traefiklogsdashboard.mdx +++ b/self-host/community-guides/traefiklogsdashboard.mdx @@ -104,7 +104,7 @@ Extend your existing `docker-compose.yml` with the new services. # Traefik Log Dashboard - Web UI traefik-dashboard: - image: hhftechnology/traefik-log-dashboard:dev-oltp + image: hhftechnology/traefik-log-dashboard:latest container_name: traefik-log-dashboard restart: unless-stopped ports: From e97d482d8be774cb34ae4e5bd55a8235e27f75f3 Mon Sep 17 00:00:00 2001 From: miloschwartz Date: Sat, 18 Oct 2025 11:55:35 -0700 Subject: [PATCH 08/15] change digpangolin.com tp pangolin.net --- README.md | 2 +- development/feature-requests-and-bug-reports.mdx | 2 +- docs.json | 12 ++++++------ manage/clients/install-client.mdx | 2 +- manage/remote-node/quick-install-remote.mdx | 2 +- manage/sites/install-site.mdx | 2 +- manage/sites/update-site.mdx | 2 +- self-host/advanced/enable-geoblocking.mdx | 2 +- self-host/community-guides/overview.mdx | 2 +- self-host/quick-install.mdx | 2 +- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 592c4b1..cf983ec 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Pangolin Documentation -Welcome to the official documentation for [Pangolin](https://github.com/fosrl/pangolin), a modern reverse proxy and networking solution. This documentation site is hosted at [docs.digpangolin.com](https://docs.digpangolin.com) and provides comprehensive guides, API references, and resources for getting started with Pangolin. +Welcome to the official documentation for [Pangolin](https://github.com/fosrl/pangolin), a modern reverse proxy and networking solution. This documentation site is hosted at [docs.pangolin.net](https://docs.pangolin.net) and provides comprehensive guides, API references, and resources for getting started with Pangolin. ## About This Documentation diff --git a/development/feature-requests-and-bug-reports.mdx b/development/feature-requests-and-bug-reports.mdx index 118346b..a08a32c 100644 --- a/development/feature-requests-and-bug-reports.mdx +++ b/development/feature-requests-and-bug-reports.mdx @@ -57,6 +57,6 @@ Please provide as much detail as possible to help developers reproduce and fix t - For general questions, use [GitHub Discussions](https://github.com/fosrl/pangolin/discussions) with the "Q&A" category, or come chat with us on [Discord](https://digpangolin.com/discord). + For general questions, use [GitHub Discussions](https://github.com/fosrl/pangolin/discussions) with the "Q&A" category, or come chat with us on [Discord](https://pangolin.net/discord). diff --git a/docs.json b/docs.json index 1b9004d..3aeec33 100644 --- a/docs.json +++ b/docs.json @@ -143,11 +143,11 @@ }, { "tab": "Blog", - "href": "https://digpangolin.com/blog" + "href": "https://pangolin.net/blog" }, { "tab": "Website", - "href": "https://digpangolin.com" + "href": "https://pangolin.net/" } ], "global": { @@ -159,12 +159,12 @@ }, { "anchor": "Slack", - "href": "https://digpangolin.com/slack", + "href": "https://pangolin.net/slack", "icon": "slack" }, { "anchor": "Discord", - "href": "https://digpangolin.com/discord", + "href": "https://pangolin.net/discord", "icon": "discord" } ] @@ -173,7 +173,7 @@ "logo": { "light": "/logo/light.png", "dark": "/logo/dark.png", - "href": "https://docs.digpangolin.com" + "href": "https://docs.pangolin.net" }, "navbar": { "links": [ @@ -197,7 +197,7 @@ "integrations": { "posthog": { "apiKey": "phc_RIHQ7o2Y2hf8qms2nP62vpoJHEvsrw6TieflQGQO7yI", - "apiHost": "https://digpangolin.com/relay-O7yI" + "apiHost": "https://pangolin.net/relay-O7yI" } }, "redirects": [ diff --git a/manage/clients/install-client.mdx b/manage/clients/install-client.mdx index 12c7041..fd5a2c5 100644 --- a/manage/clients/install-client.mdx +++ b/manage/clients/install-client.mdx @@ -16,7 +16,7 @@ You **must first create a client and copy the Olm config** in Pangolin before ru Use this command to automatically install Olm. It detects your system architecture automatically and always pulls the latest version, adding Olm to your PATH: ```bash -curl -fsSL https://digpangolin.com/get-olm.sh | bash +curl -fsSL https://pangolin.net/get-olm.sh | bash ``` ### Manual Download diff --git a/manage/remote-node/quick-install-remote.mdx b/manage/remote-node/quick-install-remote.mdx index 5a0aaf5..2756b7f 100644 --- a/manage/remote-node/quick-install-remote.mdx +++ b/manage/remote-node/quick-install-remote.mdx @@ -39,7 +39,7 @@ Before installing Pangolin, ensure you've opened the required port on your firew Connect to your server via SSH and download the installer: ```bash - curl -fsSL https://digpangolin.com/get-node-installer.sh | bash + curl -fsSL https://pangolin.net/get-node-installer.sh | bash ``` The installer supports both AMD64 (x86_64) and ARM64 architectures. diff --git a/manage/sites/install-site.mdx b/manage/sites/install-site.mdx index d20813b..99c7f25 100644 --- a/manage/sites/install-site.mdx +++ b/manage/sites/install-site.mdx @@ -32,7 +32,7 @@ You **must first create a site and copy the Newt config** in Pangolin before run Use this command to automatically install Newt. It detects your system architecture automatically and always pulls the latest version, adding Newt to your PATH: ```bash -curl -fsSL https://digpangolin.com/get-newt.sh | bash +curl -fsSL https://pangolin.net/get-newt.sh | bash ``` ### Manual Download diff --git a/manage/sites/update-site.mdx b/manage/sites/update-site.mdx index 9c1110a..4ec7d93 100644 --- a/manage/sites/update-site.mdx +++ b/manage/sites/update-site.mdx @@ -32,7 +32,7 @@ docker compose up -d newt If you used the auto installer, simply run it again. ```bash -curl -fsSL https://digpangolin.com/get-newt.sh | bash +curl -fsSL https://pangolin.net/get-newt.sh | bash ``` ### Manual Installation diff --git a/self-host/advanced/enable-geoblocking.mdx b/self-host/advanced/enable-geoblocking.mdx index bc7a7e6..830c8fd 100644 --- a/self-host/advanced/enable-geoblocking.mdx +++ b/self-host/advanced/enable-geoblocking.mdx @@ -12,7 +12,7 @@ Remember to keep the GeoIP database updated regularly, as IP-to-country mappings You can use the installer to download and place the database for you, just grab the latest installer: ```bash - curl -fsSL https://digpangolin.com/get-installer.sh | bash + curl -fsSL https://pangolin.net/get-installer.sh | bash ``` Then run the installer again: diff --git a/self-host/community-guides/overview.mdx b/self-host/community-guides/overview.mdx index 2493413..bcdee69 100644 --- a/self-host/community-guides/overview.mdx +++ b/self-host/community-guides/overview.mdx @@ -3,7 +3,7 @@ title: "Overview" --- -These are community written guides and are not officially supported. If you have any issues, please reach out to the authors or the community on [Discord](https://digpangolin.com/discord) or [Github discussions](https://github.com/orgs/fosrl/discussions). +These are community written guides and are not officially supported. If you have any issues, please reach out to the authors or the community on [Discord](https://pangolin.net/discord) or [Github discussions](https://github.com/orgs/fosrl/discussions). The modular design of this system enables the extension of its functionality through the integration of existing Traefik plugins, such as Crowdsec and Geoblock. diff --git a/self-host/quick-install.mdx b/self-host/quick-install.mdx index d30fe16..520e90b 100644 --- a/self-host/quick-install.mdx +++ b/self-host/quick-install.mdx @@ -32,7 +32,7 @@ Before installing Pangolin, ensure you've set up DNS for your domain(s) and open Connect to your server via SSH and download the installer: ```bash - curl -fsSL https://digpangolin.com/get-installer.sh | bash + curl -fsSL https://pangolin.net/get-installer.sh | bash ``` The installer supports both AMD64 (x86_64) and ARM64 architectures. From cc852cb02454616fe7f3e30fab623ccd85bbab71 Mon Sep 17 00:00:00 2001 From: miloschwartz Date: Sat, 18 Oct 2025 14:13:39 -0700 Subject: [PATCH 09/15] fix typo in home assistant rules --- manage/access-control/rules.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manage/access-control/rules.mdx b/manage/access-control/rules.mdx index d2dcf12..630695a 100644 --- a/manage/access-control/rules.mdx +++ b/manage/access-control/rules.mdx @@ -134,7 +134,7 @@ This table compiles paths that need to be allowed for various apps to work with | **Notifications** | | | Gotify | `/version`
`/message`
`/application`
`/client`
`/stream`
`/plugin`
`/health` | | **Home Automation** | | -| Home Assistant | `/api/*`
`/auth/*`
`/frontend_latest/*`
`/lovelace*`
`/static/*`
`/hacsfile/*`
`/local/*` | +| Home Assistant | `/api/*`
`/auth/*`
`/frontend_latest/*`
`/lovelace*`
`/static/*`
`/hacsfiles/*`
`/local/*` | | n8n | `/webhook-test/*/webhook`
`/webhook/*/webhook` | | **Project Management** | | | Jetbrains Youtrack | `/api/*`
`/hub/api/*`
| From f790e249546b92ca718d84f9f3748488b5c3cfb0 Mon Sep 17 00:00:00 2001 From: Owen Date: Sat, 18 Oct 2025 14:29:30 -0700 Subject: [PATCH 10/15] Update api docs --- manage/blueprints.mdx | 6 +++++- manage/integration-api.mdx | 2 +- manage/integration-api/using-the-integration-api.mdx | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/manage/blueprints.mdx b/manage/blueprints.mdx index 3fed6f0..d2ecc3f 100644 --- a/manage/blueprints.mdx +++ b/manage/blueprints.mdx @@ -36,7 +36,7 @@ YAML config can be applied using the API or from a Newt site. _Application throu - You can also apply blueprints directly through the Pangolin API with an API key. [Take a look at the API documentation for more details.](https://api.pangolin.fossorial.io/v1/docs/#/Organization/put_org__orgId__blueprint) + You can also apply blueprints directly through the Pangolin API with an API key. [Take a look at the API documentation for more details.](https://api.pangolin.net/v1/docs/#/Organization/put_org__orgId__blueprint) POST to `/org/{orgId}/blueprint` with a base64 encodes JSON body like the following: @@ -113,6 +113,9 @@ proxy-resources: auth: pincode: 123456 password: your-secure-password + basic-auth: + user: asdfa + password: sadf sso-enabled: true sso-roles: - Member @@ -283,6 +286,7 @@ Not allowed on TCP/UDP resources. |----------|------|----------|-------------|-------------| | `pincode` | number | No | 6-digit PIN for access | Must be exactly 6 digits | | `password` | string | No | Password for access | - | +| `basic-auth` | object | No | Basic authentication configuration | Requires `user` and `password` fields | | `sso-enabled` | boolean | No | Enable SSO authentication | Defaults to `false` | | `sso-roles` | array | No | Allowed SSO roles | Cannot include "Admin" role | | `sso-users` | array | No | Allowed SSO user emails | Must be valid email addresses | diff --git a/manage/integration-api.mdx b/manage/integration-api.mdx index 68fa56d..f860bed 100644 --- a/manage/integration-api.mdx +++ b/manage/integration-api.mdx @@ -83,7 +83,7 @@ Root API keys have elevated permissions and should be used carefully. Only creat ## API Documentation -View the Swagger docs here: [https://api.pangolin.fossorial.io/v1/docs](https://api.pangolin.fossorial.io/v1/docs). +View the Swagger docs here: [https://api.pangolin.net/v1/docs](https://api.pangolin.net/v1/docs). Interactive API documentation is available through Swagger UI: diff --git a/manage/integration-api/using-the-integration-api.mdx b/manage/integration-api/using-the-integration-api.mdx index 586e5d1..463f70d 100644 --- a/manage/integration-api/using-the-integration-api.mdx +++ b/manage/integration-api/using-the-integration-api.mdx @@ -83,7 +83,7 @@ Root API keys have elevated permissions and should be used carefully. Only creat ## API Documentation -View the Swagger docs here: [https://api.pangolin.fossorial.io/v1/docs](https://api.pangolin.fossorial.io/v1/docs). +View the Swagger docs here: [https://api.pangolin.net/v1/docs](https://api.pangolin.net/v1/docs). Interactive API documentation is available through Swagger UI: From 3325671b5d38263e4e5980ef8533515a256eb067 Mon Sep 17 00:00:00 2001 From: Owen Date: Sat, 18 Oct 2025 15:07:42 -0700 Subject: [PATCH 11/15] Update port --- development/contributing.mdx | 2 +- self-host/manual/docker-compose.mdx | 2 +- self-host/manual/manual-install.mdx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/development/contributing.mdx b/development/contributing.mdx index 4b1c6c0..aad8d26 100644 --- a/development/contributing.mdx +++ b/development/contributing.mdx @@ -154,7 +154,7 @@ The easiest way to resolve this is to run Gerbil and have it register in your de ```bash ./gerbil \ ---reachableAt=http://gerbil:3003 \ +--reachableAt=http://gerbil:3004 \ --generateAndSaveKeyTo=/var/config/key \ --remoteConfig=http://pangolin:3001/api/v1/ ``` diff --git a/self-host/manual/docker-compose.mdx b/self-host/manual/docker-compose.mdx index f2d4ad4..5cb68b3 100644 --- a/self-host/manual/docker-compose.mdx +++ b/self-host/manual/docker-compose.mdx @@ -160,7 +160,7 @@ services: pangolin: condition: service_healthy command: - - --reachableAt=http://gerbil:3003 + - --reachableAt=http://gerbil:3004 - --generateAndSaveKeyTo=/var/config/key - --remoteConfig=http://pangolin:3001/api/v1/ volumes: diff --git a/self-host/manual/manual-install.mdx b/self-host/manual/manual-install.mdx index 77d78ab..dfcb0b4 100644 --- a/self-host/manual/manual-install.mdx +++ b/self-host/manual/manual-install.mdx @@ -141,7 +141,7 @@ services: pangolin: condition: service_healthy command: - - --reachableAt=http://gerbil:3003 + - --reachableAt=http://gerbil:3004 - --generateAndSaveKeyTo=/var/config/key - --remoteConfig=http://pangolin:3001/api/v1/ volumes: From 62eb2ae9badd0cb826aa184da1c472223fcf1f08 Mon Sep 17 00:00:00 2001 From: Owen Date: Sat, 18 Oct 2025 20:43:31 -0700 Subject: [PATCH 12/15] Remove health file Fix fosrl/olm#44 --- manage/clients/configure-client.mdx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/manage/clients/configure-client.mdx b/manage/clients/configure-client.mdx index ec4ef4e..a7d5633 100644 --- a/manage/clients/configure-client.mdx +++ b/manage/clients/configure-client.mdx @@ -85,12 +85,6 @@ Olm creates a virtual network adapter on your computer just like a traditional V - - Check if connection to WireGuard server (Pangolin) is ok. Creates a file if ok, removes it if not ok. Can be used with Docker healthcheck to restart Olm. - - **Example**: `/tmp/olm-health` - - Path to a configuration file containing the same arguments as command line. From 6b5b35fbec840a5723eef7ea2fd16f6885b75bce Mon Sep 17 00:00:00 2001 From: miloschwartz Date: Sat, 18 Oct 2025 21:05:36 -0700 Subject: [PATCH 13/15] update integration api default port --- self-host/advanced/integration-api.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/self-host/advanced/integration-api.mdx b/self-host/advanced/integration-api.mdx index 207707d..5f1cac3 100644 --- a/self-host/advanced/integration-api.mdx +++ b/self-host/advanced/integration-api.mdx @@ -14,11 +14,11 @@ flags: enable_integration_api: true ``` -If you want to specify a port other than the default `3003`, you can do so in the config as well: +If you want to specify a port other than the default `3004`, you can do so in the config as well: ```yaml title="config.yml" server: - integration_port: 3003 # Specify different port + integration_port: 3004 # Specify different port ``` ## Configure Traefik Routing @@ -49,7 +49,7 @@ Add the following configuration to your `config/traefik/dynamic_config.yml` to e int-api-service: loadBalancer: servers: - - url: "http://pangolin:3003" + - url: "http://pangolin:3004" ``` ## Access Documentation From 21123ae80c2bd6f4acd785f3c974edcfc51acfcb Mon Sep 17 00:00:00 2001 From: miloschwartz Date: Sun, 19 Oct 2025 11:56:46 -0700 Subject: [PATCH 14/15] move int api to 3003 --- self-host/advanced/config-file.mdx | 2 +- self-host/advanced/integration-api.mdx | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/self-host/advanced/config-file.mdx b/self-host/advanced/config-file.mdx index 8918028..4c47916 100644 --- a/self-host/advanced/config-file.mdx +++ b/self-host/advanced/config-file.mdx @@ -121,7 +121,7 @@ This section contains the complete reference for all configuration options in `c The port for the integration API (optional). - **Example**: `3004` + **Example**: `3003` diff --git a/self-host/advanced/integration-api.mdx b/self-host/advanced/integration-api.mdx index 5f1cac3..207707d 100644 --- a/self-host/advanced/integration-api.mdx +++ b/self-host/advanced/integration-api.mdx @@ -14,11 +14,11 @@ flags: enable_integration_api: true ``` -If you want to specify a port other than the default `3004`, you can do so in the config as well: +If you want to specify a port other than the default `3003`, you can do so in the config as well: ```yaml title="config.yml" server: - integration_port: 3004 # Specify different port + integration_port: 3003 # Specify different port ``` ## Configure Traefik Routing @@ -49,7 +49,7 @@ Add the following configuration to your `config/traefik/dynamic_config.yml` to e int-api-service: loadBalancer: servers: - - url: "http://pangolin:3004" + - url: "http://pangolin:3003" ``` ## Access Documentation From d288bca3efb6a10131ac4e2ea41b1bed5721ffbb Mon Sep 17 00:00:00 2001 From: Owen Date: Sun, 19 Oct 2025 15:13:17 -0700 Subject: [PATCH 15/15] Update domain --- about/how-pangolin-works.mdx | 2 +- about/pangolin-vs-traditional-reverse-proxy.mdx | 2 +- about/pangolin-vs-vpn.mdx | 2 +- docs.json | 4 ++-- index.mdx | 2 +- manage/access-control/login-page.mdx | 2 +- manage/blueprints.mdx | 2 +- manage/domains.mdx | 10 +++++----- manage/remote-node/config-file.mdx | 8 ++++---- manage/remote-node/convert-remote.mdx | 4 ++-- manage/remote-node/quick-install-remote.mdx | 6 +++--- manage/sites/configure-site.mdx | 10 +++++----- manage/sites/install-site.mdx | 2 +- self-host/enterprise-edition.mdx | 6 +++--- self-host/supporter-program.mdx | 2 +- 15 files changed, 32 insertions(+), 32 deletions(-) diff --git a/about/how-pangolin-works.mdx b/about/how-pangolin-works.mdx index 04a8082..161fbb6 100644 --- a/about/how-pangolin-works.mdx +++ b/about/how-pangolin-works.mdx @@ -32,7 +32,7 @@ Pangolin provides secure, application-specific ingress to your applications thro ## Deployment Options - + Large network of nodes with automatic failover and routing to your backend services. We host the Pangolin server for you. diff --git a/about/pangolin-vs-traditional-reverse-proxy.mdx b/about/pangolin-vs-traditional-reverse-proxy.mdx index 6397ac5..90266fb 100644 --- a/about/pangolin-vs-traditional-reverse-proxy.mdx +++ b/about/pangolin-vs-traditional-reverse-proxy.mdx @@ -109,6 +109,6 @@ Unlike traditional reverse proxies, Pangolin authenticates every single request, | **Authentication** | Basic or none | Advanced, multi-factor | | **Scalability** | Manual scaling | Automatic regional distribution | - + Get distributed, authenticated access to your applications with Pangolin's regional network of nodes. diff --git a/about/pangolin-vs-vpn.mdx b/about/pangolin-vs-vpn.mdx index 344f3aa..b5c9935 100644 --- a/about/pangolin-vs-vpn.mdx +++ b/about/pangolin-vs-vpn.mdx @@ -81,7 +81,7 @@ Multiple nodes ensure high availability. | **Infrastructure** | Single server | Distributed nodes | | **Security Model** | Network-based trust | Identity-based trust | - + Get application-specific access with zero-trust security and no client software required. diff --git a/docs.json b/docs.json index 3aeec33..d44fcb5 100644 --- a/docs.json +++ b/docs.json @@ -179,13 +179,13 @@ "links": [ { "label": "Contact Us", - "href": "mailto:numbat@fossorial.io" + "href": "mailto:numbat@pangolin.net" } ], "primary": { "type": "button", "label": "Pangolin Dashboard", - "href": "https://pangolin.fossorial.io" + "href": "https://app.pangolin.net" } }, "footer": { diff --git a/index.mdx b/index.mdx index 163d93e..ce851e4 100644 --- a/index.mdx +++ b/index.mdx @@ -11,7 +11,7 @@ Pangolin is an open-source and identity-aware tunneled reverse proxy server. Pan Pangolin establishes secure connections from edge networks to 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. - + Use Cloud for a highly available and access-controlled ingress service with nodes all over the world. Optionally self-host a node to keep your traffic private. diff --git a/manage/access-control/login-page.mdx b/manage/access-control/login-page.mdx index c872ae7..f63da70 100644 --- a/manage/access-control/login-page.mdx +++ b/manage/access-control/login-page.mdx @@ -7,7 +7,7 @@ description: "Configure a custom authentication page URL for your organization" Custom auth pages are only available in Pangolin Cloud. -Custom organization authentication pages let you serve the login page at your own domain instead of the default `pangolin.fossorial.io`. This provides better user experience and brand consistency. +Custom organization authentication pages let you serve the login page at your own domain instead of the default `app.pangolin.net`. This provides better user experience and brand consistency.