« Gitea » : différence entre les versions
Mise à jour de la procédure avec l'évolution de l'outil en 1.14.2. |
→Installation : Adaptation de l'utilisateur du programme pour coller aux nouvelles exigences fixées dans le code source du programme. |
||
| Ligne 28 : | Ligne 28 : | ||
'''Création de l'utilisateur système''' | '''Création de l'utilisateur système''' | ||
useradd --system --shell /usr/sbin/nologin --home-dir /var/lib/ | useradd --system --shell /usr/sbin/nologin --home-dir /var/lib/git/ --user-group git | ||
'''Préparation de l'arborescence de travail''' | '''Préparation de l'arborescence de travail''' | ||
mkdir -p /etc/ | mkdir -p /etc/git /var/lib/git/{custom,data,indexers,public,log} | ||
chown -R | chown -R git:git /var/lib/git | ||
chmod 750 /var/lib/ | chmod 750 /var/lib/git/{data,indexers,log} | ||
chown root: | chown root:git /etc/git | ||
chmod 770 /etc/ | chmod 770 /etc/git | ||
'''Initialisation de la configuration''' | '''Initialisation de la configuration''' | ||
su - | su - git -s /bin/sh -c "GITEA_WORK_DIR=/var/lib/git/ /usr/local/bin/gitea web -c /etc/git/app.ini" | ||
À ce stade, ''Gitea'' écoute sur le port ''HTTP'' 3000. Rendez-vous sur la page d'installation avec un navigateur ''WEB'' pour configurer le contenu du fichier <source lang="bash" inline>/etc/ | À ce stade, ''Gitea'' écoute sur le port ''HTTP'' 3000. Rendez-vous sur la page d'installation avec un navigateur ''WEB'' pour configurer le contenu du fichier <source lang="bash" inline>/etc/git/app.ini</source>. Vous pouvez ignorer cette étape si vous en avez déjà un. | ||
Lors de cette configuration il est possible de changer quelques paramètres. Pour ma part, j'ai choisi de n'autoriser aucun services externes (toutes cases décochées). | Lors de cette configuration il est possible de changer quelques paramètres. Pour ma part, j'ai choisi de n'autoriser aucun services externes (toutes cases décochées). | ||
| Ligne 46 : | Ligne 46 : | ||
Une fois terminé, arrêtez ''Gitea'' via un <source lang="bash" inline><ctrl+c></source> suivit d'un <source lang="bash" inline>pkill gitea</source>. | Une fois terminé, arrêtez ''Gitea'' via un <source lang="bash" inline><ctrl+c></source> suivit d'un <source lang="bash" inline>pkill gitea</source>. | ||
Pour désactiver la possibilité de s'inscrire (seul l'administrateur peut créer des comptes), il faut passer la valeur <source lang="bash" inline>DISABLE_REGISTRATION</source> du fichier <source lang="bash" inline>/etc/ | Pour désactiver la possibilité de s'inscrire (seul l'administrateur peut créer des comptes), il faut passer la valeur <source lang="bash" inline>DISABLE_REGISTRATION</source> du fichier <source lang="bash" inline>/etc/git/app.ini</source> à <source lang="bash" inline>true</source>. | ||
'''Création du service Systemd''' | '''Création du service Systemd''' | ||
| Ligne 60 : | Ligne 60 : | ||
RestartSec=2s | RestartSec=2s | ||
Type=simple | Type=simple | ||
User= | User=git | ||
Group= | Group=git | ||
WorkingDirectory=/var/lib/ | WorkingDirectory=/var/lib/git/ | ||
ExecStart=/usr/local/bin/gitea web --config /etc/ | ExecStart=/usr/local/bin/gitea web --config /etc/git/app.ini | ||
Restart=always | Restart=always | ||
Environment=USER= | Environment=USER=git HOME=/var/lib/git/ GITEA_WORK_DIR=/var/lib/git | ||
[Install] | [Install] | ||
| Ligne 78 : | Ligne 78 : | ||
Une fois l'installation terminée, il est conseillé d’interdire l'écriture sur le fichier de configuration de ''Gitea'' : | Une fois l'installation terminée, il est conseillé d’interdire l'écriture sur le fichier de configuration de ''Gitea'' : | ||
chmod 750 /etc/ | chmod 750 /etc/git | ||
chmod 644 /etc/ | chmod 644 /etc/git/app.ini | ||
{{astuce|Il est tout à fait possible d'éditer manuellement cette configuration en écrivant directement dans le fichier <source lang="bash" inline>/etc/ | {{astuce|Il est tout à fait possible d'éditer manuellement cette configuration en écrivant directement dans le fichier <source lang="bash" inline>/etc/git/app.ini</source>.}} | ||
{{info|Le premier utilisateur créé sera l'administrateur de ''Gitea''.}} | {{info|Le premier utilisateur créé sera l'administrateur de ''Gitea''.}} | ||
Version du 23 janvier 2022 à 18:19
Gitea est une forge logiciel libre à source ouverte et une bifurcation de Gogs. C'est un logiciel écrit en Go et une alternative auto-hébergeable à Github qui se veut plus légère que Gitlab tant en terme de consommation de ressources qu'en fonctionnalités.
Installation
Installation des dépendances
apt install --no-install-recommends mariadb-server git dirmngr
Préparation de la base de données
mariadb -u root
Création de la base et de l'utilisateur exploitant <source lang="mysql"> CREATE DATABASE gitea; GRANT all privileges on gitea.* to 'gitea'@'localhost' identified by 'gitea'; </source>
Installation de Gitea
Téléchargement de Gitea
wget https://github.com/go-gitea/gitea/releases/download/v1.14.2/gitea-1.14.2-linux-amd64.xz
Décompression de Gitea
unxz gitea-1.14.2-linux-amd64.xz
Mise à disposition du binaire
mv gitea-1.14.2-linux-amd64 /usr/local/bin/gitea chmod +x /usr/local/bin/gitea
Création de l'utilisateur système
useradd --system --shell /usr/sbin/nologin --home-dir /var/lib/git/ --user-group git
Préparation de l'arborescence de travail
mkdir -p /etc/git /var/lib/git/{custom,data,indexers,public,log}
chown -R git:git /var/lib/git
chmod 750 /var/lib/git/{data,indexers,log}
chown root:git /etc/git
chmod 770 /etc/git
Initialisation de la configuration
su - git -s /bin/sh -c "GITEA_WORK_DIR=/var/lib/git/ /usr/local/bin/gitea web -c /etc/git/app.ini"
À ce stade, Gitea écoute sur le port HTTP 3000. Rendez-vous sur la page d'installation avec un navigateur WEB pour configurer le contenu du fichier <source lang="bash" inline>/etc/git/app.ini</source>. Vous pouvez ignorer cette étape si vous en avez déjà un.
Lors de cette configuration il est possible de changer quelques paramètres. Pour ma part, j'ai choisi de n'autoriser aucun services externes (toutes cases décochées).
Une fois terminé, arrêtez Gitea via un <source lang="bash" inline><ctrl+c></source> suivit d'un <source lang="bash" inline>pkill gitea</source>.
Pour désactiver la possibilité de s'inscrire (seul l'administrateur peut créer des comptes), il faut passer la valeur <source lang="bash" inline>DISABLE_REGISTRATION</source> du fichier <source lang="bash" inline>/etc/git/app.ini</source> à <source lang="bash" inline>true</source>.
Création du service Systemd
vim /etc/systemd/system/gitea.service
<source lang="bash"> [Unit] Description=Gitea (Git avec une tasse de thé) After=syslog.target After=network.target
[Service] RestartSec=2s Type=simple User=git Group=git WorkingDirectory=/var/lib/git/ ExecStart=/usr/local/bin/gitea web --config /etc/git/app.ini Restart=always Environment=USER=git HOME=/var/lib/git/ GITEA_WORK_DIR=/var/lib/git
[Install] WantedBy=multi-user.target </source>
Chargement du nouveau service
systemctl daemon-reload systemctl start gitea systemctl enable gitea systemctl status gitea
Une fois l'installation terminée, il est conseillé d’interdire l'écriture sur le fichier de configuration de Gitea :
chmod 750 /etc/git chmod 644 /etc/git/app.ini
ASTUCE
{{{1}}}INFORMATION
Le premier utilisateur créé sera l'administrateur de Gitea.J'ai utilisé pour mon usage personnel le mandataire inverse Haproxy avec un certificat Letsencrypt mais on verra bien souvent Nginx pour cet usage. Si vous n'utilisez pas de mandataire inverse, le service est accessible via sont IP avec le port 3000.
Sources de la section
- https://docs.gitea.io/en-us/install-from-binary/
- https://docs.gitea.io/en-us/linux-service/
- https://computingforgeeks.com/how-to-install-gitea-self-hosted-git-service-on-ubuntu-18-04-ubuntu-16-04/
Mise à jour de Gitea
Routine
Les mises à jours sont simples puisque il suffit d’arrêter le service Gitea avec :
systemctl stop gitea.service
et de remplacer le binaire <source lang="bash" inline>/usr/local/bin/gitea</source> par le plus récent avant de relancer le service avec :
systemctl start gitea.service
INFORMATION
{{{1}}}Changement d'encodage UTF-8
Depuis le passage à la branche 1.14 (passage de la 1.11.4 à la 1.14.1 pour ma part), Gitea utilise l'encodage <source lang="bash" inline>UTF8mb4</source> de MariaDB en lieu et place de l'<source lang="bash" inline>UTF8</source>. 767 octets correspondent à 255 caractères en UTF8 et 191 en UTF8mb4. Ceci a pour conséquence de faire échouer la conversion de certaines tables et donc de foutre la merde sévère dans la base (<source lang="bash" inline>Error 1071: Specified key was too long; max key length is 767 bytes</source>). Gitea est alors pété et ne démarre plus... Pour prévenir ça, il faut (avant la migration - possible pendant si vous êtes rapide), arrêter le service comme expliqué supra, remplacer le binaire par la nouvelle version ET exécuter les actions suivantes (comme expliqué dans ce ticket) en utilisateur root MariaDB :
<source lang="sql"> SET GLOBAL innodb_file_format=Barracuda; SET GLOBAL innodb_file_per_table=1; SET GLOBAL innodb_large_prefix=1; </source>
Vous pouvez alors relancer le service pour exécuter la mise à jour normalement.
Utilisation
Création d'un dépôt
La création d'un nouveau dépôt s'effectue via le bouton "+" en haut à droite de l'interface utilisateur. À la fin du formulaire, un choix vous est laissé d'initialiser ou pas le dépôt. Si vous laissez Gitea l'initialiser, il va tout créer pour vous, sinon vous devrez faire ces quelques étapes à la main. Après avoir renseigné les informations demandées et dans le cas d'une non initialisation automatique. les instructions suivantes sont données pour la création en local des fichiers et envoi au serveur via Git :
Création d'un nouveau dépôt en ligne de commande <source lang="bash"> touch README.md git init git add README.md git commit -m "first commit" git remote add origin http://localhost:3000/yohan/Test.git git push -u origin master </source>
Soumission d'un dépôt existant par ligne de commande <source lang="bash"> git remote add origin http://localhost:3000/yohan/Test.git git push -u origin master </source>