GitLab installeren op Debian 9 (SSH) met een NGINX reverse proxy

Procédure

Heb je Gitlab nodig om je projecten te beheren? Maak je eigen instantie van GitLab op je VPS door deze tutorial te volgen.

Git is goed. Gitlab is beter. Gitlab is een open-source Git repository manager. Het is ontwikkeld door GitLab Inc en biedt een intuïtieve grafische interface voor het beheren van je verschillende projecten, terwijl het compatibel blijft met Git. Je kunt feature requests aanmaken, bugs bijhouden, enz. in een team en via een webbrowser.

Gitlab is beschikbaar in verschillende versies, zowel betaald als gratis. In de volgende tutorial zullen we GitLab Community Edition (Gitlab CE) installeren , de gratis, open-source versie van Gitlab.

Voorwaarden

Om GitLab te gebruiken, heb je tenminste :

  • 2 vCores
  • 4 GB RAM

DeVPS M uit de LWS Starter serie zal ideaal zijn voor een paar Gitlab projecten, maar als je meerdere medewerkers en/of meerdere projecten te voltooien hebt, raden we de VPS L of een van de VPS uit de Pro serie aan.

Voor deze tutorial gaan we uit van een volledig leeg besturingssysteem uit het Debian 9 + SSH systeemimage dat wordt aangeboden op het LWS Panel. Hier zijn de links naar andere tutorials voor andere besturingssystemen:

Als je het besturingssysteem op je VPS wilt veranderen, is hier een link naar de helpdocumentatie: Hoe verander ik het besturingssysteem op mijn VPS?

Merk op dat deze tutorial gebaseerd is op een VIRGIN installatie van Debian 9. Als u er al iets op geïnstalleerd heeft, kunnen we niet garanderen dat de tutorial effectief zal zijn en/of dat al uw andere diensten beschikbaar zullen zijn na de installatie.

Vergeet niet de SSH-poort in te schakelen op uw VPS firewall zodat u als root verbinding kunt maken met de SSH-console.

Samenvatting van de tutorial

Hier zijn de stappen die in deze tutorial worden behandeld:

  1. Updaten van het besturingssysteem
  2. Gitlab CE installeren
  3. Een NGINX reverse proxy voor Gitlab installeren
  4. Een Let's Encrypt SSL certificaat installeren op de NGINX reverse proxy

Stap 1: het besturingssysteem updaten

Voordat je iets installeert, raden we aan dat je de lijst met pakketten en de pakketten zelf bijwerkt.

Voer op je SSH console de volgende commando's uit:

apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y

Stap 2: Gitlab CE installeren

Laten we eerst de benodigde afhankelijkheden installeren:

apt-get install -y curl openssh-server ca-certificates

Voeg vervolgens de Gitlab repository toe aan je VPS:

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | bash

Laten we nu Gitlab installeren:

EXTERNAL_URL="http://vpsXXXXX.lws-hosting.com" apt-get install gitlab-ee

De installatie duurt een paar minuten, dus je kunt een kop koffie nemen terwijl je wacht.

Tip: als je een instabiele internetverbinding hebt, kun je screen gebruiken om opnieuw verbinding te maken met de afneembare console in het geval van een onverwachte verbroken verbinding. Documentatie over het gebruik van screen.

Als de installatie voltooid is, ga dan naar http://vpsXXXXX.lws-hosting.com om Gitlab te configureren.

Tip: als je een 502 foutmelding krijgt, probeer Gitlab dan opnieuw te starten met het gitlab-ctl restart commando en wacht dan 5 minuten voordat je het opnieuw probeert(Ctrl+F5).

Als alles gaat zoals gepland, zul je doorgestuurd worden naar een pagina om je Gitlab wachtwoord aan te maken.

GitLab installeren op Debian 9 (SSH) met een NGINX reverse proxy

Geef een relatief complex wachtwoord op. Je kunt ook een willekeurig wachtwoord genereren.

Als dit gedaan is, kun je verbinding maken met Gitlab met de root gebruiker en het wachtwoord dat je hebt opgegeven.

De NGINX reverse proxy installeren

Nu gaan we een reverse proxy instellen met NGINX. Dit zal je in staat stellen om in de toekomst andere sites en applicaties te hosten, vooral als je hebt gekozen voor een Cloud Pro S VPS server of hoger.

De eerste stap is om Gitlab naar een ongebruikte poort te verplaatsen. Voor deze tutorial gebruiken we poort 6080 (willekeurig gekozen).

Tip: je kunt de lijst van poorten die al in gebruik zijn vinden met het commando netstat -tunap | grep LISTEN

Bewerk hiervoor het bestand /etc/gitlab/gitlab.rb met nano (of vim, of een andere editor):

nano /etc/gitlab/gitlab.rb

