So installierst du Gitea Code Hosting mit Docker auf Rocky Linux 8

Gitea ist ein selbstgehosteter Code-Hosting-Dienst, ähnlich wie Github, Bitbucket und Gitlab. Er ist in der Sprache Go geschrieben und kann auf mehreren Betriebssystemen installiert werden, darunter Linux, macOS, Windows und Architekturen wie amd64, i386, ARM und andere. Da es eine leichtgewichtige Anwendung ist, kann sie mit minimalen Hardware-Anforderungen installiert werden. Sie enthält einen Editor für Repository-Dateien, einen OpenSSH-Server, Issue Tracking, Pull Requests, Benutzerverwaltung, Benachrichtigungen, ein integriertes Wiki, LFS-Unterstützung, Git Hooks und vieles mehr.

In diesem Artikel lernst du, wie du Gitea mit Docker auf einem Rocky Linux 8 Server installierst.

Voraussetzungen

  • Ein Server, auf dem Rocky Linux 8.5 läuft.
  • Ein Nicht-Root-Benutzer mit sudo-Rechten.
  • Deaktiviere SELinux.
  • Aktualisiere alles.
    $ sudo dnf update
    
  • Installiere wichtige Pakete.
    $ sudo dnf install yum-utils nano curl
    
  • Einen voll qualifizierten Domainnamen (FQDN), der auf den Server zeigt, z. B. gitea.example.com.

Schritt 1 – Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Rocky Linux verwendet die Firewalld Firewall. Überprüfe den Status der Firewall.

$ sudo firewall-cmd --state
running

Die Firewall arbeitet mit verschiedenen Zonen, wobei die öffentliche Zone die Standardzone ist, die wir verwenden werden. Liste alle Dienste und Ports auf, die auf der Firewall aktiv sind.

$ sudo firewall-cmd --permanent --list-services

Es sollte die folgende Ausgabe angezeigt werden.

cockpit dhcpv6-client ssh

Erlaube HTTP- und HTTPS-Ports.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Öffne Port 2221 für SSH.

$ sudo firewall-cmd --permanent --add-port=2221/tcp

Liste alle Dienste auf, die von der Firewall aktiviert werden.

$ sudo firewall-cmd --permanent --list-all

Du solltest eine ähnliche Ausgabe sehen.

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client http https ssh
  ports: 2221/tcp
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Lade die Firewall neu, um die Änderungen zu aktivieren.

$ sudo firewall-cmd --reload

Schritt 2 – Docker installieren

Rocky Linux wird mit einer älteren Version von Docker ausgeliefert. Um die neueste Version zu installieren, installierst du zuerst das offizielle Docker-Repository.

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

Installiere die neueste Version von Docker.

$ sudo dnf install docker-ce docker-ce-cli containerd.io

Aktiviere den Docker-Daemon und starte ihn.

$ sudo systemctl enable docker --now

Überprüfe, ob er läuft.

? docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-04-02 13:26:08 UTC; 2s ago
     Docs: https://docs.docker.com
 Main PID: 21152 (dockerd)
    Tasks: 7
   Memory: 30.9M
   CGroup: /system.slice/docker.service
           ??21152 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
...

Standardmäßig benötigt Docker Root-Rechte. Wenn du vermeiden willst, dass du jedes Mal sudo verwendest, wenn du den Befehl docker ausführst, füge deinen Benutzernamen der Gruppe docker hinzu.

$ sudo usermod -aG docker $(whoami)

Um diese Änderung zu aktivieren, musst du dich vom Server abmelden und als derselbe Benutzer wieder anmelden.

Schritt 3 – Installiere Docker Compose

Lade die neueste stabile Version von Docker Compose herunter.

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Gib der Docker Compose Binärdatei die Berechtigung zum Ausführen.

$ sudo chmod +x /usr/local/bin/docker-compose

Teste die Installation.

$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c

Installiere das Docker-Compose Bash Completion Script.

$ sudo curl \
    -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \
    -o /etc/bash_completion.d/docker-compose

Lade deine Profileinstellungen neu, damit die Bash-Vervollständigung funktioniert.

$ source ~/.bashrc

Schritt 4 – Gitea konfigurieren und installieren

Systemzeitzone konfigurieren

Du kannst die aktuelle Zeitzone deines Systems mit dem folgenden Befehl überprüfen.

$ timedatectl
  Local time: Mon 2022-05-02 06:38:36 UTC
           Universal time: Mon 2022-05-02 06:38:36 UTC
                 RTC time: Mon 2022-05-02 06:38:36
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Du kannst sehen, dass das System auf die GMT- oder UTC-Zeitzone eingestellt ist. Wenn du in einem Gebiet mit einer anderen Zeitzone lebst oder sie ändern möchtest, kannst du das mit dem folgenden Befehl tun.

