Skip to content

Quickstart & Self-hosting

ConvoLog ships as a Docker image. You will need:

  • A Linux server (VPS, home lab, or any machine with Docker installed)
  • Docker and Docker Compose
  • A domain name or local hostname (optional, but recommended for HTTPS)

1. Pull the image

Terminal window
docker pull ghcr.io/your-org/convolog:latest

PLACEHOLDER — replace your-org/convolog with the actual GHCR path once the repo is public.

2. Create a docker-compose.yml

services:
convolog:
image: ghcr.io/your-org/convolog:latest
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- ./data:/app/data # SQLite database and uploads
- ./backups:/app/backups # Scheduled backup output
environment:
DATABASE_URL: file:/app/data/convolog.db
NEXTAUTH_SECRET: "change-me-to-a-random-string"
NEXTAUTH_URL: "http://localhost:3000"
# Optional — see Configuration for the full list

3. Start the container

Terminal window
docker compose up -d

4. Create the first admin account

On first run, ConvoLog creates a setup wizard at http://localhost:3000/setup. Complete it to create your SUPER_ADMIN account.

The setup route is disabled after the first user is created.

For production use, put ConvoLog behind a reverse proxy such as Nginx or Caddy to terminate TLS.

Example Caddyfile:

convolog.example.com {
reverse_proxy localhost:3000
}

Upgrading

Pull the new image and restart:

Terminal window
docker compose pull && docker compose up -d

Database migrations run automatically on startup.

Troubleshooting

  • Container exits immediately — check docker compose logs convolog for the error.
  • Cannot reach the setup page — ensure port 3000 is not blocked by a firewall.
  • Database errors — verify the ./data directory is writable by the container user.

Next steps