infra/home/cluster/aprs
2026-06-19 09:33:27 -05:00
..
aprs-configmap.yaml update 2026-01-30 17:27:52 -06:00
aprs-ingressroute.yaml update 2026-01-30 17:27:52 -06:00
aprs-rbac.yaml update 2026-01-30 17:27:52 -06:00
aprs-secret-secure.yaml update 2026-01-30 17:27:52 -06:00
aprs-statefulset-with-pullsecret.yaml update 2026-01-30 17:27:52 -06:00
create-image-pull-secret.sh update 2026-01-30 17:27:52 -06:00
deploy.sh updates 2026-06-19 09:33:27 -05:00
namespace.yaml update 2026-01-30 17:27:52 -06:00
README.md update 2026-01-30 17:27:52 -06:00

APRS.me Deployment

APRS.me amateur radio tracking application deployed on k3s cluster at 204.110.191.2.

Architecture

  • Application: 2-replica StatefulSet with Erlang clustering
  • Database: PostgreSQL 17 with PostGIS extension (100GB Longhorn storage)
  • Cache: Redis for job queuing and caching
  • Ingress: Traefik with cert-manager for SSL (Let's Encrypt)
  • Access: https://aprs.me (DNS points to 204.110.191.3)

Prerequisites

  1. GitHub container registry access for ghcr.io/aprsme/aprs.me:latest
    • Create a GitHub personal access token with read:packages scope
    • Run: ./create-image-pull-secret.sh <username> <token>

Deployment

# Deploy everything
./deploy.sh

# Check status
kubectl get pods -n aprs
kubectl get certificate -n aprs
kubectl get ingressroute -n aprs

Files

  • namespace.yaml - APRS namespace
  • postgres-secret-secure.yaml - PostgreSQL credentials (secured)
  • postgres-deployment.yaml - PostgreSQL 17 with PostGIS StatefulSet
  • redis.yaml - Redis cache deployment
  • aprs-secret-secure.yaml - Application secrets (secured)
  • aprs-configmap.yaml - APRS configuration (callsign, server, etc.)
  • aprs-rbac.yaml - Service account and permissions for clustering
  • aprs-statefulset-with-pullsecret.yaml - APRS application StatefulSet
  • aprs-ingressroute.yaml - Traefik ingress with SSL certificate
  • create-image-pull-secret.sh - Helper to create GitHub image pull secret
  • deploy.sh - Deployment script

Configuration

  • APRS Callsign: W5ISP-2
  • APRS Server: dallas.aprs2.net:10152
  • Filter: r/33/-96/1000000000000
  • Passcode: 15748
  • LoadBalancer IP: 10.0.101.32 (internal)
  • Public Access: https://aprs.me via Traefik at 204.110.191.3

Secrets

All passwords have been generated securely and stored in *-secure.yaml files. Do not commit these files to version control.