$ sudo timedatectl set-timezone Asia/Kolkata

Überprüfe die Zeitzone erneut.

$ timedatectl
Local time: Mon 2022-05-02 12:09:23 IST
           Universal time: Mon 2022-05-02 06:39:23 UTC
                 RTC time: Mon 2022-05-02 06:39:22
                Time zone: Asia/Kolkata (IST, +0530)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Du kannst sehen, dass die Zeitzone auf IST aktualisiert wurde, was GMT+5:30 entspricht.

Gitea-Verzeichnisse erstellen

Erstelle das Verzeichnis für Gitea.

$ mkdir ~/gitea-docker

Wechsle in das Gitea-Verzeichnis.

$ cd ~/gitea-docker

Erstelle Verzeichnisse für die Speicherung von Gitea-Daten und PostgreSQL-Datenbanken.

$ mkdir {gitea,postgres}

Konfiguriere die Gitea Docker Compose Datei

Erhalte die UID (User Identifier) und GID (Group Identifier) Werte für den aktuell angemeldeten Benutzer. Der erste Befehl generiert die UID, während der zweite die GID ermittelt. Kopiere beide Werte, denn sie werden für die Konfiguration der Docker Compose-Datei benötigt.

$ echo $(id -u)
1000
$ echo $(id -g)
1000

Erstelle und öffne die Docker Compose Datei zur Bearbeitung.

$ nano docker-compose.yml

Füge den folgenden Code in die Datei ein. Füge die zuvor erstellten UID- und GID-Werte ein.

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.16.6
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2221:22"
    depends_on:
      - db

  db:
    image: postgres:14
    restart: always
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=gitea
      - POSTGRES_DB=gitea
    networks:
      - gitea
    volumes:
      - ./postgres:/var/lib/postgresql/data

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Die obige Docker Compose Datei stellt zwei Container bereit – einen für Gitea und einen für PostgreSQL. Wir haben ein paar Umgebungsvariablen hinzugefügt, um die Details der Datenbank zu konfigurieren. Um die PostgreSQL-Datenbank mit dem Gitea-Container zu verbinden, haben wir den Host als Namen des PostgreSQL-Dienstes in der Datei angegeben.

Die Port-Parameter "3000:3000" und "2221:22" geben die Port-Zuordnung an, wobei der linke Port den Host-Port und der rechte Port den Container-Port bezeichnet. Gitea verwendet den Port 3000 für seinen Webservice, den wir auch dem Server zur Verfügung gestellt haben. Für SSH verwendet unser System bereits Port 22 für die Protokollierung. Deshalb geben wir einen eigenen Port an, um SSH-Operationen durchzuführen. In unserem Fall verwenden wir Port 2221. Dieser Port muss ebenfalls über deine Firewall geöffnet werden, was wir bereits in Schritt 1 dieses Lernprogramms getan haben.

Sowohl Gitea als auch die PostgreSQL-Container sind über ein gemeinsames internes Docker-Netzwerk namens gitea verbunden. Wenn du deine Docker-Installation startest, werden automatisch die Verzeichnisse gitea und postgres im aktuellen Ordner angelegt. Die Benutzer-ID, die in der Compose-Datei angegeben ist, wird vom Gitea-Container verwendet, um das Verzeichnis gitea zu erstellen.Der PostgreSQL-Container hingegen wird vom Benutzer systemd-coredump verwaltet, was das Standardverhalten ist. Du kannst dieses Verhalten ändern, aber es ist nicht notwendig.

Anpassen deiner Gitea-Installation

Du kannst deine Gitea-Installation anpassen, indem du eine app.ini-Datei in das Verzeichnis ~/gitea-docker/gitea/gitea/conf einfügst. Nach der Installation kann diese Datei innerhalb des Containers unter /data/gitea/conf/app.ini bearbeitet werden. Du kannst die Beispiel-ini-Datei aus dem Github-Repository von Gitea als Referenz verwenden.

Gitea installieren

Führe den folgenden Befehl aus, um die Gitea-Container zu starten.

$ docker-compose up -d

Überprüfe den Status der Container, um sicherzustellen, dass sie ordnungsgemäß laufen.

$ docker ps
CONTAINER ID   IMAGE                COMMAND                  CREATED             STATUS             PORTS                                                                              NAMES
bd06e370c46b   gitea/gitea:1.16.6   "/usr/bin/entrypoint…"   19 minutes ago   Up 19 minutes   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp, 0.0.0.0:2221->22/tcp, :::2221->22/tcp   gitea
3fc6c4bce810   postgres:14          "docker-entrypoint.s…"   19 minutes ago   Up 19 minutes   5432/tcp                                                                           gitea_db_1

