# 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 ` ## Deployment ```bash # 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.