Repository navigation
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.
Requires Docker and Docker Compose (bundled with current Docker Desktop/Engine).
git clone https://github.com/Raktim94/nodedr-pos.git && cd nodedr-pos && ./install.shinstall.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.
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 downThen open http://localhost:1994. First launch walks you through:
- Admin account — name, email, password.
- Shop setup — shop name, address, currency symbol, low-stock threshold.
- 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.
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.
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.
Ready to install now (official app-store submission pending). See
casaos/README.md.
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:
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_datavolume (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.