OCMS O

OCMS · docs

Install guide

Requirements

ItemMinimum
OSAny 64-bit Linux (Ubuntu 22.04+, Debian 12+, …)
SoftwareDocker Engine 24+ and Docker Compose v2
Hardware2 cores, 2 GB RAM, 10 GB disk (more for large catalogues)
NetworkA domain pointing at the server, ports 80 and 443 open

You don’t need Node, PostgreSQL or a web server on the host; everything runs in containers.

Get the package

You receive the install package after purchase. Unpack it on the server:

$ tar xzf ocms-0.1.tar.gz
$ cd ocms/deploy

Run the installer

The script creates .env with a random database password (only if it doesn’t exist), builds and starts the containers, and prints the setup code at the end.

$ ./install.sh shop.example.com

For automatic HTTPS with the bundled Caddy:

$ docker compose --profile tls up -d

Behind a CDN or another proxy, set OCMS_TRUST_PROXY in .env to the number of proxies (e.g. 2 for CDN + nginx). Never true: any visitor could then forge their IP.

Finish in the browser

Open https://your-domain/install. The page exists only until the first administrator is created.

FieldMeaning
Setup codeThe code the script printed. Lost it? docker compose exec ocms ocms setup-code
Store nameShown in the header, page titles and the PWA; changeable later.
Admin email & passwordThe first full administrator. Password at least 12 characters.
Languages & main languageLanguages the storefront offers. The main one is used for visitors whose language isn’t enabled.
CurrencyPrices are stored in this currency’s smallest unit. Changing it later doesn’t convert prices.
ThemeAtelier, Bazaar or Kiln — switchable in the admin.
Sample productsSix samples so you see the store working; deletable in the admin.

You land in the admin (/admin/). The storefront is at /.

What you end up with

  • A storefront with your theme and languages: home, product, cart and checkout pages.
  • The admin: dashboard, page builder, products, categories, orders, modules, themes and settings.
  • Core modules installed and enabled; bank transfer and cash on delivery ready.

Next: the manual after install.

Updating

Unpack the new package over the old folder and rebuild. .env and data are untouched; database changes run automatically.

$ docker compose up -d --build

Backups

$ docker compose exec -T db pg_dump -U ocms ocms | gzip > ocms-$(date +%F).sql.gz

Restore:

$ gunzip -c ocms-2026-01-01.sql.gz | docker compose exec -T db psql -U ocms ocms

Keep .env safe and separately — it holds the database password.

Troubleshooting

SymptomDo this
Error 421The domain you opened doesn’t match OCMS_DOMAIN in .env.
Sign-in sets no cookieUse HTTPS; on plain HTTP set OCMS_SECURE_COOKIES=false (testing only).
No setup codedocker compose exec ocms ocms setup-code
Lost the 2FA phonedocker compose exec ocms ocms 2fa-reset you@example.com
Logsdocker compose logs -f ocms