Installing from source
Prerequisites
Section titled “Prerequisites”- Node.js 24 (there’s an
.nvmrc, sonvm useworks) - pnpm 10 (
corepack enablegets you the version pinned inpackage.json) - Docker with Compose for PostgreSQL and Redis, or your own Postgres 17 and Redis 7
You don’t write any config files. The install wizard asks for your database details,
generates the secrets and writes .env for you.
Quick start
Section titled “Quick start”# 1. Clone and installgit clone https://github.com/slaxxer/xentium.gitcd xentiumcorepack enable # gets the pinned pnpm versionpnpm install
# 2. Start everything: Postgres + Redis containers, Prisma client, api + worker + web./xentium.shOpen http://localhost:5173 and you’ll land in the install wizard. It does the rest in
the browser: checks your database, generates the secrets, writes .env, applies the
schema and creates your admin account. You don’t restart anything.
If you use our Docker setup, enter this in the wizard’s database step: host
localhost, port5432, databasexentium, userxentium, passwordxentium.
Already have a
.env(an existing install, CI, a restored config)? The wizard notices, and the database step only tests the connection. It doesn’t overwrite anything.
./xentium.shstarts the containers, waits until they’re healthy, then runs the API, the BullMQ worker and the web app together.Ctrl+Cstops the apps but leaves the containers running so the next start is quick../xentium.sh downstops those too.
Default ports: API 4000, web 5173, Postgres 5432, Redis 6379.
First run
Section titled “First run”Until the site is installed, an install guard blocks every route except the installer,
and the web app sends you to /install. The wizard goes through these steps:
- Welcome
- Environment check. On a fresh clone it checks the Node version, whether
.envis writable and the data directory. With an existing.envit checks Node, PostgreSQL, Redis, disk and config. - Database. On a fresh clone you enter your PostgreSQL details (host, port, database, user, password, and a Redis URL under Advanced if you need one). We test the connection, generate
COOKIE_SECRET,JWT_SECRET,REFRESH_TOKEN_HMAC_SECRETandDUMMY_ARGON2_HASH, write.envand switch to the full app. With an existing.envthis step is just a connection test. - Site config: name, URL, default language, timezone.
- Admin account: your first administrator.
- Finalize:
prisma migrate deployapplies the schema, we seed the core groups, permissions and system profile fields, and write asite.idto settings. - Complete: links to the ACP and to your site.
After that the installer locks itself. Log in and go to the ACP (Admin Control Panel)
at /admin.
Typed the wrong credentials? Nothing is written until the connection test passes, so fix them and hit Connect & save again. We never overwrite an existing
.env; the wizard only adds the keys that are missing.
The installer applies the migrations. If you want to run them yourself while developing, use
pnpm db:migrate.