Skip to main content
The Pangolin Helm chart is currently alpha (0.1.0-alpha.0). Test installs and upgrades in a non-production environment before using the chart for production traffic.

What Pangolin deploys

The Pangolin Helm chart deploys the Pangolin control plane and related Kubernetes components. Depending on the selected values, the chart can deploy:
  • Pangolin application: dashboard, API, authentication, configuration, and application state.
  • pangolin-kube-controller: Kubernetes controller used in controller mode.
  • Gerbil: WireGuard tunnel manager used by the Pangolin tunnel stack.
  • Traefik integration: Traefik CRD-based routing in controller mode, bundled Traefik controller when enabled, or standalone Traefik mode.
  • Database backend: CloudNativePG, external PostgreSQL, embedded PostgreSQL, or SQLite.
See Version Matrix for chart and default app version references.

Gerbil setup in the Pangolin chart

This chart deploys Gerbil when gerbil.enabled=true. This is the default when using deployment.type=controller and recommended.
If Gerbil is exposed through a reverse proxy or UDP gateway, keep proxy protocol settings aligned end-to-end. Do not enable proxy protocol on the upstream hop unless Gerbil is configured to accept it.

Prerequisites

Before installing Pangolin, you need:
  • Kubernetes 1.30.14 or newer.
  • Helm 3.x.
  • kubectl access to the target cluster.
  • A namespace prepared for the install.
  • A StorageClass if you use chart-managed persistent storage.
  • DNS records for the Pangolin dashboard and tunnel endpoint.
  • Traefik CRDs and a Traefik controller when using deployment.type=controller.
  • A database plan: CloudNativePG, external PostgreSQL, embedded PostgreSQL, or SQLite.
See Prerequisites for detailed cluster, namespace, storage, networking, and security requirements. This quick install uses:
  • deployment.type=controller
  • deployment.mode=multi
  • database.mode=cloudnativepg
  • chart-managed CloudNativePG operator and cluster
  • chart-managed dashboard IngressRoute
  • Traefik cert resolver for TLS
This example assumes a Traefik controller is available and can process the chart-managed IngressRoute. If you want the chart to install the bundled Traefik controller, set deployment.installTraefikController=true.

Step 1: Create the namespace

Create the namespace before installing the chart:
Gerbil requires NET_ADMIN for WireGuard interface management. If your cluster enforces Pod Security Admission, label the namespace accordingly:
Do not use a restricted Pod Security profile for a namespace running Gerbil unless you have validated the selected chart mode. Gerbil requires NET_ADMIN for WireGuard.

Step 2: Create a Pangolin app secret

Create a Secret for SERVER_SECRET:
Use a long random value. Do not commit this secret to Git.

Step 3: Create a values file

Create values-pangolin.yaml:
Important points:
  • Replace pangolin.example.com, example.com, and vpn.example.com.
  • Keep pangolin.config.gerbil.start_port aligned with gerbil.ports.wg1.
  • Keep pangolin.config.gerbil.clients_start_port aligned with gerbil.ports.wg2.
  • Use gerbil.startupMode=delayed for the first install if Gerbil should not start before the initial Pangolin setup is complete.
The chart defaults to deployment.type=controller, deployment.mode=multi, database.mode=cloudnativepg, and NetworkPolicy rendering enabled. Gerbil startupMode supports normal, delayed, and disabledUntilSetup. ([GitHub][1])

Step 4: Install Pangolin

Add the Helm repository:
Install Pangolin:
Do not use --create-namespace here. The namespace was created and labeled before installation.

Step 5: Verify the deployment

Check Helm release status:
Check workloads:
Check Services:
Check Traefik IngressRoute resources:
If Traefik CRDs are not installed, this command will fail. In that case, install Traefik CRDs or enable/install the Traefik controller path required by your selected deployment mode. Wait for the Pangolin pod to become ready:

Accessing the dashboard

After DNS and Traefik routing are configured, access Pangolin through the dashboard URL:
The API route is exposed under:
For a temporary local check, port-forward the dashboard/UI port:
Then open:
The chart routes /api/v1 to the Pangolin external/API port and the dashboard route to the Next/UI port. The default service ports are 3000 for external/API and 3002 for the dashboard/UI. ([GitHub][1])

Switch Gerbil to normal startup

If you installed with gerbil.startupMode=delayed, switch Gerbil to normal mode after the initial setup is complete:
Check Gerbil resources:

Upgrade

Update the Helm repository:
Upgrade the release:
Check upgrade status:
Rollback if needed:

OCI install

The Pangolin chart is also published as an OCI chart in GHCR. Pull the chart:
Install from OCI:
OCI changes where Helm pulls the chart from. It does not change the values file or the release behavior.

Architecture overview

Recommended deployment mode:
In this topology: Database modes: The chart supports cloudnativepg, external, embedded, and sqlite database modes. The chart comments mark cloudnativepg as the preferred production mode and SQLite as development/test only. ([GitHub][1])

Chart signing

The chart metadata includes Artifact Hub signing information:
Use this metadata when verifying signed chart releases. The signing key and fingerprint are published in the chart annotations. ([GitHub][2])

References

Chart README

values.yaml

values.schema.json

Examples

Issues

Next steps

Full Configuration

Review Pangolin chart options.

Troubleshooting

Debug Pangolin deployment and routing issues.

Kustomize Install

Install Pangolin with rendered manifests and Kustomize overlays.

GitOps

Deploy Pangolin with Argo CD or Flux.