Skip to content

TaskNebula operations

Self-hosting that stays boring on purpose.

TaskNebula's repo is Docker-first: published image, PostgreSQL 16 with pgvector, Redis 7, optional LiveKit voice rooms, optional cron sidecar, health checks, and explicit update paths.

Docker-firstPinned image v0.7.11GET /api/health

  • Docker Compose
  • PostgreSQL 16 + pgvector
  • Redis 7
  • Optional LiveKit
  • Cron sidecar
TaskNebula dashboard showing widgets analytics and project status
FIG 01 · Dashboard — Standup, catch-up, analytics, deadlines, pinned work, and recent activity.
Latest release
v0.7.11
Locales
30
AI posture
Opt-in
License
MIT

01Install matrix

A fresh Linux VM, a local Docker Desktop demo, a pinned production release, and a source build have different assumptions. Choose the path that matches the operating environment.

01One-command Docker

Command

shell
curl -fsSL https://raw.githubusercontent.com/neuraparse/taskNebula/main/scripts/quickstart.sh | bash

02Docker Desktop

Command

shell
curl -fsSLo compose.yml https://raw.githubusercontent.com/neuraparse/taskNebula/main/docker-compose.desktop.yml && docker compose up -d

03Pinned production

Command

shell
TASKNEBULA_IMAGE=neuraparse/tasknebula:0.7.11 docker compose up -d

04Source build

Command

shell
git clone https://github.com/neuraparse/taskNebula.git && cd taskNebula && docker compose up -d --build

02Topology

The production Compose file keeps core services always-on and gates automation behind profiles. That reduces surprise-on services for first-time self-hosters.

01Published image first

The default production path pulls neuraparse/tasknebula, while source builds stay available for teams patching the repo.

latest0.7.11source build

02Localhost-bound services

The production Compose file binds database, Redis, and web ports to 127.0.0.1 by default so a reverse proxy can own the public edge.

127.0.0.1TLS proxyhealth checks

03No Docker socket in web

Self-update is deliberately a signed handoff to an operator-managed updater. The app container does not need Docker socket access.

signed requestmanual fallbackoperator control
Compose dependency graphOperating flow
  1. 01input

    persistent volume

  2. 02process

    cache + pub/sub

  3. 03process

    voice rooms

  4. 04gate

    GET /api/health

  5. 05output

    standup/janitor/version-check

03Production checklist

Pin the release, generate secrets, preserve state, limit exposure, and verify health before treating the installation as a production service.

01Image

Pin TASKNEBULA_IMAGE=neuraparse/tasknebula:0.7.11 outside quick demos.

02Secrets

Generate AUTH_SECRET, REDIS_PASSWORD, and LIVEKIT_API_SECRET per install.

03Network

Keep Compose ports bound to 127.0.0.1 and expose through TLS reverse proxy.

04Persistence

Back up postgres_data, redis_data, and uploads_data.

05Updates

Pull image, restart, then verify GET /api/health.

06Automation

Enable cron only with docker compose --profile cron up -d cron.

07AI

Prefer Admin -> Agent control and workspace settings over long-lived env keys.

04Update flow

The app can detect Docker Hub image pushes, notify super-admins, and send an opt-in signed handoff to an external updater. Manual Docker commands remain first-class.

Pinned update command

shell
docker compose pull web && docker compose up -d
curl -fsS http://localhost:3000/api/health
Pinned update sequenceOperating flow
  1. 01input

    Docker Hub signal

  2. 02process

    in-app notice

  3. 03process

    human gate

  4. 04gate

    manual or signed handoff

  5. 05output

    health endpoint

Run it yourself

TaskNebula is a self-hostable project-management control plane for teams that want inspectable operations instead of another black-box SaaS.