Install GitLab

Источники

Установка средствами Docker-compose

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
---
version: "3"
services:

  gitlab:
    image: gitlab/gitlab-ce:latest
    container_name: gitlab
    hostname: example.com
    environment:
      - TZ=Europe/Moscow
    shm_size: 256m
    volumes:
      - /dconf/gitlab/config:/etc/gitlab
      - /dconf/gitlab/data:/var/opt/gitlab
      - /dconf/gitlab/logs:/var/log/gitlab
    ports:
      - 8929:8929
      - 8980:80
      - 8943:443
      - 8922:22
    networks:
      - gitlab_net
    restart: unless-stopped

networks:
  gitlab_net:
1
2
docker compose pull
docker compose up -d

gitlab-ce означает Community Edition версию, если нужна Enterprise Edition заменить на gitlab-еe

Пароль для root пользователя генерируется автоматически. Он лежит в /etc/gitlab/initial_root_password.

1
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

Логинимся и меняем пароль в настройках профиля.

CLI Установка

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
docker run -it \
  --name=gitlab \
  --hostname example.com \
  -p 8929:8929 \
  -p 8980:80 \
  -p 8943:443 \
  -p 2289:22 \
  -v /dconf/gitlab/config:/etc/gitlab \
  -v /dconf/gitlab/data:/var/opt/gitlab \
  -v /dconf/gitlab/logs:/var/log/gitlab \
  --shm-size 256m \
  -e TZ=Europe/Moscow \
  --restart unless-stopped \
gitlab/gitlab-ce:latest

Удаление

1
2
3
docker stop gitlab ;\
docker rm gitlab ;\
docker rmi gitlab/gitlab-ce

Оптимизация оперативной памяти

Со стандартными настройками GitLab довольно прожорливый в отношениях памяти. Для малых проектов имеет смысл упростить конфиг следующим образом.

1
2
docker stop gitlab ;\
nano /dconf/gitlab/config/gitlab.rb

Добавляем в конфиг (или раскомментируем подходящие строки).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
external_url 'https://example.com:443'

puma['worker_processes'] = 0

sidekiq['max_concurrency'] = 2

prometheus_monitoring['enable'] = false

gitlab_rails['env'] = {
  'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000'
}

postgresql['shared_buffers'] = "256MB"

Подробнее можно почитать на gitlab.com.

Запускаем контейнер вновь.

1
docker start gitlab

Nginx

Пример конфигурации:

server {
    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen [::]:80;
    listen 80;

    server_name example.com;
    return 404; # managed by Certbot
}
server {
    listen [::]:443 ssl http2;
    listen 443 ssl http2;

    server_name example.com;

    charset utf-8;
    client_max_body_size 50M;

        access_log /var/log/nginx/reverse-access.log;
        error_log /var/log/nginx/reverse-error.log;

        location / {
                    proxy_pass https://127.0.0.1:8943;
  }
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
}