Skip to content

Installation

raktim edited this page Aug 4, 2026 · 1 revision

Installation

Four ways to install, all built from the same code and pointed at the same http://<machine>:1994 register — pick whichever fits your till.

Platform Install What it needs
🪟 Windows 10/11 (64-bit) Download the installer, run it, done Nothing — no Docker, no Node.js. Installs as two Windows services (auto-start, no login required)
🐧 Debian / Ubuntu sudo apt install ./nodedr-pos-latest-amd64.deb (download) Nothing — no Docker. Installs as a systemd service (nodedr-pos doctor|backup|restore|logs CLI included)
🐳 Docker Compose (any OS) git clone + ./install.sh (below) Docker
🏠 CasaOS / ZimaOS Install from a compose URL — see casaos/README.md Nothing — pulls pre-built images

All four set up USB thermal-printer support out of the box on Linux (kernel usblp transport, no driver install) and share the same GST-inclusive pricing, dues, loyalty, and returns logic.

Docker Compose — one-click install

Requires Docker and Docker Compose (bundled with current Docker Desktop/Engine).

git clone https://github.com/Raktim94/nodedr-pos.git && cd nodedr-pos && ./install.sh

install.sh checks Docker is installed, builds both images, starts the stack, waits for the backend to report healthy, then prints the URL to open. Re-run it any time to rebuild after pulling updates.

Manual install

If you'd rather run each step yourself:

# 1. Get the code
git clone https://github.com/Raktim94/nodedr-pos.git
cd nodedr-pos

# 2. Build the backend and frontend images (multi-stage, node:24-alpine)
docker compose build

# 3. Start both containers in the background — Compose creates the
#    nodedr-pos_data named volume automatically on first run
docker compose up -d

# 4. (optional) Watch the logs until both services report ready
docker compose logs -f

# 5. (later) Stop the stack without deleting your data
docker compose down

Then open http://localhost:1994. First launch walks you through:

  1. Admin account — name, email, password.
  2. Shop setup — shop name, address, currency symbol, low-stock threshold.
  3. You're dropped onto the dashboard, ready to add products and sell.

All data (SQLite database + auto-generated session secret) lives in the nodedr-pos_data Docker volume, not inside the containers — it survives docker compose down, container recreation, and image rebuilds.

Want a different port, or to deploy somewhere other than localhost? Copy .env.example to .env and set values there — docker-compose.yml itself never needs editing.

Native install — Windows 10/11

For a shop till that shouldn't need Docker or a terminal at all: download and run the .exe installer linked above. Full detail (what gets installed where, uninstalling, troubleshooting) is in packaging/windows/README.md.

Native install — Debian/Ubuntu

Built & tested on Debian 13 / Ubuntu 24.04. Full detail is in packaging/README.md, including the bundled nodedr-pos doctor|backup|restore|logs CLI.

CasaOS / ZimaOS

Ready to install now (official app-store submission pending). See casaos/README.md.

Where to run it

Nothing about the app is tied to a specific machine — the same Docker Compose stack that runs on a shop's counter machine runs unmodified on any VPS/cloud provider. It's HTTP by default and designed for a trusted local network; if you expose it beyond the counter, terminate HTTPS in front of it and set COOKIE_SECURE=true in .env. See the README's Where to run it section for the full trade-off discussion, and Hardware Setup for exposing camera scanning securely over HTTPS (self-signed via Caddy, or a Cloudflare Tunnel).

Updating, backing up, resetting

  • Updating: git pull && ./install.sh (Docker), or re-run the installer (Windows/Debian) — see the README's Updating section.
  • Backing up: the entire app's state is the nodedr-pos_data volume (or the equivalent data directory on native installs) — see Backing up your data.
  • Resetting: see Resetting / clearing data before deleting anything — it documents exactly what's safe to remove.

Clone this wiki locally