468 lines
9.7 KiB
Markdown
468 lines
9.7 KiB
Markdown
# 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
|
|
<!-- .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
|
|
```markdown
|
|
<!-- .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
|
|
|
|
```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 |