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
- Go to Content > Pages and choose New page.
- Give it an address such as
/aboutand a title. - Write in Markdown, or use Insert for heroes, grids, cards, forms and galleries - each has a form and a live preview.
- Check it in Live Preview at full, tablet and phone width.
- 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.