About GitLab
GitLab is a DevOps platform that combines Git repository hosting, merge requests, issue tracking, a package registry and continuous integration (CI/CD) in a single application. The Community Edition (CE) is open source. It suits development teams, agencies and small businesses that want to keep their code and pipelines on a server they control.
On delivery, the Linux VPS (Debian 12 or 13, Ubuntu 20.04, 22.04 or 24.04) has GitLab CE installed from the official packages.gitlab.com repository, using the Omnibus package. A self-signed TLS certificate, valid for 10 years, is generated for the server's public IP address. The external URL is set to https://SERVER_IP, and HTTP is redirected to HTTPS.
The administrator account is root. Its initial password is written to /etc/gitlab/initial_root_password. The recipe requires at least 4 GB of RAM (8 GB recommended) and 2 CPU cores. GitLab is resource-hungry, so size the VPS accordingly.
What you can do with GitLab
Official Omnibus installation
GitLab CE is installed from GitLab's apt repository, then configured with
gitlab-ctl reconfigure. Updates go through apt afterwards.HTTPS from the first boot
A self-signed RSA 2048 certificate is created in
/etc/gitlab/ssl/for the server IP. Nginx redirects HTTP to HTTPS.Generated root password
The initial password of the
rootaccount is stored in/etc/gitlab/initial_root_password, so there is no known default credential.Repositories, reviews and CI/CD
Merge requests, issues, wikis, a package registry and CI/CD pipelines live in the same interface, with no third-party tools to wire in.
Configuration in a single file
All settings go through
/etc/gitlab/gitlab.rb, followed bygitlab-ctl reconfigure. It is easy to version and to reproduce.
Get started with GitLab
From order to production in a few minutes.
- 1
Order the VPS with GitLab
Choose a [Linux VPS](/vps-linux) in Paris or Frankfurt with at least 4 GB of RAM (8 GB recommended). In the "Applications" tab of the order form, tick GitLab.
- 2
Wait for delivery and connect
Installation and first configuration take several minutes after boot. Follow them over SSH, then read the root password once they have finished.
Bashssh root@SERVER_IP tail -f /var/log/cloud-init-output.log sudo cat /etc/gitlab/initial_root_password - 3
Open GitLab and sign in
Go to https://SERVER_IP and accept the browser warning, which comes from the self-signed certificate. Sign in with
rootand the password you read above, then change it in your profile.Bashsudo gitlab-ctl status - 4
Secure it for production
Point a domain name at the server, then replace
external_urlin/etc/gitlab/gitlab.rbwithhttps://YOUR_DOMAIN. Enable Let's Encrypt (letsencrypt['enable'] = true) or install your own certificate, then apply the configuration. Restrict access with a firewall (ports 22, 80 and 443) and schedule backups.Bashsudo nano /etc/gitlab/gitlab.rb sudo gitlab-ctl reconfigure sudo gitlab-backup create
GitLab use cases
Private Git forge for a team
Host your projects' source code on a European server you administer, with permissions per group and per project.
Internal CI/CD pipelines
Run your tests and deployments from
.gitlab-ci.ymlfiles versioned alongside the code, on your own runners.Migrating from a hosted service
Import your repositories from GitHub or another GitLab instance to take back control of your data and access rules.
Learning and test environment
Try GitLab configuration, backups or a version upgrade on a dedicated server before touching production.
GitLab FAQ
The recipe asks for 4 GB minimum and 8 GB recommended, with at least 2 CPU cores. Below that, the installation may fail or the interface may become very slow. Plan for 8 GB if you use CI/CD regularly.
More about GitLab
Replacing the self-signed certificate
The bundled certificate is tied to the IP address, so browsers show a warning. To get rid of it, use a domain name (see /web-domains) and edit /etc/gitlab/gitlab.rb:
Rubyexternal_url 'https://YOUR_DOMAIN' letsencrypt['enable'] = true letsencrypt['contact_emails'] = ['admin@YOUR_DOMAIN']
Then run sudo gitlab-ctl reconfigure. The domain must already point to the server, and ports 80 and 443 must be reachable for validation.
Resources and memory
GitLab runs several services (Puma, Sidekiq, PostgreSQL, Redis, Nginx, Gitaly). With 4 GB of RAM the instance works for a small team, but swap and some headroom help. Move to 8 GB as soon as you run pipelines frequently or have a few dozen users.
Backups and updates
The command sudo gitlab-backup create creates an archive of the application data. Also back up /etc/gitlab/gitlab.rb and /etc/gitlab/gitlab-secrets.json, which are not included in that archive. To update, use sudo apt update && sudo apt install gitlab-ce. Read the official upgrade path first, because GitLab sometimes requires intermediate versions.