Docker Docker

Low-RAM GitLab in Docker behind NGINX proxy

update

Update 2024-05-20

GitLab 17.0.0 comes with a breaking change within the sidekiq component: the concurrency property has been changed to concurrency. This post has been updated accordingly. For more information, see their deprecation warning and the updated documentation.

GitLab, a comprehensive code management platform, extends Git functionalities with features like issue management, pull requests, teams, workflows, and more, akin to GitHub. Unlike GitHub, GitLab also offers its open source version that can be self-hosted. In this post, we will explore how to run a customized GitLab instance inside a Docker container.

NGINX in Docker as reverse proxy to other containers

It’s quite common to have containers on our VPS. NGINX running inside a container is also a common setup. But how do you properly handle both of these things? I’ll suggest a setup that will isolate each container as much as possible.

The focus here is on the networking side. If we want to expose our Docker containers through NGINX, chances are we don’t want them to be accessed elsewhere. Additionally, when an application comprises multiple sub-services, only one of them may need to be accessible from outside the container (e.g., if an app has its own database container).

WordPress in Docker, with NGINX reverse proxy

Despite it isn’t one of the most crucial services to have on a VPS, I chose to cover the setup of WordPress because it was the most complex to set up.

update

Update 2023-12-13

This blog now has its own domain: tavern.edotm.net! The old URL was edotmvps.mooo.com/blog. This is the reason I will explain how to put WordPress into the /blog directory.

The setup

I prefer not to write blog posts on topics extensively covered by others online. After extensive research, it seems this particular WordPress setup is surprisingly undocumented.

How I set up a container-based Linux server

Some years ago, I discovered the power and flexibility of containers, a technology that allows you to package and run applications in a consistent environment. Excited about the possibilities, I embarked on a journey to create a private Linux server capable of hosting various services. This blog series, starting with this post, documents my experience and guides you through the process so that you can achieve the same, or perhaps even enhance it further!