# Gitea Setup für Florale Emotion Ticket-System ## Überblick Dieses Dokument beschreibt die Einrichtung von Gitea als Ticket-System für Florale Emotion. Gitea wird verwendet, um Kundenanfragen automatisch als Issues zu verwalten und dem Team (Veronika und Corinna) eine strukturierte Arbeitsweise zu ermöglichen. ## Gitea Installation ### Voraussetzungen - Linux Server (Ubuntu/Debian empfohlen) - Docker und Docker Compose - Domain oder Subdomain (z.B. tickets.florale-emotion.de) - SSL-Zertifikat ### Installation mit Docker Compose ```yaml # docker-compose.yml version: "3.8" services: gitea: image: gitea/gitea:latest container_name: florale-emotion-gitea environment: - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=postgres - GITEA__database__HOST=db:5432 - GITEA__database__NAME=gitea - GITEA__database__USER=gitea - GITEA__database__PASSWD=gitea_password restart: always networks: - gitea volumes: - gitea_data:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" - "222:22" depends_on: - db db: image: postgres:14 restart: always environment: - POSTGRES_USER=gitea - POSTGRES_PASSWORD=gitea_password - POSTGRES_DB=gitea networks: - gitea volumes: - postgres_data:/var/lib/postgresql/data networks: gitea: external: false volumes: gitea_data: postgres_data: ``` ### Erste Einrichtung 1. **Gitea starten:** ```bash docker-compose up -d ``` 2. **Initial Setup über Web-Interface:** - Öffne http://your-domain:3000 - Wähle PostgreSQL als Datenbank - Erstelle Admin-Account 3. **SSL einrichten (mit nginx):** ```nginx server { listen 443 ssl http2; server_name tickets.florale-emotion.de; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` ## Benutzer-Setup ### Admin-Account - **Username:** admin - **E-Mail:** admin@florale-emotion.de - **Rolle:** Site Administrator ### Team-Accounts #### Veronika ```bash # Über Gitea Admin Panel erstellen Username: veronika E-Mail: veronika@florale-emotion.de Rolle: User (mit Admin-Rechten für florale-emotion Organisation) ``` #### Corinna ```bash # Über Gitea Admin Panel erstellen Username: corinna E-Mail: corinna@florale-emotion.de Rolle: User (mit Admin-Rechten für florale-emotion Organisation) ``` ### Organisation erstellen 1. **Organisation "florale-emotion" erstellen:** - Name: florale-emotion - Beschreibung: Florale Emotion - Blumen für besondere Momente - Sichtbarkeit: Privat 2. **Team-Mitglieder hinzufügen:** - Veronika: Owner - Corinna: Owner ## Repository Setup ### Tickets Repository ```bash # Repository erstellen Name: tickets Beschreibung: Kundenanfragen und Ticket-Management Sichtbarkeit: Privat Template: Leer README: Ja .gitignore: Keine Lizenz: Keine ``` ### Issue Templates #### 1. Kundenanfrage Template ```markdown --- name: Kundenanfrage about: Template für neue Kundenanfragen title: 'Neue Anfrage: [EVENT_TYPE] - [CUSTOMER_NAME]' labels: 'kunde-anfrage' assignees: 'veronika, corinna' --- ## Kundeninformationen - **Name:** - **E-Mail:** - **Telefon:** - **Eingegangen am:** ## Event-Details - **Art des Events:** - **Gewünschtes Datum:** - **Anzahl Gäste:** - **Budget:** - **Ort:** ## Nachricht ## Nächste Schritte - [ ] Erstberatung terminieren - [ ] Angebot erstellen - [ ] Kunde kontaktieren ## Notizen ``` #### 2. Hochzeit Template ```markdown --- name: Hochzeitsanfrage about: Spezifisches Template für Hochzeitsanfragen title: 'Hochzeit: [BRIDE_NAME] & [GROOM_NAME] - [DATE]' labels: 'hochzeit, kunde-anfrage' assignees: 'veronika' --- ## Brautpaar - **Braut:** - **Bräutigam:** - **Hochzeitsdatum:** - **Location:** ## Gewünschte Services - [ ] Brautstrauß - [ ] Anstecker - [ ] Kirchenschmuck - [ ] Tischdekorationen - [ ] Traubogen - [ ] Autoschmuck ## Stil & Farben - **Farbschema:** - **Stil:** - **Lieblings-Blumen:** ## Budget & Timeline - **Budget:** - **Beratungstermin:** - **Deadline:** ## Checkliste - [ ] Erstberatung - [ ] Angebot erstellt - [ ] Auftrag bestätigt - [ ] Materialien bestellt - [ ] Arrangements erstellt - [ ] Lieferung/Aufbau - [ ] Nachbetreuung ``` ### Labels Setup ```bash # Standard Labels kunde-anfrage (blau) - Neue Kundenanfrage hochzeit (rosa) - Hochzeitsbezogen beerdigung (grau) - Trauerfloristik corporate (grün) - Firmenevent privat (gelb) - Private Feier # Status Labels neu (rot) - Neue Anfrage in-bearbeitung (orange) - Wird bearbeitet angebot-erstellt (blau) - Angebot gesendet bestätigt (grün) - Auftrag bestätigt abgeschlossen (dunkelgrün) - Erfolgreich abgeschlossen storniert (grau) - Storniert # Priorität hoch (rot) - Hohe Priorität mittel (gelb) - Mittlere Priorität niedrig (grün) - Niedrige Priorität # Team veronika (lila) - Veronika zugewiesen corinna (türkis) - Corinna zugewiesen ``` ### Milestones ```bash # Quartalsweise Milestones Q1 2024 - Erstes Quartal 2024 Q2 2024 - Zweites Quartal 2024 Q3 2024 - Drittes Quartal 2024 Q4 2024 - Viertes Quartal 2024 # Event-spezifische Milestones Hochzeitssaison 2024 - Mai bis September Weihnachtsgeschäft 2024 - November bis Dezember ``` ## API Integration ### API Token erstellen 1. **Persönlichen Access Token generieren:** - Gitea → Settings → Applications → Generate New Token - Name: "Website Integration" - Scopes: repo, write:issue 2. **Token in Backend konfigurieren:** ```javascript // backend/.env GITEA_URL=https://tickets.florale-emotion.de GITEA_TOKEN=your_generated_token_here ``` ### Automatische Issue-Erstellung Das Backend erstellt automatisch Issues aus Website-Anfragen: ```javascript // Beispiel Issue-Erstellung const issue = { title: `Neue Anfrage: ${eventType} - ${firstName} ${lastName}`, body: issueBody, labels: ['kunde-anfrage', eventType.toLowerCase()], assignees: ['veronika', 'corinna'] }; ``` ## Workflow ### 1. Kundenanfrage eingeht - Automatisches Issue wird erstellt - E-Mail-Benachrichtigung an Team - Status: "neu" ### 2. Erste Bearbeitung - Team-Mitglied nimmt Issue an - Status ändern zu "in-bearbeitung" - Erstberatung terminieren ### 3. Angebot erstellen - Angebot als Kommentar hinzufügen - Status ändern zu "angebot-erstellt" - Kunde kontaktieren ### 4. Auftrag bestätigt - Status ändern zu "bestätigt" - Milestone zuweisen - Detailplanung beginnen ### 5. Projekt abgeschlossen - Status ändern zu "abgeschlossen" - Issue schließen - Kundenfeedback einholen ## E-Mail-Benachrichtigungen ### Gitea E-Mail Setup ```ini # app.ini Konfiguration [mailer] ENABLED = true HOST = smtp.mailbox.org:587 FROM = tickets@florale-emotion.de USER = tickets@florale-emotion.de PASSWD = your_email_password SKIP_VERIFY = false USE_SENDMAIL = false SENDMAIL_PATH = sendmail SENDMAIL_ARGS = SENDMAIL_TIMEOUT = 5m ``` ### Benachrichtigungs-Einstellungen - **Neue Issues:** Sofortige Benachrichtigung - **Kommentare:** Sofortige Benachrichtigung - **Status-Änderungen:** Sofortige Benachrichtigung - **Zuweisungen:** Sofortige Benachrichtigung ## Backup & Wartung ### Automatisches Backup ```bash #!/bin/bash # backup-gitea.sh DATE=$(date +%Y%m%d_%H%M%S) BACKUP_DIR="/backups/gitea" # Gitea Daten sichern docker exec florale-emotion-gitea gitea dump -c /data/gitea/conf/app.ini # Backup verschieben mv gitea-dump-*.zip $BACKUP_DIR/gitea-backup-$DATE.zip # Alte Backups löschen (älter als 30 Tage) find $BACKUP_DIR -name "gitea-backup-*.zip" -mtime +30 -delete ``` ### Cron Job einrichten ```bash # Täglich um 2 Uhr morgens 0 2 * * * /path/to/backup-gitea.sh ``` ## Monitoring ### Gitea Health Check ```bash #!/bin/bash # health-check.sh GITEA_URL="https://tickets.florale-emotion.de" STATUS=$(curl -s -o /dev/null -w "%{http_code}" $GITEA_URL) if [ $STATUS -eq 200 ]; then echo "Gitea is running" else echo "Gitea is down - Status: $STATUS" # Benachrichtigung senden fi ``` ### Log Monitoring ```bash # Gitea Logs überwachen docker logs -f florale-emotion-gitea # Wichtige Log-Events grep -i error /var/log/gitea/gitea.log grep -i "failed login" /var/log/gitea/gitea.log ``` ## Sicherheit ### Sicherheits-Einstellungen 1. **Starke Passwörter:** Mindestens 12 Zeichen 2. **2FA aktivieren:** Für alle Admin-Accounts 3. **IP-Whitelist:** Nur bekannte IPs erlauben 4. **Regular Updates:** Gitea regelmäßig aktualisieren 5. **SSL/TLS:** Immer verschlüsselte Verbindungen ### Firewall-Regeln ```bash # UFW Firewall ufw allow 22/tcp # SSH ufw allow 80/tcp # HTTP (Redirect) ufw allow 443/tcp # HTTPS ufw deny 3000/tcp # Gitea direkt blockieren ``` ## Troubleshooting ### Häufige Probleme #### 1. Gitea startet nicht ```bash # Logs prüfen docker logs florale-emotion-gitea # Container neu starten docker-compose restart gitea ``` #### 2. Datenbank-Verbindung fehlgeschlagen ```bash # PostgreSQL Status prüfen docker logs florale-emotion-gitea-db # Datenbank neu starten docker-compose restart db ``` #### 3. E-Mail-Versand funktioniert nicht ```bash # SMTP-Einstellungen prüfen # app.ini Konfiguration überprüfen # Firewall-Regeln für Port 587 prüfen ``` ### Support-Kontakte - **Gitea Dokumentation:** https://docs.gitea.io/ - **Community Forum:** https://discourse.gitea.io/ - **GitHub Issues:** https://github.com/go-gitea/gitea/issues