« PI GitLab » : différence entre les versions
(Page créée avec « On crée une carte standard avec Raspberry Pi Imager (Dernière version sans desktop et en activant l'acces ssh). Plus un petit :<syntaxhighlight lang="bash"> sudo apt update sudo apt upgrade </syntaxhighlight>Pour rattraper le retard de l'image sur le dépots. Ensuite un <code>sudo raspi-config</code> pour : * Activer l'autologin que l'on utilisera en urgence si le frontal plante ou si on a oublie le mot de passe. * Le "expand file system" être sur de ne ri... ») |
mAucun résumé des modifications |
||
| (Une version intermédiaire par le même utilisateur non affichée) | |||
| Ligne 1 : | Ligne 1 : | ||
== Installation == | |||
=== La base === | |||
On crée une carte standard avec Raspberry Pi Imager (Dernière version sans desktop et en activant l'acces ssh). | On crée une carte standard avec Raspberry Pi Imager (Dernière version sans desktop et en activant l'acces ssh). | ||
| Ligne 13 : | Ligne 16 : | ||
On lui ajoute une adresse IP fixe sur le routeur : [[Le routeur en tête réseau PI#Gestion de l'allocation d'IP fixes en DHCP|IP FIXE]]. | On lui ajoute une adresse IP fixe sur le routeur : [[Le routeur en tête réseau PI#Gestion de l'allocation d'IP fixes en DHCP|IP FIXE]]. | ||
=== La partie spécifique === | |||
On commence par la base:<syntaxhighlight lang="bash"> | |||
sudo apt install -y git | |||
sudo apt install -y cgit | |||
sudo apt install -y fcgiwrap spawn-fcgi | |||
</syntaxhighlight> | |||
* '''fcgiwrap''' : un petit démon qui “wrappe” les scripts CGI pour les exécuter via le protocole FastCGI. → C’est ce qui permet à un serveur web (lighttpd, nginx, Caddy via reverse proxy) de lancer <code>cgit.cgi</code> proprement. | |||
* '''spawn-fcgi''' : un utilitaire pour démarrer <code>fcgiwrap</code> facilement (en créant un socket Unix ou TCP). | |||
==== Config de fcgiwrap ==== | |||
Créer une fichier <code>fcgiwrap.service</code> :<syntaxhighlight lang="ini"> | |||
[Unit] | |||
Description=fcgiwrap FastCGI server | |||
After=network.target | |||
[Service] | |||
ExecStart=/usr/bin/spawn-fcgi -s /var/run/fcgiwrap.socket -M 0660 -u www-data -g www-data /usr/sbin/fcgiwrap | |||
Restart=always | |||
RestartSec=2 | |||
[Install] | |||
WantedBy=multi-user.target | |||
</syntaxhighlight>Et utiliser le fichier d'installation install.sh :<syntaxhighlight lang="bash"> | |||
#!/bin/bash | |||
sudo cp fcgiwrap.service /etc/systemd/system/. | |||
sudo systemctl daemon-reload | |||
sudo systemctl enable fcgiwrap.service | |||
sudo systemctl start fcgiwrap.service | |||
</syntaxhighlight>l'installation donne :<syntaxhighlight lang="text"> | |||
Synchronizing state of fcgiwrap.service with SysV service script with /usr/lib/systemd/systemd-sysv-install. | |||
Executing: /usr/lib/systemd/systemd-sysv-install enable fcgiwrap | |||
Created symlink '/etc/systemd/system/multi-user.target.wants/fcgiwrap.service' → '/etc/systemd/system/fcgiwrap.service'. | |||
</syntaxhighlight>Et on peut vérifier par :<syntaxhighlight lang="bash"> | |||
systemctl status fcgiwrap.service | |||
</syntaxhighlight>Qui nous réponds par un beau: | |||
[[Fichier:Fcgiwrap.socket.status.png|sans_cadre|569x569px]] | |||
J'ai pas pu résister à mettre une jolie copie d'écran avec du vert partout. | |||
On a GIT installé sur le serveur et on a fcgi qui propose un acces a git en cgi-bin. Il faut maintenant installer un serveur http pour gérer le lien http avec le programme CGI. | |||
==== Installation lighthttp ==== | |||
<syntaxhighlight lang="bash"> | |||
sudo apt install -y lighttpd | |||
sudo lighttpd-enable-mod fastcgi | |||
</syntaxhighlight>L'installation se fait normalement et ensuite le module fastcgi est activé:<syntaxhighlight lang="text"> | |||
Enabling fastcgi: ok | |||
Run "service lighttpd force-reload" to enable changes | |||
</syntaxhighlight> | |||
==== Connexion avec cgit. ==== | |||
On modifie /etc/lighttpd/lighttpd.conf : | |||
Dans les modules on doit trouver :<syntaxhighlight lang="text"> | |||
server.modules = ( | |||
"mod_indexfile", | |||
"mod_access", | |||
"mod_alias", | |||
"mod_redirect", | |||
"mod_fastcgi" | |||
) | |||
</syntaxhighlight>et la définition du serveur :<syntaxhighlight> | |||
server.document-root = "/usr/share/cgit" | |||
server.upload-dirs = ( "/var/cache/lighttpd/uploads" ) | |||
server.errorlog = "/var/log/lighttpd/error.log" | |||
server.pid-file = "/run/lighttpd.pid" | |||
server.username = "www-data" | |||
server.groupname = "www-data" | |||
server.port = 8080 | |||
</syntaxhighlight>Dans <code>/etc/lighttpd/conf-available</code> on crée 50-cgit.conf :<syntaxhighlight lang="text"> | |||
# Activer les modules nécessaires (en extension, pas en redéfinition) | |||
server.modules += ( "mod_fastcgi", "mod_alias" ) | |||
# Déclarer cgit via FastCGI (socket systemd fcgiwrap) | |||
# On mappe l'URL /cgit vers le CGI cgit.cgi | |||
fastcgi.server += ( "/cgit" => | |||
(( | |||
"socket" => "/run/fcgiwrap.socket", | |||
"bin-path" => "/usr/lib/cgit/cgit.cgi", | |||
"check-local" => "disable", | |||
"mode" => "responder" | |||
)) | |||
) | |||
# Servir les assets CSS / logo | |||
alias.url += ( "/cgit-css/" => "/usr/share/cgit/" ) | |||
# Permettre que cgit soit servi comme page d'index | |||
index-file.names += ( "cgit.cgi" ) | |||
</syntaxhighlight>On active le fichier de conf :<syntaxhighlight lang="bash"> | |||
sudo lighttpd-enable-mod cgit | |||
</syntaxhighlight>On vérifie la syntaxe:<syntaxhighlight lang="bash"> | |||
sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf | |||
</syntaxhighlight>Qui doit nous répondre : <code>Syntax OK</code> | |||
On crée le répertoire :<syntaxhighlight lang="bash"> | |||
sudo mkdir -p /srv/git | |||
sudo chown -R www-data:www-data /srv/git | |||
sudo mkdir -p /var/log/lighttpd | |||
sudo chown www-data:www-data /var/log/lighttpd | |||
</syntaxhighlight>Et on redémarre lighthttpd:<syntaxhighlight lang="bash"> | |||
sudo systemctl restart lighttpd | |||
</syntaxhighlight>Et on teste: | |||
Version actuelle datée du 26 décembre 2025 à 12:55
Installation
La base
On crée une carte standard avec Raspberry Pi Imager (Dernière version sans desktop et en activant l'acces ssh).
Plus un petit :
sudo apt update
sudo apt upgrade
Pour rattraper le retard de l'image sur le dépots.
Ensuite un sudo raspi-config pour :
- Activer l'autologin que l'on utilisera en urgence si le frontal plante ou si on a oublie le mot de passe.
- Le "expand file system" être sur de ne rien perdre.
On lui ajoute une adresse IP fixe sur le routeur : IP FIXE.
La partie spécifique
On commence par la base:
sudo apt install -y git
sudo apt install -y cgit
sudo apt install -y fcgiwrap spawn-fcgi
- fcgiwrap : un petit démon qui “wrappe” les scripts CGI pour les exécuter via le protocole FastCGI. → C’est ce qui permet à un serveur web (lighttpd, nginx, Caddy via reverse proxy) de lancer
cgit.cgiproprement. - spawn-fcgi : un utilitaire pour démarrer
fcgiwrapfacilement (en créant un socket Unix ou TCP).
Config de fcgiwrap
Créer une fichier fcgiwrap.service :
[Unit]
Description=fcgiwrap FastCGI server
After=network.target
[Service]
ExecStart=/usr/bin/spawn-fcgi -s /var/run/fcgiwrap.socket -M 0660 -u www-data -g www-data /usr/sbin/fcgiwrap
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
Et utiliser le fichier d'installation install.sh :
#!/bin/bash
sudo cp fcgiwrap.service /etc/systemd/system/.
sudo systemctl daemon-reload
sudo systemctl enable fcgiwrap.service
sudo systemctl start fcgiwrap.service
l'installation donne :
Synchronizing state of fcgiwrap.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable fcgiwrap
Created symlink '/etc/systemd/system/multi-user.target.wants/fcgiwrap.service' → '/etc/systemd/system/fcgiwrap.service'.
Et on peut vérifier par :
systemctl status fcgiwrap.service
Qui nous réponds par un beau:
J'ai pas pu résister à mettre une jolie copie d'écran avec du vert partout.
On a GIT installé sur le serveur et on a fcgi qui propose un acces a git en cgi-bin. Il faut maintenant installer un serveur http pour gérer le lien http avec le programme CGI.
Installation lighthttp
sudo apt install -y lighttpd
sudo lighttpd-enable-mod fastcgi
L'installation se fait normalement et ensuite le module fastcgi est activé:
Enabling fastcgi: ok
Run "service lighttpd force-reload" to enable changes
Connexion avec cgit.
On modifie /etc/lighttpd/lighttpd.conf :
Dans les modules on doit trouver :
server.modules = (
"mod_indexfile",
"mod_access",
"mod_alias",
"mod_redirect",
"mod_fastcgi"
)
et la définition du serveur :
server.document-root = "/usr/share/cgit"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/run/lighttpd.pid"
server.username = "www-data"
server.groupname = "www-data"
server.port = 8080Dans /etc/lighttpd/conf-available on crée 50-cgit.conf :
# Activer les modules nécessaires (en extension, pas en redéfinition)
server.modules += ( "mod_fastcgi", "mod_alias" )
# Déclarer cgit via FastCGI (socket systemd fcgiwrap)
# On mappe l'URL /cgit vers le CGI cgit.cgi
fastcgi.server += ( "/cgit" =>
((
"socket" => "/run/fcgiwrap.socket",
"bin-path" => "/usr/lib/cgit/cgit.cgi",
"check-local" => "disable",
"mode" => "responder"
))
)
# Servir les assets CSS / logo
alias.url += ( "/cgit-css/" => "/usr/share/cgit/" )
# Permettre que cgit soit servi comme page d'index
index-file.names += ( "cgit.cgi" )
On active le fichier de conf :
sudo lighttpd-enable-mod cgit
On vérifie la syntaxe:
sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf
Qui doit nous répondre : Syntax OK
On crée le répertoire :
sudo mkdir -p /srv/git
sudo chown -R www-data:www-data /srv/git
sudo mkdir -p /var/log/lighttpd
sudo chown www-data:www-data /var/log/lighttpd
Et on redémarre lighthttpd:
sudo systemctl restart lighttpd
Et on teste: