Kategorien
Allgemein

Git-Leichtgewicht Gogs

Herz­stück jeder Ent­wick­lungs­um­ge­bung ist ein Ver­si­ons-Ver­wal­tungs­sys­tem. Am wei­tes­ten ver­brei­tet in der Open-Source-Gemein­de ist Git - es ist aber auch berüch­tigt, wenn es um kom­pli­zier­te Instal­la­ti­on, umfang­rei­che Abhän­gig­kei­ten und auf­wen­di­ge Ver­wal­tung geht.

Eine wesent­lich ein­fa­che­re Lösung für einen selbst gehos­te­ten Git-Ser­vice, der nur einer klei­nen Ent­wick­ler­grup­pe die­nen soll, ist Gogs. Er soll wie immer natür­lich als Docker-Con­tai­ner unter open­me­diavault lau­fen.

Datenbank vorbereiten

Zunächst berei­ten wir die Daten­bank vor. MariaDB wur­de ja schon für Next­cloud instal­liert und läuft auch für ande­re Diens­te. Es muss also nur eine zusätz­li­che Daten­bank und ein Nut­zer mit den nöti­gen Rech­ten ange­legt wer­den:

host# docker exec -it mariadb bash
docker# mysql -u root -p <root-password>
MariaDB> create database gogs;
MariaDB> create user gogs@localhost identified by '<passwort>';
MariaDB> create user gogs@'%' identified by '<passwort>';
MariaDB> grant all privileges on gogs.* to gogs@localhost;
MariaDB> grant all privileges on gogs.* to gogs@'%';

Docker einrichten

In der omv-Docker-GUI laden wir das Gogs-Image mit Docker → Image bereit­stel­len und geben als Quel­le gogs/gogs an. Nack kli­cken auf Image star­ten erscheint der Kon­fi­guar­ti­ons­dia­log für den Con­tai­ner:

  • Con­tai­ner Name: gogs
  • Restart Poli­cy: always
  • Netz­werk­mo­dus: Bridge
  • Host­na­me: gogs.mydmain.tld
  • Port­wei­ter­lei­tung:
    • Host IP0.0.0.0
    • Host Port: 8500
    • Expo­sed Port: 3000
    • Pro­to­col: tcp
  • Port­wei­ter­lei­tung:
    • Host IP0.0.0.0
    • Host Port: 8522
    • Expo­sed Port: 22
    • Pro­to­col: tcp
  • Volu­mes and Bind mounts:
    • Host path: /container/gogs/data
    • Con­tai­ner path: /data

Gogs konfigurieren

Nach dem Star­ten kann man unter http://gogs.mydomain.tld:8500 den Gogs-Kon­fi­gu­ra­ti­ons­dia­log auf­ru­fen. Dort trägt man zunächst die Anga­ben zur Daten­bank ein. Als URL soll­te man die spä­ter von „außen” erreich­a­re Adres­se ein­tra­gen, also z.B. https://gogs.mydomain.tld.

Das Anle­gen des Admi­nis­tra­tor-Kon­tos ist zwar optio­nal, soll­te aber der Voll­stän­dig­keit hal­ber auch gleich hier erle­digt wer­den. Ansons­ten wird der ers­te ange­leg­te Nut­zer auto­ma­tisch zum Admi­nis­tra­tor.

Reverse Proxy definieren

Schließ­lich sor­gen wir noch mit einem nginx-Rever­se-Pro­xy dafür, dass die Gogs-Instal­la­ti­on unter ver­schlüs­selt unter https://gogs.mydomain.tld erreich­bar wird. Der Name muss zuvor natür­lich so im DNS oder hosts-Datei ein­ge­tra­gen wer­den, dass er auf die omv-Ser­ver-Adres­se zeigt.

Den Rever­se Pro­xy rich­ten wir über Diens­te → nginx → Ser­ver → Hin­zu­fü­gen mit fol­gen­den Anga­ben ein:

  • Akti­vie­ren
  • Ver­zeich­nis: kei­nes
  • Host­typ: Namens­ba­siert
  • Ser­ver­na­me: gogs.mydmain.tld
  • SSL akti­vie­ren
  • Zer­ti­fi­kat: <aus­wäh­len>
  • Only use SSL
  • Zusätz­li­che Optio­nen:
location / {
proxy_pass http://127.0.0.1:8500;
proxy_http_version 1.1;
proxy_set_header Host $http_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;
proxy_redirect http:// https://;
}

Fertig!

Haben wir alles rich­tig gemacht, soll­te nach dem Spei­chern und Akti­vie­ren der Kon­fi­gu­ra­ti­on unser gogs jetzt unter https://gogs.mydomain.tld erreich­bar sein.


Quel­len:

2 Antworten auf „Git-Leichtgewicht Gogs“

[…] Eine sehr viel ein­fa­che­re Mög­lich­keit für Ein­zel­ent­wick­ler und klei­ne Grup­pen ist das in Go ent­wi­ckel­te Gogs. Es braucht ledig­lich eine Daten­bank (MySQL/MariaDB, Post­greeSQL, Redis oder mem­cached) und die Bina­ries, die für vie­le Platt­for­men ver­füg­bar sind. Mit Docker und einer exis­tie­ren­den Daten­bank ist Gogs in weni­gen Minu­ten auf­ge­setzt (sie­he auch den Gogs-Arti­kel). […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.