# Session 0014: Registry Naming & Backup System **Date:** 2026-02-20 **Status:** Completed **Origin:** MDF Webseiten session 0019 --- ## Work Done - [x] Fixed `sl-website` registry placement — moved under `seriousletter.services.website` to resolve prefix collision - [x] Renamed all 7 Coolify services to consistent `{project}-{env/purpose}` lowercase naming - [x] Deleted stale stopped MDF Dev duplicate from Coolify (UUID: qw8wso0ckskccoo0kcog84c0) - [x] Fixed `ops backup/restore/sync` argument validation (was crashing on unbound variable) - [x] Fixed SL CLI path in `registry.yaml` (pointed to wrong location) - [x] Added `container_name()` to SL `sync.py` with label + prefix fallback (mirrors MDF pattern) - [x] Made `ops backup ` work without env arg (passes `--all` to CLI) - [x] Added backup summary to `ops status` — latest backup per project/env, size, age with color coding - [x] Consolidated backup dirs to `/opt/data/backups/{project}/{env}/` across all projects - [x] Updated both MDF and SL CLIs for per-env backup subdirectory structure - [x] Volume consolidation: all data migrated from 10GB to 50GB volume at `/opt/data` - [x] Updated all path references across compose files, CLIs, systemd units, registry, ops CLI ## Key Decisions / Learnings - Registry was initially ambiguous about where `sl-website` lived — prefix collision with other SL services caused matching bugs. Moving it under a `services.website` key made the prefix unique. - Per-env backup subdirs (`/opt/data/backups/{project}/{env}/`) are the correct structure — flat dirs were the source of orphaned files. - `ops backup ` without env should be a valid shorthand — it delegates `--all` to the project CLI rather than requiring explicit env arg. - Container name resolution logic must be identical across project CLIs — label-based primary, prefix fallback secondary. Divergence causes mysterious "container not found" bugs. - Old 10GB volume was kept mounted during migration to avoid cwd-in-mountpoint issues during `umount`. ## Files Changed - `/opt/infrastructure/servers/hetzner-vps/registry.yaml` — fixed sl-website placement, naming consistency - `/opt/infrastructure/ops` — fixed arg validation, `cmd_backup` without env, backup summary in status - `/opt/data/seriousletter/{dev,int,prod}/code/scripts/sync/sync.py` — added `container_name()` with fallback - `Code/mdf-system/scripts/sync/sync.py` — per-env backup subdirectory paths - All compose files, systemd units — `/opt/data2` → `/opt/data` path updates --- **Tags:** #Session #OpsCLI #BackupSystem #Registry