Ci dessous le docker-compose pour un test en local
networks: # Nomme explicitement le réseau par défaut utilisé par les services définis dans ce fichier default_vnet: services: gitlab: image: 'gitlab/gitlab-ce:14.1.8-ce.0' restart: always hostname: 'gitlab.services.localhost' networks: default_vnet: aliases: - gitlab.services.localhost environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://gitlab.services.localhost' gitlab_rails['gitlab_shell_ssh_port'] = 2222 ports: - '127.0.0.1:8084:80' - '127.0.0.1:4443:443' - '127.0.0.1:2222:22' volumes: - '$GITLAB_HOME/config:/etc/gitlab' - '$GITLAB_HOME/logs:/var/log/gitlab' - '$GITLAB_HOME/data:/var/opt/gitlab'
external_url
doit être suffixée avec le port exposé par le conteneur si le port est redéfini. Ne pas utiliser la valeur du port publiée de l’hôte.
Pour s'authentifier sur la WebUI récupérer le mot de passe root:
docker-compose exec gitlab grep 'Password:' /etc/gitlab/initial_root_password
# ouvrir une console Ruby on Rails gitlab-rails console -e production # retrouver l'utilisateur via l'ID user = User.where(id: 1).first # ou via l'email # user = User.find_by(email: 'admin@example.com') # vérifier que l'objet instancié est bien l'utilisateur souhaité puts user.email, user.id # Redéfinir le mot de passe user.password = 'newpass123' user.password_confirmation = 'newpass123' # sauvegarder les modifications user.save! # Quitter la console interactive exit
source:
Pour pousser un projet git existant
git push --set-upstream ssh://git@gitlab.services.localhost:2222/root/$(git rev-parse --show-toplevel | xargs basename).git $(git rev-parse --abbrev-ref HEAD)
Création des utilisateurs
Depuis l'instance de test, le service de mail ne fonctionne pas, utiliser la procédure ci dessus pour définir le mot de passe de l'utilisateur.
Une fois identifié l'utilisateur peut créer sa clé SSH
# générer une paire de clés cd ~/.ssh ssh-keygen -t rsa -b 4096 -C "yoann@gitlab.services.localhost" -f yoann_gitlab_localhost_rsa # Afficher la clé publique cat yoann_gitlab_localhost_rsa.pub # copier /coller la valeur de la clé publique
Pour tester la connexion au serveur:
# Vérifier la valeur du fingerprint du serveur gitlab ssh -l git -p 2222 -T -i ~/.ssh/yoann_gitlab_localhost_rsa gitlab.services.localhost
On notera qu'on utilise toujours le login git pour la connexion SSH. Le serveur différencie les utilisateurs via la clé publique déposée sur l'interface Web.
Pour faciliter la connexion, on peut définir une entrée dans le fichier ~/.ssh/config
Host gitlab
HostName gitlab.services.localhost
User git
Port 2222
PreferredAuthentications publickey
IdentityFile ~/.ssh/yoann_gitlab_localhost_rsa
Valider la configuration par un test:
$ ssh -T gitlab Welcome to GitLab, @yoann!
Créer un projet à partir d'un dépot existant:
# Depuis dans le dépot git local cd filez # Commande de création du dépot référence proposée par l'interface Web git push --set-upstream ssh://git@gitlab/yoann/$(git rev-parse --show-toplevel | xargs basename).git $(git rev-parse --abbrev-ref HEAD)
Par défaut les utilisateurs non authentifiés sont redirigés sur la page de login. On peut changer ce comportement et proposer la page listant les projets publics.
Depuis le compte root:
Menu > admin
Admin Area
chargé, sélectionner Settings > General
Sign-in restrictions
Home page URL
avec l' URL souhaitée (http://gitlab.fqdn:port/explore)Save changes
en fin de sectionPour déployer l'instance créée localement sur une machine distante:
/path/to/gitlab
# copier le docker-compose.yml et le .env via ssh scp docker-compose.yml .env server.fqdn:/path/to/gitlab # les commandes suivantes utilisent des conteneurs temporaires pour monter les volumes, # écrire leurs données sur la sortie standard, rediriger la sortie standard via un tunnel ssh # sur l’entrée standard du conteneur sur l'hote distant et écrire les données dans # de nouveaux volumes sur le serveur distant: docker container run --rm -v gitlab_config:/mnt:ro busybox:latest /bin/tar -C /mnt -cf- . | ssh server.fqdn docker container run --rm -i -v gitlab_config:/mnt busybox:latest tar -C /mnt -xf- docker container run --rm -v gitlab_logs:/mnt:ro busybox:latest /bin/tar -C /mnt -cf- . | ssh server.fqdn docker container run --rm -i -v gitlab_logs:/mnt busybox:latest tar -C /mnt -xf- docker container run --rm -v gitlab_data:/mnt:ro busybox:latest /bin/tar -C /mnt -cf- . | ssh server.fqdn docker container run --rm -i -v gitlab_data:/mnt busybox:latest tar -C /mnt -xf-