Skip to content

GitLab ​

Source code repositories are managed via a self-hosted GitLab instance at https://gitlab.morphsites.net.

Rationale ​

While self-hosting GitLab incurs some operations overhead, it has a number of advantages:

  • Source code is not handed over to a third party
  • Much cheaper to run CI/CD pipelines
  • Mitigates the impact of GitHub outages

Implementation ​

GitLab runs via Docker Compose on a single Linode VPS. This also includes job runners for CI/CD and GitLab's Composer and Docker registries.

GitLab is proxied by Cloudflare for DDoS and WAF protection.

Configuration is stored in a GitHub repository: https://github.com/morphsites-limited/gitlab. Further information may be found in the project readme.

Configuration changes ​

Configuration changes may be made live on the GitLab server when needed, but all changes must be committed to the main branch of the repository.

Upgrade procedure ​

GitLab upgrades should be performed out of hours around once a month, or as needed to receive security patches.

Procedure:

shell
ssh gitlab.morphsites.net
sudo su morph
cd /home/morph/gitlab
docker compose pull
docker compose down
docker compose up

It can take several minutes for the gitlab container to fully boot and the upgrade to complete.

TIP

Omitting the -d flag on docker compose up will give you a live view of the logs. Hit the d key to detach and leave the containers running.