Le blog de Passionaqua

Mon p'tit chez moi où je raconte des p'tites choses

Essai et installation de Gogs, votre futur front-end pour Git

Rédigé par Passionaqua.Web Aucun commentaire

Attention, cet article est assez vieux et peut ne plus être d'actualité.

Logo de Gogs J'ai de plus en plus envie de m'auto-héberger, c'est vrai pour une partie de mes services web, comme mon lecteur de flux RSS.

Comme tout bon développeur, ahem, j'utilise un système de gestion de versions de fichiers, pour ma part je suis friand de git.

Tout le monde connait Github, qui ne permet que des dépôts publics pour les utilisateurs n'ayant pas de compte payant, sans parler du fait que le coeur de Github n'est pas open-source ni libre de droit, du coup. Il y a aussi Bitbucket sur le marché, qui eux propose des dépôts privés gratuitement.

Il existe aussi quelques autres gestionnaires de dépôts git, généralement associatif, mais je ne compte pas en parler ici.

Aussi, il y a quelques semaines Google a émis sa décision de fermer Google Code, qui faisait partie au même titre que SourceForge ou Github du club des gestionnaires de versions / espaces de téléchargements de vos logiciels libres préférés.

Framablog en a profité pour annoncer l'ouverture de sa forge, basée sur Gitlab.

C'est à ce moment là que je me suis rappelé que mon code est sur Github ou Bitbucket pour mes projets "secrets" et que j'ai entrepris la recherche d'une solution alternative auto-hébergée à ces piliers du web.

Après mes recherches, j'ai tenté l'utilisation de git avec un front-end cgit, que je n'ai pas réussi à installer. J'ai voulu orienter mes envies vers Gitlab, mais il s'est avéré que son utilisation sur un Raspberry Pi est impossible : trop lourd.

Je me suis rabattu sur son petit cousin : Gogs. Il est écrit en Golang (oui oui le langage de Google) et n'est pas trop lourd pour fonctionner sur mon Raspberry Pi. L'installation demande juste un peu de temps, mais cela vaut le coup puisque vous obtiendrez une interface assez similaire à Github.

Découverte de Gogs

Screenshot de Gogs

Gogs est présenté sur son site comme étant "A self-hosted Git service written in Go" que l'on peut traduire en « Un service Git auto-hébergé écrit en Go ». Vous pouvez l'essayer sur une instance de démonstration. Les principaux points indiqués en page d'accueil sont les suivants :

  • Simple à installer : il y a des binaires d'installation, voire même des paquets. (On verra plus tard que pour le Raspberry Pi c'est particulier)
  • Multiplateforme : Gogs étant en Go, tant que Go peut être compilé, Gogs peut fonctionner ! Windows, Mac, Linux, ARM ...
  • Léger : peu d'exigence système, et c'est vrai, mon Raspberry Pi n'est pas ralenti !
  • Open-source : OUI OUI et OUI. Le tout est sous licence MIT, les sources sont sur GitHub.

Après une rapide utilisation, Gogs est vraiment simple à prendre en main si on a déjà utilisé GitHub.

Installation de Gogs sur un Raspberry Pi

Je vais détailler l'installation de Gogs sur un Raspberry Pi (B+ dans mon cas, mais normalement ça ne change rien). Pour les autres possibilités d'installation je vous propose d'aller sur le site officiel, il y a des binaires.

Dans un premier temps on va réserver un compte sur notre Raspberry Pi pour l'instance Gogs.

$ sudo adduser git #Crée l'utilisateur git

Ensuite il faudra installer MySQL et Git si ce n'est toujours pas le cas (sudo apt-get install mysql-server git). Pendant que l'on parle de MySQL, vous pouvez créer un compte pour Gogs et sa base de données, en utf8.

Installation de Golang

Pour installer Golang il va nous falloir nous connecter en tant que l'utilisateur git, puisque nous devons compiler Golang.

$ su - git #Se connecte en tant que git
$ cd ~/ #On revient à la racine de git
$ mkdir local && cd ./local

Puis on va chercher les sources :

$ git clone https://go.googlesource.com/go
$ cd go
$ git checkout go1.4.2

Il faut à présent lancer la compilation de Golang, qui est très longue sur le Raspberry Pi (1h environ).

$ cd src
$ ./all.bash

Une fois que c'est compilé, il faudra rajouter quelques variables d'environnements dans le bashrc de l'utilisateur git :

export GOARM=5 #lignes à rajouter à la fin de ~/.bashrc
export GOROOT=$HOME/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

N'oubliez pas de faire un p'tit source ~/.bashrc pour recharger les variables.

Maintenant on peut vérifier si Golang fonctionne, pour cela on va demander sa version :

