Gitea

Anlegen der Datenbank und Anpassung der Mariadb-Konfigurationen

mysql -u root -p
# passwort eingeben und mit enter bestätigen

Für den Fall, dass man nicht weiß, wie mariadb die innodb Tabellen anlegt, sicherstellen, dass wir eine Datei per Tabelle haben:

SET GLOBAL innodb_file_per_table = ON;

Als nächstes legen wir die Gitea Datenbank an:

CREATE DATABASE giteadb;
ALTER DATABASE giteadb CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci;

Anschließend erstellen wir den Gitea Benutzer in der Datenbank:

CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'gitea-password-here';

Als nächstes geben wir dem Benutzer gitea alle Rechte an der Datenbank:

GRANT ALL ON giteadb.* TO 'gitea'@'localhost' IDENTIFIED BY 'gitea-password-here' WITH GRANT OPTION;

Schließlich löschen wir die Berechtigungen und beenden die MariaDB-Shell mit dem folgenden Befehl:

FLUSH PRIVILEGES;
EXIT;

Als nächstes müssen noch ein paar Konfigurationen in der MariaDB-Standardkonfigurationsdatei angepasst werden. Dafür öffnen wir die Konfigurationsdatei:

vi /etc/mysql/mariadb.conf.d/50-server.cnf
# anschließend i eingeben, um den Bearbeitungs-Modus zu aktivieren

Jetzt fügen wir die folgenden Zeilen hinzu:

innodb_file_format = Barracuda
innodb_large_prefix = 1
innodb_default_row_format = dynamic

Anschließend speichern wir die Datei und starten den mariadb-server neu:

systemctl restart mariadb

Gitea installieren

Zuerst, wenn man nicht sicher ist, kann man noch mal testen, ob git auch wirklich installiert ist:

git --version

Ist Git nicht installiert, muss man zuerst die Git-Installation nachholen. Anschließend wechseln wir in das /opt Verzeichnis und laden gitea herunter:

cd /opt
wget -O gitea https://dl.gitea.io/gitea/1.10.0/gitea-1.10.0-linux-amd64
mv gitea /usr/local/bin/gitea
chmod +x /usr/local/bin/gitea

Nun benötigen wir noch den Git User im System:

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

Als nächstes können wir das Datei-System für Gitea anlegen:

mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
chown git: /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
chmod 750 /var/lib/gitea/{data,indexers,log}
touch /etc/gitea/app.ini
chown -R root:git /etc/gitea
chmod 770 /etc/gitea
vi /etc/gitea/app.ini
APP_NAME = Git Projects
RUN_USER = git
RUN_MODE = prod

[server]
HTTP_PORT = 3000

[log]
MODE      = file
LEVEL     = info
ROOT_PATH = /var/lib/gitea/log

[ui]
DEFAULT_THEME = arc-green
THEMES = arc-green

Gitea als Service festlegen und rebootfest machen

vi /etc/systemd/system/gitea.service
[Unit]
Description=Gitea
After=syslog.target
After=network.target
After=mysql.service
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea GITEA_CUSTOM=/var/lib/gitea/custom 
[Install]
WantedBy=multi-user.target

Anschließend kann man den Daemon neu laden:

systemctl daemon-reload 

zu guter letzt wird der Service erst gestartet und anschließend für den neustart aktiviert, so dass er automatisch hochfährt:

systemctl start gitea
systemctl enable gitea
Tipp

Betreibt man Gitea als vhost mit mehreren Domains muss man noch das folgende in seine vhost Konfiguration eintragen:

<IfModule mod_rewrite.c>
    RewriteEngine on
    # Den Port muss man an seine Konfiguration `HTTP_PORT` aus der `app.ini` anpassen!
    RewriteRule ^(.*)$ http://localhost:3000$1 [P]
</IfModule>
<Location />
    # Den Port muss man an seine Konfiguration `HTTP_PORT` aus der `app.ini` anpassen!
    ProxyPass http://127.0.0.1:3000/
    ProxyPassReverse http://127.0.0.1:3000/
</Location>

hat man die ufw im Einsatz muss der Port noch freigegeben werden:

ufw allow 3000

Gitea installieren

Endlich kann man gitea im Browser aufrufen und installieren.

z.B. 192.168.1.2:3000/install

Bonus: Gitea aktualisieren

cd /opt
wget -O gitea https://github.com/go-gitea/gitea/releases/download/v$VERSION/gitea-$VERSION-linux-amd64
chmod +x gitea
chown git: gitea
systemctl stop gitea
mv gitea /usr/local/bin/gitea
systemctl start gitea
systemctl status gitea

Homeserver mit Ubuntu 20.04 aufsetzen - Schritte