Установка gitlab на реальном адресе (https+LetsEncrypt)
Используем инструкцию из документации: https://docs.gitlab.com/ee/install/docker.html
1. Установить в .bashrc переменную GITLAB_HOME и перезайти как deploy.
2. sudo mkdir /srv/gitlab; sudo chown deploy.deploy /srv/gitlab
3. В home: mkdir GITLAB; cd GITLAB; joe docker-compose.yml
web:
image: 'gitlab/gitlab-ee:latest'
restart: always
hostname: 'gla.csdiary.net'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gla.csdiary.net'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
# Add any other gitlab.rb configuration here, each on its own line
ports:
- '80:80'
- '443:443'
- '2224:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
ssh-порт меняем, чтобы не конфликтовал с sshd на хосте!
4. Проверяем, что контейнер запустился
docker ps (может стартовать долго! находится в состоянии Starting, потом будет Helthy)
5. Делаем DNAT на шлюзе для портов gitlab (/etc/shorewall/rules)
DNAT net loc:192.168.10.252:443 tcp 443 - - 3/sec:10
DNAT net loc:192.168.10.252:80 tcp 80 - - 3/sec:10
6. Проверяем снаружи доступ на https://gla.csdiary.net
Будет ругаться на сертификат!
7. Включаем генерацию ключей LetsEncrypt
https://docs.gitlab.com/omnibus/settings/ssl.html#lets-encrypt-integration
заходим в контейнер
sudo docker exec -it gitlab_web_1 /bin/bash
в контейнере установил joe, тем самым переопределил ENV-переменную EDITOR (был vi)
выходим и правим конфигурацию gitlab
sudo docker exec -it gitlab_web_1 editor /etc/gitlab/gitlab.rb
...
external_url "https://gla.csdiary.net"
...
################################################################################
# Let's Encrypt integration
################################################################################
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = [ 'z1326593@rambler.ru' ] # This should be
заходим снова в контейнер и переконфигурируем gitlab
sudo docker exec -it gitlab_web_1 /bin/bash
root@gla:/# gitlab-ctl reconfigure
root@gla:/# gitlab-ctl restart
можно обновлять ключи LetsEncrypt вручную:
sudo gitlab-ctl renew-le-certs
или настроить автоматическое обновление
8. После перезапуска должен пускать снаружи по https.
9. Пароль для первого входа смотрим в
/srv/gitlab/config/initial_root_password