Serveur Gogs sur Raspbian

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 :

raspbian_gogs_1

sudo apt-get update
sudo apt-get upgrade

raspbian_gogs_2 raspbian_gogs_3 raspbian_gogs_4

Seconde étape : Mise en place de la base de donnée

sudo apt-get install mysql-server

raspbian_gogs_5Durant 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!!!

raspbian_gogs_6 raspbian_gogs_7Puis 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

raspbian_gogs_8 Collez ceci dedans :

DROP DATABASE IF EXISTS gogs;
CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8 COLLATE utf8_general_ci;

raspbian_gogs_9Suivi 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.

raspbian_gogs_10

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

raspbian_gogs_11Puis on passe sur l’utilisateur git :

sudo su - git

raspbian_gogs_12Passez dans le répertoire courant et créez un dossier local :

cd ~
mkdir local

raspbian_gogs_13Il 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

raspbian_gogs_14On 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

raspbian_gogs_15Il 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.

raspbian_gogs_16

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

raspbian_gogs_17La 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

raspbian_gogs_18Puis installez Supervisor :

sudo apt-get install supervisor

raspbian_gogs_19On crée ensuite un dossier pour les logs :

sudo mkdir -p /var/log/gogs

raspbian_gogs_20On 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"

raspbian_gogs_21Sauvegardez puis redémarrez supervisor :

sudo service supervisor restart

raspbian_gogs_22Il ne reste plus qu’à vérifier que le serveur est bien lancé :

tail /var/log/gogs/stdout.log

raspbian_gogs_23Si 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 :

raspbian_gogs_24

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 :

raspbian_gogs_25

Enfin, cliquez sur Install Gogs. Une fois que le chargement est fini, retournez sur
http://ip_de_votre_raspberry:3000 . Et normalement TA-DA 🎉 :

raspbian_gogs_26

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Traduction :