Skip to content

Self-Hosting Callico

It is possible to run the Callico platform on your own servers, using the following instructions.

Requirements

To deploy your own Callico instance, you need:

  • An online server using a GNU/Linux distribution as operating system, we recommend using either Ubuntu or Debian.
  • This online server must have Docker installed.
  • And must be reachable with a public domain name.

Note

In this document, we will assume your server is available at callico.company.com.

File storage

The Callico platform requires an Amazon S3-compatible bucket to store media files (thumbnails, file exports, etc). You can either:

  1. use a cloud provider to create a bucket: you will not need to self-host this service but your data will reside on that cloud,
  2. or self-host this service using Min.IO on your own server. If you choose this option, you will need 2 additional public domain names to expose the file API and the administration panel.

Note

We will use minio.callico.company.com (file API) and minio-console.callico.company.com (administration panel) as domain name examples in this document.

Architecture

graph TD
    traefik[Traefik] --> backend[Backend]
    backend --> postgres[PostgreSQL]
    backend --> redis[Redis]
    worker[Worker] --> postgres
    worker --> redis
    backend --> minio[Min.IO]
    worker --> minio

We use exclusively open-source software for the whole architecture powering Callico:

  • Traefik is a load-balancer, capable of managing SSL certificates using Let's encrypt,
  • PostgreSQL is the leading relational database: it stores all of Callico data,
  • Redis is a fast data store which we use to communicate with asynchronous workers,
  • Min.IO is a file storage server, similar to Amazon S3 service.

Finally, the same Docker image will be used to run our Backend (handling every user interaction), and our Worker (used for long-running tasks like data import & export).

Deployment with docker-compose

The following files are necessary to deploy Callico on your online server:

  • docker-compose.yml: this is the main file describing all the services to run with Docker,
  • callico.env: this is the file configuring Callico through environment variables,
  • traefik.toml: this is the file to configure Traefik (managing an SSL certificate for your application through Let's encrypt)

Once you are familiar with these files, you can follow the steps below to deploy your own Callico instance:

  1. Copy them on your server
  2. Edit all 3 of them to update:
    • Domain names references, basically changing callico.company.com, minio.callico.company.com and minio-console.callico.company.com to your own domains
    • The passwords for the PostgreSQL database and the Min.IO default user
    • Min.IO or AWS S3-compatible connection information
  3. Start the platform by running: docker compose up
  4. Run the initial database migrations with the command: docker compose run callico django-admin migrate
  5. Create an administrator account so you can later connect through the web interface: docker compose run callico django-admin createsuperuser
  6. Connect on your Min.IO instance (if you chose to self-host this service) and create a new callico bucket
  7. Finally, you can use your web browser to connect to your instance using your administrator account and get started with Callico!

Going further

We can provide technical support if you need help to go further with Callico on your servers (using a cluster of servers, adding monitoring and backups, deploying with orchestration tools, etc). You can reach us through our contact form to start a discussion.