Luigit
repositories / bugabinga.net

bugabinga.net

personal infrastructure for bugabinga!

owned by admin

TODO.md

Raw
Rendered preview

TODO

Global backlog for bugabinga.net infrastructure.

Personal site

  • Decide apex / www DNS routing for bugabinga.net.
  • Serve sites/personal/ via Caddy once DNS is clear.
  • Decide whether site.bugabinga.net remains browse root or becomes preview/staging.
  • Archive or delete old GitHub bugabinga/bugabinga.net site repository after content is fully migrated.

Authentication gateway

  • Evaluate Authelia vs Authentik for protecting selected public services.
  • Document which services should stay public vs require SSO.
  • Decide identity backend, MFA requirements, bypass rules, and recovery process.
  • Prototype Caddy integration before enabling globally.

Simple secrets store

  • Replace scattered secrets.auto.tfvars/manual host files with one tiny encrypted repo file.
  • Prefer age/sops-style local encryption over Vault-class server infrastructure.
  • Target flow: edit encrypted secrets locally → render generated files during deploy → never commit plaintext.
  • Keep OpenTofu state secret exposure in mind; avoid passing app API keys through state once renderer exists.
  • Document bootstrap/recovery: where private age key lives, backup method, rotation steps.

Deployment API

  • Spec: .system/specs/BB-SPEC-5TQ2M8HD-singleton-service-deployment-api/index.md.
  • Build a host-local deployment service that owns enrolled Quadlet release activation, probation, and rollback.
  • Fence infrastructure apply, AutoUpdate, and weekly GC away from enrolled units and retained images.
  • Return the published manifest digest from Luci registry publishing so a job can deploy by digest.
  • Enroll applications one by one; toad stays generic, with singleton image-digest updates per enrolled service.

Nugu theming

  • Investigate consistent Nugu theming across all supported services.
  • Track per-service theming mechanism and persistence model.
  • Avoid one-off manual UI edits; prefer config, volumes, or managed assets.

n8n service

  • Add n8n as managed Podman quadlet service.
  • Decide public hostname and auth posture before exposure.
  • Plan persistent volumes, backup needs, env/secrets, and update policy.
  • Add Homepage card/widget if useful.

Deployment churn

  • Reduce noisy null_resource replacement from coarse trigger hashes.
  • Split scripts/local/klops.sh into focused deploy scripts or hash per subcommand.
  • Remove broad filesha256("${path.module}/main.tf") triggers from unrelated deploy resources.
  • Use narrow triggers: WireGuard config/script, Homepage templates/script, quadlets/restart script, CI quadlets/CI scripts, site files/site script, Caddyfile/Caddy script.
  • Goal: Caddy or one service change must not rerun WireGuard, CI, and site deploys.

Repository update workflow

  • Think through and document how this infrastructure repo should be updated safely.
  • Cover dependency/provider/container update process.
  • Cover secrets/state handling and rollback expectations.
  • Cover how to import/migrate manually-created klops state into managed OpenTofu resources.
  • Add routine commands/checklist for tofu fmt, tofu validate, tofu plan, and post-deploy smoke tests.
# TODO

Global backlog for bugabinga.net infrastructure.

## Personal site

- Decide apex / `www` DNS routing for `bugabinga.net`.
- Serve `sites/personal/` via Caddy once DNS is clear.
- Decide whether `site.bugabinga.net` remains browse root or becomes preview/staging.
- Archive or delete old GitHub `bugabinga/bugabinga.net` site repository after content is fully migrated.

## Authentication gateway

- Evaluate Authelia vs Authentik for protecting selected public services.
- Document which services should stay public vs require SSO.
- Decide identity backend, MFA requirements, bypass rules, and recovery process.
- Prototype Caddy integration before enabling globally.

## Simple secrets store

- Replace scattered `secrets.auto.tfvars`/manual host files with one tiny encrypted repo file.
- Prefer `age`/`sops`-style local encryption over Vault-class server infrastructure.
- Target flow: edit encrypted secrets locally → render generated files during deploy → never commit plaintext.
- Keep OpenTofu state secret exposure in mind; avoid passing app API keys through state once renderer exists.
- Document bootstrap/recovery: where private age key lives, backup method, rotation steps.

## Deployment API

- Spec: `.system/specs/BB-SPEC-5TQ2M8HD-singleton-service-deployment-api/index.md`.
- Build a host-local deployment service that owns enrolled Quadlet release activation, probation, and rollback.
- Fence infrastructure apply, `AutoUpdate`, and weekly GC away from enrolled units and retained images.
- Return the published manifest digest from Luci registry publishing so a job can deploy by digest.
- Enroll applications one by one; toad stays generic, with singleton image-digest updates per enrolled service.

## Nugu theming

- Investigate consistent Nugu theming across all supported services.
- Track per-service theming mechanism and persistence model.
- Avoid one-off manual UI edits; prefer config, volumes, or managed assets.

## n8n service

- Add n8n as managed Podman quadlet service.
- Decide public hostname and auth posture before exposure.
- Plan persistent volumes, backup needs, env/secrets, and update policy.
- Add Homepage card/widget if useful.

## Deployment churn

- Reduce noisy `null_resource` replacement from coarse trigger hashes.
- Split `scripts/local/klops.sh` into focused deploy scripts or hash per subcommand.
- Remove broad `filesha256("${path.module}/main.tf")` triggers from unrelated deploy resources.
- Use narrow triggers: WireGuard config/script, Homepage templates/script, quadlets/restart script, CI quadlets/CI scripts, site files/site script, Caddyfile/Caddy script.
- Goal: Caddy or one service change must not rerun WireGuard, CI, and site deploys.

## Repository update workflow

- Think through and document how this infrastructure repo should be updated safely.
- Cover dependency/provider/container update process.
- Cover secrets/state handling and rollback expectations.
- Cover how to import/migrate manually-created klops state into managed OpenTofu resources.
- Add routine commands/checklist for `tofu fmt`, `tofu validate`, `tofu plan`, and post-deploy smoke tests.