En bewerk de waarde van external_url om de poort op te nemen:

[...]
## GitLab URL
##! URL waarop GitLab bereikbaar zal zijn.
##! Voor meer details over het configureren van external_url zie:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
external_url'http://vpsXXXXX.lws-hosting.com:6080'
[...]

Ctrl+X, Y dan Enter om het bestand op te slaan en nano te sluiten(Esc dan :wq voor vim).

Om deze configuratie toe te passen, voer je het volgende commando uit:

gitlab-ctl reconfigure

Dit zal een minuut of twee duren, terwijl Gitlab zijn instellingen synchroniseert met de applicaties die Gitlab standaard gebruikt (NGINX, omnibus, etc.).

Gitlab staat nu op 6080. We moeten nu NGINX installeren. De installatie van NGINX wordt samengevat door de volgende commandoregels:

apt-get install -y curl gnupg2 ca-certificates lsb-release
echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list
curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add -
apt-get update
apt-get install -y nginx

Nu is het tijd om een NGINX configuratiebestand voor GitLab te maken. We noemen het /etc/nginx/conf.d/000-gitlab.conf. Gebruik nano om dit bestand te maken:

nano /etc/nginx/conf.d/000-gitlab.conf

Vervolgens moeten we een nieuw server{} blok aanmaken en de reverse proxy maken. Hier is een voorgestelde inhoud :

server {
listen 80;
server_name gitlab.example.com;

location / {
proxy_pass http://localhost:6080;
proxy_redirect uit;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Url-Scheme $scheme;
}
}

Tip: Het "000- " voorvoegsel is nodig om het bestand vóór default.conf te laden. Anders zal het default.conf bestand onze configuratie overschrijven.

Activeer NGINX bij het opstarten:

systemctl enable nginx

Herstart nginx vervolgens met het volgende commando:

systemctl restart nginx

Vervolgens moet je gitlab.example.com naar je VPS verwijzen door een A record aan je DNS zone toe te voegen. Als je DNS wordt beheerd op de LWS client ruimte, dan lees je hier hoe je dat moet doen:

GitLab installeren op Debian 9 (SSH) met een NGINX reverse proxy

Laten we Gitlab vervolgens opnieuw configureren om de X-Forwarded-For header te accepteren om de echte IP adressen van bezoekers te vinden. Dit wordt gedaan door het /etc/gitlab/gitlab.rb bestand aan te passen:

[...]
nginx['real_ip_header'] = 'X-Forwarded-For'
nginx['real_ip_recursive'] = 'on'
[...]

Synchroniseer vervolgens de configuraties van Gitlab en zijn ingebedde diensten opnieuw:

gitlab-ctl herconfigureren

In dit stadium zou je verbinding moeten kunnen maken met http://gitlab.exemple.com.

Een Let's Encrypt SSL certificaat op NGINX installeren

We gaan nu onze toegang beveiligen met een Let's Encrypt SSL certificaat. Laten we eerst certbot installeren:

apt-get install certbot -y

Vervolgens gaan we een webroot instellen voor de Let's Encrypt authenticatie. Om dit te doen, bewerk het bestand /etc/nginx/conf.d/000-gitlab.conf en voeg deze regels toe na het location / blok:

[...]
location / {
proxy_pass http://localhost:6080;
[...]
}

location ^~ /.well-known/acme-challenge/ {
root /var/www/letsencrypt;
}

}

Maak de :

mkdir -p /var/www/letsencrypt

En herstart NGINX :

systemctl restart nginx

Laten we nu een SSL certificaat aanmaken voor gitlab.example.com:

certbot certonly --webroot -w /var/www/letsencrypt/ -d gitlab.example.com

Volg de instructies op het scherm:

  • Voer je e-mailadres in
  • Lees en accepteer de gebruiksvoorwaarden
  • Schrijf je in (of niet) voor de EFF nieuwsbrief

Vervolgens gaan we /etc/nginx/conf.d/000-gitlab.conf opnieuw aanpassen om een nieuwe server op HTTPS/443 toe te voegen. We moeten de volgende regels toevoegen aan het einde van het bestand:

[...]
server {
listen 443 ssl;
server_name gitlab.example.com;

ssl_certificate /etc/letsencrypt/live/gitlab.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gitlab.example.com/privkey.pem;

location / {
proxy_pass http://localhost:6080;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Url-Scheme $scheme;
}
}

En herstart je NGINX server :

systemctl restart nginx

Je hebt nu een gebruiksklare Gitlab server op https://gitlab.exemple.com.

Beoordeel dit artikel :

Dit artikel was nuttig voor jou ?

Article utileJa

Article non utileGeen

MerciMerci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.


Vous avez noté 0 étoile(s)

Vergelijkbare artikelen


Stel een vraag aan het LWS-team en de gemeenschap