Services

infra / running

Docker Sandbox LXC

The experiment host: code-server, Maestro Bot, Shirase, Forge Bot, Kanade's Discord bridge, and the small always-on tools that do not belong on the edge host.

What it is

A small Docker LXC that hosts personal coding work, Discord-side automation, and the experiments that need to stay always-on without crowding the main edge host. It started as the replacement for my old bare-process sandbox. It now runs code-server, Maestro Bot, Shirase, Forge Bot, Kanade's Discord bridge, Watchtower, and the Portainer agent.

Why I run it

This LXC exists for a specific reason: it was the last holdout in the cluster running native processes instead of Docker. The Discord music bot used to run under nohup from a long-dead shell with no auto-restart; code-server was a manual install. Bringing both under the standard Docker pattern meant the same backup, monitoring, and update flows as everything else.

The replace-don't-reform choice mattered. Migrating an in-use LXC to Docker would have meant installing Docker, dockerizing both workloads, then carefully cutting over with the original still running. Standing up a fresh LXC and migrating the data was less risky and clearer.

It has since become the cluster's small-bot shelf. Shirase handles approval-gated project notifications, Forge Bot keeps Forge's Discord status cards and replies persistent, and Kanade's Discord bridge runs there for controlled remote checks.

How I use it

Day to day it is partly a code-server tab and partly the quiet place where Discord-adjacent services stay alive. Workspaces live on the LXC's filesystem; the music bot's source is bind-mounted from the workspaces directory into the bot container, so editing the bot script in code-server and running docker compose restart maestro-bot is enough to deploy a change.

The newer services follow the stricter host-managed compose pattern: source lives in the project repo, runtime state lives under the stack directory, secrets stay out of git, and health endpoints are monitored from the homelab dashboard.

Setup notes

Runbook