Deploy Contember engine as self-hosted
The easiest way to run Contember is our Contember Cloud. If you want to host Contember elsewhere, here's a quick tutorial. Contember can be self-hosted almost anywhere.
What you'll need
- S3-compatible storage (AWS S3, DigitalOcean Spaces, MinIO, CEPH, Zenko CloudServer)
- PostgreSQL database (AWS RDS for PostgreSQL, DigitalOcean Managed Database)
- Some way to run Docker image. You'll need a provider that supports:
Docker
,Docker Compose
,SSH access
and Proxy server.
It's good idea to run these at one provider but it's not required.
Deploy engine to Digital Ocean Droplet
- Set up DigitalOcean Spaces
- Set up DigitalOcean Managed Database
- Deploy Contember Engine
Deploy Contember Engine
1. Create droplet
Use 1-Click Application marketplace from Digital Ocean to create droplet with Docker.
2. Connect to your server with ssh.
ssh root@your_server_ip
3. Create an empty folder and move into it.
mkdir contember && cd contember
4. In your empty folder, create .env
file.
nano .env
Add all environment variables to .env
file:
LOGIN_TOKEN
- Login token used by Contember api (e.g.LOGIN_TOKEN=YOUR_LOGIN_TOKEN
)*ROOT_TOKEN
Root token used by Contember api (e.g.ROOT_TOKEN=YOUR_ROOT_TOKEN
)*ROOT_PASSWORD
Root password for Contember (e.g.ROOT_PASSWORD=password
)ROOT_EMAIL
Root e-mail for Contember (e.g.ROOT_EMAIL=contember@localhost
)S3_KEY
Key from your S3 storage (e.g.S3_KEY=yours3key
)S3_SECRET
Secret from your S3 storage (e.g.S3_SECRET=yours3secret
)S3_ENDPOINT
Endpoint of your bucket (e.g.S3_ENDPOINT=https://rgn1.yours3provider.com
)S3_REGION
Region if your bucket (e.g.S3_REGION=rgn1
)S3_BUCKET
Your bucket name (e.g.S3=your-bucket
)DB_PASSWORD
Database password (e.g.DB_PASSWORD=databasePassword
)DB_USER
Database user name (e.g.DB_USER=dbuser
)DB_PORT
Database port (e.g.DB_PORT=5432
)DB_HOST
Database host (e.g.DB_HOST=your-db-server.com
)MAILER_FROM
Sender e-mail used for Contember notifications, password resets, etc... (e.g.MAILER_FROM=contember@localhost
)MAILER_PORT
Your SMTP port (e.g.MAILER_PORT=2525
)MAILER_HOST
Your SMTP host (e.g.send.your-smtp.com
)
*For generating secure tokens you can run openssl rand -hex 20
in your terminal.
5. In same folder, create docker-compose.yaml
file.
nano docker-compose.yaml
version: "2.4"
services:
contember-engine:
image: contember/engine:1.0.0-rc.7
environment:
NODE_ENV: "production"
CONTEMBER_PORT: "4000"
CONTEMBER_ROOT_EMAIL: ${ROOT_EMAIL}
CONTEMBER_ROOT_PASSWORD: ${ROOT_PASSWORD}
CONTEMBER_ROOT_TOKEN: ${ROOT_TOKEN}
CONTEMBER_LOGIN_TOKEN: ${LOGIN_TOKEN}
DEFAULT_DB_HOST: ${DB_HOST}
DEFAULT_DB_PORT: ${DB_PORT}
DEFAULT_DB_USER: ${DB_USER}
DEFAULT_DB_PASSWORD: ${DB_PASSWORD}
DEFAULT_DB_SSL: "true"
DEFAULT_S3_REGION: ${S3_REGION}
DEFAULT_S3_KEY: ${S3_KEY}
DEFAULT_S3_SECRET: ${S3_SECRET}
DEFAULT_S3_ENDPOINT: ${S3_ENDPOINT}
DEFAULT_S3_BUCKET: ${S3_BUCKET}
TENANT_DB_NAME: "tenant"
TENANT_MAILER_HOST: ${MAILER_HOST}
TENANT_MAILER_PORT: ${MAILER_PORT}
TENANT_MAILER_FROM: ${MAILER_FROM}
ports:
- "1481:4000"
6. To run Contember API, use the following command:
# Execute Docker image detaching the terminal
docker-compose up -d