Going live
The installation responds. Here is what to do before you let anyone in, and what to keep doing afterwards.
Before you open the door
1. The company
Settings → Company holds the legal name, the country, the currency and the time zone.
The last two deserve a minute. They are used to convert and to display, and changing them later does not rewrite history: an accounting entry keeps the rate frozen at its own date. That is deliberate, and it is what makes your books defensible.
2. Modules
Settings → Modules lists what is available. Switch on what you need and nothing more: a module
that is off clutters neither the menus nor your team’s training.
A module can be switched off again. Its data stays; only the screens disappear.
3. Users and their rights
Create the accounts, then give each one its groups. A group is a set of rights; it decides what a user sees and may change.
Take your time here. Opening a right later is far easier than un-seeing a record somebody should not have seen.
4. Outbound mail
Settings → Mail holds your sending server. Test it before opening: a user who never receives
their initial password opens a ticket on day one.
5. Backups
Set them up before the first real record, not after.
A backup is one command:
kewos backup create \ --database-url "$KEWOS_DATABASE_URL" \ --tenant acme \ --output /backups/acme/$(date -u +%Y-%m-%dT%H%M%SZ).tar.gzIt produces an archive holding a pg_dump of your database and a manifest saying which
customer it came from, when it was taken, and with which toolchain. The PostgreSQL client
tools (pg_dump, pg_restore, package postgresql-client) have to be installed on the
machine; if they are not, the command tells you, with the package name.
Nightly, in cron:
0 2 * * * kewos kewos backup create --database-url "postgresql+psycopg://kewos@127.0.0.1:5432/kewos_acme" --tenant acme --output /backups/acme/$(date -u +\%Y-\%m-\%dT\%H\%M\%SZ).tar.gzDo not put the password on the command line: ps is readable by every account on the
machine. Use ~/.pgpass with mode 0600, or local socket authentication.
To see what an archive holds, without restoring anything:
kewos backup show --input /backups/acme/2026-09-06T020000Z.tar.gz# tenant_slug: acme# dialect: postgresql# created_at: 2026-09-06T02:00:03.114882+00:006. Restoring, tried for real at least once
You restore beside, never over. The command refuses a database that already holds tables.
createdb -O kewos kewos_acme_restore
kewos backup restore \ --input /backups/acme/2026-09-06T020000Z.tar.gz \ --database-url "postgresql+psycopg://kewos@127.0.0.1:5432/kewos_acme_restore" \ --confirmCheck the restored database, then switch over by renaming both, with the service stopped. The original is renamed, not dropped: it is the only copy of what happened.
The full procedure, disaster scenarios included, is in the docs/runbook-backup-dr.md runbook
shipped with the product.
Habits worth keeping
After every upgrade
A new release may bring schema changes. The upgrade procedure shipped with the package applies them; it never erases anything.
Then check the installation reports itself healthy:
curl https://erp.example.com/health/liveWatch three things
| What | Why |
|---|---|
| Your licence expiry | A banner will warn you, but a renewal takes preparation. |
| Disk space | Attachments and backups grow without asking. |
| Your backups | Not that they run: that they restore. |
What will raise questions first
In order of observed frequency.
An empty list although the data exists. Almost always a question of rights: the account does not see those rows, or not that company. Permissions apply beneath the interface, so an empty list is a correct answer, not a failure.
An email that does not go out. Sending is queued, never done from the screen. If the worker service is not running, the message waits with no visible error.
A user who cannot see a module that is switched on. They are missing the matching group.
An amount shown without a currency. See the company setting above.
Getting help
Write to support@kewos.io with your version number and, if the service will not start, the last lines of its log.