Infrastructure as Code of asxp.io https://asxp.io
  • Python 44.6%
  • Jinja 29.1%
  • HCL 26.3%
Find a file
Sergei Poljanski e5322cbac2 terraform: never replace a running server
hcloud replaces a server when user_data, image or ssh_keys change, and
cloud-init only runs at first boot anyway. An edit to cloud-init, like
adding a user, would therefore plan the destruction of a production
machine. Ignore changes to those three attributes and set
prevent_destroy on both servers, so cloud-init describes a rebuild and
nothing else.

Add user zerrtika to cloud-init to match the servers; the user was
created on them by playbook 04.

Assisted-by: Claude:fable-5-2
2026-11-12 06:47:08 +04:00
ansible forgejo-runner: match the live runner and pin the nix image 2026-10-18 09:48:14 +04:00
terraform terraform: never replace a running server 2026-11-12 06:47:08 +04:00
.gitignore add wg: sanya 2026-04-05 19:17:18 +03:00
README.md todo 2025-11-13 23:36:13 +02:00

asxp.io Infrastructure

Infrastructure as Code for asxp.io servers managed via Terraform, Ansible, and Forgejo CI/CD.

Servers

Server Type vCPU RAM Services
asxpio-ops CX22 2 4GB traefik, forgejo, grafana, prometheus, loki, static_sites
asxpio-services CX43 8 16GB forgejo_runner, immich, minecraft, valheim, factorio, prosody, coturn

Directory Structure

  • terraform/ - Cloud infrastructure provisioning (Hetzner Cloud)
  • ansible/ - Server bootstrap and configuration management
  • services/ - Docker Compose files for container orchestration
  • .forgejo/workflows/ - CI/CD pipeline automation (planned)

Migration TODO

Phase 0: Preparation

  • Terraform infrastructure code
  • Ansible inventory and playbooks
  • Create S3 buckets (hel1-primary, fsn1-secondary)
  • Provision servers via Terraform
  • Backup all services from bare metal

Phase 1: Core Infrastructure

  • Deploy WireGuard VPN on ops-server
  • Deploy Traefik reverse proxy
  • Deploy monitoring stack (Grafana, Prometheus, Loki)

Phase 2: Git & CI/CD

  • Migrate Forgejo from bare metal
  • Deploy Forgejo Runner on services-server

Phase 3: Media & Storage

  • Upload Immich photos to S3 (135GB)
  • Migrate Immich to services-server
  • [/] Configure S3 geo-replication (hel1 → fsn1) (Turn on service)

Phase 4: Gaming Services

  • Migrate Minecraft (20GB local + 80GB S3 backups)
  • Migrate Valheim (9.5GB)
  • Migrate Factorio (31MB)

Phase 5: Communication

  • Migrate Prosody XMPP
  • Migrate Turnserver

Phase 6: Final Services

  • Migrate static sites (asxp.io, czsk.it)
  • Configure automated backups to S3
  • DNS cutover and validation
  • Decommission bare metal (after 30 days)

Later

  • Setup Terraform to manage DNS