Get started / Install guide
Self-hosted

Install Domma CMS.

From an empty folder to a published page in about five minutes. You need Node.js 24 or later, npm and a terminal - no database, no build step.

1. Check your Node version

node --version

Domma CMS needs Node 24 or later. On an older Node the installer stops and says which version it found. With nvm: nvm install 24 && nvm use 24.

2. Create the site

npx domma-cms my-site

This one command creates my-site/, copies the CMS into it, writes its settings and a fresh secret, installs the dependencies, runs the setup wizard and adds a few demo pages. Useful options: --no-install, --no-setup, --no-seed, --help.

3. Start it and sign in

cd my-site
npm run dev

The site is at http://localhost:4096 and the admin at http://localhost:4096/admin. If you skipped the terminal wizard, the admin shows a setup form the first time: create the first account, name the site, pick a theme, and you are in. Use npm start in production; npm run pm2:start runs it under PM2.

4. Set the two things that matter

Open System > Site Settings:

  • General > Site URL - the address people will use. Password-reset links, canonical links and the sitemap are built from it.
  • Email - your SMTP server and From address. Send a test email. Until this is set, mail goes to a test inbox and reaches nobody - the Settings badge and the Dashboard say so.

5. Publish your first page

  1. Go to Content > Pages and choose New page.
  2. Give it an address such as /about and a title.
  3. Write in Markdown, or use Insert for heroes, grids, cards, forms and galleries - each has a form and a live preview.
  4. Check it in Live Preview at full, tablet and phone width.
  5. Set the status to Published and save. It is live at once.

New pages start as drafts. You can open a draft at its real address while signed in, or send someone a share link that expires.

6. Switch on the Tools you need

The built-in Tools - Analytics, Contacts, Notes, Todo, SEO, Forms and search - are on from the start. Open the Marketplace and switch on Security first, then Blog, Shopping Cart, Mail Reader or Feedback as you need them. Switching a Tool on or off restarts the site for a moment; under PM2 or another supervisor that happens by itself. Browse the Tools.

7. Put it online

Run the site behind a web server such as Apache or nginx that handles HTTPS, and set TRUST_PROXY=loopback in .env so sign-in limits see each visitor's real address. Then point your domain at it.

Keeping it up to date

npx domma-cms@latest update --dry-run
npx domma-cms@latest update

The first line shows what would change. The second backs the site up to .domma-backups/, replaces the engine, keeps your content, settings and Tools, and adds only new settings. See what's new.

What's in the folder

my-site/
  config/      settings as JSON: site, theme, menus, Tools
  content/     pages (Markdown), collections, media, blocks, users
  plugins/     the Tools you can switch on
  public/      the site's scripts and styles
  admin/       the admin (replaced on update)
  server/      the server (replaced on update)
  .env         secrets only

Your work lives in content/ and config/, which the updater never replaces. Put your own styles in Site Settings > Custom CSS.

Handy commands

Command What it does
npm run dev Start and restart on file changes
npm start Start for production
npm run setup The terminal setup wizard
npm run users -- list List accounts; also reset-password, set-role, create, activate
npm run seed Add the demo pages
npm run reset Factory reset: wipes content and users
node plugins/security/bin/unlock.js --all Lift every sign-in lockout if you lock yourself out

Stuck, or would rather we ran it?

Managed plans handle the server, the updates and the backups for you.