Appearance
Quick Start
Requirements
- Docker 24+
- Docker Compose v2
- A public facing domain name for Android panels (e.g. panels.mydomain.com) (recommended)
- A internal domain name for main app (recommended)
1. Download and configure
bash
mkdir notifiq && cd notifiq
wget -O docker-compose.yml https://getnotifiq.app/downloads/docker-compose.yml
wget -O .env https://getnotifiq.app/downloads/.env.exampleEdit .env and fill in your values:
bash
# ═══════════════════════════════════════════════════════════════
# CRITICAL SECURITY SETTINGS (REQUIRED)
# ═══════════════════════════════════════════════════════════════
# 32-byte hex encryption key for sensitive credentials
# Generate: openssl rand -hex 32
ENCRYPTION_KEY=
# 32-byte hex key for session signing
# Generate: openssl rand -hex 32
NOTIFIQ_SESSION_SECRET=
# ═══════════════════════════════════════════════════════════════
# APPLICATION SETTINGS
# ═══════════════════════════════════════════════════════════════
NODE_ENV=production
# ═══════════════════════════════════════════════════════════════
# DATABASE CONFIGURATION
# ═══════════════════════════════════════════════════════════════
# Generate: openssl rand -hex 32
POSTGRES_PASSWORD=
# ═══════════════════════════════════════════════════════════════
# SYSTEM EMAIL (for invitations and password resets)
# ═══════════════════════════════════════════════════════════════
# Public URL of your Notifiq instance
APP_URL=https://notifiq.yourdomain.com
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=
SMTP_PASSWORD=
SMTP_SECURE=false
SMTP_FROM_ADDRESS=Notifiq <[email protected]>
# ═══════════════════════════════════════════════════════════════
# OPTIONAL SETTINGS
# ═══════════════════════════════════════════════════════════════
# Set to 'true' if behind a reverse proxy with SSL termination (Traefik, nginx)
FORCE_HTTPS=true
# Set to 'true' when running over plain HTTP (internal network, no TLS)
# Disables secure cookies, HSTS, and CSP upgrade-insecure-requests
FORCE_HTTP=falseGenerate your secrets
bash
openssl rand -hex 32 # run once for ENCRYPTION_KEY
openssl rand -hex 32 # run again for NOTIFIQ_SESSION_SECRET
openssl rand -hex 32 # run again for POSTGRES_PASSWORD2. Start the stack
bash
docker compose up -dDocker will pull libreitbe/notifiq-app:latest automatically on first run.
This starts three containers:
notifiq— the application (port 80 → 8080)postgres— the databaseredis— the job queue
3. First login
On first boot Notifiq initializes default accounts. The credentials are printed once to the container log — copy them immediately, they will not be shown again:
bash
docker compose logs notifiqYou will see output like:
============================================================
Notifiq Multi-Tenant Initialization Complete
============================================================
Default Tenant Created:
Name: Default Organization
Slug: default
Tier: enterprise
Super Admin User Created:
Username: admin
Email: [email protected]
Password: <generated-password>
Role: super_admin (global access)
Tenant Admin User Created:
Username: tenant_admin
Email: [email protected]
Password: <generated-password>
Role: admin (default tenant)
PLEASE STORE THESE PASSWORDS NOW
They will NOT be shown again.
============================================================Two accounts are created:
- Super Admin (
admin) — global access, manages tenants and the platform - Tenant Admin (
tenant_admin) — admin of the default tenant
WARNING
Change both passwords immediately after first login via Settings → Change password.
4. Create a tenant
Notifiq is multi-tenant. The default tenant is created automatically, but you can create additional ones:
- Log in as Super Admin
- Go to Tenants
- Click New Tenant and fill in the name and tier
- Switch into the new tenant context to configure it
See Tenants for details.
5. Invite tenant users
Each tenant has its own users. To invite users to a tenant:
- Switch to the tenant context (as Super Admin or Tenant Admin)
- Go to Settings → Users
- Click Invite User and enter their email address
- They will receive an invitation email with a link to set their password
TIP
SMTP must be configured in .env for invitation emails to be sent.
6. Send your first notification
Create an API token in Settings → API Tokens, then:
bash
curl -X POST https://notifiq.yourdomain.com/api/notify \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Hello from Notifiq",
"message": "Your first notification is working!",
"level": "success"
}'The notification appears in the History view of your dashboard immediately.
7. Set up a display panel (optional)
To see notifications in real time on a dedicated screen:
- Android — install the Notifiq Android app, connect with your API token
- Linux — run the Notifiq Linux app
- Docker panel — see Docker Panel
See Endpoints for setup details.
Reverse proxy (Traefik)
Example Traefik labels to add to the notifiq service:
yaml
labels:
- "traefik.enable=true"
- "traefik.http.routers.notifiq.rule=Host(`notify.yourdomain.com`)"
- "traefik.http.routers.notifiq.entrypoints=websecure"
- "traefik.http.routers.notifiq.tls.certresolver=letsencrypt"
- "traefik.http.services.notifiq.loadbalancer.server.port=8080"For the panel API prefix shortcut:
yaml
- "traefik.http.routers.panels.rule=Host(`panels.yourdomain.com`) && PathPrefix(`/api/panels/`)"Updating
bash
docker compose pull
docker compose up -dMigrations run automatically on startup.
Backups
Back up the PostgreSQL database:
bash
docker exec notifiq-postgres-1 pg_dump -U notifiq notifiq > backup.sqlHealth check
bash
curl https://notifiq.yourdomain.com/health
# {"status":"ok"}The Docker Compose file includes a health check that restarts the container if /health fails.