Skip to content
000TASKNEBULA 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 ComposePostgreSQL 16 + pgvectorRedis 7Optional LiveKitCron sidecar
TaskNebula dashboard showing widgets analytics and project status

FIG 01 · DashboardStandup, catch-up, analytics, deadlines, pinned work, and recent activity.

Latest release

Locales

GitHub stars · 12 Jul 2026

License

001Install matrix

The README separates a fresh Linux VM, local Docker Desktop demo, pinned production release, and source build. The public page should do the same instead of pretending one command fits every operator.

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
002Topology

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. 01

    PostgreSQL 16 + pgvector

    persistent volume

  2. 02

    Redis 7 with password

    cache + pub/sub

  3. 03

    Optional LiveKit

    voice rooms

  4. 04

    TaskNebula web

    GET /api/health

  5. 05

    Optional cron sidecar

    standup/janitor/version-check

003Production checklist

TaskNebula's self-host story is strongest when it says exactly what should be pinned, generated, backed up, exposed, and checked.

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.

004Update 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
Source record

Verified from docker-compose.yml, docker-compose.desktop.yml, and the README on June 23, 2026. Deploy ports stay localhost-bound by default and the web container does not receive Docker socket access.

Run it yourself

TaskNebula is positioned as the self-hostable project-management control plane for teams that want inspectable operations, not another black-box SaaS.