Du kannst auch den folgenden Befehl verwenden, um den Status zu überprüfen.

$ docker-compose ps
   Name                 Command               State                                       Ports
------------------------------------------------------------------------------------------------------------------------------------
gitea        /usr/bin/entrypoint /bin/s ...   Up      0.0.0.0:2221->22/tcp,:::2221->22/tcp, 0.0.0.0:3000->3000/tcp,:::3000->3000/tcp
gitea_db_1   docker-entrypoint.sh postgres    Up      5432/tcp

Schritt 5 – SSL installieren

Um ein SSL-Zertifikat mit Let’s Encrypt zu installieren, müssen wir das Tool Certbot installieren.

Als erstes musst du das EPEL-Repository herunterladen und installieren.

$ sudo dnf install epel-release

Führe die folgenden Befehle aus, um Certbot zu installieren.

$ sudo dnf install certbot

Erstelle das SSL-Zertifikat.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d gitea.example.com

Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/gitea.example.com auf deinem Server heruntergeladen.

Erstelle ein Diffie-Hellman-Gruppenzertifikat.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

Erstelle ein Challenge-Web-Root-Verzeichnis für die automatische Erneuerung von Let’s Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Erstelle einen Cron Job zur Erneuerung des SSL-Zertifikats. Er wird jeden Tag ausgeführt, um das Zertifikat zu überprüfen und bei Bedarf zu erneuern. Erstelle dazu zunächst die Datei /etc/cron.daily/certbot-renew und öffne sie zur Bearbeitung.

$ sudo nano /etc/cron.daily/certbot-renew

Füge den folgenden Code ein.

#!/bin/sh
certbot renew --cert-name gitea.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Ändere die Berechtigungen für die Aufgabendatei, um sie ausführbar zu machen.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Schritt 6 – Nginx installieren

Wir werden die neueste Version von Nginx installieren. Erstelle und öffne die Datei /etc/yum.repos.d/nginx.repo zum Bearbeiten.

$ sudo nano /etc/yum.repos.d/nginx.repo

Füge die folgenden Zeilen in die Datei ein.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Installiere Nginx.

$ sudo dnf install nginx

Überprüfe die Installation.

$ nginx -v
nginx version: nginx/1.20.2

Aktiviere und starte den Nginx-Dienst.

$ sudo systemctl enable nginx --now

Erstelle und öffne die Datei /etc/nginx/conf.d/gitea.conf zur Bearbeitung.

$ sudo nano /etc/nginx/conf.d/gitea.conf

Füge den folgenden Code in die Datei ein.

# Redirect all non-encrypted to encrypted
server {
    listen 80;
    listen [::]:80;
    server_name gitea.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    
    server_name gitea.example.com;

    ssl_certificate     /etc/letsencrypt/live/gitea.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/gitea.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/gitea.example.com/chain.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    access_log /var/log/nginx/gitea.example.com.access.log main;
    error_log  /var/log/nginx/gitea.example.com.error.log;

    location / {
        client_max_body_size 100M;
        proxy_pass  http://localhost:3000;
        proxy_set_header Host $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;
    }
}

Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst. Mit der obigen Konfiguration kann Nginx als Proxy-Server fungieren und sich an den Port 3000 auf localhost binden. Um das Hochladen großer Dateien für Git LFS zu ermöglichen, kannst du den Wert der Variable client_max_body_size je nach Bedarf ändern. In unserem Lernprogramm verwenden wir 100 MB als Grenze.

Öffne die Datei /etc/nginx/nginx.conf zum Bearbeiten.

$ sudo nano /etc/nginx/nginx.conf

Füge die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; ein.

server_names_hash_bucket_size  64;

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Überprüfe die Syntax der Nginx-Konfigurationsdatei.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starte den Nginx-Dienst neu, um die neue Konfiguration zu aktivieren.

$ sudo systemctl restart nginx

Schritt 7 – Zugriff und Einrichtung von Gitea

Rufe die URL https://gitea.example.com in deinem Browser auf und der folgende Installationsbildschirm wird angezeigt.

Gitea Installation Teil 1

Die meisten Felder werden auf der Grundlage der Werte aus der Docker Compose-Datei vorausgefüllt.

Gitea Installation Teil 2

Gib gitea.example.com als Server Domain und https://gitea.example.com als Gitea Base URL ein. Ändere den Wert für den SSH-Server-Port von 22 auf 2221. Lass die restlichen Einstellungen unverändert.

