Kingsfordweg 151, 1043GR Amsterdam, The Netherlands ● 24/7 support — support@novogara.com
Knowledge base

Self-hosted CI runners

Hosted CI minutes are convenient until the bill, the queue or the privacy of your code becomes a problem. A dedicated server makes a fast, private runner that is yours by the hour, not by the minute.

A CI runner is just a machine that executes your pipeline. Hosted runners are billed per minute and shared; a dedicated server you already pay for can run builds all day at no extra cost, with your source never leaving your network.

Keep builds isolated

A build runs arbitrary code from your repository — treat it as untrusted. Run jobs in Docker containers or short-lived VMs, not directly on the host, so a poisoned dependency cannot walk into the rest of the machine. See running containers safely.

Never on the production box

A build can peg every core and fill the disk with artifacts. That is fine on a dedicated build server and ruinous on the machine serving customers. Give CI its own host — the same rule as keeping runners off your GitLab server.

Caching makes it fast

Most build time is spent downloading the same dependencies again. A local cache or a nearby container registry turns a five-minute pipeline into a one-minute one. This is where a self-hosted runner beats a cold hosted one.

Clean up after every job

Runners accumulate — old containers, dangling images, artifact directories. Prune on a timer or the disk fills within weeks. A scheduled docker system prune and an artifact retention limit keep it healthy. See cron jobs and timers.

Scale by adding machines

Need more throughput? Register more runners, on more servers. CI scales horizontally and cleanly — it is one of the better reasons to keep a spare dedicated box around.


Still stuck? Mail support@novogara.com — an engineer answers, at any hour. Back to the knowledge base