Recommended configurations

Self-hosted GitLab CI runners work with GitLab.com or your self-hosted GitLab instance. No quota limits, no per-minute billing, full access to your private network. Docker executor provides isolated builds per job.

Small team

1 runner, moderate CI Sequential pipelines, moderate build frequency
From €19.00/mo
VPS
CPU
4 cores
RAM
8 GB RAM
Storage
60 GB NVMe
Network
Unlimited bandwidth

One runner handles sequential pipelines for most small teams

See matching servers

Heavy CI

4+ parallel runners, large artifacts Enterprise pipelines, large binary artifacts
From €79.00/mo
Dedicated
CPU
8+ cores
RAM
32 GB RAM
Storage
200 GB NVMe
Network
Unlimited bandwidth

For heavy pipelines with large artifacts, parallel matrix builds, or Docker image builds

See matching servers

Not sure which plan fits? Browse all available servers.

Browse all servers →

Why self-host GitLab CI runners?

No quota — unlimited minutes

A self-hosted runner has no minute quota — pipelines run immediately regardless of how many minutes they consume. No more watching a usage meter at the end of the month.

Docker executor for isolation

The Docker executor runs each job in a fresh container, providing complete isolation between pipelines. Dependencies installed in one job do not affect another. Supports any Docker image as the build environment.

Shared runner for all projects

One self-hosted runner can be shared across multiple GitLab projects (or your entire group). Register it once and all projects in the group can use it — no per-project setup needed.

Cache between builds

GitLab CI caching keeps node_modules, pip packages, and Maven dependencies between builds. With a self-hosted runner, the cache lives on local NVMe — faster hits and no external cache service needed.

Frequently asked questions

Does the runner work with GitLab.com?

Yes. Self-hosted runners work with GitLab.com (SaaS), GitLab self-hosted, and GitLab Community Edition. You register the runner with a registration token from your GitLab project or group settings.

What is the difference between shared and specific runners?

A shared runner is available to all projects in a GitLab instance or group. A specific runner is registered to one project only. Self-hosted runners can be configured as either, giving you full flexibility.

Can I run the runner without Docker?

Yes. The shell executor runs jobs directly on the server without Docker. It is simpler but less isolated — dependencies installed by one job persist for the next. Use the Docker executor for clean, reproducible builds.

How do I register the runner?

Install the GitLab Runner binary on your server, then run gitlab-runner register with your GitLab instance URL and registration token from Settings > CI/CD > Runners. The runner appears in your GitLab interface within seconds.

Can I use self-hosted runners with GitLab Free?

Yes. Self-hosted runners work with all GitLab tiers including Free. You only need a paid GitLab plan for GitLab-specific features unrelated to CI minutes.

GitLab CI self-hosted runners remove quota limitations and per-minute billing from your CI/CD pipelines. The runner registers with your GitLab.com account or a self-hosted GitLab instance — no changes to your .gitlab-ci.yml pipelines required. The Docker executor runs each job in a fresh container for complete isolation between pipelines. The shell executor provides direct server access for cases where Docker is not available. One self-hosted runner can serve multiple GitLab projects simultaneously when registered at the group level. Caches for node_modules, pip packages, and Maven dependencies live on local NVMe storage for fast cache hits on every build.

Community zone

A question ?
Find answers and share your knowledge !

We are waiting you on community zone. More than 70 guides (sysadmin, gaming, devops...) !

Let me check
DEDIMAX DEDIMAX DEDIMAX DEDIMAX
DEDIMAX

Need a quote ?

Write us !

Contact us

Prendre contact