Installation
Before you start, open the firewall ports and create the DNS record described in Networking. The HTTPS certificate cannot be issued until DNS resolves to the host.
1. Prepare the files
Section titled “1. Prepare the files”SSH into the host and run:
curl -fsSL https://raw.githubusercontent.com/comcent-io/comcent-ce/main/install.sh | bashThe installer takes about 30 seconds and:
- Verifies
curlandopenssl, and installs Docker viaget.docker.comif it is missing. - Verifies the Docker Compose plugin.
- Detects the host’s public IP.
- Generates strong random values for
POSTGRES_PASSWORD,RABBITMQ_PASSWORD,INTERNAL_API_PASSWORD,RPC_API_TOKEN,SECRET_KEY_BASEandSIGNING_KEY. - Downloads
docker-compose.deploy.yamlasdocker-compose.yaml. - Writes
.envwith file mode600: known values filled in, the rest markedreplaceMe.
Everything goes into ~/comcent-ce/. The installer does not pull images or start the stack.
Two environment variables change its behaviour:
| Variable | Default | Effect |
|---|---|---|
INSTALL_DIR | ~/comcent-ce | Where the files are written |
COMCENT_BRANCH | main | Which branch of the repository to download the compose file from |
If you prefer not to pipe a script into your shell, do the same steps by hand:
mkdir -p ~/comcent-ce && cd ~/comcent-cecurl -fsSL https://raw.githubusercontent.com/comcent-io/comcent-ce/main/docker-compose.deploy.yaml \ -o docker-compose.yamlThen create .env in the same directory with the variables listed in Configuration. Generate each secret yourself, for example:
openssl rand -hex 32 # SIGNING_KEYopenssl rand -base64 64 # SECRET_KEY_BASEopenssl rand -base64 48 # passwords and tokensKeep .env private (chmod 600 .env) and out of source control.
2. Fill in .env
Section titled “2. Fill in .env”nano ~/comcent-ce/.envSearch for replaceMe and replace every occurrence:
| Variable | What to set |
|---|---|
COMCENT_DOMAIN | Your hostname, for example voice.yourdomain.com |
LETSENCRYPT_EMAIL | Email for certificate renewal alerts |
SOURCE_EMAIL | Sender for invites and password resets |
SMTP_URL | smtp://user:pass@host:port. Leave blank to disable email. |
STORAGE_BUCKET_NAME, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY | Your S3 or S3-compatible bucket for recordings and uploads |
Optionally add DEEPGRAM_API_KEY and OPENAI_API_KEY to enable transcription, AI analysis and voice bots. The full list is in Configuration.
3. Start the stack
Section titled “3. Start the stack”cd ~/comcent-cedocker compose up -dThe first run pulls about 800 MB of images and takes 5–10 minutes. That is normal. Follow the server as it boots:
docker compose logs -f serverThe HTTPS certificate is issued about a minute after the first start. Database migrations run automatically every time the server starts.
4. Claim your instance
Section titled “4. Claim your instance”On first start the server prints a one-time setup token for creating the first admin account:
docker compose logs server | grep -A 10 "FIRST-RUN SETUP"- Open
https://<COMCENT_DOMAIN>/setup. - Enter the setup token, your name, email and password, and your organisation’s details.
- Submit. You are now the instance’s super-admin and the first member of your organisation.
Lost the token? It is printed again on every server start until the instance is claimed:
docker compose restart serverdocker compose logs server | grep -A 10 "FIRST-RUN SETUP"