$ go version

Si vous obtenez go version go1.4.2 linux/arm ou quelque chose de similaire, alors c'est tout bon. :)

Compilation de Gogs

Maintenant, on va s'occuper de l'installation de Gogs.

$ go get -u github.com/gogits/gogs
$ cd $GOPATH/src/github.com/gogits/gogs
$ go build

Cela va télécharger Gogs puis le compiler. :)

Configuration

La configuration s'effectue en ligne. Au premier démarrage du serveur, on nous redirigera obligatoirement vers une page d'installation.

Déjà, on va lancer le serveur !

$ cd /home/git/go/src/github.com/gogits/gogs
$ ./gogs web

Maintenant on peut accéder à la page en allant à l'adresse http://ip.de.votre.raspberry:3000/, notez bien le port 3000.

La page d'installation doit s'afficher. Vous devrez choisir le type de BDD et des informations relatives à cette dernière, le Repository Root Path qui est le lieu où seront enregistrés les repos' Git, le domaine éventuellement et l'URL de Gogs. Ensuite, des informations relatives à l'administration (nom d'utilisateur, mot de passe, etc).

Pour ma part, Repository Root Path a pour valeur /Linukey/git_repos/, qui correspond à un dossier dans une clef USB. Run User a pour valeur git, Domain a pour valeur quelque chose similaire à git.passionaqua.me et l'URL a pour valeur https://git.passionaqua.me/gogs/ (j'ai de l'HTTPS sur ce domaine).

L'URL donnée sera la future adresse qu'aura Gogs, puisque je vais montrer comment faire passer Gogs via NGinx.

Configuration de NGinx

Pour cela, il faut modifier le fichier de configuration NGinx de votre site (dans mon cas /etc/nginx/sites-available/git.passionaqua.me).

Il faudra donc ajouter ces lignes :

location /gogs/ {
    proxy_pass http://127.0.0.1:3000/;
}

Elles indiquent que tout ce qui passe par /gogs/ devra passer par Gogs.

Et un service pour gérer le bouzin ?

Gogs nous fourni déjà des services tout fait pour Debian ! Donc totalement compatible avec un Raspberry Pi.

Pour commencer, toujours en tant qu'utilisateur git, il faut copier le script d'init :

cd ~
cd $GOPATH/src/github.com/gogits/gogs/scripts/init/debian/gogs ./gogs.init

Il faut maintenant configurer un peu plus le code avec un p'tit coup de nano ~/gogs.init.

Faites les changements suivants :

# Required-Start:    $syslog $network $local_fs nginx postgresql
# Required-Stop:     $syslog $local_fs

et aussi :

WORKINGDIR=/home/git/go/src/github.com/gogits/gogs

Maintenant il n'y a plus qu'à mettre le petit fichier dans la pile init :

# On retourne à l'utilisateur "normal" pi
exit
# Bouge le fichier et met à jour la pile init
sudo mv /home/git/gogs.init /etc/init.d/gogs
sudo chmod ug+x /etc/init.d/gogs
sudo update-rc.d gogs defaults 30 70

Maintenant vous pouvez gérer Gogs avec un p'tit sudo service gogs start, avec start, restart et stop comme option possible.

J'espère que ce petit tutoriel vous a bien aidé ! :)

SOURCES :

Expérimentation : une Nexus 7 dans une optique "libre"

Rédigé par Passionaqua.Web Aucun commentaire

Attention, cet article est assez vieux et peut ne plus être d'actualité.

J'ai décidé de reprendre ma tablette, la Nexus 7 première génération, pour faire un essai.

Je me suis dit, pourquoi pas essayer d'avoir une tablette sous une ROM "Stock" (pas vraiment en fait), avec une optique libre. J'entends par là d'avoir tout de même une ROM de base orientée Google mais avec la mojorité des applications disponibles dans des dépôts alternatifs.

Pour encore plus de fun, le choix de la ROM s'est porté sur la toute dernière, pas encore diffusée à grande échelle mais disponible sur le site développeur de Google (il s'agit d'image système / factory images en anglais) : la version Lollipop 5.0.2.

Après avoir flashé la ROM sur la tablette, j'ai remarqué que c'était encore plus difficile que sur les versions précédentes de se débarasser de tout l'attirail Google.

Bon soit, on fait comme on peut ! Le but de cet article étant surtout de montrer quelques alternatives que je peux utiliser à la place des applications propriétaires / non libre du Play Store, entre autre.

Changer de fournisseur d'application

Je pense que vous vous en doutez, je vais utiliser F-Droid, mais il n'est pas le seul existant.

Fil RSS des articles de ce mot clé