Git in Docker oder als App installieren

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
Hallo zusammen,

würde gerne einen Git-Server für meine Python-Projekte, LaTeX-Handbücher anfertigen.
Unter Windows greife ich mit dem Programm Fork darauf zu.
Würdet ihr den Git-Server in Docker erstellen (-> vermutlich aktuelle Version) oder eher die Synology-App dafür nehmen?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.476
Punkte für Reaktionen
359
Punkte
103
Für private Umgebungen finde ich Gitea ganz galant: es verbraucht kaum Ressourcen (CPU/RAM) (insbesondere im Vergleich zu Gitlab).

Die offizielle Installationsanleitung kann man hier finden: https://docs.gitea.io/en-us/install-with-docker/
Bei dem angegeben Compose file, muss man im Grunde nicht viel anpassen:
- environments: bei USER_UID und USER_GID entsprechende deine Werte (können mit `id` im Terminal ermittelt werden)
- volumes: ./gitea:/data sollte durch sowas wie `/volume1/docker/gitea/data:/data ersetzt werden (die Hostverzeichnisse müssen selbst angelegt werden, wenn sie nicht existieren)
- volumes: statt /etc/timezone ist /etc/TZ zu verwenden (siehe: https://www.synology-forum.de/threads/etc-localtime-nicht-vorhanden.111076/#post-1059824)

Es ergibt sicherlich Sinn noch weitere Environments zu setzen, hierzu lohnt es sich in der Doku nachzulegen

Folgende Environments könnten dich interessieren:
- DISABLE_SSH: wenn man nur mit den https-URIs arbeiten möchte
- ROOT_URL: wird als Repo beim clonen angezeigt und in den Mails verwendet
- INSTALL_LOCK: 'true' (Aber erst nach der Installation, davor = leer lassen),
- SECRET_KEY: Random Zeichen als Secret
- DISABLE_REGISTRATION: 'true' (So das nur Admins user anlegen können)
- REQUIRE_SIGNIN_VIEW: 'true' (Unterbindet Anoymous-Zugriff auf die Webui)
 

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
vielen Dank für den Hinweis. Sieht an sieht nicht schlecht aus.
Habe mich gerade ein bisschen zu Gitea informiert.
Hinter Gitea steckt aber seit Ende letzten Jahres nun eine Firma Gitea Limited, die kommerzielles Interesse hat:
Es scheint, dass es hier auch bereits einen Fork namens Forgejo gibt: https://codeberg.org/forgejo/forgejo
Das schau ich mir auch mal an und entscheide dann, was ich nehme
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.165
Punkte für Reaktionen
63
Punkte
68
Wenn der interne Git Server als Dateiablage nicht ausreicht könnte man bei einer etwas potenteren DS auch Gitlab als all-in-one Lösung als Docker installieren. Das Essentials ist frei für Privat
 
  • Like
Reaktionen: update-freak

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.476
Punkte für Reaktionen
359
Punkte
103
Hinter Gitea steckt aber seit Ende letzten Jahres nun eine Firma Gitea Limited, die kommerzielles Interesse hat:
Danke für die Info. Gitea selbst ist ja auch schon ein Fork von Gogs gewesen. Spannend :)
 
  • Like
Reaktionen: update-freak

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
Weiß jemand ob dieses Docker-compose für Forgejo (Gitea-Fork) funktionieren würde?
Ich habe hier (https://mariushosting.com/how-to-install-gitea-on-your-synology-nas/) eine Anleitung für Gitea gefunden und entsprechend angepasst. Für Forgejo gibt es noch keine ausführliche Anleitung (https://forgejo.org/download/) soweit ich das gesehen habe.

Code:
version: "3.9"
services:
  db:
    image: postgres
    container_name: Forgejo-DB
    hostname: forgejo-db
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "Database", "-U", "user"]
      timeout: 45s
      interval: 10s
      retries: 10
    user: 1026:100
    volumes:
      - /volume1/docker/forgejo/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=forgejo
      - POSTGRES_USER=forgejouser
      - POSTGRES_PASSWORD=forgejopass
    restart: always

  web:
    image: codeberg.org/forgejo/forgejo:latest
    container_name: Forgejo
    hostname: forgejo
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:3000/ || exit 1
    ports:
      - 3052:3000
      - 2222:22
    volumes:
      - /volume1/docker/forgejo/data:/data
      - /etc/TZ:/etc/TZ:ro
      - /etc/localtime:/etc/localtime:ro
    environment:
      - USER_UID=1026
      - USER_GID=100
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=forgejo-db:5432
      - GITEA__database__NAME=forgejo
      - GITEA__database__USER=forgejouser
      - GITEA__database__PASSWD=forgejopass
    restart: always
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.476
Punkte für Reaktionen
359
Punkte
103
- /etc/TZ:/etc/TZ:ro
Die rechte Seite kann so nicht stimmen. Schau doch nochmal oben in die Gitea-Installationsanleitung (Link in meinem ersten Post).
GITEA__database__
Imho muss das überall weg. Zumindest verwendende ich es in meiner Gitea Konfiguration ohne diesen Prefix und sehe die Konfiguration auch in "Site Admistration", Reiter "Configuration", Sektion "Database Configuration" als aktiv genutzte. Die Daten in einer Postgres-Datenbank zu halten ist optional - wenn man nur eine Handvoll Projekte haben wird, dann langt auch die integrierte sqlite3.

Hinweis: zumindest bei Gitea ist es so, dass die Environment-Variablen nur beim ersten Start des Containers in die Config gerendert werden, danach wurden diese Ignoriert, sodass man die Sachen entweder händische anpassen muss (zumindest erinnere ich mich, dass ich das früher tun musste). Es kann gut sein, dass dieses Verhalten bei Forgejo beihalten wurde.

Forgejo wird aber Version 1.19 eine noch bessere Gitlab Alternative für's Homelab: endlich gibt es dort auch Actions (CI/CD Pipelines) und die Möglichkeit Runner zu registrieren, auf denen dann Pipeline Jobs ausgeführt werden können. Sobald 1.19 final ist, werde ich auch zu Forgejo migrieren.

@update-freak Danke nochmal für's aufmerksam machen!
 
Zuletzt bearbeitet:
  • Like
Reaktionen: update-freak

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.476
Punkte für Reaktionen
359
Punkte
103
Ich sehe gerade, dass das "latest" Tag gar nicht existiert:
Code:
me@dsm:~$ docker pull codeberg.org/forgejo/forgejo:latest
Error response from daemon: manifest unknown
Man muss hier auf ein dediziertes Tag gehen.
Code:
me@dsm:~$ docker pull codeberg.org/forgejo/forgejo:1.18.5-0
1.18.5-0: Pulling from forgejo/forgejo
ef5531b6e74e: Pull complete
6a453ad70a59: Pull complete
2ab0385a13b3: Pull complete
33124a5ab2d7: Pull complete
35f288e562bb: Pull complete
ebc2cdb4a6de: Pull complete
743c1778342f: Pull complete
4f4fb700ef54: Pull complete
Digest: sha256:afce96ed7f06590c62c13d68787ebff71e3fe827fb378b22dab08e8f6f2eeba1
Status: Downloaded newer image for codeberg.org/forgejo/forgejo:1.18.5-0
codeberg.org/forgejo/forgejo:1.18.5-0

Alternativ kann man auch codeberg.org/forgejo/forgejo:1.18 verwenden, dass zumindest gerade auch dasselbe Image zieht wie beim 1.18.5-0 Tag. Damit kann Watchtower zumindest innerhalb einer Minor-Version die Bugfix-Versionen automatisiert erneuern.
 
  • Like
Reaktionen: update-freak

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.476
Punkte für Reaktionen
359
Punkte
103
Imho muss das überall weg. Zumindest verwendende ich es in meiner Gitea Konfiguration ohne diesen Prefix und sehe die Konfiguration auch in "Site Admistration", Reiter "Configuration", Sektion "Database Configuration" als aktiv genutzte. Die Daten in einer Postgres-Datenbank zu halten ist optional - wenn man nur eine Handvoll Projekte haben wird, dann langt auch die integrierte sqlite3.
Hier muss ich mich selbst korrigieren. Laut Doku ist der Prefix korrekt.

Ich vermute mal, dass es irgendwann geändert wurde, nachdem ich mein Gitea hochgezogen habe. Da die ini nur beim ersten Start gerendert wird, funktioniert es bei mir weiterhin. Beim Neuanlegen eines Containers mit anderem Config-Verzeichnis kann es gut sein, dass meine Einstellung ohne den Prefix nicht mehr geht.

Sobald 1.19 final ist, werde ich auch zu Forgejo migrieren.
Ich hab jetzt doch schon direkt auf 1.18 (1.18.5-0= migriert. - läuft mit den Daten von Gitea nahtlos weiter. Bis auf zusätzliche Forgejo-Themes sehe ich jetzt auch keine wirkliche Änderung.
 
  • Like
Reaktionen: update-freak

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
Die Daten in einer Postgres-Datenbank zu halten ist optional - wenn man nur eine Handvoll Projekte haben wird, dann langt auch die integrierte sqlite3.
Ich bin bgzl. deiner Anmerkung mal meine Docker-Container durchgegangen. Dabei habe ich festgestellt, dass ich zwei Anleitungen für vaultwarden habe, eine mit Postgres und eine mit SQlite. Ist hier dann auch SQlite empfehlenswert -> wegen einfacherem Backup?

Postgres: https://mariushosting.com/synology-install-vaultwarden-with-portainer/
SQlite: https://mariushosting.com/how-to-install-vaultwarden-on-your-synology-nas/
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.476
Punkte für Reaktionen
359
Punkte
103
Ich bin bgzl. deiner Anmerkung mal meine Docker-Container durchgegangen. Dabei habe ich festgestellt, dass ich zwei Anleitungen für vaultwarden habe, eine mit Postgres und eine mit SQlite. Ist hier dann auch SQlite empfehlenswert -> wegen einfacherem Backup?
Ich verwende Vaultwarden auch mit sqlite. Bisher hatte ich hier nie Datenkorruption oder irgendeine andere Schwierigkeit.
Die "Engine" der sqlite Datenbank liegt als Code in Vaultwarden, und die sqlite Datei ist im Endeffekt die Datei mit den Datenbankdaten. Das macht den Ressourcenverbrauch schön schlank.

Eine absolute Empfehlung kann ich hier nur aussprechen, da ein echtes DBMS natürlich zusätzliche Vorteile bringt (bspw. Verbindung mit Management Clients). Aber hier sehe ich für mich persönlich den Vorteil nicht.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.476
Punkte für Reaktionen
359
Punkte
103
irgendwie komme ich nicht über die Erstkonfigurationsseite von Forgejo hinaus (hier Schritt 20:
Meinst Du Schritt 18? Unter Verwendung der Compose Datei mit zusätzlicher Postgres Datenbank sollte es mit den Werten doch eigentlich klappen, sofern Du den geänderten Hostnamen auch in der Konfiguration verwendet hast.

Anmerkung: Mir ist vorhin nicht aufgefallen, dass beim DB-Service das Image `image: postgres` verwendet wird, was grob fahrlässig ist, da selbst die Daten einer Minor Version nicht mehr zwingend mit der nächsten Minor-Version zusammenarbeiten - spätestens über Major-Version-Grenzen hinweg führt das zu einem Problem. Hier würde ich ehrlich gesagt als Tag zumindest Major.Minor angeben, damit man selbst steuert, wann man die Daten von einer Version auf die nächste migrieren möchte.

Hast Du in Schritt 18 für den Hostnamen der DB den Wert db (=servicename) oder forgejo-db (=hostname des containers) angegeben?
 
  • Like
Reaktionen: update-freak

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
Ja, ist irgendwie komisch. Komme hier (https://mariushosting.com/how-to-install-gitea-on-your-synology-nas/) von Step 19 nicht auf Step 20. Nachdem ich auf Install geklickt habe, lädt die Seite ewig, dann kommt eine Synology-Error-Meldung (wie zu Beginn von Step 20 auch erwähnt), aber das Neuladen klappt irgendwie nicht. Komme dann immer wieder auf die Konfigurationsseite, wenn ich neulade.

Danke für den Hinweis was die Migration der Datenbank angeht.

Du meinst was ich unter Server Domain und Base URL eingetragen habe (in Schritt 19)?
Bei Schritt 18 habe ich unter Company Name "Forgejo" eingetragen.
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.566
Punkte für Reaktionen
741
Punkte
154
Hast du mal in die Logs vom Container geguckt? Vielleicht steht da ja eine Meldung. Ich habe heute das installiert und es ging direkt. Aber ich hab mir einfach die docker-compose von gitea geschnappt und das Image ersetzt.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.476
Punkte für Reaktionen
359
Punkte
103
  • Like
Reaktionen: update-freak

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
Hast du mal in die Logs vom Container geguckt? Vielleicht steht da ja eine Meldung. Ich habe heute das installiert und es ging direkt. Aber ich hab mir einfach die docker-compose von gitea geschnappt und das Image ersetzt.
danke für die Info. Im log muss ich noch nachschauen.
Sind den die Server Domain und Gitea Base URL (oder wie immer es jetzt heissen mag) richtig gesetzt und funktionieren von aussen auch?
Meiner Meinung nach passts. Einmal mit https und einmal ohne wie in der Anleitung beschrieben.
 

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
Habe nun gesehen, dass es hier https://mariushosting.com/how-to-install-forgejo-on-your-synology-nas/ eine Anleitung gibt.
Dort habe ich jedoch das gleiche Problem: Dort wird beschrieben, dass nach dem Klick auf Install bei der Konfigurationsseite eine Fehlermeldungsseite kommt und man dort /user/login entfernen soll. Bei mir kommt dieser Zustatz (/user/login) gar nicht. Nachdem ich die Seite neu lade, bekomme ich wieder auf die Konfigurationsseite.

Docker-log ist angehängt.
 

Anhänge

  • Forgejo.zip
    1,5 KB · Aufrufe: 2

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.476
Punkte für Reaktionen
359
Punkte
103
Den Logs ist zu entnehmen, dass Forgejo auf port 3000 lauscht. Hast du mal versuchsweise den Port an den Host published und versucht direkt (=nicht über den RP) mittels http://nas-ip:3000 zuzugreifen?

Bitte teile doch mal die exakte docker-compose.yml, die Du für das Deployment verwendest.

Ich hab es gerade mal mit der compose-Datei von Marius gemacht und dabei folgende Anpassungen vorgenommen:
- db:
-- Volume anpgeasst auf - ./db:/var/lib/postgresql/data:rw, weil ich es über die cli nutze und zu faul bin den Pfad einzugeben.
-- Keine Anpassung bei `user:`, da der User mit dem ich es ausführe auch die UID 1026 hat
- app:
-- Portmapping von 3053:3000 auf 3000:3000 angepasst
-- Volume angepast auf - ./data:/data
-- Environment USER_UID und USER_GID nicht angepasst, weil die bei mir passen.
-- Environment angepasst ROOT_URL=http://dsm-hostname:3000, wenn man den RP verwendet, dann muss hier die URL rein, über die man den COntainer über den RP erreichen kann.

Natürlich müssen bei der Db `user:` und bei der App `USER_UID` und `USER_GID` zum owner des gemappted Verzeichnisses auf dem NAS passen, sonst wird hier nichts persistiert.

Zusätzlich ist entscheidend, dass die Variable ROOT_URL korrekt gesetzt ist. Es muss die URL sein, über den man den Container von aussen erreichen soll. Entweder wie bei mir den Hostnamen der DS und den gemappten hostport mittels http Schemas, ODER wenn es über den Reverse-Proxy gehen soll, dann eben das https schema und den domain namen auf den der Reverse Proxy Eintrag lauscht + den Port (wenn es nicht 443 ist).

Vor jedem Neuversuch, solltest du das data Verzeichnis für die App leeren, da dort im Zweifel schon verbastelte Konfigurationen drin stecken, die nicht mehr überschreiben werden.

Ich habe bei mir den Admin-User direkt auf der Installer-Seite angelegt und die Selbstregistrierung deaktivert.

.. das mit dem Fehler beim Redirect vom Installer auf die URL $ROOT_URL/user/login ist tatsächlich merkwürdig. Zumal die URL später problemlos funktioniert.
 
Zuletzt bearbeitet:

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
360
Punkte für Reaktionen
24
Punkte
18
Ja, habe es bereit mit http://nas-ip:3000 versucht -> leider aber das gleiche Problem.


Code:
version: "3.9"
services:
  db:
    image: postgres
    container_name: Forgejo-DB
    hostname: forgejo-db
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "forgejo", "-U", "forgejouser"]
      timeout: 45s
      interval: 10s
      retries: 10
    user: 1026:100
    volumes:
      - /volume1/docker/forgejo/db:/var/lib/postgresql/data:rw
    environment:
      - POSTGRES_DB=forgejo
      - POSTGRES_USER=forgejouser
      - POSTGRES_PASSWORD=forgejopass
    restart: on-failure:5

  web:
    image: codeberg.org/forgejo/forgejo:1.18.5-0
    container_name: Forgejo
    hostname: forgejo
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:3000/ || exit 1
    ports:
      - 3053:3000
      - 2222:22
    volumes:
      - /volume1/docker/forgejo/data:/data
      - /etc/TZ:/etc/TZ:ro
      - /etc/localtime:/etc/localtime:ro
    environment:
      - USER_UID=1026
      - USER_GID=100
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=forgejo-db:5432
      - GITEA__database__NAME=forgejo
      - GITEA__database__USER=forgejouser
      - GITEA__database__PASSWD=forgejopass
      - ROOT_URL=https://beispiel.dynv6.net
    restart: on-failure:5
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat