A small CMS, growing thoughtfully.Download RenewCMS
Documentation

Search guide headings, settings and commands.

Set up updates from the web interface

Install the systemd update helper once, then download and install signed RenewCMS releases from Settings.

Browse documentation

Check your installation

Browser updates require the standalone RenewCMS binary (v2.6.0-beta or later) running as an unprivileged systemd service on Linux. Keep the executable and its parent directory under root control. You need sudo access on the server for setup and a RenewCMS owner account to apply updates. Docker deployments update by pulling a new image and recreating the container.

Back up the database, uploads, configuration and current executable before testing or applying an update. The helper uses fixed systemd unit names, so configure it for one RenewCMS instance per host.

Install the systemd service

Find your service settings

The commands use the installation guide’s service and environment file. Substitute your actual unit and configuration path. Use the directory containing DB_FILE for SQLite. Resolve relative paths against the service’s WorkingDirectory. For example, ./data/renewcms.db under /var/lib/renewcms gives /var/lib/renewcms/data. Keep your existing database path. With an external database, use RenewCMS’s configured DATA_DIR.

Bash
systemctl show renewcms -p User -p WorkingDirectory -p ExecStart -p EnvironmentFiles
sudo grep -E '^(DB_FILE|DATA_DIR|PORT)=' /etc/renewcms/renewcms.env

Enable the update helper

Run this once on the server. Adjust both executable paths, the service name, the data directory and the port. Use the local port where RenewCMS answers /healthz on 127.0.0.1. The command installs and starts the systemd watcher and writes update-helper.json in the data directory.

Bash
sudo /opt/renewcms/renewcms enable-browser-updates \
  --service renewcms \
  --binary /opt/renewcms/renewcms \
  --data-dir /var/lib/renewcms \
  --port 8080

Verify setup and test a restart

The path unit should report active and enabled. Reload Settings as the owner and find Updates. With no update staged, you can test the helper by selecting Restart and confirming. The site is briefly unavailable. Wait for it to return, then check /healthz on your public CMS URL.

Bash
systemctl is-active renewcms-update.path
systemctl is-enabled renewcms-update.path

Install an update from Settings

In Settings → Updates, choose Check for updates. If a newer version is available, read its release notes and choose Update. RenewCMS downloads and verifies the signed release while your site stays online.

When the update is ready to install, save any work in progress, choose Restart and confirm. You can wait for a maintenance window before restarting. Once the site returns, verify the new version in Settings and check /healthz on your public CMS URL.

Diagnose a missing button or failed update

If Restart is missing, confirm you are signed in as the owner and check that the service user can read update-helper.json in the actual data directory. If you set up the helper with the wrong directory, run disable-browser-updates with the original service name and data directory before enabling it with the correct settings.

If the site does not come back or the update fails, inspect update-result.json in the data directory, check the helper journal and test the local health endpoint. Automatic rollback restores the previous executable. If you need to undo a database migration, use your database backup.

Bash
sudo journalctl -u renewcms-update.service -n 30 --no-pager
curl -fsS http://127.0.0.1:8080/healthz