One-command Docker
Fresh Linux VM or homelab box
Command
shellcurl -fsSL https://raw.githubusercontent.com/neuraparse/taskNebula/main/scripts/quickstart.sh | bashTaskNebula operations
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.

Real product screenshot
Self-hosted project management, AI drafting, governance, and update awareness in one workspace.
v0.7.9
Latest release
30
Locales
34
GitHub stars
MIT
License
Install 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.
One-command Docker
Command
shellcurl -fsSL https://raw.githubusercontent.com/neuraparse/taskNebula/main/scripts/quickstart.sh | bashDocker Desktop
Command
shellcurl -fsSLo compose.yml https://raw.githubusercontent.com/neuraparse/taskNebula/main/docker-compose.desktop.yml && docker compose up -dPinned production
Command
shellTASKNEBULA_IMAGE=neuraparse/tasknebula:0.7.9 docker compose up -dSource build
Command
shellgit clone https://github.com/neuraparse/taskNebula.git && cd taskNebula && docker compose up -d --buildTopology
The production Compose file keeps core services always-on and gates automation behind profiles. That reduces surprise-on services for first-time self-hosters.
Published image first
The default production path pulls neuraparse/tasknebula, while source builds stay available for teams patching the repo.
Localhost-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.
No 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.
Compose dependency graph
Operating flowPostgreSQL 16 + pgvector
persistent volume
Redis 7 with password
cache + pub/sub
Optional LiveKit
voice rooms
TaskNebula web
GET /api/health
Optional cron sidecar
standup/janitor/version-check
Production checklist
TaskNebula's self-host story is strongest when it says exactly what should be pinned, generated, backed up, exposed, and checked.
Image
Pin TASKNEBULA_IMAGE=neuraparse/tasknebula:0.7.9 outside quick demos.
Secrets
Generate AUTH_SECRET, REDIS_PASSWORD, and LIVEKIT_API_SECRET per install.
Network
Keep Compose ports bound to 127.0.0.1 and expose through TLS reverse proxy.
Persistence
Back up postgres_data, redis_data, and uploads_data.
Updates
Pull image, restart, then verify GET /api/health.
Automation
Enable cron only with docker compose --profile cron up -d cron.
AI
Prefer Admin -> Agent control and workspace settings over long-lived env keys.
| Area | Recommendation |
|---|---|
| Image | Pin TASKNEBULA_IMAGE=neuraparse/tasknebula:0.7.9 outside quick demos. |
| Secrets | Generate AUTH_SECRET, REDIS_PASSWORD, and LIVEKIT_API_SECRET per install. |
| Network | Keep Compose ports bound to 127.0.0.1 and expose through TLS reverse proxy. |
| Persistence | Back up postgres_data, redis_data, and uploads_data. |
| Updates | Pull image, restart, then verify GET /api/health. |
| Automation | Enable cron only with docker compose --profile cron up -d cron. |
| AI | Prefer Admin -> Agent control and workspace settings over long-lived env keys. |
Update 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
shelldocker compose pull web && docker compose up -d
curl -fsS http://localhost:3000/api/healthRun it yourself
TaskNebula is positioned as the self-hostable project-management control plane for teams that want inspectable operations, not another black-box SaaS.