Infrastructure monorepo for self-hosted services (imagineering.cc, co-located xdeca, and enspyr).
Formerly
imagineering-cc/imagineering-infra— renamed 2026-07-28. Theimagineering.ccdomain and its services are unchanged; only the GitHub repo moved.
| Service | Description | URL |
|---|---|---|
| Kan.bn | Kanban boards (Trello alternative) | kan.imagineering.cc |
| Outline | Team wiki (Notion alternative) | outline.imagineering.cc |
| MinIO | S3-compatible file storage | storage.imagineering.cc |
| Caddy | Reverse proxy with automatic HTTPS | - |
| Radicale | CalDAV/CardDAV server | dav.imagineering.cc |
| downstream-server | Guest service — not part of Imagineering. Ops live in nickmeinhold/downstream deploy/oci; this repo keeps only the platform bits: the Caddy route for api.downstream-storage.cc, scripts/lib/telegram.sh, and generic shared-host hygiene (health-check/watchdog cover it as one container among many) (shared alert helper its host scripts source from /opt/scripts/lib/) |
api.downstream-storage.cc |
| Provider | Status | IP | Cost |
|---|---|---|---|
| OCI (Oracle Cloud) | Active | 149.118.69.221 | Free tier (200 GB disk, 4 OCPU, 24 GB RAM) |
Internet → Caddy (443/80) → Kan.bn (3013)
→ Outline (3012)
→ MinIO (9010)
→ Radicale (5232)
→ downstream-server (3018) [guest service]
brew install sops age yqmkdir -p ~/.config/sops/age
age-keygen -o ~/.config/sops/age/keys.txt
# Add public key to .sops.yaml./scripts/deploy-to.sh 149.118.69.221 all.
├── caddy/ # Reverse proxy config
├── kanbn/ # Kan.bn (Trello alternative)
├── outline/ # Outline wiki
├── radicale/ # CalDAV/CardDAV server
├── dreamfinder/ # Signal PM bot (Dreamfinder)
├── backups/ # Backup configuration
├── scripts/
│ ├── deploy-to.sh # Deployment script
│ ├── backup.sh # Backup script
│ └── restore.sh # Restore script
└── .sops.yaml # SOPS encryption config
All secrets are encrypted with SOPS + age.
# Edit encrypted secrets
sops kanbn/secrets.yaml
sops outline/secrets.yaml