Migration von Gitea nach Forgejo auf dem Plesk-Server mit Docker Extension

Plesk Docker Katalog unter Localhost

Schon seit geraumer Zeit spiele ich mit dem Gedanken den „sichere Hafen für deine GIT-Repos“ auf gitport.de von Gitea auf den Soft-Fork Forgejo umzustellen. Da ich aber die Arbeit dahinter mit Plesk und Docker nicht wirklich abschätzen konnte, habe ich es immer wieder hinausgeschoben. Inzwischen hat sich aber Forgejo zum Hard-Fork weiter entwickelt, und bevor die Unterschiede zwischen den beiden zu groß werden,

In short, upgrading from Gitea releases prior to the hard fork are possible and supported. Upgrading from Gitea releases made after are not guaranteed.

habe ich mich am Wochenende mal ran getraut. Und was soll ich sagen, alles in allem ging es am Ende doch recht einfach.

Ausgangspunkt war eine funktionierende Installation von Gitea als Docker Container unter Plesk und der Docker-Extension von Plesk. Daher war auch meine erste Idee die Suche nach einem Forgejo-Docker-Image im Docker Hub der Plesk-Extension. Dort findet man zwar ein paar Einträge, jedoch keines direkt vom Forgejo-Team. Diese nutzen den eigene Hub in ihrem Git-Repo auf codeberg.org. Dort findet man auch weitere Versionen von Forgejo als Docker Image, welche man mit Docker per Pull herunterladen kann.

Wichtig ist, und darauf solltest Du achten, dass die Version von Forgejo möglichst kompatibel zur installierten Gitea Version ist. Dazu findet man auf der Webseite von Forgejo eine gute Übersicht. Da bei mir Gitea in Version 1.22.1 lief, habe ich mich für die dazu passende aktuelle Forgejo-Version 8.0.1 entschieden.
Leider gibt es in der kostenlosen Version der Docker-Extension keine Möglichkeit einen zusätzlichen Docker Hub zu adressieren. Nur der offizielle Hub und der lokale Hub sind eingebunden und können durchsucht werden. Jedoch besteht die Möglichkeit ein Docker-Image über die Weboberfläche in den lokalen Hub hochzuladen, doch ist dazu die Doku von Plesk, sagen wir mal, eher rudimentär. Mithilfe meiner Webrecherche, Docker auf dem lokalen Linux-Laptop und den folgenden Schritten hat es dann problemlos funktionert.

  1.  Öffne ein Terminal auf deinem lokalen Gerät
  2. Installiere Docker, falls nicht bereits installiert
  3. Lade das gewünschte Docker Image per Pull-Request in dein lokales Docker-Repo
    # docker pull codeberg.org/forgejo/forgejo:8.0.1
  4. Überprüfe ob das Image korrekt in deinem lokalen Repo liegt
    # docker images
  5. Da das Docker-Image im Repo so wie es dort liegt nicht als Upload zu nutzen ist, muss jetzt daraus ein Archiv gepackt werden.
    Damit man das Docker-Image-Archiv nicht lange suchen muss, lege ich es im eigenen Nutzer-Verzeichnis ab. Der Dateiname kann frei vergeben werden, er wird von Docker selbst nicht genutzt.
    docker save codeberg.org/forgejo/forgejo | gzip > ~/forgejo-docker-image.tar.gz
  6. Screenshot des Image-Upload der Plesk Docker ExtensionNun kann man das Docker-Image in der Extension von Plesk hochladen. Nach dem Hochladen steht es dann dort wie ein Image aus dem Docker Hub zur Verfügung.

Forgejo_im_Plesk_Docker_Katalog
Die weiteren Schritte sind nun recht einfach. Zuerst stoppen wir den Gitea Dockercontainer und machen ein Backup der Datenbank und des Datenordners der existierenden Gitea-Installation. Wir öffnen einen 2. Tab im Browser mit unserer Plesk-Extension und klicken dort in der Katalogübersicht auf den kleinen Pfeil neben dem Button „Ausführen“ unseres Forgejo Docker Image, und wählen die momentan einzige Version durch Klick aus.
Plesk generiert nun den Container dafür und öffnet dann die Einstellungsansicht dazu. Im zweiten Browser-Tab öffnen wir die gleiche Ansicht für den Gitea-Container, und können nun manuell die Einstellungen von einem zum anderen Container kopieren.

Passt soweit alles, starten wir den Forgejo-Container. Dieses hat bei mir problemlos funktioniert. Trotzdem wurde beim Aufruf der Seite weiterhin eine Fehlermeldung anstatt der Forgejo-Oberfläche angezeigt.
Dies konnte ich dann aber schnell beheben, indem ich unter Websites & Domains der Domain die Proxregeln aufgerufen habe, den alten Eintrag gelöscht und einen neuen für den Forgejo-Container erstellt habe. Bitte diesen Schritt auch durchführen, wenn die Regel bereits mit Forgejo betitelt ist. Offensichtlich werden erst bei Neueinrichtung alle nötige Werte korrekt eingetragen.

Somit läuft seit heute nun gitport.de unter Forgejo 8.0.1. Sobald es dafür dann eine neue Version gibt, werde ich mich mit dem Update des lokalen Docker-Containers unter Plesk beschäftigen. Eine neue LTS-Version wird es wohl erst im ersten Quartal des kommenden Jahres geben.

Für Fragen zu Docker unter Plesk und der Installation von Docker-Images, die nicht im Docker Hub liegen stehe ich gerne, auch auf Mastodon, zur Verfügung