No description
  • Python 63.7%
  • HCL 32.1%
  • Shell 2.4%
  • Jinja 1.3%
  • Go Template 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
chaosbit ba5523bced feat(forgejo): add privileged build runner (docker-build label)
Second forgejo-runner with a dind sidecar for building container images. Jobs
reach the daemon via host netns + mounted TLS certs (config docker_host +
network host + valid_volumes). Distinct label `docker-build` so image builds
target it, keeping the general runner free. Reuses the shared runner-secret.

Kaniko was rejected: its image lacks node, so actions/checkout (a JS action)
fails. This runner uses a node job image and real docker build.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-06 18:16:37 +02:00
.agents/skills feat: caveman skill 2026-08-05 07:49:46 +02:00
.claude/skills feat: caveman skill 2026-08-05 07:49:46 +02:00
.forgejo/workflows chore(deps): update ghcr.io/renovatebot/renovate docker tag to v44 2026-08-03 20:07:54 +00:00
.opencode feat(opencode): default to Anthropic subscription, keep LiteLLM as fallback 2026-05-03 10:18:17 +02:00
agent/skills feat: caveman skill 2026-08-05 07:49:46 +02:00
docs feat(ingress): phase 4 — public edge (Traefik + LE + Authelia forward-auth) 2026-08-05 08:33:52 +02:00
family-backup-infra feat(forgejo): add privileged build runner (docker-build label) 2026-08-06 18:16:37 +02:00
.gitignore chore: add comprehensive .gitignore for secrets and keys 2026-04-20 16:40:09 +02:00
AGENTS.md feat(opencode): default to Anthropic subscription, keep LiteLLM as fallback 2026-05-03 10:18:17 +02:00
opencode.json feat(opencode): default to Anthropic subscription, keep LiteLLM as fallback 2026-05-03 10:18:17 +02:00
renovate.json ci: add Renovate for automated dependency updates via Forgejo Actions 2026-08-01 21:14:08 +02:00
skills-lock.json feat: caveman skill 2026-08-05 07:49:46 +02:00

FAMILY DISTRIBUTED BACKUP INFRASTRUCTURE

Complete Project Specification for Implementation

Document Version: 1.0
Target: Claude Code / Cowork
Estimated Implementation Time: 4-6 hours


EXECUTIVE SUMMARY

Build a self-hosted, privacy-focused backup solution for family members across multiple physical locations. The system uses Raspberry Pis with external HDDs as backup servers, connected via WireGuard VPN through a central Hetzner cloud hub. All infrastructure is managed via Terraform (provisioning) and Ansible (configuration).

Key Technologies: Terraform, Ansible, WireGuard, Borg Backup, Borgmatic, Syncthing, k3s, Forgejo, Argo Workflows


TABLE OF CONTENTS

# Section File Description
1 Project Goals 01-PROJECT-GOALS.md Requirements and security goals
2 Architecture Overview 02-ARCHITECTURE.md Network topology, IP scheme, routing
3 Directory Structure 03-DIRECTORY-STRUCTURE.md Project file layout
4 k3s CI/CD Platform 04-K3S-CICD.md Forgejo + Argo Workflows setup
5 Terraform Implementation 05-TERRAFORM.md Infrastructure as Code
6 Ansible Implementation 06-ANSIBLE.md Configuration management
7 Deployment Scripts 07-DEPLOYMENT.md Automation scripts
8 Configuration Templates 08-CONFIGURATION.md Example configurations
9 Testing & Validation 09-TESTING.md Verification procedures
10 Implementation Checklist 10-CHECKLIST.md Progress tracking

Quick Start

# 1. Configure Terraform
cd family-backup-infra/terraform
cp terraform.tfvars.example terraform.tfvars
# Edit terraform.tfvars with your Hetzner API token and site configs

# 2. Initialize and apply Terraform
terraform init
terraform plan
terraform apply

# 3. Install Ansible dependencies
cd ../ansible
ansible-galaxy collection install -r requirements.yml

# 4. Configure WireGuard hub
ansible-playbook playbooks/wireguard-hub.yml

Network Design Summary

  • Site LANs: 10.10.0.0/19 (32 sites × /24)
  • WireGuard overlay: 10.100.0.0/24
  • Site-to-site routing: Full LAN connectivity via Pi routers