Install Gitlab EE di VPS

Berikut contoh konfigurasi install Gitlab CE/EE di server kita, baik lokal maupun di cloud. Kali ini saya menginstall gitlab CE di AWS EC2 dengan sistem operasi Ubuntu 16.04. Sebetulnya ini adalah server development untuk mengetes aplikasi (yang kebanyakan php, CI, Laravel) dengan web server Apache2. Supaya tidak mengganggu aplikasi yang ada, akhirnya saya memutuskan untuk menggunakan docker saja. Jadi topologinya kira kira begini

Gitlab (Docker Container) Expose Port 8000:80 <--> Proxy Apache <--> Subdomain (Public)

Install Docker & Docker Compose

Saya menggunakan docker compose supaya lebih mudah, jadi harus install docker.io dan docker-compose

apt install docker.io docker-compose

Konfigurasi Docker Compose

Saya buat folder gitlab untuk mempermudah mengingat berkas docker-compose.yml saya

mkdir gitlab
vim docker-compose.yml

Lalu isi konfigurasinya seperti berikut ini

web:
  image: 'gitlab/gitlab-ee:latest'
  restart: always
  hostname: 'git.namadomain.com'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'https://git.namadomain.com';
      gitlab_rails['gitlab_shell_ssh_port'] = 2200;
      nginx['listen_port'] = 80
      nginx['listen_https'] = false;
      nginx['proxy_set_headers'] = { "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on" }
  ports:
    - '8000:80'
    - '4000:443'
    - '2200:22'
  volumes:
    - '/srv/gitlab/config:/etc/gitlab'
    - '/srv/gitlab/logs:/var/log/gitlab'
    - '/srv/gitlab/data:/var/opt/gitlab'

Untuk menggunakan gitlab community edition silahkan ganti bagian image: 'gitlab/gitlab-ee:latest' menjadi image: 'gitlab/gitlab-cc:latest'

Untuk konfigurasi supaya berjalan dengan mulus dengan Proxy Apache2 saya tambahkan konfigurasi

nginx['listen_port'] = 80
nginx['listen_https'] = false;
nginx['proxy_set_headers'] = { "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on" }

Konfigurasi Apache2

Parameter di atas juga dapat digunakan apabila Gitlab berada di loadbalancer. Untuk konfigurasi apache2 nya seperti berikut ini

<IfModule mod_ssl.c>
<VirtualHost *:443> 
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName git.namadomain.com
  ProxyPass / http://localhost:8000/
  ProxyPassReverse / http://localhost:8000/
  SSLCertificateFile /etc/letsencrypt/live/git.namadomain.com/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/git.namadomain.com/privkey.pem
  Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Untuk SSL nya saya menggunakan Let’s Encrypt dan cukup di masukkan di konfigurasi Apache2 saja.