Ceci est une ancienne révision du document !
Contexte
Installation de Gogs sur juris.
Installation
Mise à niveau du serveur avant de commencer
sudo apt update; sudo apt upgrade
Installation de git et mercurial
sudo apt install -y git mercurial
Installation de la base de données
Installation de MariaDB
sudo apt install -y mariadb-server
Sécurisation de MariaDB
$ sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Le mot de passe root pour la connexion à MariaDB ce trouve dans notre utilitaire de mot de passe.
Création de la BDD qui accueillera Gogs
sudo mysql -u"root" -p CREATE DATABASE IF NOT EXISTS gogs_RAND CHARACTER SET utf8 COLLATE utf8_general_ci;
Note : RAND est à remplacer par une chaîne de caractère aléatoire de votre choix.
Création de l'utilisateur lié à la BDD Gogs
CREATE USER 'gogs_RAND'@'localhost' IDENTIFIED BY 'gogs_RAND_PASSWORD_HERE'; GRANT ALL PRIVILEGES ON gogs_RAND.* TO 'gogs_RAND'@'localhost';
Le mot de passe gogs_RAND_PASSWORD_HERE de l'utilisateur gogs_RAND de la BDD gogs_RAND est disponible dans notre utilitaire de mot de passe.
Note : RAND est à remplacer par une chaîne de caractère aléatoire de votre choix.
Ajout d'un utilisateur système 'git'
Cet utilisateur servira à contenir le service et les fichiers Gogs.
sudo adduser --disabled-login --gecos 'Gogs' git
Installation du langage Go dans sa dernière version
Le langage Go ne nécessite que des binaires statiques pour fonctionner.
(PS : Les dépôts d'Ubuntu 16.04 ne disposent que de la version 1.6 de golang, la dernière en date est la 1.8rc2 avec comme bonne nouvelles un gain de performance non négligeable de plus de 20%)
sudo su - git cd ~ mkdir local wget https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz sha256sum go1.8.linux-amd64.tar.gz
Sortie du hash sha256sum nécessaire :
53ab94104ee3923e228a2cb2116e5e462ad3ebaeea06ff04463479d7f12d27ca
Sortie du hash sha256sum lors de l'installation (correcte) :
git@juris:~$ sha256sum go1.8.linux-amd64.tar.gz 53ab94104ee3923e228a2cb2116e5e462ad3ebaeea06ff04463479d7f12d27ca go1.8.linux-amd64.tar.gz
Si tout est bon, on décompresse dans le dossier local golang 1.8 :
tar -C /home/git/local -xzf go1.8.linux-amd64.tar.gz
Mise en place des variables d'environnement nécessaire au langage Go
cd ~ 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
Installation de Gogs
Téléchargement et installation des dépendances
go get -u github.com/gogits/gogs
Compilation du programme principal
cd $GOPATH/src/github.com/gogits/gogs go build
'Custom' configuration
cd $GOPATH/src/github.com/gogits/gogs mkdir -p custom/conf/ vi app.ini
Lancement 'test' de Gogs
(PS : Cette étape permet d'avoir un accès web à Gogs et de remplir depuis la page d'installation de gogs http://git.hadoly.fr:3000/ le fichier de configuration 'custom')
cd $GOPATH/src/github.com/gogits/gogs ./gogs web
Voici les informations entrées :
--- Connexion BDD Type : MySQL Utilisateur : gogs_RAND Nom de la BDD : gogs_RAND Mot de passe de l'utilisateur : BDD_PASSWORD_gogs_RAND_HERE --- Configuration Gogs Domaine (avec port) : [http://git.hadoly.fr:7574/](http://git.hadoly.fr:7574/) --- Options avancés [x] Enable Offline Mode [x] Disable Gravatar Service [x] Enable Captcha --- Admin account Settings Username : admin_or_anything Password : YOUR_ADMIN_PASSWORD_HERE Admin Email : your_m@il.here
Pour modifier ces paramètres manuellement, ça ce passe dans ce fichier de configuration :
sudo vi /home/git/go/src/github.com/gogits/gogs/custom/conf/app.ini
Ce fichier surcharge la configuration par défaut de gogs fournie dans le fichier :
/home/git/go/src/github.com/gogits/gogs/conf/app.ini
Astuce : Utiliser la génération automatique de ce fichier via le configurateur web est une bonne manière de ne pas faire de faute de typo.
Mise en place du démon (service) Gogs
Nous allons maintenant faire en sorte que Gogs s'exécute de la même façon qu'un service, pour cela nous utiliserons l'utilitaire supervisord.
Installation de 'supervisord'
sudo apt install -y supervisor
Ajout d'un programme Gogs dans supervisord
sudo vim /etc/supervisor/supervisord.conf
[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" user = git
Création de l'arborescence pour les journaux Gogs :
sudo mkdir -p /var/log/gogs
De ce fait, si vous souhaiter voir les logs de Gogs :
sudo tail -f /var/log/gogs/stdout.log
Arrêt/Relance de supervisord pour valider la configuration :
sudo service supervisor restart
Aide diverses et sources (utilisée et/ou lues) : - http://doc.hadoly.fr/Documentation_technique/Vhost/ - https:%%//%%gogs.io/docs/installation/install_from_source - https:%%//%%gogs.io/docs/installation/configuration_and_run - https:%%//%%www.digitalocean.com/community/tutorials/how-to-set-up-gogs-on-ubuntu-14-04
Intégration de Gogs au LDAP
Type d'authentification : LDAP (via BindDN) Protocole de sécurité : LDAPS Hôte : leodagan.hadoly.fr Port : 636 Bind DN : uid=gogs-account,ou=people,ou=service,dc=hadoly,dc=fr Bind mot de passe : motdepassesecret Utilisateur Search Base : dc=hadoly,dc=fr Filtre utilisateur : (&(objectclass=person)(uid=%s)(memberof=cn=gogs_group,ou=groups,dc=hadoly,dc=fr)) Filtre administrateur : Vide Attribut nom d'utilisateur : uid Attribut du prénom : givenName Attribut du nom de famille : sn Attribut de l'e-mail : mail [ ] Alllez chercher les attributs dans le contexte de liaison DN [x] Ne pas vérifier TLS [x] Authentification activée
2017-06-12 Darcidride : intégration avec LDAP (pas encore rédigé) et ce n'est pas moi qui est effectué l'opération… Objectif: Seuls les membres du groupe LDAP git?_group peuvent accéder au service