Initial commit
This commit is contained in:
@@ -0,0 +1,276 @@
|
||||
---
|
||||
date: '2021-01-04T11:16:36+01:00'
|
||||
title: Installer Gitea sur un NAS Synology
|
||||
---
|
||||
|
||||
Je vous propose un tutoriel sur l'installation de la forge Libre Gitea sur un
|
||||
NAS Synology avec une petite nuance par rapport à ce qu'on trouve habituellement
|
||||
sur le sujet: on n'utilisera pas Docker...
|
||||
|
||||
<!--more-->
|
||||
|
||||
En effet, j'ai à ma disposition un
|
||||
[DS216play](https://global.download.synology.com/download/Document/Hardware/DataSheet/DiskStation/16-year/DS216play/enu/Synology_DS216play_Data_Sheet_enu.pdf), basé sur un processeur STM Monaco
|
||||
[STiH412](https://www.st.com/resource/en/data_brief/stih412.pdf), processeur ARM
|
||||
à double-coeur à 1.5GHz (plus quatre coeurs dédiés à la vidéo). Un bon NAS pour
|
||||
un usage courant, mais qui ne supporte malheureusement pas Docker, ce qui aurait
|
||||
considérablement simplifié l'installation et la maintenance de logiciels tiers,
|
||||
en particulier celui qui nous intéresse aujourd'hui:
|
||||
[Gitea](https://gitea.io/en-us/).
|
||||
|
||||
La méthode que je vais décrire ici pourrait également être appliquée avec un NAS
|
||||
où l'on pourrait (techniquement) utiliser Docker, mais sans le vouloir. Je pars
|
||||
du principe que votre NAS est à jour (version 6.2.3 au moment d'écrire ce
|
||||
tutoriel), mais il est probable que cela fonctionne pour des versions
|
||||
antérieures.
|
||||
|
||||
## Installation de paquets supplémentaires ##
|
||||
|
||||
Notre procédure exige l'installation de paquets Synology supplémentaires. Allez
|
||||
dans le _Centre de paquets_, et installez:
|
||||
|
||||
- Git Server
|
||||
- MariaDB 10
|
||||
- phpMyAdmin
|
||||
|
||||
Tous trois se trouvent dans les paquets _Tierce partie_.
|
||||
|
||||
Notez le mot de passe que vous allez saisir dans MariaDB, vous en aurez besoin
|
||||
plus tard.
|
||||
|
||||
Ouvrez ensuite MariaDB via le lien présent dans le menu principal, afin de
|
||||
cocher la case "Activer la connexion TCP/IP", sur le port 3307.
|
||||
|
||||
## Activer SSH sur le NAS ##
|
||||
|
||||
Connectez-vous à l'interface d'administration de votre NAS, puis allez dans le
|
||||
_Panneau de configuration_. Activez le _Mode avancé_ en cliquant sur le lien en
|
||||
haut à droite, puis ouvrez _Terminal & SNMP_. Activez _SSH_, et laissez-le sur
|
||||
le port 22 pour le moment. Cliquez sur _Appliquer_.
|
||||
|
||||
## Créez un dossier dédié à Gitea ##
|
||||
|
||||
Allez maintenant dans _Dossier partagé_, et créez un partage _Gitea_.
|
||||
|
||||
- [x] Cacher ce dossier partagé dans "Mes emplacements réseaux".
|
||||
- [x] Masquer les sous-dossiers et les fichiers des utilisateurs sans autorisations.
|
||||
- [ ] Activer la corbeille.
|
||||
|
||||
Ne donnez aucun accès à personne pour le moment (c'est-à-dire, laissez tous les
|
||||
autres paramètres à leurs valeurs par défaut).
|
||||
|
||||
## Créer un utilisateur pour Gitea ##
|
||||
|
||||
Toujours dans le _Panneau de configuration_, ouvrez la page _Utilisateur_, et
|
||||
créez-en un nouveau, appelé comme vous le souhaitez, mais partons pour _gitea_.
|
||||
Affectez-lui un mot de passe dont vous vous souviendrez.
|
||||
|
||||
Laissez-le dans le groupe _users_. Par contre, donnez-lui les accès en lecture
|
||||
et en écriture dans le dossier partagé _gitea_ que vous venez de créer.
|
||||
|
||||
Vous pouvez éventuellement attribuer des quotas, mais laissez tout le reste aux
|
||||
valeurs par défaut.
|
||||
|
||||
## Se connecter en SSH au NAS ##
|
||||
|
||||
Depuis votre terminal préféré, initiez une connection SSH vers votre NAS, avec
|
||||
l'utilisateur _admin_.
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
ssh admin@nas
|
||||
```
|
||||
|
||||
Une fois votre mot de passe saisi, vous devriez être connecté.
|
||||
|
||||
## Télécharger Gitea ##
|
||||
|
||||
On va stocker Gitea dans son propre répertoire, dans le dossier partagé créé
|
||||
précédemment.
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
cd /volume1/gitea/
|
||||
mkdir bin
|
||||
cd bin/
|
||||
wget https://dl.gitea.io/gitea/1.13.1/gitea-1.13.1-linux-arm-6
|
||||
ln -s gitea-1.13.1-linux-arm-6 gitea
|
||||
ls -alh
|
||||
```
|
||||
|
||||
Vous devriez voir la sortie suivante, qui vous montre la création d'un lien
|
||||
symbolique _gitea_ vers le binaire téléchargé _gitea-1.13.1-linux-arm-6_, ce qui
|
||||
simplifiera les commandes futures.
|
||||
|
||||
```plaintext {linenos=false,class=not-prose}
|
||||
lrwxrwxrwx+ 1 gitea users 24 Jan 4 00:12 gitea -> gitea-1.13.1-linux-arm-6
|
||||
-rwxrwxrwx+ 1 gitea users 96M Dec 28 19:50 gitea-1.13.1-linux-arm-6
|
||||
```
|
||||
|
||||
## Tester ##
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
chmod +x gitea
|
||||
export GITEA_ROOT="/volume1/gitea"
|
||||
./gitea --port 13000 --custom-path $GITEA_ROOT/custom --config $GITEA_ROOT/custom/conf/app.ini
|
||||
```
|
||||
|
||||
Le port 3000 étant déjà utilisé, on demande à Gitea de démarrer sur le port
|
||||
13000, et on lui indique où stocker ses données.
|
||||
|
||||
La dernière ligne de la sortie provoquée par cette commande devrait ressembler à
|
||||
ça:
|
||||
|
||||
```plaintext {linenos=false,class=not-prose}
|
||||
2021/01/04 00:19:43 ...s/graceful/server.go:55:NewServer() [I] Starting new server: tcp:0.0.0.0:13000 on PID: 26230
|
||||
```
|
||||
|
||||
Confirmez en ouvrant votre navigateur, puis en allant à l'adresse de votre NAS,
|
||||
sur le port 13000:
|
||||
|
||||
> http://nas:13000/
|
||||
|
||||
En théorie, vous devriez voir la page d'accueil de votre instance Gitea.
|
||||
|
||||
N'y faites rien pour l'instant, on ne l'a pas démarré avec le bon utilisateur:
|
||||
c'était juste une _proof-of-concept_, il est maintenant temps de lancer Gitea
|
||||
avec son utilisateur attitré.
|
||||
|
||||
Retournez dans votre terminal, puis stoppez le processus avec
|
||||
<kbd>CTRL</kbd>+<kbd>C</kbd>.
|
||||
|
||||
## Démarrage de Gitea ##
|
||||
|
||||
Allez dans le _Panneau de configuration_, puis dans le _Planificateur de
|
||||
tâches_. Créez une nouvelle _Tâche déclenchée_. Nommez-la "Gitea", affectez
|
||||
l'utilisateur _gitea_, à l'évènement "Démarrage". Allez ensuite dans l'onglet
|
||||
"Paramètres de tâche". Le temps des tests, je vous recommande de cocher la
|
||||
case permettant d'envoyer les détails d'exécution par email. Une fois qu'on se
|
||||
sera assuré que tout fonctionne, on pourra aussi cocher la case "Envoyer les
|
||||
détails d'exécution uniquement lorsque le script se termine de manière
|
||||
anormale".
|
||||
|
||||
Dans la zone de texte du bas, "Script défini par l'utilisateur", copiez-collez
|
||||
ceci:
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
export HOME="/volume1/homes/gitea"
|
||||
export GITEA_ROOT="/volume1/gitea"
|
||||
$GITEA_ROOT/bin/gitea --port 13000 --custom-path $GITEA_ROOT/custom --config $GITEA_ROOT/custom/conf/app.ini
|
||||
```
|
||||
|
||||
Enregistrez, puis faites un clic droit sur la tâche et _Exécuter_.
|
||||
|
||||
Si vous pouvez accéder à l'interface web de Gitea, comme pendant le test
|
||||
précédent, et qu'aucun mail ne vous est envoyé avec une sortie de programme,
|
||||
c'est qu'on peut passer à la configuration...
|
||||
|
||||
## Base de données ##
|
||||
|
||||
Dans le menu principal de DSM, ouvrez _phpMyAdmin_. Connectez-vous au compte
|
||||
_root_, avec le mot de passe spécifié pendant l'installation du paquet MariaDB.
|
||||
|
||||
Dans la barre en haut, cliquez sur _Comptes utilisateurs_, puis _Ajouter un
|
||||
compte d'utilisateur_.
|
||||
|
||||
Donnez-lui un nom (par exemple, _gitea_), un mot de passe, puis cochez les cases:
|
||||
|
||||
- [x] Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base.
|
||||
- [x] Accorder tous les privilèges à un nom passe-partout (utilisateur\_%).
|
||||
|
||||
Puis cliquez sur le bouton _Exécuter_ tout en bas à droite.
|
||||
|
||||
## Configuration de Gitea ##
|
||||
|
||||
De retour dans l'interface de Gitea, on peut remplir les champs liés à la base
|
||||
de données.
|
||||
|
||||
Le serveur MariaDB sur le NAS écoute sur le port 3307, au lieu du 3306 habituel.
|
||||
Le nom d'utilisateur et le nom de la base de données devraient être _gitea_ si
|
||||
vous avez suivi mes indications, et le mot de passe est celui que vous venez de
|
||||
donner à l'utilisateur _gitea_ dans MariaDB.
|
||||
|
||||
Il est important maintenant de définir les chemins d'accès aux fichiers:
|
||||
|
||||
- Emplacement racine des dépôts: /volume1/gitea/gitea-repositories
|
||||
- Répertoire racine Git LFS: /volume1/gitea/bin/data/lfs
|
||||
- Chemin des fichiers log: /volume1/gitea/log
|
||||
|
||||
Vous devez aussi vous assurer que les noms de domaines mentionnés correspondent
|
||||
à celui utilisé pour accéder à votre NAS.
|
||||
|
||||
Placez le port d'écoute SSH sur le port 10022, puis continuez la configuration
|
||||
avec les paramètres facultatifs.
|
||||
|
||||
## Tester ##
|
||||
|
||||
Allez dans la configuration de Gitea, une fois que vous y serez connecté, puis
|
||||
dans "Clés SSH/GPG".
|
||||
|
||||
Récupérez votre clé publique depuis une autre machine:
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
ssh-keygen -t rsa
|
||||
cat ~/.ssh/id_rsa.pub
|
||||
```
|
||||
|
||||
La clé aura cette forme:
|
||||
|
||||
```plaintext {linenos=false,class=not-prose}
|
||||
ssh-rsa <série de caractères> <utilisateur>@<ordinateur>
|
||||
```
|
||||
|
||||
Dans Gitea, faites un copier-coller de cette clé publique dans "Ajouter une
|
||||
clé".
|
||||
|
||||
Créez maintenant un dépôt de test qui sera supprimé ensuite. Gitea vous donne
|
||||
même la marche à suivre:
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
touch README.md
|
||||
git init
|
||||
|
||||
git add README.md
|
||||
git commit -m "first commit"
|
||||
git remote add origin ssh://gitea@<domaine>:13000/<utilisateur>/test.git
|
||||
git push -u origin master
|
||||
```
|
||||
|
||||
Arrivé là, il est fort à parier qu'un nom d'utilisateur et un mot de passe vous
|
||||
sera demandé, à la place de l'identification à clé publique. C'est tout
|
||||
simplement parce que les permissions du dossier _.ssh_ de l'utilisateur _gitea_
|
||||
ne sont pas les bonnes, et parce que Gitea n'a pas lancé son propre serveur SSH.
|
||||
|
||||
Dans votre terminal, toujours en tant qu'_admin_, exécutez les commandes
|
||||
suivantes:
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
sudo su
|
||||
cd /volume1/homes/gitea
|
||||
chmod 0711 ./
|
||||
chmod 0711 ./.ssh/
|
||||
chmod 0600 ./.ssh/authorized_keys
|
||||
```
|
||||
|
||||
Vous devez également ajouter un paramètre à la configuration de Gitea, située
|
||||
dans le fichier _/volume1/gitea/custom/conf/app.ini_.
|
||||
|
||||
Dans la section `[server]`, rajoutez:
|
||||
|
||||
```ini {linenos=false,class=not-prose}
|
||||
START_SSH_SERVER = true
|
||||
```
|
||||
|
||||
Arrêtez Gitea en faisant:
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
killall gitea
|
||||
```
|
||||
|
||||
Et relancez la tâche planifiée créée plus tôt. Gitea doit démarrer et un _push_
|
||||
ou un _pull_ vers votre dépôt de test devrait fonctionner.
|
||||
|
||||
## Mise à jour de Gitea ##
|
||||
|
||||
À chaque nouvelle version, il vous suffit de télécharger le fichier binaire, et
|
||||
de changer le lien symbolique vers lui, comme on l'a fait avant. Vous stoppez
|
||||
ensuite Gitea, sauvegardez les données comme vous le faites d'habitude avec DSM,
|
||||
et relancer la tâche planifiée.
|
||||
Reference in New Issue
Block a user