GitLab Self-Hosted

Advanced

Self-hosted GitLab with Docker: your code, your CI, your infrastructure.

Published 27 September 2026

Core Tools
PostgreSQL
PostgreSQL
Redis
Redis
GitLab
GitLab
GitLab CI/CD
GitLab CI/CD
Docker
Docker
Hosting
Hetzner
DigitalOcean
Amazon Web Services
Google Cloud Platform

About GitLab Self-Hosted

GitLab Self-Hosted runs the complete GitLab platform on your own server from the official Omnibus image: source control, merge requests, GitLab CI/CD, and the container registry. Omnibus bundles the platform into one container, with PostgreSQL for metadata and users, Redis for caching and background jobs, and NGINX for routing, which requests a Let's Encrypt certificate on its own when the external URL uses HTTPS. GitLab's own tooling handles backups and upgrades.

Self-hosting keeps source code and CI artifacts on your infrastructure, the deciding factor for security policies and data-residency requirements. It also caps cost at the server: the Free tier includes unlimited private repositories, users, CI, and the container registry at zero license cost, while Premium and Ultimate are per-seat licenses on the same image.

The trade is weight. GitLab is a memory-hungry platform: the official single-node baseline is 8 vCPUs and 16 GB of memory, and 8 GB is the floor for memory-constrained setups. Runners, cache storage, and upgrade windows are yours to run, which is why this is the advanced entry in the family: it's a small platform, not an app.

Key Features

  • ✓Official Omnibus image: PostgreSQL, Redis, and NGINX bundled in one container
  • ✓GitLab CI/CD included, with runners, pipelines, and the built-in registry
  • ✓Free tier with unlimited private repositories and CI
  • ✓Backups and upgrades through GitLab's own rake tasks
  • ✓GitLab Runner as the CI workhorse, scalable separately

When to Use GitLab Self-Hosted

  • →Teams whose security policy keeps source code and CI artifacts in-house
  • →Organizations outgrowing GitLab.com's free limits on users, CI minutes, or storage
  • →Regulated industries that need an audit trail on infrastructure they control
  • →Companies consolidating repositories, CI/CD, and a container registry on one platform
  • →Air-gapped or private-network development environments

Pros

  • One container carries the entire platform, no external moving parts
  • Source code and CI artifacts never leave your infrastructure
  • The Free tier is genuinely usable: private repos, CI, and the registry

Cons

  • Memory-hungry: the official single-node baseline is 8 vCPUs and 16 GB of RAM, with 8 GB only as the memory-constrained floor
  • Upgrades must pass through required stops four times a year, so skipped upgrades pile up
  • Runner fleet sizing and cache storage add their own decisions

Hosting Options for GitLab Self-Hosted

Hetzner

Deploy GitLab Self-Hosted on Hetzner

The default because RAM is cheap here: an 8 vCPU / 16 GB instance, GitLab's official single-node baseline, costs around €20/mo, and a 16 GB ARM instance less, since GitLab supports ARM. Add a second small server for runners so CI jobs don't compete with the Rails app for memory.

DigitalOcean

Deploy GitLab Self-Hosted on DigitalOcean

DigitalOcean's Marketplace has a GitLab 1-Click that starts the Omnibus install for you. Meeting the 16 GB baseline takes a larger Droplet, about $96/mo, and Spaces can hold artifacts, LFS objects, and registry images as object storage so the Droplet's disk doesn't fill.

Amazon Web Services

Deploy GitLab Self-Hosted on Amazon Web Services

GitLab publishes official AMIs, and an EC2 instance at the 16 GB baseline runs well over $100/mo, before storage and bandwidth. It fits when source and CI artifacts must stay in the VPC next to the systems they deploy; S3 takes artifacts, LFS, and registry images as object storage.

Google Cloud Platform

Deploy GitLab Self-Hosted on Google Cloud Platform

The same Omnibus image on Compute Engine, at roughly $100/mo or more for a 16 GB instance, with Cloud Storage for artifacts, LFS, and registry images. Worth it for teams that deploy to GKE and want CI next to the clusters; otherwise a flat-rate VPS meets the baseline for far less.

These are highlighted picks. To see all the tools, check the Hosting & Cloud category.

