Files
Ai/gitpusher/INSTALL.md
T
Claude 45b15c7fd5 Add GitHub Sync - Automated repository synchronization tool
Complete implementation of automated GitHub repository synchronization:
- Webhook-based auto-sync from GitHub
- Multi-repository support with branch selection
- Web dashboard for management
- Manual sync and rollback functionality
- Comprehensive logging and monitoring

Located in /gitpusher/ subdirectory as standalone application.
2025-12-06 09:53:32 +00:00

285 lines
5.9 KiB
Markdown

# Schnellstart-Installation
Schritt-für-Schritt Anleitung zur Installation von GitHub Sync auf deinem Ubuntu LXC Container.
## ⚡ Express-Installation (5 Minuten)
### 1. System vorbereiten
```bash
# System aktualisieren
sudo apt update && sudo apt upgrade -y
# Benötigte Pakete installieren
sudo apt install -y apache2 php libapache2-mod-php php-cli php-json php-mbstring git
```
### 2. Apache Module aktivieren
```bash
sudo a2enmod rewrite
sudo systemctl restart apache2
```
### 3. Virtual Host konfigurieren
```bash
# Virtual Host Datei erstellen
sudo nano /etc/apache2/sites-available/github-sync.conf
```
Kopiere diese Konfiguration:
```apache
<VirtualHost *:80>
ServerName github-sync.local
DocumentRoot /gitpusher/public
<Directory /gitpusher/public>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<Directory /gitpusher/data>
Require all denied
</Directory>
<Directory /gitpusher/src>
Require all denied
</Directory>
ErrorLog ${APACHE_LOG_DIR}/github-sync-error.log
CustomLog ${APACHE_LOG_DIR}/github-sync-access.log combined
</VirtualHost>
```
```bash
# Site aktivieren
sudo a2ensite github-sync.conf
sudo a2dissite 000-default.conf # Optional: Default-Site deaktivieren
sudo systemctl reload apache2
```
### 4. Berechtigungen setzen
```bash
# Eigentümer ändern
sudo chown -R www-data:www-data /gitpusher
# Berechtigungen setzen
sudo chmod 755 /gitpusher
sudo chmod 755 /gitpusher/public
sudo chmod 755 /gitpusher/data
sudo chmod 755 /gitpusher/src
sudo chmod 600 /gitpusher/data/*.json
```
### 5. GitHub Personal Access Token erstellen
1. Gehe zu: https://github.com/settings/tokens
2. Klicke: **"Generate new token (classic)"**
3. Name: `GitHub Sync Server`
4. Scope: ✅ **repo** (Full control of private repositories)
5. Klicke: **"Generate token"**
6. **Kopiere den Token** (ghp_...)
### 6. Token hinterlegen
```bash
sudo nano /gitpusher/data/secrets.json
```
Ersetze die leere Zeile:
```json
{
"github_pat": "ghp_DEIN_TOKEN_HIER",
"webhook_secrets": {}
}
```
Speichern: `Ctrl+O``Enter``Ctrl+X`
### 7. Testen
```bash
# Apache Status prüfen
sudo systemctl status apache2
# PHP testen
php -v
# Git testen
git --version
```
### 8. Im Browser öffnen
Öffne in deinem Browser:
- Wenn du eine Domain hast: `http://github-sync.deine-domain.de`
- Sonst mit IP: `http://DEINE-SERVER-IP`
**Du solltest jetzt das Dashboard sehen!** 🎉
## 🎯 Erstes Repository hinzufügen
1. Klicke im Dashboard auf **"+ Repository hinzufügen"**
2. Fülle aus:
```
Name: Test-Projekt
Repository URL: https://github.com/dein-username/dein-repo.git
Branch: main
Ziel-Pfad: /var/www/test-projekt
Auto-Sync: ✅ Aktiviert
```
3. Klicke **"Repository hinzufügen"**
Das Repository wird automatisch geklont!
## 🔗 GitHub Webhook einrichten
Nach dem Hinzufügen siehst du ein Modal mit Webhook-Informationen.
1. Kopiere **Payload URL** und **Secret**
2. Gehe zu deinem GitHub Repo → **Settings** → **Webhooks** → **Add webhook**
3. Füge ein:
- **Payload URL**: (kopiert)
- **Content type**: `application/json`
- **Secret**: (kopiert)
- **Events**: "Just the push event"
4. Klicke **"Add webhook"**
Fertig! Bei jedem Push wird automatisch synchronisiert.
## ✅ Erfolgs-Check
Teste die Synchronisation:
1. Ändere eine Datei in deinem GitHub-Repo
2. Committe und pushe die Änderung
3. Schau im Dashboard → Log-Einträge
4. Du solltest sehen: "✅ Sync OK (X Dateien)"
Prüfe die Datei auf dem Server:
```bash
ls -la /var/www/test-projekt
```
## 🔧 Erweiterte Konfiguration
### SSL/HTTPS einrichten (empfohlen für Produktion)
```bash
# Let's Encrypt installieren
sudo apt install certbot python3-certbot-apache
# Zertifikat erstellen
sudo certbot --apache -d github-sync.deine-domain.de
# Auto-Renewal testen
sudo certbot renew --dry-run
```
### Firewall konfigurieren
```bash
# UFW Firewall aktivieren
sudo ufw allow 'Apache Full'
sudo ufw enable
```
### Log-Rotation einrichten
```bash
sudo nano /etc/logrotate.d/github-sync
```
```
/var/log/apache2/github-sync-*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 root adm
sharedscripts
postrotate
systemctl reload apache2 > /dev/null
endscript
}
```
## 🚨 Häufige Probleme
### Problem: "403 Forbidden" beim Öffnen
**Lösung:**
```bash
sudo chown -R www-data:www-data /gitpusher
sudo chmod 755 /gitpusher/public
```
### Problem: Repository kann nicht geklont werden
**Lösung:**
```bash
# Prüfe, ob www-data git nutzen kann
sudo -u www-data git --version
# Prüfe, ob Ziel-Ordner Schreibrechte hat
sudo -u www-data mkdir -p /var/www/test
```
### Problem: Webhook kommt nicht an
**Lösung:**
1. Prüfe GitHub Webhook Deliveries auf Fehler
2. Prüfe Firewall: `sudo ufw status`
3. Prüfe Apache Logs:
```bash
sudo tail -f /var/log/apache2/github-sync-error.log
```
### Problem: JSON-Dateien leer oder defekt
**Lösung:**
```bash
# Setze Standardwerte zurück
cd /gitpusher/data
echo '{"repositories":[]}' | sudo tee config.json
echo '{"entries":[]}' | sudo tee log.json
echo '{"github_pat":"","webhook_secrets":{}}' | sudo tee secrets.json
sudo chmod 600 *.json
sudo chown www-data:www-data *.json
```
## 📋 Checkliste
- [ ] Apache installiert und läuft
- [ ] PHP installiert (Version 7.4+)
- [ ] Git installiert
- [ ] Virtual Host konfiguriert
- [ ] Site aktiviert und Apache neu geladen
- [ ] Berechtigungen gesetzt (www-data)
- [ ] GitHub PAT erstellt und hinterlegt
- [ ] Dashboard im Browser erreichbar
- [ ] Erstes Repository hinzugefügt
- [ ] Webhook in GitHub eingerichtet
- [ ] Test-Push erfolgreich synchronisiert
## 🎓 Nächste Schritte
1. Lies die vollständige [README.md](README.md)
2. Füge weitere Repositories hinzu
3. Teste Rollback-Funktion
4. Richte SSL/HTTPS ein (für Produktion)
5. Konfiguriere Monitoring
---
**Viel Erfolg!** 🚀