272 lines
9.6 KiB
Markdown
272 lines
9.6 KiB
Markdown
|
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.
|