Prerequisites
| Requirement | Details |
|---|---|
| OS | Linux (Ubuntu 22.04 LTS recommended). macOS is supported for development only. |
| Docker | Docker Engine 24+ and Docker Compose v2 |
| RAM | 2 GB minimum, 4 GB recommended |
| Disk | 10 GB free for services + data |
| Network | A static LAN IP (or a DHCP reservation on your router) |
| DNS | Ability to configure your router’s DNS server, or edit /etc/hosts per device |
✦ Tip
Lock the host machine’s IP to its MAC address on your router (DHCP reservation). NubleStation bakes this IP into the DNS config — if the IP changes, DNS breaks until you re-run the installer.
One-command install
curl -sSL https://github.com/NabilMouzouna/NubleStation/releases/latest/download/install.sh | sudo bash
The installer will ask you for:
- Organization name — becomes the subdomain root (e.g.,
clinic→*.clinic.local) - Organization description — optional, stored in the platform config
- Admin email — used to log into
console.clinic.local - Admin password — minimum 8 characters
It then:
- Detects your host’s LAN IP
- Writes
/var/nuble/.envwith all generated secrets - Renders
CorefileandCaddyfilefrom templates - Starts the full Docker Compose stack
- Prints the console URL
✅ NubleStation is running.
Console → http://console.clinic.local
API → http://api.clinic.local
Point your devices' DNS at: 192.168.1.100
DNS setup (required for all devices)
CoreDNS runs on the host and is the authority for *.{org}.local. Every device that needs to reach NubleStation must use the host as its DNS resolver.
Router (recommended)
Log into your router admin panel. Under DHCP / DNS settings, set the primary DNS server to your NubleStation host’s IP (e.g., 192.168.1.100).
All devices on the network will automatically use CoreDNS after their DHCP lease renews.
Per device (fallback)
Edit /etc/hosts on each device:
192.168.1.100 console.clinic.local
192.168.1.100 api.clinic.local
192.168.1.100 tasks.clinic.localThis works for testing but doesn’t scale — you must add a line for every app subdomain.
Windows
Edit C:\Windows\System32\drivers\etc\hosts as Administrator:
192.168.1.100 console.clinic.local
192.168.1.100 api.clinic.localOr configure the DNS server in Network Adapter Settings → IPv4 → Preferred DNS.
Verify the installation
From the host machine:
# DNS resolves correctly
dig @127.0.0.1 console.clinic.local +short
# → 192.168.1.100
# All containers are healthy
cd /var/nuble && docker compose ps
All services should show healthy or running. Open http://console.clinic.local in a browser — you should see the NubleStation console login.
Re-running the installer
⚠ Caution
The installer detects existing secrets in /var/nuble/.env and reuses them — your data is safe if you re-run on an existing installation.
To reinstall cleanly and wipe all data:
cd /var/nuble && docker compose down -v # removes volumes!
curl -sSL https://github.com/NabilMouzouna/NubleStation/releases/latest/download/install.sh | sudo bashManual setup (development)
If you’re contributing to NubleStation or running services locally without Docker:
git clone https://github.com/NabilMouzouna/NubleStation
cd NubleStation
pnpm install
# Copy and fill in environment variables
cp apps/gateway/.env.example apps/gateway/.env
cp apps/blaze/.env.example apps/blaze/.env
# Start a local Postgres (must be running)
pnpm db:migrate
# Start services
pnpm blaze:dev # database service on :3001
pnpm gateway:dev # API gateway on :3000
See the Troubleshooting page for common installation issues.