Logo Khaganat
Traductions de cette page?:

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

Notes pour les sauvegardes

Brancher avec les dépôts

Sources et références

CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/gitlab_admin.1480955217.txt.gz · Dernière modification : 2021/12/03 19:18 (modification externe)

Licences Mentions légales Accueil du site Contact