Files
esh-pfi-infrastructure/stacks/task-board/README.md
T
vh f014d5534a gitea-runner: stack + playbook for self-hosted Actions
Central runner on ana-docker (gitea is local; existing fleet tooling
already SSHes from there). Playbook is parameterized so future
site-local runners (nh3-docker, esh-docker-vm) drop in via --var
overrides instead of copy-paste.

Includes a workflow template for vh/task-board that calls the existing
deploy-task-board.yaml playbook — keeps the playbook as the single
source of truth for "how task-board is deployed", manual or automated.

Labels embed `:docker://node:20-bookworm-slim` schema; without it,
act_runner v0.6+ silently falls back to host-mode and runs job steps
inside the Alpine runner container (no apt/python/node), breaking any
real workflow. node:20-bookworm-slim is small + has git + node so
actions/checkout works out of the box.
2026-04-29 18:12:36 -07:00

2.3 KiB

task-board

MCP + web dashboard that shows what the assistant is working on. Green (active) / Red (waiting) / Grey (dormant) cards with comment streams.

Server: ana-docker Port: 7878 (configurable via .env) Upstream repo: vh/task-board Image: task-board:local — built on the host from the git repo by the deploy playbook. Not pulled from a registry.

Deploy

Two paths — automated (preferred) and manual (escape hatch / first-time).

Automated (Gitea Actions, push-to-main)

Once the central gitea-runner is up (see stacks/gitea-runner/README.md), every push to main on vh/task-board triggers a deploy. The workflow just calls the same elway playbook below; the playbook stays the single source of truth for "how task-board is deployed."

Workflow template lives next to this README at gitea-workflow-deploy.yaml.example; copy it into the task-board repo at .gitea/workflows/deploy.yaml. The example header lists the two repo secrets required (DEPLOY_SSH_KEY, MGMT_REPO_TOKEN).

Manual (elway from a workstation)

The playbook owns the full flow: clone/update the source repo, docker build, install compose + seed .env, bring up, verify health.

# First deploy (or update to latest main)
scripts/elway ana-docker --playbook playbooks/deploy-task-board.yaml

# Pin to a specific ref (tag, branch, or commit SHA)
scripts/elway ana-docker --playbook playbooks/deploy-task-board.yaml --var ref=v0.1.0

Wiring into Claude Code

After deploy, add to ~/.claude/settings.json (user-level) or .mcp.json (project-level):

{
  "mcpServers": {
    "task-board": {
      "type": "http",
      "url": "http://10.250.50.70:7878/mcp"
    }
  }
}

Assistant gains four tools (task_start, task_update, task_wait, task_complete). Web UI at http://10.250.50.70:7878/.

Path layout (on ana-docker)

Host path Container path Purpose Restic?
/opt/docker/build/task-board/ git checkout used as docker build context excluded
/opt/docker/compose/task-board/ compose.yaml + .env included (via /opt/docker)
/opt/docker/conf/task-board/data/ /app/data SQLite (tasks.db) included