Skip to content

Docs

Documentation for the sepia home server.

Quick Reference

  • Hostname: sepia
  • Domain: veenboer.xyz / uitgeest.veenboer.xyz
  • Primary Compose: /opt/compose.yaml
  • Docker Project: /opt/
  • Docker Containers: ~11 running services

Structure

docs/
├── MEMORY.md              # Curated long-term knowledge
├── RUNBOOK.md             # Operational procedures
├── HEARTBEAT.md           # Periodic check-in tasks
├── JOURNAL/               # Daily operational logs
├── REFERENCE/             # Quick reference
│   ├── services.md
│   ├── network.md
│   ├── storage.md
│   ├── caddy.md
│   └── postgres.md
├── APPLICATIONS/          # Per-app documentation
└── PLANS/                 # Project plans with lifecycle
    ├── active/
    ├── completed/
    └── backlog/

JOURNAL vs PLANS

Both track work, but at different levels of abstraction:

JOURNAL PLANS
Time Past — what happened on a given day Future — what we intend to do
Grain Mixed topics per day, stream of work One focused goal per document
Lifecycle Immutable chronological record Active → Completed lifecycle
Purpose "When did X change? Why did we decide Y?" "What's the plan? What's left to do?"

JOURNAL entries are the raw work log — what you did, what broke, what you decided, all in one place per day.

PLANS define structured projects with context and steps. They graduate through active/completed/ as work progresses.

They complement each other: working on a plan generates journal entries, and journal entries feed into plan updates. Templates cross-reference both directions.

Environment Variables

Many services rely on .env files and shell environment variables: - HOST_IP - Host IP address (used in extra_hosts) - DOMAIN - veenboer.xyz - SUBDOMAIN - uitgeest - Database credentials for various services - API keys for external services

See individual compose files for service-specific variables.