Self-hosted GitLab CE in Frankfurt
Updated
The GitLab app gives you a Frankfurt cloud server with GitLab CE installed, so your team gets its own Git hosting, merge requests, issues and CI/CD on a server you control in Germany.
Your source code stays in the EU, and pushing large repositories or artifacts carries no traffic fees.
What is installed
- GitLab CE, the open-source Community Edition, with its bundled web server, database and background services.
- A standard Linux system with full root access.
GitLab CE covers Git repositories, merge requests and code review, issues and boards, wikis, CI/CD pipelines, a package and container registry, and user and group management.
Which plan to start with
GitLab is the heaviest app in our catalogue. It runs a database, a cache, background workers and a web application at the same time.
- Minimum: a plan with 4 GB of memory.
- A small team using CI and the registry: 8 GB of memory.
- Larger teams: a memory-optimised (m) plan, with CI jobs on separate runner servers.
Memory optimized
More RAM per vCPU for databases, caches and in-memory work.
| Plan | vCPU | RAM | Disk | Traffic | Hourly | Monthly cap |
|---|---|---|---|---|---|---|
| M1 | 1 | 8 GB | 30 GB | Unmetered | €0.0160 | €9.99 |
| M2 | 2 | 16 GB | 50 GB | Unmetered | €0.0312 | €19.49 |
Billing is hourly from a prepaid balance and capped at the monthly price. Resize to more memory as the team grows. The disk grows with the plan and never shrinks.
Signing in after boot
- Create a server in the console and choose GitLab as the app. Pick a plan with at least 4 GB of memory.
- When the server is running, give GitLab time to install and start. It takes longer than the other apps.
- Connect with SSH as root and read the initial root password that GitLab generates during installation. See connect with SSH.
- Open the server's address in your browser and sign in as
rootwith that password. - Change the root password at once and create named accounts for yourself and your team.
If the page shows an error at first, GitLab is still starting. Wait a few minutes and reload.
First steps
Set the domain
Create DNS records for the server's IPv4 and IPv6 addresses, then set GitLab's external URL to that domain and reconfigure GitLab. With a public domain it can request an HTTPS certificate. Clone URLs and email links use this address, so set it early.
Configure sign-ups and email
- Turn off open sign-ups unless you want strangers to register.
- Set up outgoing email so password resets and notifications reach people.
- Set reverse DNS (PTR) for the server IP to your GitLab domain. See IP addresses.
Add CI runners
Create one or more separate servers for GitLab Runner and register them with your instance. Keeping jobs off the GitLab server keeps the web interface fast. Hourly billing makes it cheap to add runners for busy days and delete them afterwards. See CI runners.
Store data on a volume
Repositories, uploads, artifacts and registry images add up. Attach a block storage volume from 10 GB to 10 TB and grow it online when space runs low.
Protect it
- Attach a free firewall for SSH, HTTP and HTTPS. Limit SSH to your team's addresses if you can.
- Turn on daily backups (20% of the server price, 7 restore points), and use GitLab's own backup tool for application-level copies.
- Take a snapshot before every GitLab upgrade.
- Enable two-factor authentication for all GitLab users.
Moving projects in
GitLab can import projects from other Git hosts and from export files of another GitLab instance. Plain Git repositories move with a mirror push. Import the largest projects first to see how much disk you need, then size the volume with some room to spare.
Why self-host GitLab on Wolkra
- Code stays in Germany. Useful for clients and contracts that require EU hosting. See EU VPS and GDPR.
- Unmetered traffic. Clones, pushes, container pulls and artifact downloads carry no per-GB fees. Ports go up to 10 Gbit/s, shared, with fair use.
- No per-user pricing from us. You pay for the server, billed hourly.
- Private by design. Run runners and databases in a private network without public IPs, and give them outbound access through a NAT gateway.
Start your GitLab server
Sign up, add balance by card or crypto, and choose the GitLab app with at least 4 GB of memory. Your own GitLab in Frankfurt is ready shortly after boot.
Frequently asked questions
Which edition of GitLab does the app install?
GitLab CE, the open-source Community Edition, on a standard Linux server with root access.
How much memory does GitLab need?
Plan for at least 4 GB of memory, and 8 GB for a team that uses CI, the container registry and many projects. GitLab runs many services and is slow on small plans.
Can I run CI/CD jobs on the same server?
You can, but jobs then compete with GitLab for CPU and memory. Most teams add one or more separate runner servers and register them with GitLab.
How do I get HTTPS for GitLab?
Point a domain at the server and set it as GitLab's external URL. GitLab can then request a certificate for that domain.
Where are my repositories stored?
On your server in Frankfurt. You can move GitLab's data to a block storage volume so it can grow separately from the server disk.