Initial commit: Gitea Docker Setup für Proxmox

- Docker-Compose Konfiguration
- Setup-Script für LXC Container
- Backup-Script mit Rotation
- Installationsanleitung

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Martin Eckardt
2025-12-28 14:01:12 +01:00
commit 4bf2207dcf
5 changed files with 339 additions and 0 deletions

46
scripts/backup.sh Normal file
View File

@@ -0,0 +1,46 @@
#!/bin/bash
# Gitea Backup Script
# Erstellt ein Backup der Gitea-Daten
set -e
BACKUP_DIR="/opt/gitea-backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_NAME="gitea-backup-${DATE}.tar.gz"
RETENTION_DAYS=7
# Backup-Verzeichnis erstellen
mkdir -p "$BACKUP_DIR"
echo "=== Gitea Backup gestartet: $(date) ==="
# Docker Volume Pfad ermitteln
VOLUME_PATH=$(docker volume inspect gitea-data --format '{{ .Mountpoint }}')
if [ -z "$VOLUME_PATH" ]; then
echo "Fehler: gitea-data Volume nicht gefunden!"
exit 1
fi
# Gitea stoppen für konsistentes Backup
echo "Stoppe Gitea..."
cd /opt/gitea && docker compose stop gitea
# Backup erstellen
echo "Erstelle Backup: $BACKUP_NAME"
tar -czf "${BACKUP_DIR}/${BACKUP_NAME}" -C "$VOLUME_PATH" .
# Gitea wieder starten
echo "Starte Gitea..."
cd /opt/gitea && docker compose start gitea
# Alte Backups löschen
echo "Lösche Backups älter als ${RETENTION_DAYS} Tage..."
find "$BACKUP_DIR" -name "gitea-backup-*.tar.gz" -mtime +${RETENTION_DAYS} -delete
# Backup-Größe anzeigen
BACKUP_SIZE=$(du -h "${BACKUP_DIR}/${BACKUP_NAME}" | cut -f1)
echo "=== Backup abgeschlossen: ${BACKUP_NAME} (${BACKUP_SIZE}) ==="
# Optional: Backup zu externem Speicher kopieren (auskommentiert)
# rsync -av "${BACKUP_DIR}/${BACKUP_NAME}" user@backup-server:/backups/gitea/

72
scripts/setup.sh Normal file
View File

@@ -0,0 +1,72 @@
#!/bin/bash
# Gitea Setup Script für Debian/Ubuntu LXC Container
# Ausführen als root auf dem LXC Container
set -e
echo "=== Gitea Setup Script ==="
echo ""
# Prüfen ob als root ausgeführt
if [ "$EUID" -ne 0 ]; then
echo "Bitte als root ausführen: sudo ./setup.sh"
exit 1
fi
# System aktualisieren
echo "[1/5] System aktualisieren..."
apt update && apt upgrade -y
# Docker installieren
echo "[2/5] Docker installieren..."
apt install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Docker starten und aktivieren
systemctl enable docker
systemctl start docker
# Gitea Verzeichnis erstellen
echo "[3/5] Gitea Verzeichnis einrichten..."
mkdir -p /opt/gitea
cp docker-compose.yml /opt/gitea/
# Gitea starten
echo "[4/5] Gitea starten..."
cd /opt/gitea
docker compose up -d
# Backup-Script einrichten
echo "[5/5] Backup-Script einrichten..."
mkdir -p /opt/gitea-backups
cp backup.sh /opt/gitea/
chmod +x /opt/gitea/backup.sh
# Cron-Job für tägliches Backup (03:00 Uhr)
(crontab -l 2>/dev/null; echo "0 3 * * * /opt/gitea/backup.sh >> /var/log/gitea-backup.log 2>&1") | crontab -
echo ""
echo "=== Setup abgeschlossen! ==="
echo ""
echo "Gitea ist erreichbar unter:"
echo " Web: http://<SERVER-IP>:3000"
echo " SSH: ssh://git@<SERVER-IP>:2222"
echo ""
echo "Nächste Schritte:"
echo " 1. Browser öffnen: http://<SERVER-IP>:3000"
echo " 2. Admin-Account erstellen"
echo " 3. Repository anlegen"
echo ""
echo "Backup-Script: /opt/gitea/backup.sh"
echo "Backups unter: /opt/gitea-backups/"