OCMS · docs
Install guide
Requirements
| Item | Minimum |
|---|---|
| OS | Any 64-bit Linux (Ubuntu 22.04+, Debian 12+, …) |
| Software | Docker Engine 24+ and Docker Compose v2 |
| Hardware | 2 cores, 2 GB RAM, 10 GB disk (more for large catalogues) |
| Network | A 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.
| Field | Meaning |
|---|---|
| Setup code | The code the script printed. Lost it? docker compose exec ocms ocms setup-code |
| Store name | Shown in the header, page titles and the PWA; changeable later. |
| Admin email & password | The first full administrator. Password at least 12 characters. |
| Languages & main language | Languages the storefront offers. The main one is used for visitors whose language isn’t enabled. |
| Currency | Prices are stored in this currency’s smallest unit. Changing it later doesn’t convert prices. |
| Theme | Atelier, Bazaar or Kiln — switchable in the admin. |
| Sample products | Six 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
| Symptom | Do this |
|---|---|
| Error 421 | The domain you opened doesn’t match OCMS_DOMAIN in .env. |
| Sign-in sets no cookie | Use HTTPS; on plain HTTP set OCMS_SECURE_COOKIES=false (testing only). |
| No setup code | docker compose exec ocms ocms setup-code |
| Lost the 2FA phone | docker compose exec ocms ocms 2fa-reset you@example.com |
| Logs | docker compose logs -f ocms |