---
title: Getting Started with GitLab
description: Learn how to set up GitLab on your own server for secure data storage and efficient project management. Explore installation options and key configurations for optimal performance.
image: https://blog.rheinwerk-computing.com/hubfs/Getting%20Started%20with%20GitLab.png
---

[![Rheinwerk Computing Logo](https://blog.rheinwerk-computing.com/hubfs/computing_logo-header.svg)](https://blog.rheinwerk-computing.com/) [Blog](https://blog.rheinwerk-computing.com)

- Books 
    - Get an overview of our wide selection of books on every relevant computing topic. 
          - [General Computing](https://www.sap-press.com/rheinwerk-computing/general-computing/)
          - [DevOps](https://www.sap-press.com/rheinwerk-computing/devops/)
          - [Programming Languages](https://www.sap-press.com/rheinwerk-computing/programming-languages/)
          - [Security](https://www.sap-press.com/rheinwerk-computing/security/)
          - [Software Development](https://www.sap-press.com/rheinwerk-computing/software-development/)
- Book Subscription 
    - Get unlimited access to all Rheinwerk Computing books! 
          - [Programming Subscription](https://sap-press.com/subscriptions/)

[DevOps](https://blog.rheinwerk-computing.com/tag/devops)

# Getting Started with GitLab

![Rheinwerk Computing](https://blog.rheinwerk-computing.com/hubfs/RW-logo-300x300.png)  by [Rheinwerk Computing](https://blog.rheinwerk-computing.com/author/rheinwerk-computing)

With Microsoft’s acquisition of GitHub in June 2018, it once again became clear that cloud services and thus also the data stored there can quickly change hands.

 

In addition, a public cloud solution for very sensitive data often isn’t legally permissible. GitLab is a very powerful tool that you can install on your own server.

 

## GitLab Quick Start

To get a first impression of GitLab, you can simply start a GitLab container locally and try out the web interface. Note that all settings and all content created in the test mode will be lost.

 

`docker run -e GITLAB_ROOT_PASSWORD="StrictlySecret" \`

`   --name gitlab -p 8888:80 gitlab/gitlab-ce`

 

-p 8888:80 connects the local port 8888 for access to the web interface. Initializing the database for the first time can take up to five minutes, depending on the performance of your computer.

 

Because we didn’t start the container in the background, you’ll see the log output in the terminal. When the message gitlab Reconfigured! appears among the messages, you can open your browser with the address *http://localhost:8888* and enter the user name root and the password specified under ROOT\_PW. Then you can create your first project.

 

![A New GitLab Project without Content](https://blog.rheinwerk-computing.com/hs-fs/hubfs/image-png-Jun-24-2024-02-16-35-9629-PM.png?width=1093&height=946&name=image-png-Jun-24-2024-02-16-35-9629-PM.png)

 

The overview page provides useful tips on how to import an existing Git repository or check out this project in a new folder on your computer. You could also create files directly there, which is also very convenient with the recently introduced Web IDE, but is still an unusual way. Typically, locally installed editors such as Atom, Visual Studio Code (VS Code), Vim, or Emacs are used for developing projects.

 

To use GitLab in production, you’ll need to adjust some parameters to ensure that your data is stored securely, that encryption works, and that you can enable other features of this impressive program.

## GitLab Web Installation

GitLab is a modern web application that consists of various components in different programming languages. Installing from the source code isn’t recommended because it’s very time-consuming and requires various libraries on the system (including Ruby, Go, [Node.js](https://learning.rheinwerk-computing.com/javascript#nodejs), [PostgreSQL](https://blog.rheinwerk-computing.com/what-is-postgresql), and Redis). While there are packages for different operating systems, the more elegant way is to install it with [Docker](https://learning.rheinwerk-computing.com/devops#docker).

 

The official Docker image from GitLab doesn’t fully comply with the concept of a microservices architecture because databases and program code are packed in the same image and several processes run there in parallel. Because GitLab itself maintains this image very consistently, updates and the greatest possible compatibility are ensured. We’ll also use this image for our setup, but we’ve swapped out the databases (Redis and especially PostgreSQL) to separate containers.

 

**Alternate Setup:** Of course, you can also launch the GitLab image as a container running PostgreSQL and Redis alongside the application code. This will give you the highest possible degree of compatibility, as GitLab will undoubtedly test the components extensively in the versions installed there. We’ll describe a distributed setup here to illustrate how straightforward Docker can be to manage various services.

 

For the following descriptions, it’s necessary that you install GitLab on a server that can be accessed through the internet with a valid domain name. For communication to work smoothly between GitLab, the integrated Docker registry, and *GitLab Runner*—an outsourced service for builds and tests—it must be encrypted. Although it should be possible to use self-signed certificates for this purpose, our attempts weren’t successful. We’ll therefore use official certificates from Let’s Encrypt, which are managed on the upstream reverse proxy.

 

We’ll use the following host names for the example:

- *dockerbuch.info*
- *dockerbuch.info*
- *dockerbuch.info* (optional)

Although we only launch one container, we’ll use docker-compose to clearly store the launch parameters in a file. We’ll install GitLab on a server that already has other websites running on HTTPS port 443 using the setup with Nginx as a reverse proxy.

![Network Setup with Traefik as the Terminating Proxy (Traefik Container Encrypts to the Internet via HTTPS)](https://blog.rheinwerk-computing.com/hs-fs/hubfs/image-png-Jun-24-2024-02-17-06-0168-PM.png?width=1096&height=811&name=image-png-Jun-24-2024-02-17-06-0168-PM.png)

 

All customizations for the GitLab configuration can be done using the GITLAB\_OMNIBUS\_ CONFIG environment variable. The advantage of this type of configuration is that no external file needs to be included. GitLab reads the configuration from this environment variable before consulting the actual configuration file */etc/gitlab/gitlab.rb*. In the default installation, this file contains only lines that have been commented out, so only the values of the environment variables apply. In the *YAML Ain’t Markup Language* (YAML) syntax of the *docker-compose* file, the corresponding excerpt looks like the following (the | pipe character indicates the multiline entry):

 

`# in file gitlab/docker-compose.yml`

`environment:`

`   GITLAB_OMNIBUS_CONFIG: |`

`       external_url 'https://gitlab.dockerbuch.info/'`

`       nginx['listen_port'] = 80`

`       nginx['listen_https'] = false`

`       nginx['proxy_set_headers'] = {`

`       "X-Forwarded-Proto" => "https",`

`       "X-Forwarded-Ssl" => "on"`

`   }`

`[...]`

 

To prevent the further explanations of the GitLab configuration from becoming too confusing, we’ve distributed the various aspects (reverse proxy, email, Secure Shell \[SSH\], etc.) across several sections.

 

[Learn more about installing GitLab in this post](https://blog.rheinwerk-computing.com/how-to-install-gitlab).

 

Editor’s note: This post has been adapted from a section of the book [*Docker:*](https://www.sap-press.com/docker_5650/?utm_source=sappressblog&utm_medium=referral&utm_campaign=Blogs&utm_term=2383_chapter16&utm_content=2383)*[Practical Guide for Developers and DevOps Teams](https://www.sap-press.com/docker_5650/?utm_source=sappressblog&utm_medium=referral&utm_campaign=Blogs&utm_term=2383_chapter16&utm_content=2383)* by Bernd Öggl and Michael Kofler. Bernd is an experienced system administrator and web developer. Since 2001 he has been creating websites for customers, implementing individual development projects, and passing on his knowledge at conferences and in publications. Michael studied telematics at Graz University of Technology and is one of the most successful German-language IT specialist authors. In addition to Linux, his areas of expertise include IT security, [Python](https://learning.rheinwerk-computing.com/python), Swift, [Java](https://learning.rheinwerk-computing.com/java), and the Raspberry Pi. He is a developer, advises companies, and works as a lecturer.

 

This blog post was originally published 7/2024.

## Recommendation

[![Git: Project Management for Developers and DevOps Teams](https://blog.rheinwerk-computing.com/hs-fs/hubfs/social-suggested-images/2289-Apr-14-2024-02-25-15-3901-PM-1.jpg?width=170&name=2289-Apr-14-2024-02-25-15-3901-PM-1.jpg)](https://www.sap-press.com/git_5555/?utm_source=sappressblog&utm_medium=referral&utm_campaign=Blogs&utm_term=2383_chapter16&utm_content=2289)

**Git: Project Management for Developers and DevOps Teams**

Get started with Git—today! Walk through installation and explore the variety of development environments available. Understand the concepts that underpin Git’s workflows, from branching to commits, and see how to use major platforms, like GitHub. Learn the ins and outs of working with Git for day-to-day development. Get your versioning under control!

[Learn More](https://www.sap-press.com/git_5555/?utm_source=sappressblog&utm_medium=referral&utm_campaign=Blogs&utm_term=2383_chapter16&utm_content=2289)

![Rheinwerk Computing](https://blog.rheinwerk-computing.com/hubfs/RW-logo-300x300.png)

**by [Rheinwerk Computing](https://blog.rheinwerk-computing.com/author/rheinwerk-computing)**

Rheinwerk Computing is an imprint of Rheinwerk Publishing and publishes books by leading experts in the fields of programming, administration, security, analytics, and more.

[DevOps](https://blog.rheinwerk-computing.com/tag/devops)

[![Share on facebook](https://7528309.fs1.hubspotusercontent-na1.net/hub/7528309/hubfs/raw_assets/public/mV0_d-web-default-modules_hubspot/img/facebook-color.png?width=24&name=facebook-color.png)](https://www.facebook.com/share.php?u=https%3A%2F%2Fblog.rheinwerk-computing.com%2Fgetting-started-with-gitlab%3Futm_medium%3Dsocial%26utm_source%3Dfacebook) [![Share on linkedin](https://7528302.fs1.hubspotusercontent-na1.net/hub/7528302/hubfs/raw_assets/public/mV0_d-web-default-modules_hubspot/img/linkedin-color.png?width=24&name=linkedin-color.png)](https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fblog.rheinwerk-computing.com%2Fgetting-started-with-gitlab%3Futm_medium%3Dsocial%26utm_source%3Dlinkedin) [![Share on twitter](https://7528304.fs1.hubspotusercontent-na1.net/hub/7528304/hubfs/raw_assets/public/mV0_d-web-default-modules_hubspot/img/twitter-color.png?width=24&name=twitter-color.png)](https://twitter.com/intent/tweet?original_referer=https%3A%2F%2Fblog.rheinwerk-computing.com%2Fgetting-started-with-gitlab%3Futm_medium%3Dsocial%26utm_source%3Dtwitter&url=https%3A%2F%2Fblog.rheinwerk-computing.com%2Fgetting-started-with-gitlab%3Futm_medium%3Dsocial%26utm_source%3Dtwitter&source=tweetbutton&text=) [![Share on email](https://7528311.fs1.hubspotusercontent-na1.net/hub/7528311/hubfs/raw_assets/public/mV0_d-web-default-modules_hubspot/img/email-color.png?width=24&name=email-color.png)](mailto:?subject=Check+out+https%3A%2F%2Fblog.rheinwerk-computing.com%2Fgetting-started-with-gitlab%3Futm_medium%3Dsocial%26utm_source%3Demail&body=Check+out+https%3A%2F%2Fblog.rheinwerk-computing.com%2Fgetting-started-with-gitlab%3Futm_medium%3Dsocial%26utm_source%3Demail)

### Comments

### Latest Blog Posts

[![How to Install GitLab](https://blog.rheinwerk-computing.com/hs-fs/hubfs/How%20to%20Install%20GitLab.png?height=600&name=How%20to%20Install%20GitLab.png)](https://blog.rheinwerk-computing.com/how-to-install-gitlab)

[DevOps](https://blog.rheinwerk-computing.com/tag/devops)

## [How to Install GitLab](https://blog.rheinwerk-computing.com/how-to-install-gitlab)

[Read More](https://blog.rheinwerk-computing.com/how-to-install-gitlab)

[![What Is Gitolite?](https://blog.rheinwerk-computing.com/hs-fs/hubfs/What%20Is%20Gitolite.jpg?height=600&name=What%20Is%20Gitolite.jpg)](https://blog.rheinwerk-computing.com/what-is-gitolite)

[DevOps](https://blog.rheinwerk-computing.com/tag/devops)

## [What Is Gitolite?](https://blog.rheinwerk-computing.com/what-is-gitolite)

[Read More](https://blog.rheinwerk-computing.com/what-is-gitolite)

**Subscribe to our blog!**Get notified about future blog updates.

- <https://www.linkedin.com/showcase/rheinwerk-computing/>
- <https://www.youtube.com/channel/UChj-U-uWGM7qRlHXSFU93ew>
- <https://blog.rheinwerk-computing.com/rss.xml>

### The official Rheinwerk Computing Blog

Rheinwerk Computing is an imprint of Rheinwerk Publishing and publishes resources that will help you accelerate your computing journey. The Rheinwerk Computing Blog is designed to provide helpful, actionable information on a variety of topics, including programming, administration, security, and analytics!

### Blog Topics

- [All Topics](https://blog.rheinwerk-computing.com)
- [Programming Languages](https://blog.rheinwerk-computing.com/tag/programming-languages)
- [How To](https://blog.rheinwerk-computing.com/tag/how-to)
- [JavaScript](https://blog.rheinwerk-computing.com/tag/javascript)
- [DevOps](https://blog.rheinwerk-computing.com/tag/devops)
- [Web Development](https://blog.rheinwerk-computing.com/tag/web-development)
- [Python](https://blog.rheinwerk-computing.com/tag/python)
- [What Is?](https://blog.rheinwerk-computing.com/tag/what-is)
- [Cybersecurity](https://blog.rheinwerk-computing.com/tag/cybersecurity)
- [Software Development](https://blog.rheinwerk-computing.com/tag/software-development)
- [Java](https://blog.rheinwerk-computing.com/tag/java)

### Blog curated by

[![Rheinwerk Computing Logo](https://blog.rheinwerk-computing.com/hubfs/computing_logo-header.svg)](https://www.sap-press.com/rheinwerk-computing/) [Visit Rheinwerk Computing Store](https://www.sap-press.com/rheinwerk-computing/)

### About

- [Home](https://sap-press.com/)
- [About Us](https://sap-press.com/the-publisher/)
- [Contact](mailto:info@rheinwerk-publishing.com)
- [Legal Notes](https://sap-press.com/legal-notes/)
- [Privacy Policy](https://sap-press.com/privacy/)
- [Terms of Use](https://sap-press.com/terms/)

© 2026 Rheinwerk Publishing, Inc. | Change Privacy Options

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Rheinwerk Computing",
    "url" : "https://blog.rheinwerk-computing.com/author/rheinwerk-computing"
  },
  "dateModified" : "2025-04-23T13:57:51.689Z",
  "datePublished" : "2024-07-05T13:00:00.000Z",
  "headline" : "Getting Started with GitLab",
  "image" : [ "https://blog.rheinwerk-computing.com/hubfs/Getting%20Started%20with%20GitLab.png" ],
  "mainEntityOfPage" : {
    "@id" : "https://blog.rheinwerk-computing.com/getting-started-with-gitlab",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://blog.rheinwerk-computing.com/hubfs/Logo-1.jpg"
    },
    "name" : "Rheinwerk Publishing, Inc."
  }
}
```