Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Forgejo - Port ====== Le service https://port.numenaute.org est une forge logicielle((L'adresse https://git.numenaute.org redirige automatiquement sur ce service.)). Elle permet de travailler à plusieurs sur du code, de le partager au public, d'accepter des tickets, etc. Le logiciel est basé sur Forgejo ; vous trouverez la documentation officielle (en anglais) sur [[https://forgejo.org/]]. <WRAP center round info 60%> Nous avons précédement eu une forge basée sur Gitlab, dont les dépôts ont été transférés sur Forgejo (migration finie le 19/06/2024). Si certains liens sont cassés ou si vous ne retrouvez pas un dépôt, signalez-le nous. </WRAP> ===== Conditions d'utilisation du service ===== Le service est ouvert sur simple demande. À cause des robots spammeurs, nous ne pouvons pas laisser les gens s'inscrire simplement, mais il suffit de nous contacter pour qu'on vous ouvre un compte. Quand on arrivera à gérer ces spammeurs automatiquement, nous laissons les inscriptions librement ouvertes. Avec un compte, vous pourrez créer des tickets et échanger sur ces derniers, ainsi que rejoindre la gestion de certains projets hébergés dans la forge. Pour pouvoir avoir vos propres dépôts, il faut que nous sachions ce que vous voulez faire : * Projet sous licence libre et public, pas de souci, allez-y. * Projet sous une licence non libre et/ou privé : nous apprécions que vous nous prouviez votre participation aux Communs par ailleurs, par exemple en participant à d'autres projets libres sur notre forge, ou en nous/les soutenant financièrement. * Projet très demandeur en ressources (grosses CI par exemple) : informez-nous en amont de vos besoins, pour que nous adaptions les machines. Nous vous demanderons aussi, très probablement, un véritable engagement en tant que partenaire. Par défaut, si vous êtes inscrit, nous vous laissons la possibilité de créer librement 10 projets, mais il peut y avoir une modération a posteriori si nous trouvons que vous abusez de nos services. Le mieux est donc de nous avertir lorsque vous créez un projet. Par défaut, nous vous réservons 5Go de stockage. Si vous avez besoin de plus sur la Forge, demandez-nous. ===== Pour les utilisateurs de base ===== <WRAP center round todo 60%> Explication pour les noobs, à compléter, afin que même quelqu'un qui n'est pas doué avec l'informatique puisse s'approprier le service. Si vous avez des liens vers des tutos vidéos, ajoutez-les ! </WRAP> ===== Pour les utilisateurs avancés ===== ==== Transférer un dépôt depuis Gitlab ==== Aller sur le menu "+" (en haut à droite à côté de votre avatar), sélectionner "Nouvelle migration", choisissez Gitlab. Ici une particularité sur l'URL à renseigner : il ne s'agit pas de l'url pour gérer votre projet (du type ''https://gitlab.com/user/nom_projet'') mais de l'url de l'ID du projet. Ce dernier se trouve sous le titre de votre dépôt, c'est intitulé "Identifiant de projet", et l'url à renseigner est de la forme ''https://gitlab.com/ID'' (par exemple ''https://port.numenaute.org/175'' Pour le reste, ça devrait aller tout seul, Forgejo pointe la doc de Gitlab sur comment se créer un jeton d'accès, y'a des options de dev qui devraient vous parler... Et voilà, ça devrait être migré ! ===== Pour les administrateurs de Numenaute ===== ==== Installation ==== Notes un peu en vrac, ça suffira pour retrouver le fil conducteur. Dépendances : sudo apt install git git-lfs gpg Ajout de l'user: sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' \ --group --disabled-password --home /home/git git Puis installer le binaire en suivant ce tutoriel : [[https://forgejo.org/download/]]. sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' \ --group --disabled-password --home /home/git git Créations des dossiers sudo mkdir /var/lib/forgejo sudo chown git:git /var/lib/forgejo && sudo chmod 750 /var/lib/forgejo Dossiers custom: sudo -u git mkdir /var/lib/forgejo/custom sudo -u git mkdir /var/lib/forgejo/custom/public sudo -u git mkdir /var/lib/forgejo/custom/public/assets sudo -u git mkdir /var/lib/forgejo/custom/public/assets/img ==== Personnalisation ==== Le fichier de configuration est ''/etc/forgejo/app.ini''. Une fois modifié, redémarrer le service : ''service forgejo restart''. === Thème et pages personnalisées === Documentation officielle : * https://forgejo.org/docs/latest/developer/customization/ (partie dev) * https://forgejo.org/docs/latest/admin/customization/ (partie sysadmin, donc a priori plutôt mon truc ?) Les fichiers sont à mettre dans ''/var/lib/forgejo/custom/'' dans notre installation. Pour être pris en compte, il faut redémarrer le service : ''sudo service forgejo restart''. À l'intérieur de ce dossier "custom" plusieurs possibilités : * ''public'' : ce qui est directement accessible (genre les images, dans ''public/assets/img/'') * ''template'' : ce qui sert à construire les pages Les fichiers de template sont dans https://codeberg.org/forgejo/forgejo/src/branch/forgejo/templates/ ; mais là pour "construire" une autre homepage... bon courage. Modifier home.tmpl et ensuite le mettre dans ''$FORGEJO_CUSTOM/templates''. == Ajout d'éléments dans le pied de page, les onglets, etc == Source : https://forgejo.org/docs/latest/developer/customization/#adding-links-and-tabs Pour par exemple ajouter un lien vers les mentions légales, j'ai créé le fichier ''/var/lib/forgejo/custom/templates/custom/extra_links_footer.tmpl'' dans lequel j'ai ajouté une balise html : <code><a class="item" href="https://numenaute.org/asso:mentions_legales">Mentions Légales</a></code> Pour trouver les bonnes balises html, le plus simple est sans doute d'inspecter la page. On peut aussi regarder les pages initiales, [[https://codeberg.org/forgejo/forgejo/src/branch/forgejo/templates/repo/header.tmpl|par exemple ici]] pour la partie header. == CSS et thèmes == Les thèmes officiels de Forgejo sont [[https://codeberg.org/forgejo/forgejo/src/branch/forgejo/web_src/css/themes|ici]]. En théorie si on crée un fichier ''numenaute.css'' dans ''/var/lib/forgejo/custom/web_src/css/themes'', il y a une chance que ça apparaisse (mais peut-être qu'il faudra le déclarer ailleurs). Mais attention, en vrai y'a des appels d'appels de fichiers et... pfiou. Une inspection dans les pages web, on note la couleur, un coup de grep dans la partie css et ça va le faire ;) Il faut par contre ensuite déclarer la liste des thèmes possibles dans ''/etc/forgejo/app.ini'' et dire quel thème on veut par défaut. Je n'ai pas fait dans la dentelle, j'ai permis de sélectionner les divers thèmes liés à l'accessibilité, et les trois modifs de numenaute (juste les couleurs, donc, dans ''/var/lib/forgejo/custom/web_src/css/themestheme-numenaute-light.css'' etc). <code ini /etc/forgejo/app.ini>[ui] DEFAULT_THEME: numenaute-auto THEMES = forgejo-auto,forgejo-auto-deuteranopia-protanopia,forgejo-auto-tritanopia,forgejo-dark,forgejo-dark-deuteranopia-protanopia,forgejo-dark-tritanopia,forgejo-light,forgejo-light-deuteranopia-protanopia,forgejo-light-tritanopia,gitea-auto,gitea-dark,gitea-light,numenaute-auto,numenaute-dark,numenaute-light </code> == Textes et traduction == Faudra bidouiller https://codeberg.org/forgejo/forgejo/src/branch/forgejo/options/locale/locale_fr-FR.ini ; y'a une section [startpage]. Et en toute logique mettre les ajouts dans ''/var/lib/forgejo/custom/options/locale/locale_fr-FR.ini''. Souci : il n'est pas possible de seulement ajouter ses modifs. Il faut copier tout le fichier et ajouter des modifications dedans... Donc pour le moment j'ai changé la page "home" en mettant directement le français, et seulement ça. C'est pas extra mais ça évite de pourrir toutes les traductions. == Modification de la page d'accueil == J'ai créé ''/var/lib/forgejo/custom/templates/home.tmpl'' qui reprends en gros [[https://codeberg.org/forgejo/forgejo/src/branch/forgejo/templates/home.tmpl|l'équivalent par défaut]]. ==== Upgrade ==== Vérifier s'il y a les fichiers de configuration à changer avant tout. === Upgrade simple === wget https://codeberg.org/forgejo/forgejo/releases/download/v1.*.*-*/forgejo-1*.*-*-linux-amd64 chmod +x forgejo-1.*.*-*-linux-amd64 sudo service forgejo stop sudo cp forgejo-1.*.*-*-linux-amd64 /usr/local/bin/forgejo sudo chmod 755 /usr/local/bin/forgejo sudo service forgejo start === Upgrade complexe === page à check : https://forgejo.org/docs/latest/admin/upgrade/ ==== Gestion des badbot ==== Y'a des bots malpolis sur le web... Sur Forgejo, leur impact peut être vraiment gênant. === Remplissage des archives === Lorsque quelqu'un télécharge une archive d'un dépôt (en zip ou tar.gz), cela génère une "archive". Par défaut, elles ont juste stockées. Mais cela peut rapidement remplir l'espace disque. On va donc faire que ce soit purgé régulièrement. <code ini /etc/forgejo/app.ini>[repository] ARCHIVE_RETENTION_DAYS = 1</code> On peut évidement mettre plus si on a réglé le souci des badbots, parce que générer les archives prends aussi un peu de puissance sur le serveur (donc "moins" c'est parfois mieux). Redémarrer le service : sudo systemctl restart forgejo === Bannir les vilains via nftables et Fail2ban === <WRAP center round tip 60%> Si le proxy gère les accès, cela se paramètre sur le proxy. </WRAP> Configuration de nftables : <code bash /etc/nftables.conf> table inet filter { # création du set où les vilaines ip seront notées set bad_ips { type ipv4_addr; flags dynamic; timeout 24h; } chain input { type filter hook input priority 0; policy accept; # action sur ces vilaines ip : les balancer dans le vide ip saddr @bad_ips drop; } } </code> Recharger nftables : sudo nft -f /etc/nftables.conf Pour bloquer une ip suspecte qu'on n'a pas encore "eu" via un filtre de fail2ban : sudo nft add element inet filter bad_ips { xx.xxx.xxx.xxx } Voir les IPs bannies : sudo nft list set inet filter bad_ips Débloquer une IP : sudo nft delete element inet filter bad_ips { xx.xxx.xxx.xxx } Puis on installe Fail2Ban et on le paramètre avec ces deux fichiers <code bash /etc/fail2ban/filter.d/nginx-runner.conf> [Definition] failregex = ^<HOST> - .*"POST /api/actions/runner.* HTTP.*" ignoreregex = </code> <code bash /etc/fail2ban/jail.d/custom.conf> [DEFAULT] maxRetry = 4 findtime = 3h bantime = 3d banaction = nftables-multiport [nginx-runner] enabled = true filter = nginx-runner port = http,https logpath = /var/log/nginx/forgejo.access.log maxretry = 1 findtime = 600 bantime = 86400 banaction = nftables-multiport </code> Et on active le service : sudo systemctl enable fail2ban sudo systemctl restart fail2ban Pour voir quelles ips sont dans la jail : sudo fail2ban-client status nginx-runner {{tag>Brouillon Documentation}}