Forgejo
/* * Forgejo ist eine Open-Source-Plattform zur Verwaltung von Quellcode-Repositories, die auf Gitea basiert. * Sie bietet Funktionen wie Versionskontrolle mit Git, Issue-Tracking, Code-Reviews, Pull Requests und eine Web-Oberfläche zur Zusammenarbeit an Softwareprojekten. * Forgejo kann selbst gehostet werden und eignet sich für Teams und Einzelpersonen, die eine unabhängige, datenschutzfreundliche Alternative zu kommerziellen Git-Diensten suchen. /
Installation
Um Forgejo herunterzuladen und ausführbar zu machen, führen Sie folgende Befehle aus:
wget https://codeberg.org/forgejo/forgejo/releases/download/v13.0.3/forgejo-13.0.3-linux-amd64
chmod +x forgejo-13.0.3-linux-amd64
sudo cp forgejo-13.0.3-linux-amd64 /usr/local/bin/forgejo
sudo chmod 755 /usr/local/bin/forgejo
sudo apt install git git-lfs
Erstellen Sie einen Benutzer git auf dem System. Forgejo wird unter diesem Benutzer ausgeführt, und beim Zugriff auf Git über SSH (was standardmäßig der Fall ist), ist dieser Benutzer Teil der URL (zum Beispiel in git clone git@git.example.com:YourOrg/YourRepo.git steht das git vor dem @ für den Benutzer, den Sie jetzt anlegen). Unter Debian, Ubuntu und deren Derivaten geschieht dies mit:
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' \
--group --disabled-password --home /home/git git
Verzeichnisse anlegen
Erstellen Sie nun die Verzeichnisse, die Forgejo verwenden wird, und setzen Sie die Zugriffsrechte entsprechend:
sudo mkdir /var/lib/forgejo
sudo chown git:git /var/lib/forgejo && sudo chmod 750 /var/lib/forgejo
In diesem Verzeichnis speichert Forgejo seine Daten, einschließlich Ihrer Git-Repositories.
sudo mkdir /etc/forgejo
sudo chown root:git /etc/forgejo && sudo chmod 770 /etc/forgejo
In diesem Verzeichnis wird die Forgejo-Konfigurationsdatei app.ini abgelegt. Zu Beginn muss Forgejo Schreibrechte auf dieses Verzeichnis haben. Nach der Installation können Sie die Rechte so anpassen, dass Forgejo nur noch Lesezugriff hat, da die Konfiguration dann nicht mehr verändert werden sollte.
Optional: Datenbank einrichten
Wenn Sie SQLite als Datenbank für Forgejo verwenden, ist an dieser Stelle keine weitere Einrichtung erforderlich.
Falls Sie eine leistungsfähigere Datenbank benötigen, können Sie MySQL/MariaDB oder PostgreSQL verwenden (SQLite reicht laut Forgejo-Dokumentation für mindestens 10 Nutzer, möglicherweise sogar für mehr).
Weitere Informationen zur Einrichtung finden Sie im Forgejo Database Preparation Guide.
Forgejo als systemd-Dienst einrichten
Forgejo stellt ein systemd-Service-Skript bereit. Laden Sie dieses an den richtigen Ort herunter:
sudo wget -O /etc/systemd/system/forgejo.service https://codeberg.org/forgejo/forgejo/raw/branch/forgejo/contrib/systemd/forgejo.service
Wenn Sie nicht SQLite, sondern MySQL, MariaDB oder PostgreSQL verwenden, müssen Sie die Datei /etc/systemd/system/forgejo.service bearbeiten und die entsprechenden Wants=- und After=-Zeilen auskommentieren. Ansonsten sollte der Dienst wie bereitgestellt funktionieren.
Nach dem Hinzufügen oder Ändern einer systemd-Service-Datei müssen Sie systemd neu laden:
sudo systemctl daemon-reload
Aktivieren und starten Sie nun den Forgejo-Dienst, um mit der Installation fortzufahren:
sudo systemctl enable forgejo.service
sudo systemctl start forgejo.service
Forgejo hinter einem Reverse Proxy (Nginx)
Um Forgejo über HTTP git.ahrensburg.city erreichbar zu machen, empfiehlt sich die Nutzung eines Reverse Proxys wie Nginx. Erstellen Sie dazu eine neue Server-Block-Konfiguration, z. B. unter /etc/nginx/sites-available/forgejo:
Hinweis: Falls Ihre Nginx-Installation die Konfigurationen im Verzeichnis /etc/nginx/conf.d/ erwartet, können Sie die Forgejo-Konfiguration auch in einer Datei wie /etc/nginx/conf.d/git.conf ablegen. Öffnen Sie dazu die Datei mit:
sudo nano /etc/nginx/conf.d/git.conf
Fügen Sie dort den oben gezeigten server-Block ein und speichern Sie die Datei. Starten Sie anschließend Nginx neu, damit die Änderungen wirksam werden:
sudo systemctl reload nginx
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name git.ahrensburg.city;
ssl_certificate /etc/letsencrypt/live/ahrensburg.city/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ahrensburg.city/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000; # Port 3000 is the default Forgejo port
proxy_set_header Connection $http_connection;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 512M;
}
}
Aktivieren Sie die Konfiguration und starten Sie Nginx neu:
sudo ln -s /etc/nginx/sites-available/forgejo /etc/nginx/sites-enabled/
sudo systemctl reload nginx
Passen Sie server_name an Ihre Domain an. Weitere Hinweise zur Absicherung (z. B. HTTPS mit Let's Encrypt) finden Sie in der Forgejo-Dokumentation.
Weitere Konfiguration in der app.ini
Bevor Sie weitere Änderungen an der Konfiguration vornehmen, stoppen Sie zunächst den Forgejo-Dienst:
sudo systemctl stop forgejo.service
Nachdem die Einrichtung abgeschlossen ist, empfiehlt es sich, das Verzeichnis /etc/forgejo und die Datei app.ini für den Benutzer git schreibgeschützt zu machen. Forgejo benötigt nach der Erstkonfiguration keine Schreibrechte mehr auf diese Dateien:
sudo chmod 750 /etc/forgejo
sudo chmod 640 /etc/forgejo/app.ini
Bearbeiten Sie nun als root die Datei /etc/forgejo/app.ini, um weitere Einstellungen vorzunehmen:
sudo nano /etc/forgejo/app.ini
Port ändern
Standardmäßig lauscht Forgejo auf Port 3000. Um den Port zu ändern, bearbeiten Sie die Konfigurationsdatei app.ini, die sich im Verzeichnis /etc/forgejo befindet:
sudo nano /etc/forgejo/app.ini
Suchen Sie den Abschnitt [server] und passen Sie die Zeile HTTP_PORT an, zum Beispiel:
[server]
HTTP_PORT = 8080
Speichern Sie die Datei und starten Sie den Forgejo-Dienst neu, damit die Änderung wirksam wird:
sudo systemctl restart forgejo.service
Template ändern
Wechseln Sie in das Verzeichnis /var/lib/forgejo/custom/templates/custom.
cd var/lib/forgejo/custom/templates/custom
Weitere nützliche Templates
Neben extra_links.tmpl und extra_tabs.tmpl gibt es weitere hilfreiche Templates, die Sie im Verzeichnis $FORGEJO_CUSTOM/templates/custom/ ablegen können:
- header.tmpl: Wird direkt vor dem Ende des
<head>-Tags eingefügt. Hier können Sie z. B. eigene CSS-Dateien einbinden. - body_outer_pre.tmpl: Wird unmittelbar nach dem Start des
<body>-Tags eingefügt. - body_inner_pre.tmpl: Wird vor der oberen Navigationsleiste, aber bereits innerhalb des Hauptcontainers
<div class="full height">eingefügt. - body_inner_post.tmpl: Wird vor dem Ende des Hauptcontainers eingefügt.
- body_outer_post.tmpl: Wird vor dem unteren
<footer>-Element eingefügt. - footer.tmpl: Wird direkt vor dem Ende des
<body>-Tags eingefügt und eignet sich gut für zusätzliches JavaScript.
Mit diesen Templates können Sie das Aussehen und Verhalten der Forgejo-Oberfläche gezielt anpassen.