Wenn du die E-Mail-Funktionen nutzen willst, kannst du die Details deines SMTP-Servers hinzufügen. Erweitere den Abschnitt E-Mail-Einstellungen auf der Seite und gib die Werte wie im Screenshot gezeigt ein. Achte darauf, dass du deinen SMTP-Port zusammen mit dem Hostnamen angibst, wie in der Abbildung gezeigt. Für unser Tutorial verwenden wir den Amazon SES Service. Du kannst jeden SMTP-Dienst deiner Wahl verwenden.

Gitea E-Mail-Einstellungen

Es gibt noch ein paar weitere Einstellungen, die du vor der Installation überprüfen solltest. Um sie zu ändern, erweitere den Abschnitt Server- und Drittanbieter-Service-Einstellungen auf der Seite.

Einstellungen für Gitea Server und Drittanbieterdienste

Ändere die Einstellungen entsprechend deinen Anforderungen. Wir haben die Option E-Mail-Adressen standardmäßig ausblenden aktiviert, um mehr Datenschutz zu gewährleisten. Wenn du nicht möchtest, dass sich jemand ein Konto anlegt, aktiviere die Option Selbstregistrierung deaktivieren.

Zu guter Letzt musst du dein Administratorkonto einrichten. Erweitere den Abschnitt Einstellungen für das Administratorkonto auf der Seite und trage die erforderlichen Werte ein.

Einstellungen des Gitea Administrator-Kontos

Klicke abschließend auf die Schaltfläche Gitea installieren, um die Installation abzuschließen. Du wirst zum Gitea Dashboard weitergeleitet. Wenn du aus irgendeinem Grund eine 502-Fehlermeldung erhältst, aktualisiere die Seite.

Gitea Dashboard

Schritt 8 – Erstes Repository erstellen

Lass uns unser erstes Repository erstellen. Klicke dazu auf das + Zeichen im Dashboard.

Gitea Schaltfläche "Neues Repository

Gib die Repository-Details ein. Wähle das Label Standardausgabe aus dem Dropdown-Menü. Wähle eine passende Lizenz für dein Projektarchiv.

Gitea Seite zur Einrichtung eines neuen Repositorys

Wähle den Standardzweig für dein Projektarchiv.

Gitea Einrichtungsseite für ein neues Repository Teil 2

Wenn du zufrieden bist, klicke auf die Schaltfläche Repository erstellen, um dein erstes Repository in deiner Gitea-Installation zu erstellen. Du wirst zur Startseite deines Projektarchivs weitergeleitet.

Gitea Repository Seite

Schritt 9 – SSH einrichten

Richten wir SSH ein, um es mit unserem neu erstellten Repository zu verwenden.

Für unser Tutorial verwenden wir einen lokalen PC, auf dem Ubuntu vorinstalliert ist. Die Befehle sollten jedoch auf jedem OS-Terminal ohne große Änderungen funktionieren.

Erstelle einen neuen SSH-Schlüssel, den du mit Gitea auf deinem lokalen PC verwenden kannst.

$ ssh-keygen -f ~/.ssh/gitea-demo -t rsa -b 4096 -C "HowtoForge Gitea Demo" -q -N "yourpassphrase"

Gib eine starke Passphrase anstelle des Platzhalters im obigen Befehl ein. Dadurch wird ein SSH-Schlüssel unter ~/.ssh/gitea-demo erstellt.

Als Nächstes öffnest du deine Gitea-Profileinstellungen, indem du auf das Dropdown-Menü deines Profilbildes klickst und die Option Einstellungen auswählst.

Schaltfläche Gitea Profileinstellungen

Wechsle dann zum Reiter SSH/GPG-Schlüssel auf der Seite.

Gitea SSH-Schlüssel Seite

Füge einen Namen für deinen SSH-Schlüssel hinzu. Gehe zurück zum Terminal auf deinem lokalen PC und führe den folgenden Befehl aus, um den öffentlichen Schlüssel für Gitea auszugeben.

$ cat ~/.ssh/gitea-demo.pub

Kopiere die Ausgabe und füge sie wieder in das Feld Inhalt auf der Seite SSH-Schlüssel von Gitea ein.

Klicke auf die Schaltfläche Schlüssel hinzufügen, um das Hinzufügen des Schlüssels abzuschließen.

Gitea SSH-Schlüssel Liste

Gehe zurück zu deinem lokalen PC und richte den SSH-Agenten so ein, dass er für 1 Stunde aktiv bleibt.

$ eval $(ssh-agent -t 3600)b