Frequently Asked Questions about GitLab Self-Hosted

Why self-host GitLab instead of GitLab.com?

Limits and code location. GitLab.com's Free tier allows 5 users per top-level group, 400 CI compute minutes a month, and 10 GiB of storage, and Premium costs $29 per user a month. A self-managed Free instance has no user cap, runs CI on your own runners with no minute limit, and keeps code and artifacts in-house, for the cost of a 16 GB server. The trade is operational: sizing, upgrades, and backups are yours.

Which GitLab edition do I get?

Two images exist. gitlab/gitlab-ce is the Community Edition under the MIT license. gitlab/gitlab-ee is the Enterprise Edition, which runs as the Free tier until you add a license, and GitLab recommends it: moving to Premium or Ultimate later is then a license key rather than a migration. Both include unlimited private repositories, CI/CD, and the container registry on the Free tier.

How much server does GitLab need?

GitLab's official requirements put the single-node baseline at 8 vCPUs and 16 GB of RAM, with 8 GB as the floor for memory-constrained environments. Plan for the baseline: the bundled PostgreSQL, Redis, and the Rails app together make it a memory-hungry platform, and the 8 GB floor works but squeezes once CI load arrives. CPU is forgiving; it is RAM that decides whether the instance stays up, and storage starts at 40 GB on the application node plus 5-12 GB for PostgreSQL and grows with repositories and job artifacts.

How do upgrades work with the Docker image?

Pull the new image version and recreate the container with the same volumes; Omnibus migrates the database on startup. Two rules matter. Back up first with GitLab's backup command, and copy the secrets and configuration files, which the backup doesn't include. And follow the upgrade path: since 17.5, required stops fall at the x.2, x.5, x.8, and x.11 releases, so an instance several versions behind must pass through each stop, which GitLab's Upgrade Path tool calculates.

What breaks first as the team grows?

Storage and CI compute. Repositories, job artifacts, registry images, and LFS objects accumulate faster than the Rails app grows, and shared runners queue behind concurrent pipelines. Keep runners on separate machines from the start and watch disk before RAM.

Scores

Popularity5/5

GitLab is one of the two dominant git platforms, and its self-managed edition is the standard answer for code hosting on your own infrastructure.

Learning Curve4/5

Using GitLab is familiar to any developer, but running it means Omnibus configuration, runner fleets, backups, and required upgrade stops: a small platform to operate.

Flexibility4/5

Repositories, merge requests, CI/CD, a container registry, and issue tracking in one platform, with runners that execute any workload you can script.

Performance3/5

A single 16 GB node serves a sizable team; CI throughput depends on the runners, which scale separately from the GitLab server.

Portability4/5

Repositories are plain git and projects export and import between instances and GitLab.com; the CI configuration is GitLab-specific, so moving CI elsewhere means rewriting pipelines.

Tools in the GitLab Self-Hosted Stack

Development Tools

DevOps & CI/CD

Hosting (choose one)

GitLab Self-Hosted Pricing

From ~$15/mo Free to start

The Free tier ships in the Omnibus image with unlimited private repositories, users, CI, and the container registry at zero license cost. The bill is memory: GitLab's official single-node baseline is 8 vCPUs and 16 GB of RAM, with 8 GB only as the memory-constrained floor, plus runner compute if CI stays busy. For comparison, GitLab.com Premium is $29 per user a month.

Server (16 GB)$15-25/mo

A 16 GB instance matches the official single-node baseline (8 GB only in memory-constrained setups), sized for the bundled PostgreSQL and Redis too.

GitLab tierFree (open source)

The Free tier includes private repos, CI, and the registry; Premium/Ultimate are per-seat licenses on the same image.

Backups$0-5/mo

GitLab's rake backup tarball to the same disk or off-site object storage.

GitLab Self-Hosted System Requirements

source
CPU
8 vCPU baseline for a single node
RAM
16 GB baseline; runs with at least 8 GB in memory-constrained environments
Disk
40 GB on application nodes plus 5-12 GB for PostgreSQL and repository storage, SSD-backed
OS
Any supported Linux (x86 or ARM)

The docs recommend non-burstable instance types and disabling swap where possible; these are single-node figures, and the reference architectures scale up with user count.