Gitea auf VPS mit Plesk - Teil 2

2017-02-09 // Tags:

Ich hatte mir einen eigenen Git-Server auf meinem VPS mit Gitea eingerichtet. Engstirnig habe ich es hingenommen, dass die dafür verwendete Subdomain unter dem gleichen Benutzer wie die Hauptdomain läuft und dass der VHost auf das Verzeichnis /var/www/vhosts/<domain>/<subdomain> verweist. Entsprechend habe ich Gitea auch unter dem Benutzer in benanntes Verzeichnis installiert.

Das brachte aber auch diverse Probleme:

  • eigentlich hatte der Benutzer der Domain keinen Shell-Zugriff
  • Shellzugriff mit chroot-jail brachte weitere Probleme
    • SSH-Login via Public-Key funktionierte nicht richtig
    • Beim Clone/Pull wurde der Pfad zu den Repositories nicht richtig zur Chroot-Umgebung aufgelöst
    • Ich musste diverse Git-Befehle in der chroot-Umgebung bekannt machen

Lediglich über http(s) wurden die Git-Operationen richtig angewendet.

Also alles zurück auf Anfang und komplett neuer Ansatz.

  1. Anstatt über den Systembenutzer der Domain zu gehen, habe ich auf per SSH einen neuen Systembenutzer angelegt: adduser git
  2. Ich habe die Verzeichnise der Gitea-Installation und der Repositories von /var/www/vhosts/<domain>/<subdomain> in das neue Home des neuen Benutzers verschoben: /home/git.
    • zuvor habe ich natürlich Gitea gestoppt, damit es keine Inkonsistenzen in der Datenbank gibt, und Gitea nachher auch wieder den eigenen Port belegen kann.
  3. Natürlich mussten nun auch die Dateiberechtigungen neu gesetzt werden: chown -R git:git /home/git/*
  4. In der Konfigurationsdatei /home/git/web/custom/conf/app.ini habe ich nun alle Pfade auf das neue Home korrigiert.
  5. Anschließend konnte ich Gitea einfach starten. Der VHost in Plesk zeigt ja immer noch als Proxy auf den Port localhost:3000 und dem Apache ist egal, unter welchem User der dahinter lauschende Prozess läuft.
  6. Da ich SSH-Login eigentlich nur für bestimmte Benutzer erlaube, musste ich die /etc/ssh/sshd_conf um den neuen Benutzer git erweitern und den SSH-Daemon neustarten.

Schon lief mein Gitea wieder und ich konnte - nach Hinterlegung eines SSH-Keys - auch per SSH meine Repositories klonen/pullen.

Allerdings funktionierte das Pushen von neuen Changesets nicht und wurde mit folgender Fehlermeldung quittiert:

[remote rejected] master -> master (hook declined)

Die Lösung war auch relativ einfach. Im Verzeichnis der jeweiligen Repositories ($REPO_HOME/<user>/<repo>.git) liegt unter hooks die Datei update. In dieser wurde der alte Pfad zur Gitea-Installation referenziert. Diesen Pfad auf das neue Home korrigiert und das Problem war gelöst.