pcapillaryTry the prerelease
Server on Kubernetes

Install the server on Kubernetes

Download the public Helm chart, deploy an HTTP web console, and complete the first administrator login.

Before you start

Prepare the cluster and databases

The server chart installs the frontend, backend, and private decoder. It does not install PostgreSQL or an Ingress controller.

  • Kubernetes with Helm 3 and an existing Ingress controller. Step 3 provides ready-to-edit profiles for managed Azure, GCP, and AWS controllers, a generic controller, and Traefik.
  • Two PostgreSQL URLs: one control database and one capture database. They may use the same PostgreSQL server.
  • For host routing, a web hostname that resolves to the Ingress controller. Prefix routing can use the controller address without dedicated web DNS.
  • A collector hostname and TCP 8601 reachability from collector networks.
  • TCP 80 for web access, plus TCP 443 when host-based HTTPS is enabled.
Installation

Install the public Helm chart

01

Download and verify the chart

Shell
VERSION=0.1.9
curl -fLO https://github.com/qwerty-iot/pcapillary-releases/releases/download/v$VERSION/pcapillary-$VERSION.tgz
curl -fLO https://github.com/qwerty-iot/pcapillary-releases/releases/download/v$VERSION/SHA256SUMS
grep "pcapillary-$VERSION.tgz" SHA256SUMS | sha256sum --check -

The packaged chart automatically selects the matching backend, decoder, and frontend container tags.

02

Create the namespace and database Secret

Shell
kubectl create namespace pcapillary

kubectl -n pcapillary create secret generic pcapillary-database \
  --from-literal=control-database-url='postgresql://CONTROL_USER:CONTROL_PASSWORD@db.example.com:5432/pcapillary_control?sslmode=require' \
  --from-literal=capture-database-url='postgresql://CAPTURE_USER:CAPTURE_PASSWORD@db.example.com:5432/pcapillary_capture?sslmode=require'
03

Choose your Ingress platform and create a values file

All profiles use standard path-based routing: the console is served at /pcapillary and the API at /pcapillary/api. Choose the profile for the controller installed in your cluster.

Uses the AKS-managed application routing add-on and its standard Kubernetes IngressClass. This is the shortest AKS Ingress setup; Microsoft supports its managed NGINX path through November 2026 and recommends Gateway API for the longer term.

Prerequisite: Enable it first with: az aks approuting enable --resource-group RESOURCE_GROUP --name CLUSTER_NAME

pcapillary-values.yaml
http:
  ingress:
    controller: generic
    className: webapprouting.kubernetes.azure.com
    accessMode: path
    hostname: ""
    pathPrefix: /pcapillary
    annotations: {}
Platform Ingress documentation

Add the collector URL to the same values file for every platform:

pcapillary-values.yaml
collector:
  publicURL: https://collector.pcapillary.example.com:8601

The collector endpoint remains separate from browser Ingress and always uses Pcapillary mutual TLS.

04

Install and wait for the workloads

Shell
VERSION=0.1.9
helm upgrade --install pcapillary ./pcapillary-$VERSION.tgz \
  --namespace pcapillary \
  --values pcapillary-values.yaml

kubectl -n pcapillary rollout status deployment/pcapillary-backend
kubectl -n pcapillary rollout status deployment/pcapillary-frontend
kubectl -n pcapillary get pods,ingress,services
05

Configure collector DNS and sign in

Point the collector hostname at the collector LoadBalancer. Open http://INGRESS_ADDRESS/pcapillary, sign in as admin with password pcapillary, and complete the required password change.