RenewCMS
A small self-hosted CMS: a Go API and a Vue 3 admin/front SPA, shipped as a single executable backed by a SQLite file.
🚧 Under development. Features are incomplete, not fully tested and subject to change.
Quick start
Run a release binary
cp .env.example .env # fill in PUBLIC_URL, JWT_SECRET and SMTP_*
./renewcms # → http://localhost:8080
Data is stored in ./data/ by default. For a real server (systemd, HTTPS, backups), see docs/deployment.md.
Run with Docker
cp docker.env.example docker.env # fill in PUBLIC_URL, JWT_SECRET and SMTP_*
docker compose pull
docker compose up -d # http://localhost:8080
Upgrade with docker compose pull && docker compose up -d. The image is git.floriansylvain.fr/fsylvain/renewcms. Every release is a pre-release for now, so the default tag is the moving beta. Pin a version with RENEWCMS_IMAGE. Tags, building from source and publishing are in docs/docker.md.
Updates from the browser
On Linux with systemd, install v2.6.0-beta or newer manually, then follow the browser-update setup guide. It covers finding the actual database directory, installing the helper, testing a restart and troubleshooting. Other platforms use manual upgrades.
Develop
Requires Go 1.27+, Node.js 22, Bun and Task.
cp .env.example .env
task setup
task dev # API with hot reload + Vite HMR → http://localhost:5173
Documentation
| Doc | Contents |
|---|---|
| docs/development.md | Dev setup, how Vite and the API fit together, tests, lint, task commands |
| docs/deployment.md | Building release binaries, running as a service, HTTPS, backups, upgrades |
| docs/docker.md | Running RenewCMS in Docker: image, Compose, data volume, backups, reverse proxy, tags, upgrades, publishing |
| docs/configuration.md | Every environment variable |
| docs/architecture.md | Backend layering and how the SPA is embedded |
| docs/api.md | API reference: authentication, API keys, routes and the activity log |
| docs/api/articles.md | Reading articles: pagination, search, format and body schemas |
| docs/image-variants.md | Image variants and their cache |
| docs/release-notes.md | Release notes format, the published releases and how to publish one |
TODOs
- Cancel button when email validation pending or expired