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
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