NubleStation

Prerequisites

RequirementDetails
OSLinux (Ubuntu 22.04 LTS recommended). macOS is supported for development only.
DockerDocker Engine 24+ and Docker Compose v2
RAM2 GB minimum, 4 GB recommended
Disk10 GB free for services + data
NetworkA static LAN IP (or a DHCP reservation on your router)
DNSAbility 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:

  1. Organization name — becomes the subdomain root (e.g., clinic*.clinic.local)
  2. Organization description — optional, stored in the platform config
  3. Admin email — used to log into console.clinic.local
  4. Admin password — minimum 8 characters

It then:

  1. Detects your host’s LAN IP
  2. Writes /var/nuble/.env with all generated secrets
  3. Renders Corefile and Caddyfile from templates
  4. Starts the full Docker Compose stack
  5. 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.local

This 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.local

Or 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 bash

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