# Deployment Files Übersicht Diese Datei gibt einen Überblick über alle Dateien, die für das automatisierte Deployment auf deiner Synology NAS erstellt wurden. ## 📋 Erstelle Dateien ### 1. CI/CD Workflow - **`.gitea/workflows/deploy-synology.yml`** - Gitea Actions Workflow für automatisches Build & Deployment - Führt Tests aus, baut Docker Image, deployt auf NAS - Triggert bei Push auf `main` oder `develop` ### 2. Docker Konfiguration - **`docker-compose.synology.yml`** - Docker Compose für Synology NAS Deployment - Definiert Laravel App + PostgreSQL Datenbank - Mit persistenten Volumes und Health Checks - **`docker-compose.gitea-runner.yml`** - Docker Compose für Gitea Runner - Ermöglicht automatische Workflows - **`Dockerfile`** - Bereits vorhanden, wird verwendet für Image-Build - Multi-stage Build für optimale Image-Größe ### 3. Environment Konfiguration - **`.env.synology.example`** - Beispiel-Environment für Synology Deployment - Muss kopiert werden zu `.env.synology` - Enthält alle notwendigen Variablen - **`.env.gitea-runner.example`** - Beispiel-Environment für Gitea Runner - Muss kopiert werden zu `.env.gitea-runner` ### 4. Deployment Scripts - **`scripts/deploy-synology.sh`** - Automatisches Deployment-Script - Läuft auf der Synology NAS - Handhabt Backup, Deployment, Rollback, Health Checks ### 5. Dokumentation - **`SYNOLOGY_DEPLOYMENT.md`** - Vollständige Anleitung für manuelles Deployment - Inklusive CI/CD Setup Abschnitt - Troubleshooting Tipps - **`GITEA_RUNNER_SETUP.md`** - Detaillierte Anleitung für Gitea Runner Setup - Secrets-Konfiguration - Monitoring & Troubleshooting - **`CI_CD_README.md`** - Schnellstart-Anleitung für CI/CD - Übersicht über alle Features - Wichtige Befehle - **`DEPLOYMENT_FILES_OVERVIEW.md`** (diese Datei) - Übersicht über alle erstellten Dateien ### 6. Application Code - **`routes/web.php`** - Health Check Endpoint hinzugefügt (`/health`) - Wird für automatische Health Checks verwendet ### 7. Git Konfiguration - **`.gitignore`** - Erweitert um CI/CD spezifische Dateien - `.env.synology` und `.env.gitea-runner` ignoriert - Build-Artefakte ignoriert ## 🔧 Verwendung der Dateien ### Einmalige Einrichtung 1. **Gitea Runner deployen:** ```bash # Auf Synology NAS cp .env.gitea-runner.example .env.gitea-runner # Bearbeite .env.gitea-runner mit deinen Werten docker-compose -f docker-compose.gitea-runner.yml up -d ``` 2. **Repository Secrets in Gitea setzen:** - `SYNOLOGY_HOST` - `SYNOLOGY_USER` - `SYNOLOGY_SSH_KEY` - `APP_KEY` 3. **Workflow-Dateien committen:** ```bash git add .gitea/ git commit -m "ci: add automated deployment" git push origin main ``` ### Manuelles Deployment Falls du manuell deployen möchtest (ohne CI/CD): ```bash # Auf Synology NAS cd /volume1/docker/laravel-app cp .env.synology.example .env.synology # Bearbeite .env.synology docker-compose -f docker-compose.synology.yml up -d --build ``` ## 📊 Datei-Abhängigkeiten ``` .gitea/workflows/deploy-synology.yml ├── docker-compose.synology.yml ├── scripts/deploy-synology.sh ├── .env.synology (zu erstellen) └── Dockerfile docker-compose.gitea-runner.yml └── .env.gitea-runner (zu erstellen) ``` ## ✅ Checkliste für Deployment ### Vor dem ersten Deployment: - [ ] Gitea Runner deployed (`docker-compose.gitea-runner.yml`) - [ ] Runner in Gitea registriert - [ ] Repository Secrets gesetzt - [ ] `.env.synology` auf NAS erstellt und konfiguriert - [ ] SSH-Keys für Deployment eingerichtet - [ ] Projekt-Verzeichnis auf NAS: `/volume1/docker/laravel-app` ### Vor jedem Push: - [ ] Tests lokal ausgeführt (`php artisan test`) - [ ] Conventional Commit Message verwendet - [ ] Code reviewed ### Nach dem Deployment: - [ ] Workflow Status in Gitea Actions überprüft - [ ] Health Check erfolgreich: `curl http://nas-ip:8080/health` - [ ] Anwendung erreichbar: `http://nas-ip:8080` - [ ] Logs prüfen: `docker logs laravel_app` ## 🔐 Sicherheit ### Dateien die NICHT committet werden sollten: - `.env.synology` - Enthält Produktions-Secrets - `.env.gitea-runner` - Enthält Runner-Token - `kubeconfig` - Falls verwendet - `*.tar.gz` - Build-Artefakte - SSH Private Keys Diese Dateien sind bereits in `.gitignore` eingetragen! ### Dateien die committet werden sollten: - `.env.synology.example` - Template für andere Entwickler - `.env.gitea-runner.example` - Template für Runner - Alle `docker-compose*.yml` Dateien - Alle Dokumentations-Dateien - Workflow-Dateien in `.gitea/workflows/` - Deployment-Scripts in `scripts/` ## 🚀 Nächste Schritte 1. **Lies die Dokumentation:** - Start mit [CI_CD_README.md](CI_CD_README.md) für Schnellstart - Dann [GITEA_RUNNER_SETUP.md](GITEA_RUNNER_SETUP.md) für Runner-Setup - Bei Problemen: [SYNOLOGY_DEPLOYMENT.md](SYNOLOGY_DEPLOYMENT.md) 2. **Setup durchführen:** - Folge der Anleitung in [GITEA_RUNNER_SETUP.md](GITEA_RUNNER_SETUP.md) - Konfiguriere Secrets in Gitea - Teste mit einem Push 3. **Deployment testen:** - Mache eine kleine Änderung - Committe mit Conventional Commit - Push und beobachte Workflow in Gitea Actions 4. **Optional: Erweitere Workflow:** - Füge Notifications hinzu (Email, Telegram, Discord) - Konfiguriere mehrere Environments (Staging, Production) - Füge weitere Tests hinzu ## 📝 Hinweise - Alle Scripts sind für **Synology DSM 7.x** optimiert - Docker und Docker Compose müssen auf der NAS installiert sein - Gitea Actions muss in Gitea aktiviert sein - PHP 8.4 und Laravel 12 werden verwendet ## 🆘 Support Bei Fragen oder Problemen: 1. Prüfe die Troubleshooting-Sektionen in den Dokumentations-Dateien 2. Prüfe Logs: `docker logs gitea-runner` und `docker logs laravel_app` 3. Verifiziere alle Secrets und Environment-Variablen 4. Stelle sicher, dass alle Ports verfügbar sind --- **Erstellt am:** 2025-12-17 **Version:** 1.0 **Für:** Synology NAS Deployment mit Gitea Actions