GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So installieren Sie Gitea auf Ubuntu mit Docker

Einführung

Bei der Arbeit an der Softwareentwicklung ist es wichtig, den Quellcode effizient und nachvollziehbar verwalten zu können. Quellcodeverwaltung (SCM )-Systeme sind eine hervorragende Möglichkeit, einen effizienten und flexiblen Prozess für die Arbeit an Projekten jeder Größe mit einer beliebigen Anzahl von Entwicklern bereitzustellen. Im Laufe der Jahre gab es viele verschiedene Teile von SCM-Software, von CVS bis SubVersion, von Perforce bis Mercurial, aber der derzeitige Branchenführer ist Git, das mit der Popularität von Websites wie GitHub und GitLab ein großes Wachstum erlebt hat.

Bei kostenlosen Konten für diese Dienste, die auf öffentliche Open-Source-Repositories ausgerichtet sind, verursacht die Möglichkeit, an privater oder proprietärer Software zu arbeiten, jedoch Kosten für den Entwickler. Darüber hinaus ist der Zugriff auf das Repository einer externen Organisation vorbehalten, und viele würden es vorziehen, ihre eigene Software von Anfang bis Ende zu kontrollieren.

Zu diesem Zweck wurden in den letzten Jahren mehrere selbst gehostete Lösungen wie Gogs, Gitea und GitLab entwickelt. Dieses Tutorial konzentriert sich auf die Einrichtung einer der beliebtesten Lösungen, Gitea, damit Sie private Repositories hosten und Ihre eigenen Projekte während ihres gesamten Lebenszyklus verwalten können. Gitea ist klein, in sich geschlossen und leichtgewichtig, sodass es schnell bereitgestellt werden kann, ohne die Bank für Hardwareanforderungen zu sprengen. Sie verwenden eine Docker-Installation von Gitea, die sicherstellt, dass die Software auf dem neuesten Stand gehalten wird.

Voraussetzungen

Bevor Sie mit diesem Tutorial beginnen, sollten Sie Folgendes haben:

  • Ein Ubuntu 20.04-Server mit einem Nicht-Root-Benutzer, der mit sudo konfiguriert ist Privilegien, wie in der Ersteinrichtung des Servers für Ubuntu 20.04 beschrieben.
  • Docker auf Ihrem Server installiert. Befolgen Sie die Schritte 1 und 2 von So installieren Sie Docker unter Ubuntu 20.04, um Docker zu installieren.
  • Docker Compose auf Ihrem Server installiert. Folgen Sie Schritt 1 unserer Anleitung zur Installation und Verwendung von Docker Compose unter Ubuntu 20.04, um dies einzurichten.
  • Ein Domänenname, der auf Ihren Server verweist. Wenn Sie ein DigitalOcean-Droplet verwenden, können Sie dies erreichen, indem Sie unserer Domains- und DNS-Dokumentation folgen. Dieses Tutorial verwendet your_domain in Beispielen durchgehend.

Schritt 1 – Erstellen des Git-Benutzers

Gitea verwendet, wie viele Quellcode-Repositories, SSH für den Zugriff auf entfernte Repositories. Auf diese Weise können Benutzer den Zugriff auf ihren Code steuern, indem sie ihre SSH-Schlüssel in Gitea selbst verwalten. Damit Benutzer jedoch über SSH auf den Host zugreifen können, müssen Sie ein Git erstellen Benutzer auf dem Hostcomputer. Dieser Schritt wird zuerst ausgeführt, damit Sie auf die Benutzer- und Gruppen-ID des Benutzers zugreifen können.

Erstellen Sie zuerst den Benutzer auf dem Host, der diese Verbindungen akzeptiert:

  1. sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git

In diesem Befehl erstellen Sie einen Systembenutzer, der Bash als Shell verwendet, aber kein Anmeldekennwort hat. Dadurch können Sie sudo verwenden Befehle als dieser Benutzer auszuführen, verhindert jedoch, dass er sich als dieser Benutzer anmeldet. Sie legen auch das Home-Verzeichnis des Benutzers auf /home/git fest .

Dieser Befehl gibt einige Informationen über den gerade erstellten Benutzer aus:

