Salut à tous, comment allez-vous?
Aujourd’hui, je vais vous montrer comment monter un serveur Gogs sur votre Raspberry Pi. Et si la première question qui vous vient est : « C’est quoi Gogs? ». Alors ce petit guide est fait pour vous…Effectivement Gogs est une solution complète destinée à installer facilement un serveur Git. Pour ceux qui ne le savent pas encore quand je dis Git, je parle de GitHub qui me semble être (si je ne dis pas de bêtises 😅) la première plate-forme pour pouvoir travailler à distance et disposer d’une solution qui gère les versions de votre code facilement.
Le problème avec le fait de monter son propre serveur GitHub si on peut appeler cela un problème, c’est qu’il peut s’avérer très compliqué à paramétrer (du moins je trouve). Car le manuel est horriblement long et peu compréhensible pour des débutants sur système Unix… 😵
Sinon vous pouvez aussi vous créer un compte gratuit sur github.com me direz-vous… Le tracas de cette solution c’est que vous n’avez qu’un repo privé à disposition. Tous les autres repos seront publics… Pour augmenter votre nombre de repos privés, il est toujours possible de prendre un compte payant sur le site de github, mais ce n’est pas forcément à la portée de toutes les bourses… 😰
Il peut donc être intéressant d’avoir son petit serveur Gogs sur son Raspberry Pi accessible depuis une page web permettant de choisir quels repos sont publics ou privés, gérant les utilisateurs facilement et qui peut envoyer des mails de notifications. Que ce soit au niveau de la consommation électrique, de la configuration, de la simplicité d’emploi et de la tranquillité d’esprit : si je veux sauvegarder mon serveur? Je n’ai qu’à faire une image de ma carte SD… 😍
Que nous faut-il ?
- Un Raspberry Pi : si vous avez la possibilité, je vous recommande le Pi 2 pour sa puissance.
- Une connexion à internet en WiFi ou Ethernet : si vous pouvez préférer l’Ethernet plus stable que le WiFi.
- Une carte SD class 10 avec Raspbian installé et paramétré selon vos goûts et matériel à disposition.
- Un accès SSH pour installer les paquets nécessaires ou un écran avec un clavier.
Première étape : Mises à jour
On se connecte en SSH et on met la liste de paquets et le Pi à jour :
sudo apt-get update sudo apt-get upgrade
Seconde étape : Mise en place de la base de donnée
sudo apt-get install mysql-server
Durant l’installation vous devrez choisir le mot de passe pour le compte root de MySQL : ATTENTION LE MOT DE PASSE DOIT ÊTRE LE PLUS DUR À DEVINER POSSIBLE!!!
Puis on va créer un fichier : *.sql avec l’aide de nano qui permettra de créer une base de donnée pour Gogs :
nano gogs.sql
DROP DATABASE IF EXISTS gogs; CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8 COLLATE utf8_general_ci;
Suivi de Ctrl+X pour quitter, pensez bien à sauvegarder le fichier… Il faut maintenant faire exécuter le fichier que l’on vient de créer par MySQL :
mysql -u root -pyour_password < gogs.sql
Attention, il faut bien attacher votre mot de passe au paramètre -p.
Troisième Étape : Installer GO
Gogs est écrit en Go (http://golang.org/) qui est un langage open source développé par Google (encore eux) et la communauté. Go est sous licence BSD (YOUHOU!!!).
On va créer un utilisateur « git » qui nous permettra d’installer et de configurer le tout sur un compte à part. Pour ajouter, l’utilisateur « git » :
sudo adduser --disabled-login --gecos 'Gogs' git
Puis on passe sur l’utilisateur git :
sudo su - git
Passez dans le répertoire courant et créez un dossier local :
cd ~ mkdir local
Il faut alors télécharger GO pour notre plateforme ARM. Problème, sur le site officiel il n’y a pas de version précompilée pour ARM… Mais de gentilles personnes l’on compilée pour nous :
À l’heure où j’écris ces lignes, la dernière version est la 1.4.2, mais n’hésitez pas à visiter ce lien pour vérifier si une nouvelle version est disponible. Il est aussi possible d’installer Go sur Windows, Os X ou Linux il vous faudra alors utiliser la technique décrite sur le site officiel.
Pour télécharger Go sur notre Pi (il faudra changer l’URL si une nouvelle version est disponible) :
wget http://dave.cheney.net/paste/go1.4.2.linux-arm~multiarch-armv6-1.tar.gz
On extrait le tout dans le fichier local que l’on a créé auparavant (cela peut prendre du temps) :
tar -C /home/git/local -xzf go1.4.2.linux-arm~multiarch-armv6-1.tar.gz
Il nous faut maintenant configurer GO, pour cela il faut rajouter des commandes au fichier /.bashrc :
echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> $HOME/.bashrc source $HOME/.bashrc
Les trois premières lignes ajoutent les commandes, la dernière les fait prendre en compte.
Quatrième Étape : Installation de Gogs
Rentrez ces commandes pour télécharger et installer Gogs :
go get -u github.com/gogits/gogs cd $GOPATH/src/github.com/gogits/gogs go build
La première permet de récupérer la source, la seconde permet de ce placer dans le bon dossier et la troisième de « construire » Gogs. Attention l’étape 1 et 3 sont longues…
Cinquième Étape : Installation de Supervisor
Supervisor va nous permettre de voir les log et de gérer Gogs depuis notre session normale sans avoir à se loger sur l’utilisateur « git ». Pour cela quittez de la session « git » avec :
exit
sudo apt-get install supervisor
On crée ensuite un dossier pour les logs :
sudo mkdir -p /var/log/gogs
On créé un fichier de configuration que supervisor chargera automatiquement pour nous :
sudo nano /etc/supervisor/conf.d/gogs.conf
et collez ceci dedans :
[program:gogs] directory=/home/git/go/src/github.com/gogits/gogs/ command=/home/git/go/src/github.com/gogits/gogs/gogs web autostart=true autorestart=true startsecs=10 stdout_logfile=/var/log/gogs/stdout.log stdout_logfile_maxbytes=1MB stdout_logfile_backups=10 stdout_capture_maxbytes=1MB stderr_logfile=/var/log/gogs/stderr.log stderr_logfile_maxbytes=1MB stderr_logfile_backups=10 stderr_capture_maxbytes=1MB environment = HOME="/home/git", USER="git"
Sauvegardez puis redémarrez supervisor :
sudo service supervisor restart
Il ne reste plus qu’à vérifier que le serveur est bien lancé :
tail /var/log/gogs/stdout.log
Si tout va bien la dernière ligne est :
2015/06/22 13:06:24 [I] Listen: http://0.0.0.0:3000
Signifiant que l’installation c’est bien passée et que le serveur écoute les connexions entrantes sur le port 3000 du Pi.
Sixième Étape : Fin et Tests
Il faut maintenant vous rendre dans votre navigateur web à l’adresse suivante :
http://ip_de_votre_raspberry:3000
Vous devriez voir cela :
Il vous faut juste ajouter le mot de passe de votre base de données, à remplir les informations pour le serveur SMTP si vous voulez que des mails de notifications soient envoyés et à paramétrer votre compte administrateur tous en bas :
Enfin, cliquez sur Install Gogs. Une fois que le chargement est fini, retournez sur
http://ip_de_votre_raspberry:3000 . Et normalement TA-DA 🎉 :
Votre serveur fonctionne et vous pouvez vous connecter avec votre compte admin… N’oubliez pas d’ouvrir le port 3000 de votre box et d’utiliser un DNS si vous voulez rendre votre serveur accessible à l’extérieur de votre maison…
Je tiens à remercier le blog https://www.atavendale.co.uk qui m’a permis de monter une solution pratique, personnalisée et rapide. Effectivement, je traduis l’article suivant (en tenant compte des remarques de sécurité dans les commentaires) :
Remercions aussi les dev de Gogs, leur plateforme est vraiment cool…
@bientôt Anders