Tuhle aplikaci není třeba moc představovat, jedná se o webový repozitář s wikipedii a podporou sledování chyb a v tomhle článku se podíváme, jak GitLab nainstalovat a nastavit jednoduchý deploy na testovací a ostrou doménu.
Zrychlí vývoj jakéhokoliv projektu a de-facto stačí pouze jedna aplikace pro celý “cyklus” vývoje. Od správy projektu, plánování, verzování až po testování, monitoring a bezpečnost.
Minimální konfigurace
Test jsme prováděli na tarifu Basic VPS

Na Lite VPS nám server bohužel po instalaci GitLabu začal ihned padat, protože vyžaduje alespoň 4 GB RAM, a hlavně 20GB prostoru nemusí na většinu projektů stačit a už vůbec není na serveru místo pro weby/aplikace.
Basic VPS je ideální řešení kde hostovat GitLab + menší weby a aplikace. Máte dostatek výkonu a i prostoru. Navíc není problém navýšit pouze jednotlivé parametry.
Pokud to s projektem nebo programováním myslíte vážně, tak GitLab je správná cesta.

Na naše virtuální servery už GitLab nějakou dobu zákazníkům instalujeme. Nastavujeme bezvýpadkový deploy s přepínáním buildů aplikací.
Mrkněte na více informací o GitLabu na našich serverech (najdete tam i poptávkový formulář).
Pokud GitLab neznáte a nemáte čas všechno přečíst, tak doporučujeme krátké video.
Co je GitLab?
Jestli vám je už jasný, že GitLab potřebujete, tak pojďme na instalaci!
Instalace Debianu s VPS Centrem Nginx/Apache2
Kvůli vygenerování certifikátu od Let’s Encrypt je potřeba na FTP vytvořit složku na stejné úrovni jako je /www. V našem příkladě použijeme /gitlab. Doména vč. subdomény “gitlab” už musí směřovat na IP adresu vašeho serveru, aby se certifikát povedlo vygenerovat.

Jako první krok musíte přidat GitLab repository
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash
Následně aplikaci nainstalujte pomocí příkazu:
apt-get install gitlab-ce

Po instalaci je třeba upravit konfigurační soubor Gitlabu
Cesta: /etc/gitlab/gitlab.rb
Musíte najít a upravit tyto hodnoty:
external_url 'https://gitlab.vhtest.cz' (na jaké adrese bude gitlab k nalezení, nezapomenout na HTTPS)
nginx['enable'] = true
nginx['listen_port'] = 8081 (na jakém portu má nginx naslouchat)
nginx['listen_https'] = false
nginx['gzip_enabled'] = off
web_server['external_users'] = ['www-data']
Poté provedeme příkaz:
gitlab-ctl reconfigure (tento příkaz opakujte pokud vždy něco upravíte v konfiguraci gitlabu)
Nastavíme práva:
sudo usermod -aG gitlab-www www-data
A přesuneme se na Apache2, ujistíme se, že jsou zapnuté 2 moduly.
Do příkazové řádky napište:
a2enmod proxy_http
a2enmod proxy_http2
systemctl restart apache2
Jakmile příkazy provedeme, tak se přesuneme do Apache Configu pro doménu. který najdete:
/etc/apache2/sites-available/nazevdomeny.com.conf
Nebo v našem VPS Centru v nastavení domény.

POZOR: vas-hosting.cz vyměňte za svoji doménu a vložte tuto část configu:
Tento vhost musí být nad ## *.vas-hosting.cz ## a pod ## only vas-hosting.cz and vas-hosting.cz ##
# ################ only gitlab.vas-hosting.cz ####################
ServerName gitlab.vas-hosting.cz
ServerSignature Off
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [NE,R,L]
Use vas-hosting.cz
ServerName gitlab.vas-hosting.cz
SSLCompression Off
ServerSignature Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
Require all granted
ProxyPassReverse http://127.0.0.1:8081
ProxyPassReverse http://gitlab.vas-hosting.cz/
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_URI} ^/uploads/.*
RewriteRule .* http://127.0.0.1:8081%{REQUEST_URI} [P,QSA,NE]
RequestHeader set X_FORWARDED_PROTO 'https'
RequestHeader set X-Forwarded-Ssl on
# needed for downloading attachments
DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
Use vas-hosting.cz
Use vas-hosting.cz-ssl
Konec úprav v Apache2.
VPS Centrum
Vyzkoušejte zdarma naši aplikaci pro správu serveru a domén. Budete si připadat jako zkušený administrátor.
Teď se vrhneme na nastavení reverse proxy u Nginx
Cesta ke konfigu: /etc/nginx/sites-available/nazevdomeny.com.conf nebo zase v našem VPS Centru.
Tento vhost musí být nad ## *.vas-hosting.cz ## a pod ## only vas-hosting.cz and www.vas-hosting.cz ##
# ################ only gitlab.vas-hosting.cz ####################
# gitlab internal reverse proxy https://gitlab.com/gitlab-org/gitlab-workhorse/
upstream gitlab-workhorse {
server unix:/var/opt/gitlab/gitlab-workhorse/sockets/socket fail_timeout=0;
}
server {
listen 80;
server_name gitlab.vas-hosting.cz gitlab.vas-hosting.cz.erm07.vas-server.cz;
limit_conn perip 20;
include /etc/nginx/scripts/acme.conf;
include /etc/nginx/scripts/php-version.conf;
access_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-access.log;
error_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-error.log notice;
## redirect to https
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl http2;
server_name gitlab.vas-hosting.cz gitlab.vas-hosting.cz.erm07.vas-server.cz;
# gitlab conf
# ===========
server_tokens off;
root /opt/gitlab/embedded/service/gitlab-rails/public; # some gitlab public content
# Increase this if you want to upload larger attachments
client_max_body_size 50m;
limit_conn perip 20;
include /etc/nginx/scripts/acme.conf;
include /etc/nginx/scripts/php-version.conf;
access_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-access.log;
error_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-error.log notice;
location ~ /.git {
deny all;
}
ssl on;
ssl_certificate /etc/letsencrypt/live/gitlab.vas-hosting.cz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gitlab.vas-hosting.cz/privkey.pem;
ssl_session_timeout 20m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:60m;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/certs/ssl-bundle.pem;
resolver 8.8.4.4 8.8.8.8 valid=300s;
resolver_timeout 10s;
add_header X-Content-Type-Options nosniff;
# gitlab conf
# ===========
location / {
client_max_body_size 0;
gzip off;
## https://github.com/gitlabhq/gitlabhq/issues/694
## Some requests take more than 30 seconds.
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://gitlab-workhorse;
}
location /index.html {
return 301 /;
}
}
Konec úpravy v Nginx.
Ve VPS Centru se ujistíme, že běží webserver Apache2 a poté můžeme navštívit naší external URL, kterou jsme zadali.
Když pak navštívíte stránku gitlab.vase-domena.cz, tak se zobrazí přihlašovací stránka, kde zadáte nové heslo a poté se pomocí username: root přihlásíte.

