[Technique] – Gogs

Ubuntu/Debian

La documentation est en français (svp) et l’installation rapide : https://gogs.io/docs/installation

  • Actuellement disponible pour Ubuntu 14.04/16.04/18.04, Debian 8/9/10, et CentOS 67.
  • Paquets actuellement disponibles sur packager.io.
  • Démo disponible en vidéo YouTube.

sources : https://gogs.io/docs/installation/install_from_packages

Configurations

Petites subtilités à mon sens mal présentées dans la documentation officielle :

Dans mon cas :

  • Emplacement Gogs: /srv/gogs/
  • Emplacement des repository Git : /srv/gogs/git
  • FQDN : gogs.home.lan
  • Emplacement cert SSL : /srv/gogs/custom/conf/ssl/

Toute la configuration personnalisée de Gogs est référencée dans le fichier app.ini

vim /srv/gogs/custom/conf/app.ini

SMTP – Configuration du service de mail

J’utilise à domicile SendGrid comme MTA :

Gogs (en utilisation domestique) envoi normalement peux de mails donc l’offre gratuite à 100 mails/jour suffit amplement.

SendGrid vous permet surtout de créer des clés API, plus d’informations ici

Éditez le fichier :

vim /srv/gogs/custom/conf/app.ini

Ajoutez

[..]
[mailer]
ENABLED = true
HOST = smtp.sendgrid.net:587
LOGIN = true
USER = apikey
PASSWD = <votre_longue_clé_api>
FROM = "Gogs" <gogs@home.lan>
[..]

Si vous avez bien suivi la documentation vous avez normalement crée le service « Gogs » via Systemd

Après chaque modification du fichier app.ini, pensez à relancer le service

service gogs restart

ou

systemctl restart gogs.service

Vous pouvez vérifier et tester votre configuration directement dans l’interface web via https://gogs.home.lan:3000/admin/config

SSL – HTTPS

SSL fonctionne suivant un mode client-serveur.

Il permet de satisfaire les objectifs de sécurité suivants :

  • l’authentification du serveur ;
  • la confidentialité des données échangées (ou session chiffrée) ;
  • l’intégrité des données échangées ;

Le protocole est très largement utilisé, sa mise en œuvre est facilitée par le fait que les protocoles de la couche application, comme HTTP, n’ont pas à être profondément modifiés pour utiliser une connexion sécurisée, mais seulement implémentés au-dessus de SSL/TLS, ce qui pour HTTP a donné le protocole HTTPS.

Sources : Wikipedia

Dans le cas d’une utilisation domestique un certificat auto-signé suffit amplement, mais dans un environnement de production un certificat officiel signé par une autorité de certifications reconnue est nécessaire et fortement recommandée.

Dans mon cas j’ai opté pour la création d’un certificat auto signé.

apt install openssl --yes
mkdir /srv/gogs/custom/conf/ssl/ && cd /srv/gogs/custom/conf/ssl/
openssl genrsa -out gogs.key 2048
openssl req -new -x509 -key gogs.key -out gogs_cert.cert -days 3650 -subj /CN=gogs.home.lan

Modifier le fichier app.ini comme suivant :

vim /srv/gogs/custom/conf/app.ini
[..]
[server]
DOMAIN           = gogs.home.lan
HTTP_PORT        = 3000
ROOT_URL         = https://gogs.home.lan:3000/
[..]
PROTOCOL         = https
CERT_FILE        = /srv/gogs/custom/conf/ssl/gogs_cert.crt 
KEY_FILE         = /srv/gogs/custom/conf/ssl/gogs.key
[..]

Après chaque modification du fichier app.ini, pensez à relancer le service

service gogs restart

ou

systemctl restart gogs.service