> Documentation index: https://stilldeeppos.com/llms.txt

# Install and operate a StillDeep server

> What runs on the business server and on each register, how StillDeep is configured, where secrets live and how health is checked.

Source: https://stilldeeppos.com/docs/self-hosting

## On the business server

| Component | Role | Reach |
|---|---|---|
| PostgreSQL 19 | Database, single source of truth | Server only |
| Server.Service | gRPC gateway of the registers, proxy, hub | Local network |
| Admin | Configuration web app | Local network |
| Report | Reports web app | Local network, optionally Internet |
| AI service (optional) | StillDeep AI, local models | Server or a GPU machine |

PostgreSQL 19 is the minimum version. Services connect with dedicated database users, never the superuser, and registers never connect to the database at all.

## On each register

One container or one native program with the screen, the register engine and the local SQLite copy. Registers that drive Windows hardware (thermal printers, cash drawers) can run natively and link the libraries in-process.

## Configuration

StillDeep follows the twelve-factor rules:

- Configuration by environment variables, never connection strings in configuration files. Secrets are kept encrypted and injected at startup; without them, the Admin opens its setup page.
- Logs on standard output, with OpenTelemetry for metrics and traces.
- A `/healthz` health check on every service.
- Graceful shutdown on SIGTERM or Ctrl+C.

## Operating systems

Every service runs on Windows, Linux and macOS. Docker packaging and automatic updates are planned; until then, services run natively.

## Updates and offline registers

A register always drains its outbox before an update, so no sale is lost. Registers keep selling while the server is updated, and catch up when it comes back.

## Backups

The business server holds all the data: back up its PostgreSQL database with the usual tools. Registers only hold a copy and their outbox.
