Ghost CMS
Three Ghost instances running on a shared MySQL database.
Blog URLs
| Blog | Public URL | Admin URL | Container | Port |
|---|---|---|---|---|
| Cam4 | https://blog.cam4.camlab.dev | https://blog.cam4.camlab.dev/ghost | ghost-cam4 | 2368 |
| Cam4Models | https://blog.cam4models.camlab.dev | https://blog.cam4models.camlab.dev/ghost | ghost-cam4models | 2369 |
| Cam4Pays | https://blog.cam4pays.camlab.dev | https://blog.cam4pays.camlab.dev/ghost | ghost-cam4pays | 2370 |
API Keys
Each blog has two API keys stored in /opt/camlab/.env:
| Blog | Admin API Key Var | Content API Key Var |
|---|---|---|
| Cam4 | GHOST_CAM4_ADMIN_API_KEY |
GHOST_CAM4_CONTENT_API_KEY |
| Cam4Models | GHOST_CAM4MODELS_ADMIN_API_KEY |
GHOST_CAM4MODELS_CONTENT_API_KEY |
| Cam4Pays | GHOST_CAM4PAYS_ADMIN_API_KEY |
GHOST_CAM4PAYS_CONTENT_API_KEY |
Keys are created via: Ghost Admin → Settings → Integrations → "CamLab Automation"
Database
Shared MySQL 8.0 instance with 3 separate databases:
| Database | User | Password Var |
|---|---|---|
| ghost_cam4 | ghost_cam4 | GHOST_CAM4_DB_PASSWORD |
| ghost_cam4models | ghost_cam4models | GHOST_CAM4MODELS_DB_PASSWORD |
| ghost_cam4pays | ghost_cam4pays | GHOST_CAM4PAYS_DB_PASSWORD |
Databases are auto-created on first boot via mysql/init/00-create-databases.sh.
Content Directories
Ghost content (images, themes, data) is stored on the host:
/opt/camlab/ghost/
├── cam4/ → /var/lib/ghost/content (in ghost-cam4)
├── cam4models/ → /var/lib/ghost/content (in ghost-cam4models)
└── cam4pays/ → /var/lib/ghost/content (in ghost-cam4pays)
Image Paths
Images uploaded to Ghost or generated by the automation pipeline:
n8n has direct write access to these directories (bind-mounted as /ghost-images/<slug>).
Themes
Each blog uses a customized Casper theme:
To activate: Ghost Admin → Settings → Design → Themes → Activate
Setup Wizard
On first boot, each Ghost instance needs the setup wizard completed:
- Visit
https://blog.<slug>.camlab.dev/ghost - Create the admin account
- Go to Settings → Integrations → Add Custom Integration → "CamLab Automation"
- Copy the Admin API Key and Content API Key into
/opt/camlab/.env - Restart ghost-mcp to pick up the new keys