Instalace Gitlabu VPS Centrum + Nginx (HTTPS)
Ve VPS Centru se ujistíme, že běží pouze jediný web server – Nginx.

Kvůli vygenerování certifikátu od Let’s Encrypt je potřeby na FTP vytvořit složku na stejné úrovni jako je /www. V našem příkladě použijeme /gitlab. Doména vč. subdomény “gitlab” už musí směřovat na IP adresu vašeho serveru.

Nejprve přidejte GitLab repository
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
Následně aplikaci nainstalujeme pomocí příkazu:
apt-get install gitlab-ce
Po instalaci je třeba upravit konfigurační soubor Gitlabu.
Cesta: /etc/gitlab/gitlab.rb
Musíte najít a upravit tyto hodnoty:
external_url 'https://gitlab.vas-hosting.cz'
web_server['external_users'] = ['www-data']
nginx['enable'] = false
nginx['listen_port'] = 8081
nginx['listen_https'] = false
nginx['gzip'] = "off"
Soubor uložíme a spustíme příkaz (ten musíte spustit pokaždé, když změníte konfiguraci GitLabu):
gitlab-ctl reconfigure

Freelo - Nástroj na řízení úkolů a projektů
Přidej se, pozvi svůj tým a klienty, rozděl práci a sleduj, jak se úkoly dají do pohybu.
Poté musíte upravit config pro Nginx
Tento vhost musí být nad ## *.vas-hosting.cz ## a pod ## only vas-hosting.cz and www.vas-hosting.cz ##
Změňte vas-hosting.cz na vaši doménu + upravte název serveru:
# ################ only gitlab.vas-hosting.cz ####################
# gitlab internal reverse proxy https://gitlab.com/gitlab-org/gitlab-workhorse/
upstream gitlab-workhorse {
server unix:/var/opt/gitlab/gitlab-workhorse/socket fail_timeout=0;
}
server {
listen 80;
server_name gitlab.vas-hosting.cz gitlab.vas-hosting.cz.xxx07.vas-server.cz;
limit_conn perip 20;
include /etc/nginx/scripts/acme.conf;
include /etc/nginx/scripts/php-version.conf;
access_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-access.log;
error_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-error.log notice;
## redirect to https
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl http2;
server_name gitlab.vas-hosting.cz gitlab.vas-hosting.cz.erm07.vas-server.cz;
# gitlab conf
# ===========
server_tokens off;
root /opt/gitlab/embedded/service/gitlab-rails/public; # some gitlab public content
# Increase this if you want to upload larger attachments
client_max_body_size 50m;
limit_conn perip 20;
include /etc/nginx/scripts/acme.conf;
include /etc/nginx/scripts/php-version.conf;
access_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-access.log;
error_log /var/log/nginx/vas-hosting.cz/vas-hosting.cz-error.log notice;
location ~ /.git {
deny all;
}
ssl on;
ssl_certificate /etc/letsencrypt/live/gitlab.vas-hosting.cz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gitlab.vas-hosting.cz/privkey.pem;
ssl_session_timeout 20m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:60m;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/certs/ssl-bundle.pem;
resolver 8.8.4.4 8.8.8.8 valid=300s;
resolver_timeout 10s;
add_header X-Content-Type-Options nosniff;
# gitlab conf
# ===========
location / {
client_max_body_size 0;
gzip off;
## https://github.com/gitlabhq/gitlabhq/issues/694
## Some requests take more than 30 seconds.
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://gitlab-workhorse;
}
location /index.html {
return 301 /;
}
}
Po návštěvě external url se zobrazí přihlašovací stránka do Gitlabu.

V dalším článku ukážeme, jak si nastavit deploy, tak nás sledujte na Facebooku, ať vám nový návod neunikne.