ɳTasks Self-Hosting Guide
ɳTasks Self-Hosting Guide — ɳSelf documentation.
ɳTasks is fully self-hostable for free. No paid license is required. All capabilities it needs (auth, storage, scheduled jobs, notifications) are covered by core services or free plugins.
The hosted alternative is task.nself.org — sign up for free with no setup.
What ɳTasks Needs
| Capability | Provider | License |
|---|---|---|
| Database (Postgres 16) | Core — always included | Free |
| GraphQL API (Hasura) | Core — always included | Free |
| Auth (JWT, email+password, OAuth) | Core Auth service | Free |
| Object storage (file attachments) | MinIO optional service | Free |
| Scheduled tasks | cron free plugin | Free |
| Push / email notifications | notify free plugin | Free |
No pro plugins. No license key.
App Surfaces
| Surface | Framework | Hosted URL |
|---|---|---|
| Web | React + Vite | task.nself.org |
| Mobile | React Native + Expo | — |
| Desktop | Tauri 2 | — |
| TV | react-native-tvos | — |
Self-Host: Step by Step
1. Clone the repo
git clone https://github.com/nself-org/ntask
cd ntask
2. Copy and edit the env file
cp backend/.env.example backend/.env.dev
Open backend/.env.dev and set at minimum:
| Variable | What to set |
|---|---|
BASE_DOMAIN | Your domain (e.g. tasks.example.com) or localhost for local dev |
HASURA_GRAPHQL_ADMIN_SECRET | A strong random secret |
NHOST_JWT_SECRET | A random 32-char string |
POSTGRES_PASSWORD | A strong random password |
3. Build
cd backend
nself build
This generates backend/docker-compose.yml from your env file. The generated file is gitignored — do not commit it.
4. Start
nself start
Wait for all services to show healthy:
nself health
5. Enable optional free plugins
For scheduled tasks and notifications:
nself plugin install cron notify
nself build && nself restart
6. Enable object storage (file attachments)
nself service enable minio
nself build && nself restart
7. Get your service URLs
nself urls
This prints Hasura GraphQL URL, Auth URL, and storage URL. Copy these into the app configs below.
Connect the Apps
Mobile (React Native + Expo)
cd apps/mobile
pnpm install
pnpm start
Set your Hasura and Auth URLs in apps/mobile/.env (or app.config.ts depending on your Expo setup) using the values from nself urls.
Desktop (Tauri 2)
cd apps/desktop
pnpm install
pnpm dev
TV (react-native-tvos)
cd apps/tv
pnpm install
pnpm start
Local Dev Backend Quick Reference
| Action | Command |
|---|---|
| Start backend | cd backend && nself start |
| Stop backend | cd backend && nself stop |
| Check health | cd backend && nself health |
| View logs | cd backend && nself logs |
| Hasura console | cd backend && nself db hasura console |
Default local URLs after nself start:
| Service | URL |
|---|---|
| Hasura GraphQL | http://localhost:8080/v1/graphql |
| Auth | http://localhost:4000 |
| Storage (MinIO) | http://localhost:8484 |
Hosted Alternative
task.nself.org runs the same ɳTasks stack managed by nself Cloud. Free to use. No setup required.