Skip to content
@zer0space-net

zer0space

zer0space is my homelab setup: Docker Swarm across 9 Debian nodes, GitOps-managed configs via GitHub, deployed with Claude Code. Public access via Cloudflare Tu
banner

A homelab built to survive without me.

Nine machines. One fully stateless Docker Swarm. Documented in public — including the parts that are still broken.

Docker Swarm PostgreSQL 16 Cloudflare Tunnel Tailscale Python 3.12 FastAPI Debian GitOps via Portainer


What this is

Seven interchangeable Swarm nodes that hold no data of their own, and two hosts outside the cluster that hold everything that has to survive — one runs the database, one holds the files. Any Swarm node can be wiped and rebuilt without losing anything.

Deploys are GitOps: Portainer pulls compose files straight from these repos, so a stack's definition and its deployment can't drift. Public ingress is a Cloudflare Tunnel dialing out — no open inbound ports anywhere on the network.

The full architecture, the build's actual history (including the detours that didn't work), and every technology and why it's there lives in zer0space-docs — public on purpose, and honest on purpose: what's running, what's built but not switched on yet, and what's still broken.

The short version, diagrammed
                     Cloudflare  (DNS · Tunnel · Access MFA)
                          │  outbound-only — no open inbound ports
                          ▼
     ┌────────────────────────────────────────────────┐
     │  DOCKER SWARM — 3 managers + 4 workers          │
     │  stateless: no local volumes, nothing pinned    │
     │  for storage reasons                            │
     └──────────┬──────────────────────┬───────────────┘
                │ NFS                  │ PostgreSQL
                ▼                      ▼
        ┌──────────────┐      ┌──────────────────┐
        │ zs-store-01  │      │ zs-state-01      │
        │ files        │      │ database · UI    │
        └──────────────┘      └──────────────────┘
Working 7-node Swarm, 3 managers · all persistent files on central NFS · genuinely stateless application on PostgreSQL · GitOps deploys · nightly local backups with visible status
🔄 Built, not switched on Cloudflare Tunnel and the Access policy
⚠️ Known broken VXLAN overlay to the late-joining workers — worked around, not fixed
Missing Offsite backups · a database backup · a rehearsed restore

Details and reasoning: zer0space-docs/architecture.md · journey.md

Repositories

Repo What it is
zer0space-docs Public write-up of the whole cluster — architecture, build history, tech stack
zer0space-dashboard Self-hosted homelab dashboard (Python · FastAPI) — service launcher, cluster status, backup overview, invite-only accounts, per-user encrypted credential vault
zer0space-crimson-backend Deployment stack for Crimson Haven's backend (PostgreSQL, API, sync worker)
zer0space-crimson-client Deployment stack for Crimson Haven's static frontend
zer0space-status Uptime/status monitoring for the homelab — in progress
zer0space-services, zer0space-clients, zer0space-ai, zer0space-cloud Private — Swarm stack definitions, node setup guides with real addressing, and projects still in planning

May

zer0space-pb

Sige0's assistant, and the mascot standing behind all of it. She doesn't run any of the nine machines — she watches all of them, so somebody else doesn't have to: the seven interchangeable nodes, the two that actually hold state, a tunnel that only ever calls out, an overlay that quietly lied for a while.

The full story is in zer0space-docs.



Everything here is documented as it actually is, not as it's supposed to be — including the gaps. That's the point of writing it down.

Pinned Loading

  1. zer0space-docs zer0space-docs Public

  2. zer0space-status zer0space-status Public

  3. zer0space-dashboard zer0space-dashboard Public

    JavaScript 1

Repositories

Showing 8 of 8 repositories

Top languages

Loading…

Most used topics

Loading…