aprs.me/docs/infrastructure/deployment.md

1.8 KiB

Deployment

Platforms

Kubernetes (ArgoCD)

Primary production deployment target. Manifests in k8s/.

Fly.io

Alternative deployment option. Configuration in fly.toml.

Docker

Multi-stage Docker build (Dockerfile).

  • Build stage: Elixir compilation + asset bundling
  • Release stage: Minimal runtime with Erlang/Elixir release

Release Management

Building

MIX_ENV=prod mix assets.deploy
mix release

Database Migrations

Aprsme.Release module handles migrations during release startup.

Environment Configuration

Configuration files in config/:

  • config.exs — Base configuration
  • dev.exs — Development overrides
  • prod.exs — Production defaults
  • runtime.exs — Runtime configuration (from env vars)

Key Environment Variables

Development Environment

Nix Shell

Nix-based reproducible dev environment via flake.nix / shell.nix. Provides Elixir, Erlang, PostgreSQL, and all tooling.

Dev Containers

.devcontainer/ configuration for VS Code / GitHub Codespaces.

Clustering

Optional multi-node deployment via libcluster:

  • Leader election determines which node maintains APRS-IS connection
  • Packet distribution relayed across nodes
  • Configuration in cluster modules under lib/aprsme/cluster/

Health Checks

  • /health — Kubernetes liveness (basic) and readiness (DB + PubSub, shutdown-aware)
  • /ready — App readiness check
  • /status.json — JSON status endpoint

Handled by HealthCheck plug before router.