Open-source headless CMS with visual admin panel, form builder, and AI assistant
4.3K
Open-source headless CMS with a visual admin panel, form builder, and AI-powered assistant — all in one Docker image.
Run FormCMS with a single command using the built-in SQLite database. No external database needed.
docker run -d \
--name formcms \
-p 5000:5000 \
-v formcms_data:/data \
-e DATABASE_PROVIDER=0 \
-e "CONNECTION_STRING=Data Source=/data/cms.db" \
-e FORMCMS_DATA_PATH=/data \
-e "DATABASE_URL=file:/data/mate.db" \
jaike/formcms-mono:latest
Then open http://localhost:5000/mate in your browser.
Note: Data is persisted in a Docker volume (
formcms_data). Your content survives container restarts.
You can also start FormCMS without a volume if your Docker host provider doesn't allow volumes for free users:
docker run -d \
--name formcms \
-p 5000:5000 \
jaike/formcms-mono:latest
Caution
Data is **ephemeral**. Every time the container restarts, all your data will be **lost**.
For production, use Docker Compose to run FormCMS with a PostgreSQL database.
docker-compose.ymlservices:
app:
image: jaike/formcms-mono:latest
ports:
- "5000:5000"
environment:
# --- Database ---
- DATABASE_PROVIDER=1 # 0=SQLite, 1=Postgres, 2=SqlServer, 3=MySQL
- CONNECTION_STRING=Host=db;Port=5432;Database=cms;Username=postgres;Password=postgres;
- DatabaseProvider=Postgres
- "ConnectionStrings__Postgres=Host=db;Database=cms;Username=postgres;Password=postgres;"
- FORMCMS_DATA_PATH=/data
# --- Node.js (internal, no need to change) ---
- PORT=3001
- NODE_ENV=production
- FORMCMS_BASE_URL=http://127.0.0.1:5001
- DATABASE_URL=file:/data/mate/sqlite.db
depends_on:
- db
restart: unless-stopped
volumes:
- formcms_data:/data
db:
image: postgres:15
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=cms
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
postgres_data:
formcms_data:
docker compose up -d
Open http://localhost:5000/mate and follow the setup wizard.
| Variable | Default | Description |
|---|---|---|
DATABASE_PROVIDER | 1 | 0=SQLite, 1=Postgres, 2=SqlServer, 3=MySQL |
CONNECTION_STRING | (see above) | Database connection string |
POSTGRES_USER | postgres | PostgreSQL username |
POSTGRES_PASSWORD | postgres | PostgreSQL password |
POSTGRES_DB | cms | PostgreSQL database name |
⚠️ Security: Change the default database password before deploying to production.
Nginx (Port 5000)
┌─────────────────┐
│ / → .NET │
│ /mate/ → Node │
└────────┬────────┘
│
┌───────────┴───────────┐
▼ ▼
FormCMS (.NET) FormMate (Node.js)
│ │
└───────────┬───────────┘
▼
PostgreSQL
Content type
Image
Digest
sha256:7356afa76…
Size
415.9 MB
Last updated
5 months ago
docker pull jaike/formcms-mono