v1.0.0 - Platform Foundation: From Zero to Production on Hetzner Cloud
After 229 commits, the Revenexx platform infrastructure is ready and daily in use. This release marks the completion of the first cycles. A fully automated, private-first, multi-stack platform built with Terraform + Ansible on Hetzner Cloud.
Everything you need to run, scale, and understand the platform is in this repo.
What's included
Compute & Orchestration
- Docker Swarm — 3 managers + 6 workers with Traefik ingress and Portainer management, fronted by a public Hetzner Load Balancer
- NFS Shared Storage — active/standby storage cluster with persistent volumes for Swarm workloads
- Bastion Host — SSH jump host with NAT gateway, the only public entry point into private infrastructure
Databases
- Postgres HA — 3-node Patroni cluster with etcd consensus, PgDog connection pooling (custom fork with wildcard DB support), private load balancer on port 5432, and Infisical-based secrets sync
- MariaDB Galera — 3-node cluster with ProxySQL, automated S3 backups with encryption, user auto-sync, private load balancer on ports 3306/6032
Cache & Search
- Dragonfly — Redis-compatible cache with master-replica replication, private load balancer on port 6379, multi-tenancy via namespaces
- Meilisearch — full-text search engine with Caddy TLS, HTTP basic auth UI, and dedicated firewall hardening
Observability
- Prometheus + Grafana — centralized monitoring with node, Postgres, MySQL, Redis, and ProxySQL exporters
- Grafana OIDC via Zitadel PKCE, SMTP alerting via Resend, fail2ban hardening
- Gatus Status Page — public health dashboard at status.rvnxx.com
Networking & Security
All stacks run on a shared private network (platform-network, 10.0.0.0/16) in Hetzner's Nuremberg region.
| Subnet | CIDR | Purpose |
|---|---|---|
| Swarm / NFS | 10.0.10.0/24 |
Container workloads and shared storage |
| Postgres | 10.0.30.0/24 |
Patroni, etcd, PgDog |
| MariaDB | 10.0.40.0/24 |
Galera + ProxySQL |
| Dragonfly | 10.0.50.0/24 |
Cache cluster |
10.0.70.0/24 |
Postal (external repo) |
Security posture:
- Databases, caches, and storage have zero public IPs — access only via private load balancers or bastion
- 4 scoped firewalls (platform, container, monitoring, meilisearch)
- Floating IPs for stable public endpoints
- fail2ban, UFW, unattended upgrades, and systemd sandboxing on public-facing servers
- No secrets in the repo — all managed via Infisical and GitHub Secrets
Related Repositories
The platform spans three repos on the same Hetzner account:
| Repo | Purpose | Must-deploy order |
|---|---|---|
| secrets | Infisical secrets management — base layer for everything | 1st |
| platform-systems | Core infrastructure (this repo) | 2nd |
| Postal mail delivery — connects to MariaDB over the shared network | 3rd |
Automation
- 18 GitHub Actions workflows — every stack has its own plan/apply pipeline, plus a full-sequence global apply
- All applies run via CI — no manual console changes (no-click policy)
- Terraform states separated per stack — safe, independent lifecycle for each component
- Ansible inventories powered by the Hetzner Cloud plugin — dynamic, label-based, zero manual host management
Documentation
26 docs pages rendered via Backstage TechDocs, covering:
- Architecture overview and network topology diagram
- Operations workflows, GitHub Secrets reference, and CI/CD procedures
- Stack-specific docs for every service (setup, configuration, access, troubleshooting)
- Terraform module reference — every module and production environment with variables, outputs, and usage examples
- Runbooks for on-call (Patroni recovery, Galera bootstrap, ProxySQL health, NAT debugging, and more)
- Security posture and hardening documentation
- Cross-repo guide explaining how the three infrastructure repos fit together
A new team member can understand the full platform from the docs alone.
Developer Portal
16 Backstage catalog entries registered — every infrastructure component is discoverable, from Hetzner Cloud baseline to individual services like etcd, PgDog, Traefik, and Grafana.
By the numbers
| Commits | 229 |
| Terraform modules | 9 |
| Production environments | 11 |
| Ansible roles | 41 |
| CI/CD workflows | 18 |
| Backstage catalog entries | 16 |
| Documentation pages | 26 |
What's next
- Prometheus dashboards and alerting rules
- Replace Gatus with an better solution and implement auto discovery for status monitoring
- Harden the security and introduce an VPN