Ceci est une ancienne révision du document !
Gérer un service Gitlab
Ce qui suit s’adresse à celles et ceux qui souhaitent administrer un service Gitlab. Si vous êtes un simple utilisateur, allez plutôt voir Gitflow et Git.
Notes en vrac, récupérées ici et là.
Installation
À faire en root :
apt-get install curl openssh-server ca-certificates postfix curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash apt-get install gitlab-ce gitlab-ctl reconfigure
Postfix configuré en “site internet”.
Gitlab se configure dans /etc/gitlab/gitlab.rb
puis on applique la commande gitlab-ctl reconfigure
pour prendre en compte la configuration.
Configuration de base : gitlab.rb
Éléments à changer (je met ce qu'il y a chez nous) :
- /etc/gitlab/gitlab.rb
############################# ## Personnal configuration ## ############################# ## Ce qui suit est propre a Branaz. C'est plus facile de voir ce qui a ete ## modifie en rassemblant tout... le reste est la pour verifier les options ## par defaut. Merci d'ajouter les elements modifies dans cette section. external_url 'https://branaz.khaganat.net' ## features gitlab_rails['gitlab_default_projects_features_wiki'] = false gitlab_rails['gitlab_default_projects_features_container_registry'] = false gitlab_rails['gitlab_shell_ssh_port'] = 1022 gitlab_rails['git_timeout'] = 1200 ## smtp gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.gandi.net" gitlab_rails['smtp_port'] = 25 gitlab_rails['smtp_user_name'] = "asso@khaganat.net" gitlab_rails['smtp_password'] = "..." gitlab_rails['smtp_domain'] = "khaganat.net" gitlab_rails['smtp_authentication'] = "plain" gitlab_rails['smtp_enable_starttls_auto'] = true ## unicorn unicorn['worker_timeout'] = 1200 unicorn['worker_processes'] = 2 ## nginx nginx['redirect_http_to_https'] = true nginx['listen_port'] = '80' nginx['listen_https'] = false nginx['proxy_set_headers'] = { "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on" } ## log logrotate['enable'] = true
Adaptez à l'adresse de votre site, votre fournisseur mail, etc.
Pour paramétrer le mail : https://docs.gitlab.com/omnibus/settings/smtp.html
Configurer https
Par défaut, tout n'est pas en https sur Gitlab. Il redirige régulièrement sur http, ce qui présente un problème, surtout sur les VM.
Une fois qu'on a indiqué l'adresse de base en https, ça peut aussi coincer à la reconfiguration. C'est la section nginx plus haut.
En plus de ces modifications dans /etc/gitlab/gitlab.rb
, il faut aussi mettre en place les bons certificats ssl.
Créer le dossier ssl et mettre un lien vers le certificat auto-généré (dans le cas d'une VM dont l'accès se fait via un pare-feu, sinon utiliser le certificat let's encrypt).
mkdir -p /etc/gitlab/ssl chmod 700 /etc/gitlab/ssl ln -s /etc/ssl/private/ssl-cert-snakeoil.key branaz.khaganat.net.key ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem branaz.khaganat.net.cert gitlab-ctl reconfigure
Voir aussi, en complément : https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md#setting-the-nginx-listen-port
Commandes de base
Pour gérer gitlab, c'est la commande gitlab-ctl
gitlab-ctl stop gitlab-ctl start gitlab-ctl restart gitlab-ctl status
Après un changement sur /etc/gitlab/gitlab.rb
gitlab-ctl reconfigure
Ça prend en compte le bazar. C'est long la première fois. Ça relance automatiquement gitlab ( ? à confirmer).
Il faut minimum 2Go de ram pour gitlab. Sinon, il galère vite.
Si vous avez une erreur sur la base postgresql lors de gitlab-ctl reconfigure
: redémarrez le serveur. Cela semble suffire.
Première connexion
Une fois gitlab lancé ( gitlab-ctl start
), aller sur la page web. Il est demandé de paramétrer un mot de passe, c'est celui de l'administration.
Ensuite, se loguer avec “root” et le nouveau mot de passe. Changer son nom et commencer à tester.
Services additionnels
La liste des options dans le fichier est ici : https://docs.gitlab.com/omnibus/settings/configuration.html
On n'a pas activé ce qui est en dessous, actuellement, mais si ça peut servir à d'autres…
ldap
lien : https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/ldap.md
gitlab_rails['ldap_enabled'] = true gitlab_rails['ldap_servers'] = YAML.load <<-EOS # remember to close this block with 'EOS' below main: # 'main' is the GitLab 'provider ID' of this LDAP server ## label # # A human-friendly name for your LDAP server. It is OK to change the label later, # for instance if you find out it is too large to fit on the web page. # # Example: 'Paris' or 'Acme, Ltd.' label: 'LDAP' host: '10.10.100.1' port: 389 # or 636 uid: 'uid' method: 'plain' # "tls" or "ssl" or "plain" bind_dn: 'cn=consultation,dc=khaganat,dc=net' password: '...' # This setting specifies if LDAP server is Active Directory LDAP server. # For non AD servers it skips the AD specific queries. # If your LDAP server is not AD, set this to false. active_directory: false # If allow_username_or_email_login is enabled, GitLab will ignore everything # after the first '@' in the LDAP username submitted by the user on login. # # Example: # - the user enters 'jane.doe@example.com' and 'p@ssw0rd' as LDAP credentials; # - GitLab queries the LDAP server with 'jane.doe' and 'p@ssw0rd'. # # If you are using "uid: 'userPrincipalName'" on ActiveDirectory you need to # disable this setting, because the userPrincipalName contains an '@'. allow_username_or_email_login: false # Base where we can search for users # # Ex. ou=People,dc=gitlab,dc=example # base: 'ou=people,dc=khaganat,dc=net' # Filter LDAP users # # Format: RFC 4515 http://tools.ietf.org/search/rfc4515 # Ex. (employeeType=developer) # # Note: GitLab does not support omniauth-ldap's custom filter syntax. # user_filter: '' EOS
Mattermost
Ajout d'un virtualhost sur vpstests
<VirtualHost *:443> ProxyPreserveHost On ServerName mattermost.khaganat.net ProxyVia On ProxyRequests Off ProxyPass / http://10.10.100.18:80/ ProxyPassReverse / http://10.10.100.18:80/ ProxyPreserveHost on SSLCertificateFile /etc/letsencrypt/live/vpstests.khaganat.net/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/vpstests.khaganat.net/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost>
Authoriser omniauth :
gitlab_rails['omniauth_enabled'] = true
Configurer mattermost :
mattermost_external_url 'https://mattermost.khaganat.net/' mattermost_nginx['listen_port'] = 80 mattermost_nginx['listen_https'] = false mattermost_nginx['proxy_set_headers'] = { "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on" }
Sauvegardes, backup
Work in progress