OutputAdding system user `git' (UID 112) ...
Adding new group `git' (GID 119) ...
Adding new user `git' (UID 112) with group `git' ...
Creating home directory `/home/git' …

Notieren Sie sich die hier angegebenen UID- und GID-Werte (in diesem Fall eine UID von 112 und eine GID von 119 ), da sie in einem zukünftigen Schritt verwendet werden.

Schritt 2 – Installieren des Gitea-Docker-Image

Gitea hat ein Image im globalen Docker-Repository verfügbar, was bedeutet, dass Sie dieses Image mit Docker Compose mit wenig zusätzlichem Aufwand als Dienst installieren und ausführen können. Das Image selbst führt die Gitea-Web- und SSH-Dienste aus und ermöglicht Git-Zugriff sowohl über den Browser als auch über die Befehlszeile.

Um den Gitea-Container hochzufahren, verwenden Sie Docker Compose, ein deklaratives Tool zum Einrichten einer Umgebung.

Erstellen Sie zunächst ein Verzeichnis zum Hosten Ihres Dienstes und geben Sie es ein:

  1. mkdir ~/gitea
  2. cd ~/gitea

Erstellen Sie dort eine Datei mit dem Namen docker-compose.yml mit Ihrem bevorzugten Texteditor. Das folgende Beispiel verwendet nano . Diese Datei enthält die Beschreibungen der Container, die als Teil Ihrer Gitea-Installation ausgeführt werden:

  1. nano docker-compose.yml

Fügen Sie dieser neuen Datei Folgendes hinzu:

~/gitea/docker-compose.yml
version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.16.5
    container_name: gitea
    environment:
      - USER_UID=UID_from_step_1
      - USER_GID=GID_from_step_1
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
      - /home/git/.ssh/:/data/git/.ssh
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "127.0.0.1:3000:3000"
      - "127.0.0.1:2222:22"

Lassen Sie uns durchgehen, was diese Datei tut:

  • version: "3" :Dies lässt Docker Compose, welche Version der Konfigurationsdatei dies ist.
  • networks :Dieser Abschnitt deklariert das Netzwerk-Setup unserer Sammlung von Containern. In diesem Fall eine gitea Netzwerk wird erstellt, aber nicht extern angezeigt.
  • services
    • image: gitea/gitea:1.16.5 :Dies gibt an, dass wir Gitea Version 1.16.5 verwenden werden; Sie können jedoch den Wert nach dem Doppelpunkt ändern, um andere Versionen anzugeben, sei es eine bestimmte Version oder eine Hauptversion wie :1 , oder ein Tag wie :latest oder :dev .
    • environment :Der Umgebungsabschnitt gibt Umgebungsvariablen an, die dem Image während der Installation und Ausführung zur Verfügung stehen. In diesem Fall geben wir eine Benutzer- und Gruppen-ID für die Umgebung an, indem wir die UID und GID verwenden, die in der Ausgabe von adduser bereitgestellt werden Befehl in Schritt 1.
    • restart: always :Diese Zeile weist Docker an, den Container immer neu zu starten, wenn er ausfällt, sei es, weil der Container selbst ausfällt oder der Host-Computer ausfällt; im Wesentlichen startet Gitea beim Booten.
    • networks :Dies gibt an, dass der Gitea-Dienst Zugriff auf und Zugriff auf das oben genannte Netzwerk hat.
    • ./gitea:/data und /home/git/.ssh/:/data/git/.ssh :Dies sind die Orte, an denen Gitea seine Repositories und zugehörige Daten speichert. Derzeit ist dies dem Ordner mit dem Namen gitea zugeordnet im aktuellen Verzeichnis. Docker erstellt diesen Ordner beim Start des Containers, falls er nicht vorhanden ist. Die .ssh Ordner wird später in Schritt 6 näher beschrieben.
    • /etc/timezone und /etc/localtime :Diese beiden Dateien enthalten Informationen über die Zeitzone und die Uhrzeit auf dem Hostcomputer. Indem Sie diese direkt als schreibgeschützte Dateien in den Container abbilden (angegeben mit dem abschließenden :ro Teil der Definitionen), hat der Container die gleichen Informationen wie der Host.
    • ports :Gitea lauscht an zwei Ports auf Verbindungen. Es lauscht auf Port 3000 auf HTTP-Verbindungen , wo es die Webschnittstelle für das Quellcode-Repository bereitstellt und auf Port 22 auf SSH-Verbindungen wartet . In diesem Fall behalten Sie Port 3000 für HTTP-Verbindungen, indem Sie ihn derselben Nummer zuordnen, und Sie ordnen den Port auf Giteas Container vom üblichen 22 zu bis 2222 um Portkonflikte zu vermeiden. In Schritt 6 richten Sie einen SSH-Shim ein, um den Datenverkehr bei Bedarf an Gitea weiterzuleiten.

Hinweis: Dies ist ein minimales Beispiel einer Docker Compose-Datei für Gitea. Es gibt mehrere andere Optionen, die man einbeziehen kann, z. B. die Verwendung von MySQL oder PostGreSQL als Sicherungsdatenbank oder ein benanntes Volume für die Speicherung. Diese minimale Einrichtung verwendet SQLite als Sicherungsdatenbank und ein Volume, das das Verzeichnis namens gitea verwendet zur Aufbewahrung. Weitere Informationen zu diesen Optionen finden Sie in der Gitea-Dokumentation.

Speichern und schließen Sie die Datei. Wenn Sie nano verwendet haben Um die Datei zu bearbeiten, können Sie dies tun, indem Sie CTRL + X drücken , Y , und dann ENTER .

Wenn diese Datei vorhanden ist, können Sie die Container dann mit Docker Compose aufrufen:

  1. docker-compose up

Dieser Befehl zieht die Bilder herunter, startet den Gitea-Container und gibt die Ausgabe wie folgt zurück:

Output[+] Running 9/9
 ⠿ server Pulled                                                                                                  8.2s
   ⠿ e1096b72685a Pull complete                                                                                   1.4s
   ⠿ ac9df86bb932 Pull complete                                                                                   3.3s
   ⠿ 6d34ed99b58a Pull complete                                                                                   3.4s
   ⠿ a8913d040fab Pull complete                                                                                   3.6s
   ⠿ a5d3a72a2366 Pull complete                                                                                   5.3s
   ⠿ 1f0dcaae29cc Pull complete                                                                                   5.6s
   ⠿ f284bcea5adb Pull complete                                                                                   7.3s
   ⠿ 0f09c34c97e3 Pull complete                                                                                   7.5s
[+] Running 2/2
 ⠿ Network gitea_gitea  Created                                                                                   0.2s
 ⠿ Container gitea      Created                                                                                   0.2s
Attaching to gitea
gitea  | Generating /data/ssh/ssh_host_ed25519_key...
gitea  | Generating /data/ssh/ssh_host_rsa_key...
gitea  | Generating /data/ssh/ssh_host_dsa_key...
gitea  | Generating /data/ssh/ssh_host_ecdsa_key...
gitea  | Server listening on :: port 22.
gitea  | Server listening on 0.0.0.0 port 22.
gitea  | 2022/03/31 17:26:21 cmd/web.go:102:runWeb() [I] Starting Gitea on PID: 14
gitea  | 2022/03/31 17:26:21 ...s/install/setting.go:21:PreloadSettings() [I] AppPath: /usr/local/bin/gitea
gitea  | 2022/03/31 17:26:21 ...s/install/setting.go:22:PreloadSettings() [I] AppWorkPath: /app/gitea
gitea  | 2022/03/31 17:26:21 ...s/install/setting.go:23:PreloadSettings() [I] Custom path: /data/gitea
gitea  | 2022/03/31 17:26:21 ...s/install/setting.go:24:PreloadSettings() [I] Log path: /data/gitea/log
gitea  | 2022/03/31 17:26:21 ...s/install/setting.go:25:PreloadSettings() [I] Configuration file: /data/gitea/conf/app.ini
gitea  | 2022/03/31 17:26:21 ...s/install/setting.go:26:PreloadSettings() [I] Prepare to run install page
gitea  | 2022/03/31 17:26:21 ...s/install/setting.go:29:PreloadSettings() [I] SQLite3 is supported
gitea  | 2022/03/31 17:26:21 cmd/web.go:208:listen() [I] Listen: http://0.0.0.0:3000
gitea  | 2022/03/31 17:26:21 cmd/web.go:212:listen() [I] AppURL(ROOT_URL): http://localhost:3000/

Dadurch läuft der Container jedoch im Vordergrund weiter und stoppt, sobald Sie den Prozess mit Ctrl + C beenden oder indem Sie Ihre Verbindung verlieren. Um den Container als separaten Prozess im Hintergrund laufen zu lassen, können Sie das -d anhängen Flag für den Compose-Befehl:

  1. docker-compose up -d

Sie werden benachrichtigt, wenn der Container startet und dann zu Ihrer Shell zurückkehren.

Schritt 3 – Installation von Nginx als Reverse-Proxy

Das Ausführen eines Webdienstes wie Gitea hinter einem Reverse-Proxy ist gängige Praxis, da moderne Serversoftware wie Apache oder Nginx mehrere Dienste auf einem Computer einfacher handhaben, die Last auf mehrere Server verteilen und SSL handhaben kann. Außerdem können Sie auf diese Weise einen Domänennamen einrichten, der auf Ihre Gitea-Instanz verweist, die auf Standard-HTTP(S)-Ports ausgeführt wird.

Für die Zwecke dieses Tutorials verwenden wir Nginx. Aktualisieren Sie zunächst die Paketlisten auf Ihrem Hostcomputer:

  1. sudo apt update

Als nächstes installieren Sie Nginx mit apt :

  1. sudo apt install nginx

Nun, da Sie die Firewall ufw verwenden , müssen Sie den Zugriff auf diese Ports zulassen:

  1. sudo ufw allow "Nginx Full"

Sobald dies installiert ist, sollten Sie in Ihrem Browser auf Ihren Server zugreifen können, indem Sie http://your_domain . Dies führt Sie zu einer sehr einfachen Seite, die Sie bei Nginx willkommen heißt.

An dieser Stelle müssen Sie einen Reverse-Proxy-Eintrag erstellen, um den eingehenden Datenverkehr über Nginx an die in Docker ausgeführte Gitea-Instanz zu leiten. Erstellen Sie eine neue Datei in Nginx sites-available Verzeichnis mit Ihrem bevorzugten Texteditor. Das folgende Beispiel verwendet nano :

  1. sudo nano /etc/nginx/sites-available/gitea

Richten Sie in dieser Datei einen neuen Serverblock mit Anfragen an / ein an Ihre Gitea-Instanz weitergeleitet:

/etc/nginx/sites-available/gitea
server {
    # Listen for requests on your domain/IP address.
    server_name your_domain;

    root /var/www/html;

    location / {
        # Proxy all requests to Gitea running on port 3000
        proxy_pass http://localhost:3000;
        
        # Pass on information about the requests to the proxied service using headers
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Wenn Sie mit der Bearbeitung der Datei fertig sind, speichern und schließen Sie sie.

Hinweis: Weitere Informationen zum Verständnis dessen, was in diesen Anweisungen vor sich geht, finden Sie im Lernprogramm zum Verständnis von HTTP-Proxying, Lastenausgleich, Pufferung und Caching von Nginx.

Nginx bestimmt, welche Sites es tatsächlich bedienen wird, basierend darauf, ob diese Dateien in seinen sites-enabled vorhanden sind oder nicht Verzeichnis. Dies wird über symbolische Links verwaltet, die auf die Dateien in sites-available verweisen Verzeichnis. Sie müssen einen dieser symbolischen Links erstellen, damit Nginx mit der Bereitstellung von Gitea beginnen kann:

  1. sudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/gitea

Bevor Sie Nginx neu starten, um Ihre Änderungen live zu schalten, sollten Sie Nginx selbst überprüfen lassen, ob diese Änderungen gültig sind, indem Sie seine Konfiguration testen.

  1. sudo nginx -t

Wenn alles in Ordnung ist, gibt dieser Befehl eine Ausgabe wie die folgende zurück:

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Wenn es irgendwelche Probleme gibt, wird es Ihnen sagen, was und wo sie sind.

Wenn Sie bereit sind, mit dieser Änderung fortzufahren, starten Sie den Nginx-Systemdienst neu:

  1. sudo systemctl restart nginx

Wenn Sie jetzt http://your_domain In Ihrem Browser sollten Sie sich auf der Ersteinrichtungsseite für Gitea befinden, die Sie ausfüllen können.

Schritt 4 – Certbot installieren und TLS-Zertifikate einrichten

Dank Certbot und der kostenlosen Zertifizierungsstelle Let’s Encrypt sind für das Hinzufügen der TLS-Verschlüsselung zu Ihrer Gitea-Installations-App nur zwei Befehle erforderlich.

Installieren Sie zuerst Certbot und sein Nginx-Plugin:

  1. sudo apt install certbot python3-certbot-nginx

Führen Sie als Nächstes certbot aus in --nginx mode, und geben Sie dieselbe Domäne an, die Sie in Nginx server_name verwendet haben Konfigurationsdirektive:

  1. sudo certbot --nginx -d your_domain_here

Sie werden aufgefordert, den Nutzungsbedingungen von Let’s Encrypt zuzustimmen und eine E-Mail-Adresse einzugeben.

Anschließend werden Sie gefragt, ob Sie den gesamten HTTP-Verkehr auf HTTPS umleiten möchten. Es liegt an Ihnen, aber dies wird im Allgemeinen empfohlen und ist sicher.

Danach bestätigt Let’s Encrypt Ihre Anfrage und Certbot lädt Ihr Zertifikat herunter:

OutputCongratulations! You have successfully enabled https://your_domain

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=your_domain
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/your_domain/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/your_domain/privkey.pem
   Your cert will expire on 2022-05-09. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Certbot lädt Nginx automatisch mit der neuen Konfiguration und den neuen Zertifikaten neu. Laden Sie Ihre Website in Ihrem Browser neu und Sie sollten automatisch auf HTTPS umstellen, wenn Sie die Umleitungsoption gewählt haben.

Ihre Website ist jetzt sicher und Sie können sicher mit den webbasierten Einrichtungsschritten fortfahren.

Weitere Informationen zum Sichern von Domains mit Let’s Encrypt finden Sie im Tutorial How to Secure Nginx with Let’s Encrypt on Ubuntu 20.04.

Schritt 5 – Konfigurieren von Gitea und Hinzufügen eines ersten Benutzers

Jetzt können Sie mit der Konfiguration von Gitea selbst fortfahren und den ersten Admin-Benutzer erstellen. Besuchen Sie Ihre Gitea-Instanz, indem Sie https://your_domain in einem Browser. Auf dem anfänglichen Gitea-Konfigurationsbildschirm gibt es mehrere Optionen für den Dienst:

Einige davon, wie z. B. der Seitentitel, sind Ihrem speziellen Anwendungsfall überlassen, obwohl Sie für die Zwecke dieses Tutorials Folgendes ändern müssen:

  • Serverdomäne: die Serverdomäne, die Sie in Schritt 3 eingerichtet haben
  • Gitea-Basis-URL: die vollständige URL, die Sie für den Zugriff auf Gitea im Browser verwenden, einschließlich des Protokolls. Beispiel:https://your_domain .

Wenn Sie Ihre Konfigurationsänderungen speichern, werden Sie zur Anmeldeseite von Gitea weitergeleitet.

Hinweis: Sobald die Konfiguration gespeichert wurde, wird der Gitea-Dienst neu gestartet. Da dies einige Sekunden dauern kann, wird möglicherweise ein Nginx-Fehler mit der Meldung 502 Bad Gateway angezeigt . Wenn dieser Fehler auftritt, warten Sie einige Sekunden und starten Sie die Seite neu.

Da Sie noch keinen Benutzer haben, müssen Sie zunächst einen erstellen. Klicken Sie auf Benötigen Sie ein Konto? Jetzt registrieren Link unter dem Anmeldeformular, um einen neuen Benutzer zu registrieren. Als erster Benutzer im System wird dieser Benutzer als Administrator erstellt. Wenn Sie E-Mail-Einstellungen auf dem Konfigurationsbildschirm einrichten, müssen Sie möglicherweise zuerst Ihr Konto verifizieren.

Sobald Sie als dieser Benutzer angemeldet sind, klicken Sie auf Ihr Benutzersymbol in der oberen rechten Ecke der Seite und dann auf Site-Administration aus dem Dropdown-Menü gelangen Sie zu einer Seite, auf der Sie Wartungsaufträge ausführen, Benutzerkonten und Organisationen verwalten und Gitea weiter konfigurieren können.

Erstellen eines Test-Repositorys

Um Gitea sowohl auf der Weboberfläche als auch mit Git selbst zu testen, erstellen Sie ein Test-Repository. Sie können dieses Repository später jederzeit löschen.

Klicken Sie auf das + Melden Sie sich oben rechts auf der Seite an und klicken Sie dann auf + Neues Repository aus dem Dropdown-Menü. Hier wird Ihnen ein Bildschirm angezeigt, auf dem Sie Ihr Repository benennen und mit Informationen wie seiner Beschreibung, Einstellungen, z. B. ob es privat ist oder nicht, und Standardinhalten wie einer README anpassen können oder .gitignore Datei.

Sobald Sie auf Repository erstellen geklickt haben , haben Sie ein neues Repository, mit dem Sie herumspielen können.

Schritt 6 – Konfigurieren eines SSH-Shims

Der letzte Schritt des Prozesses besteht darin, den Hostcomputer mit einem SSH-Shim vorzubereiten. Da Gitea in einem Docker-Container ausgeführt wird, kann es keine SSH-Verbindungen auf dem Standardport von 22 akzeptieren , da dies mit dem Host kollidiert. In der docker-compose.yml Datei, die Sie oben erstellt haben, wurde Docker angewiesen, einen Port auf dem Host dem Port 22 zuzuordnen auf dem Container, damit er SSH-Verbindungen zu Port 2222 akzeptiert . Zusätzlich die SSH authorized_keys Die Datei ist standardmäßig nicht für jemanden zugänglich, der per SSH in den Host einsteigt.

Um dies zu berücksichtigen, müssen Sie einen SSH-Shim erstellen, der SSH-Verbindungen an den Git weiterleitet Benutzer auf dem Host auf den Container. In der Compose-Datei haben Sie außerdem angegeben, dass der BENUTZER im Container eine Benutzer- und Gruppen-ID von 1000 haben soll, und auf dem Konfigurationsbildschirm von Gitea haben Sie dem Dienst mitgeteilt, dass er den Benutzer namens git verwenden soll .

Erstellen des Git-Benutzers und seines SSH-Schlüssels

Als nächstes müssen Sie einen SSH-Schlüssel für den Benutzer erstellen. Dies wird nur in einem der folgenden Schritte verwendet und nicht an Personen außerhalb des Hosts weitergegeben.

  1. sudo -u git ssh-keygen -t rsa -b 4096 -C "Gitea Host Key"

Dieser Befehl verwendet sudo um einen SSH-Schlüssel als der Benutzer zu erstellen, den Sie oben erstellt haben. In diesem Fall ist der Schlüssel ein 4096-Bit-RSA-Schlüssel. Ihnen werden eine Reihe von Fragen gestellt, z. B. welches Passwort Sie für den Schlüssel wünschen und wie die Schlüsseldatei benannt werden soll. Drücken Sie ENTER für jeden von ihnen, lassen Sie sie leer, um die Standardeinstellung zu akzeptieren.

Warnung :Wenn Sie ein Passwort für den Schlüssel festlegen, können Sie das Shim nicht verwenden.

Sie müssen sicherstellen, dass der Benutzer im Gitea-Container diesen Schlüssel akzeptiert. Sie können dies tun, indem Sie es zu .ssh/authorized_keys hinzufügen Datei:

  1. sudo -u git cat /home/git/.ssh/id_rsa.pub | sudo -u git tee -a /home/git/.ssh/authorized_keys
  2. sudo -u git chmod 600 /home/git/.ssh/authorized_keys

Diese Befehle funktionieren alle mit dem Shim, da das Verzeichnis /home/git/.ssh auf dem Host wird als Volume auf dem Container gemountet, was bedeutet, dass der Inhalt zwischen ihnen geteilt wird. Wenn eine Verbindung zum Host über Git über SSH empfangen wird, werden dieselben authorized_keys verwendet Datei als Container.

Erstellen des SSH-Shim-Skripts

Der letzte Schritt für den Shim besteht darin, einen Stub gitea zu erstellen Befehl auf dem Host. Dadurch können Git-Befehle über SSH funktionieren:Wenn eine SSH-Verbindung hergestellt wird, wird ein Standardbefehl ausgeführt. Diese gitea Befehl auf dem Host wird die SSH-Verbindung zum Container weiterleiten.

Verwenden Sie für dieses Skript cat um in die Datei /usr/local/bin/gitea zu schreiben :

  1. cat <<"EOF" | sudo tee /usr/local/bin/gitea
  2. #!/bin/sh
  3. ssh -p 2222 -o StrictHostKeyChecking=no [email protected] "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"
  4. EOF

Der Befehl in diesem Skript stellt eine SSH-Verbindung zum Gitea-Docker-Container her und übergibt den Inhalt des ursprünglichen Befehls, der von git verwendet wird .

Stellen Sie abschließend sicher, dass das Skript ausführbar ist:

  1. sudo chmod +x /usr/local/bin/gitea

Git-SSH-Verbindungen testen

Sie können das Pullen von und Pushen in Git-Repositories auf Ihrer Gitea-Instanz testen, indem Sie Ihren SSH-Schlüssel zu Ihrem Gitea-Benutzer hinzufügen.

Sie benötigen den Inhalt Ihres öffentlichen SSH-Schlüssels. Dies befindet sich normalerweise in einer Datei mit dem Namen ~/.ssh/id_rsa.pub , abhängig davon, welchen Algorithmus Sie beim Erstellen Ihres Schlüssels verwendet haben:

  1. cat ~/.ssh/id_rsa.pub

Hinweis: Wenn Sie zum ersten Mal einen SSH-Schlüssel erstellen müssen, erfahren Sie in diesem Tutorial, wie Sie SSH-Schlüssel unter Ubuntu 20.04 einrichten.

Kopieren Sie die Ausgabe dieses Befehls.

Klicken Sie in Gitea auf Ihr Benutzersymbol in der oberen rechten Ecke und wählen Sie Einstellungen aus . Auf der Einstellungsseite befinden sich oben eine Reihe von Registerkarten. Klicken Sie auf SSH/GPG-Schlüssel , dann Schlüssel hinzufügen Schaltfläche neben SSH-Schlüssel verwalten . Fügen Sie Ihren Schlüssel in den großen Textbereich im Formular ein und klicken Sie dann auf Schlüssel hinzufügen Schaltfläche darunter.

Navigieren Sie nun zu dem Test-Repository, das Sie in Schritt 3 erstellt haben, und kopieren Sie die bereitgestellte SSH-URL. Klonen Sie auf Ihrem lokalen Rechner das Repository:

  1. git clone git@your_domain:username/test

Dadurch wird SSH zum Klonen des Repositorys verwendet. Wenn Sie ein Passwort für Ihren SSH-Schlüssel festgelegt haben, werden Sie aufgefordert, dieses anzugeben.

Wechseln Sie in dieses Verzeichnis, erstellen Sie eine neue Datei:

  1. cd test
  2. touch just_testing

Fügen Sie es als Nächstes zu Ihren gestaffelten Änderungen hinzu:

  1. git add just_testing

Committen Sie schließlich diese Datei:

  1. git commit -am "Just testing pushing over SSH!"

Jetzt sollten Sie in der Lage sein, Ihre Änderungen in das Remote-Repository zu pushen:

  1. git push origin master

Wenn Sie die Seite in Ihrem Browser aktualisieren, erscheint Ihre neue Datei im Repository.

Schlussfolgerung

Sie haben einen Gitea-Dienst mit Docker eingerichtet, um Ihre Quellcode-Repositories selbst zu hosten. Von hier aus können Sie sowohl an öffentlichen als auch an privaten Repositories arbeiten und vertraute Arbeitsabläufe wie Pull-Request-Codeüberprüfungen und nach Organisationen organisierte Projekte verwenden. Gitea funktioniert auch gut mit verschiedenen CI/CD-Tools (Continuous Integration and Deployment) wie Drone, Jenkins und GoCD. Darüber hinaus können Sie durch die Verwendung von Docker-Volumes wie diesem Ihren Speicher erweitern, um Git-LFS-Inhalte (Large File Storage) auf Netzwerk- oder Blockspeicher anzupassen.


Docker
  1. So installieren Sie Docker unter Ubuntu 18.04

  2. So installieren Sie Kubernetes unter Ubuntu 18.04

  3. So installieren Sie Docker unter Ubuntu 18.04 / Ubuntu 18.10 / Ubuntu 19.04

  4. So installieren Sie Docker unter CentOS

  5. Wie installiere ich Docker unter Ubuntu 18.04?

So installieren Sie den selbstgehosteten Git-Dienst von Gitea mit Docker unter Ubuntu 18.04

So installieren Sie Gitea mit Docker unter Ubuntu 20.04

So installieren Sie Docker unter Ubuntu 20.04, 18.04, 21.04

So installieren Sie Docker unter Ubuntu 14.04

So installieren Sie Docker Compose auf Ubuntu

So installieren Sie Docker unter Ubuntu 18.04