Server-Setup und Projektdeployment auf Laravel Forge
Dieses Dokument beschreibt Schritt für Schritt, wie man über Laravel Forge einen Hetzner-Server einrichtet und ein Projekt deployt.
1. Server direkt über Forge erstellen
- In Forge anmelden und zu Servers → New Server gehen.
- Provider auswählen: Hetzner.
- Server konfigurieren:
- Server-Typ: Application Server
- Größe: passend zum Projekt
- Region: z.B. Falkenstein
- Datenbank: In der Regel MariaDB
- Die Credentials (sudo und db root) im KeePass speichern
- Neuer Ordner für neues Projekt
- Schema: <Projektname> <servername> sudo und <Projektname> <servername> db root
2. Den eigenen SSH Key auf dem Server (via in Forge) hinterlegen
- Navigiere zu Settings → SSH.
- Neuen SSH Key hinzufügen. Falls im Account bereits ein Key hinterlegt ist, kann dieser verwendet werden.
3. Site auf Forge anlegen
- Sites → New Site
- Angaben:
- Type: Other
- Domain: Immer custom Domain <projektname>.farbcode.net (kein redirect von www)
- Repository: GitHub verbinden
- Branch wählen
4. Deployment einrichten
- {site} → Settings → Deployments
- Deployment Script von einem anderen Projekt kopieren (z.B. kjp, oasebw oder smartrecycle01) oder anpassen
- Shared paths anpassen (i.d.R. From storage To app/storage)
- Storage-Ordner mit leeren Ordnern füllen
- storage
- framework
- cache
- sessions
- testing
- views
- logs
- Health Checks aktivieren
5. Domains und Zertifikate einrichten
- {site} → Domains
- <projektname>.farbcode.net zur primären Domain machen
- In der Regel mnoch ws.<projektname>.farbcode.net anlegen (auch als custom Domain)
- Let's Encrypt Zertifikate für beide Domains erstellen.
6. Nginx Einstellungen anpassen
- {site} → Domains → Edit Nginx configuration
- "General Site configuration" anpassen (vgl. andere Projekte (z.B. kjp, oasebw oder smartrecycle01))
- Projektspezifische Konfiguration anpassen (vgl. andere Projekte (z.B. kjp, oasebw oder smartrecycle01))
7. Environment Variables setzen
- Mit dem Remote Host verbinden (SSH)
.envund.env.clientim Projekt-Root erstellen (den genauen Pfad mit dem deployment Script abgleichen)
8. Datenbank anlegen
- Auf dem Server neue Datenbank (inkl. User) anlegen (Server -> Storage -> Database)
- Zugangsdaten direkt in die .env eintragen (müssen i.d.R. nicht ins KeePass übernommen werden.)
9. Projekt deployen
10. Services & Scheduler einrichten
- Laravel Pulse
- Laravel Reverb
- Laravel Horizon
- Cron Scheduler