Füge den neu erstellten SSH-Schlüssel zum SSH-Agenten hinzu.

$ ssh-add ~/.ssh/gitea-demo
Enter passphrase for /home/navjot/.ssh/gitea-demo:
Identity added: /home/navjot/.ssh/gitea-demo (HowtoForge Gitea Demo)

Du wirst aufgefordert, deine Passphrase einzugeben.

Schritt 10 – Klonen des Repositorys mit SSH

Lass uns das neu erstellte Projektarchiv mit SSH klonen. Besuche die Repository-Seite erneut und kopiere die SSH-URL, nachdem du die Option SSH ausgewählt hast.

Gitea SSH URL kopieren

Sie sollte wie die folgende aussehen.

ssh://[email protected]:2221/navjot/howtoforge.git

Führe den folgenden Befehl auf deinem lokalen PC aus, um das Repository mit SSH zu klonen.

$ git clone ssh://[email protected]:2221/navjot/howtoforge.git
Cloning into 'howtoforge'...
The authenticity of host '[gitea.example.com]:2221 ([209.23.11.75]:2221)' can't be established.
ECDSA key fingerprint is SHA256:sN0N4OkpChwuR00xpGZU1mGJrp7ktwHRC7uxGP7Nh08.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[gitea.example.com]:2221,[209.23.11.75]:2221' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (4/4), done.

Du wirst aufgefordert, die Host-Zugangsdaten einzugeben. Gib yes ein, um mit dem Klonen des Projektarchivs fortzufahren.

Du wirst das geklonte Projektarchiv auf deinem System sehen.

$ ls
howtoforge

Wechsle in das Verzeichnis.

$ cd howtoforge

Überprüfe den Git-Status des neu geklonten Projektarchivs. Hierfür solltest du Git auf deinem lokalen PC installiert haben.

$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

Damit ist klar, dass SSH einwandfrei funktioniert.

Schritt 11 – Testen des ersten Commits

Jetzt, wo wir unser erstes Repository eingerichtet haben, ist es an der Zeit, einige Änderungen vorzunehmen und sie zu committen.

Lass uns die Datei README.md aktualisieren. Öffne auf deinem lokalen PC die Readme-Datei zum Bearbeiten.

$ nano README.md

Bearbeite die Datei und wenn du fertig bist, speichere sie, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Überprüfe erneut den Git-Status.

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

Dieser zeigt an, dass die Readme-Datei zwar bearbeitet, aber nicht übertragen wurde. Füge die Datei hinzu, um sie für das Commit vorzubereiten.

$ git add README.md

Übertrage die Datei.

$ git commit -m "Update the Readme file for Gitea tutorial."
[master 5e9b039] Update the Readme file for Gitea tutorial.
 1 file changed, 3 insertions(+), 1 deletion(-)

Pushe die Datei auf deinen Gitea Server.

$ git push origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 392 bytes | 392.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To ssh://gitea.example.com:2221/navjot/howtoforge.git
   a61dfce..5e9b039  master -> master

Zur Bestätigung gehst du zurück zur Gitea-Repository-Seite.

Gitea Erfolgreicher Commit

Du kannst sehen, dass die Readme-Datei aktualisiert wurde und die letzte Commit-Meldung angezeigt wird. Um die Änderungen zu sehen, klicke auf die Commit-Nachricht und du kannst die folgende Seite mit den Unterschieden sehen.

Gitea Commit Details

Damit ist unser erster Commit für unser Repository abgeschlossen. Du kannst mit der Arbeit an deiner Gitea Installation für deine Projekte beginnen.

Schritt 12 – Gitea aktualisieren

Das Upgrade von Gitea ist ein einfacher Prozess.

Schließe die bestehenden Container und entferne sie. Da die Daten außerhalb der Container auf dem Host gespeichert sind, werden sie beibehalten.

$ cd ~/gitea-docker
$ docker-compose down --remove-orphans

Öffne die Datei docker-compose.yml und ändere die Version des Gitea-Containers. Als nächstes ziehst du das neue Gitea-Image.

$ docker pull

Starten Sie die neuen Container.

$ docker-compose up -d

Überprüfe den Status.

$ docker ps

Fazit

Dies ist der Abschluss unseres Tutorials, in dem wir den Gitea Code Hosting Service mit Docker auf einem Rocky Linux Server installiert haben. Außerdem haben wir den Nginx-Server installiert, der als Proxy fungiert, und Gitea über eine öffentliche URL mit SSL zugänglich gemacht. Wenn du Fragen hast, schreibe sie unten in die Kommentare.

Das könnte dich auch interessieren …