Infrastructure as Code of asxp.io https://asxp.io
  • Python 44.6%
  • Jinja 29.1%
  • HCL 26.3%
Find a file
Sergei Poljanski 63bd67a86d ci: deploy site.yaml from Forgejo Actions
Service changes were made by hand on the servers, which is how the
repository drifted. Apply site.yaml from a workflow instead: every
push dry-runs it against production, and a push to main applies it.

Jobs run in containers on asxpio-services. asxpio-ops is reached over
the private network; the services host is reached through asxpio-ops,
because a container connecting to its own host arrives from a Docker
bridge address that sshd and the firewall refuse. Host keys are pinned
in known_hosts.

Ansible comes from a pinned nixpkgs revision so every run uses the
same version.

Assisted-by: Claude:fable-5-2
2026-11-12 06:47:09 +04:00
.forgejo/workflows ci: deploy site.yaml from Forgejo Actions 2026-11-12 06:47:09 +04:00
ansible ci: deploy site.yaml from Forgejo Actions 2026-11-12 06:47:09 +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