florale-emotion/docs/gitea-setup.md

9.7 KiB

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

# 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:
docker-compose up -d
  1. Initial Setup über Web-Interface:

  2. SSL einrichten (mit 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

Team-Accounts

Veronika

# Über Gitea Admin Panel erstellen
Username: veronika
E-Mail: veronika@florale-emotion.de
Rolle: User (mit Admin-Rechten für florale-emotion Organisation)

Corinna

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

# Repository erstellen
Name: tickets
Beschreibung: Kundenanfragen und Ticket-Management
Sichtbarkeit: Privat
Template: Leer
README: Ja
.gitignore: Keine
Lizenz: Keine

Issue Templates

1. Kundenanfrage Template

<!-- .gitea/issue_template/kundenanfrage.md -->
---
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
<!-- Kundennachricht hier einfügen -->

## Nächste Schritte
- [ ] Erstberatung terminieren
- [ ] Angebot erstellen
- [ ] Kunde kontaktieren

## Notizen
<!-- Interne Notizen hier -->

2. Hochzeit Template

<!-- .gitea/issue_template/hochzeit.md -->
---
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

# 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

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

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

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

# 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

#!/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

# Täglich um 2 Uhr morgens
0 2 * * * /path/to/backup-gitea.sh

Monitoring

Gitea Health Check

#!/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

# 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

# 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

# Logs prüfen
docker logs florale-emotion-gitea

# Container neu starten
docker-compose restart gitea

2. Datenbank-Verbindung fehlgeschlagen

# PostgreSQL Status prüfen
docker logs florale-emotion-gitea-db

# Datenbank neu starten
docker-compose restart db

3. E-Mail-Versand funktioniert nicht

# SMTP-Einstellungen prüfen
# app.ini Konfiguration überprüfen
# Firewall-Regeln für Port 587 prüfen

Support-Kontakte