FreeScout auf dem Synology NAS installieren: Helpdesk-Postfach für Support-Teams
FreeScout bringt Shared Inbox, Ticket-Zuweisung und Auto-Reply auf dein Synology NAS – als selbst gehosteter HelpScout-Klon ohne SaaS-Abo. Diese Anleitung zeigt den vollständigen Compose-Stack mit MariaDB und IMAP/SMTP-Anbindung, inklusive Verifikation nach jedem Schritt.

Wer im KMU einen support@-E-Mail-Account mit dem Team teilt, kennt das Problem: doppelte Antworten, übersehene Mails, kein Überblick wer gerade an welcher Anfrage arbeitet. FreeScout löst dieses „CC-Chaos" durch eine Shared Inbox mit Ticket-Zuweisung, Kollisionserkennung und automatischen Antwortregeln – ohne monatliches SaaS-Abo (HelpScout kostet ab 50 USD/Monat). Das Projekt ist ein aktiv gepflegter Open-Source-HelpScout-Klon (MIT-Lizenz, PHP/Laravel, Version 1.8.224 vom Juni 2026, 4.300+ GitHub-Stars), läuft komplett in Docker und ist damit ideal für das Synology NAS als hausinterner Support-Server für 2–20 Agenten.
Voraussetzungen
- Synology NAS mit DSM 7.2 oder höher, x86_64- oder ARM64-CPU
- Mindestens 2 GB RAM (empfohlen: 4 GB), mindestens 5 GB freier Speicher auf
/volume1 - Container Manager aus dem Synology Package Center installiert
- Eigene Domain mit SSL-Zertifikat, z. B.
support.firma.de(Let's Encrypt über DSM-Zertifikatsverwaltung) - E-Mail-Konto mit IMAP- und SMTP-Zugang, dediziert für FreeScout (z. B.
support@firma.de) - SMTP-Zugangsdaten des Ausgangsservers (Host, Port, Benutzername, Passwort)
- Internetzugang des NAS für den Image-Download (~220 MB von ghcr.io)
- Hinweis für Microsoft-365-Nutzer: M365 hat klassisches IMAP mit Passwort seit Oktober 2022 deaktiviert – lies zuerst Exchange Online: SPF, DKIM und DMARC für die eigene Domäne, bevor du IMAP einrichtest
Schritt 1: Ordnerstruktur anlegen
Öffne die File Station und lege folgende Ordner an. Falls du dir unsicher bist, wie Ordner und Berechtigungen auf dem Synology NAS funktionieren, hilft die Grundanleitung Docker-Ordner und Berechtigungen auf dem Synology NAS.
/volume1/docker/freescout/
/volume1/docker/freescout/data
/volume1/docker/freescout/logs
/volume1/docker/freescout/db
Der Container läuft als www-data (UID 33). Falls der erste Start mit einem Berechtigungsfehler abbricht, führe einmalig in der DSM-Aufgabenplanung als Root aus:
chmod 777 /volume1/docker/freescout/data
Verifizieren: Alle drei Unterordner (data, logs, db) erscheinen in der File Station unter /volume1/docker/freescout.
Schritt 2: compose.yaml erstellen
Erstelle eine neue Datei compose.yaml im Ordner /volume1/docker/freescout. Das kannst du direkt im Container Manager (Projekt-Tab > Neues Projekt > YAML einfügen) tun – oder per SSH. Eine Einführung in den Compose-Workflow im Container Manager findest du unter Container Manager: Docker-Compose-Projekt anlegen, starten und aktualisieren.
Passe mindestens folgende Werte an deine Umgebung an, bevor du den Stack startest:
APP_URL: deine externe HTTPS-URL, exakt ohne abschließendes/ADMIN_EMAILundADMIN_PASS: Zugangsdaten für den ersten Admin-AccountDB_PASS/MYSQL_PASSWORD: identische Passwörter in beiden ServicesMYSQL_ROOT_PASSWORD: sicheres MariaDB-Root-PasswortFREESCOUT_MAIL_HOST,FREESCOUT_MAIL_USERNAME,FREESCOUT_MAIL_PASSWORD: SMTP-Zugangsdaten deines Ausgangsservers
services:
freescout-db:
image: mariadb:11.4
container_name: freescout-db
restart: on-failure:5
environment:
MYSQL_ROOT_PASSWORD: "RootPassSicher99"
MYSQL_DATABASE: "freescout"
MYSQL_USER: "freescoutuser"
MYSQL_PASSWORD: "DbPass_Sicher42"
volumes:
- /volume1/docker/freescout/db:/var/lib/mysql
networks:
- freescout-net
freescout:
image: ghcr.io/nfrastack/container-freescout:latest
container_name: freescout
restart: on-failure:5
depends_on:
- freescout-db
ports:
- "5135:80"
environment:
# --- Pflicht ---
APP_URL: "https://support.firma.de"
ADMIN_EMAIL: "admin@firma.de"
ADMIN_PASS: "SicheresPasswort123!"
DB_TYPE: "mariadb"
DB_HOST: "freescout-db"
DB_NAME: "freescout"
DB_USER: "freescoutuser"
DB_PASS: "DbPass_Sicher42"
# --- Reverse Proxy / SSL ---
ENABLE_SSL_PROXY: "TRUE"
# --- App-Einstellungen ---
SETUP_TYPE: "AUTO"
ENABLE_AUTO_UPDATE: "FALSE"
TZ: "Europe/Berlin"
ADMIN_FIRST_NAME: "Support"
ADMIN_LAST_NAME: "Admin"
# --- Ausgehende E-Mail (SMTP) ---
FREESCOUT_MAIL_DRIVER: "smtp"
FREESCOUT_MAIL_HOST: "smtp.ionos.de"
FREESCOUT_MAIL_PORT: "587"
FREESCOUT_MAIL_USERNAME: "support@firma.de"
FREESCOUT_MAIL_PASSWORD: "MailPasswort"
FREESCOUT_MAIL_ENCRYPTION: "tls"
FREESCOUT_APP_LOCALE: "de"
FREESCOUT_APP_TIMEZONE: "Europe/Berlin"
volumes:
- /volume1/docker/freescout/data:/data
- /volume1/docker/freescout/logs:/logs
networks:
- freescout-net
networks:
freescout-net:
driver: bridge
Wichtige Hinweise zur compose.yaml:
- Image: Das korrekte aktuelle Image ist
ghcr.io/nfrastack/container-freescout:latest. Das Projekt wurde vom ursprünglichen Maintainer an nfrastack übergeben. Das alteghcr.io/tiredofit/docker-freescout:latestaus veralteten Anleitungen liefert noch v1 – nicht verwenden. - Stabiles Tag: Wenn du unkontrollierte Updates vermeiden willst, pin auf
ghcr.io/nfrastack/container-freescout:2.1.0-php8.4. - ENABLE_AUTO_UPDATE=FALSE: Verhindert, dass bei jedem Container-Neustart automatisch die neueste FreeScout-Version gezogen wird – wichtig für den Produktivbetrieb.
- restart: on-failure:5: MariaDB und FreeScout starten beim ersten Hochfahren u. U. nicht perfekt synchronisiert. Fünf automatische Neustarts reichen, damit FreeScout nach dem DB-Start eine Verbindung bekommt.
| Parameter | Wert | Hinweis |
|---|---|---|
| Image (aktuell) | ghcr.io/nfrastack/container-freescout:latest | PHP 8.4, Alpine, ~220 MB, amd64 + arm64 |
| Image (gepinnt) | ghcr.io/nfrastack/container-freescout:2.1.0-php8.4 | Für reproduzierbare Deployments |
| Datenbank | mariadb:11.4 | LTS bis Mai 2029, empfohlen |
| Port | 5135:80 | Extern 5135 → intern 80; HTTPS via Reverse Proxy |
| Volume App-Daten | /volume1/docker/freescout/data:/data | Sessions, Cache, Uploads, Module – Pflicht |
| Volume Logs | /volume1/docker/freescout/logs:/logs | Nginx, PHP, Laravel-Scheduler; in v2: /logs (nicht /www/logs) |
| Volume Datenbank | /volume1/docker/freescout/db:/var/lib/mysql | MariaDB-Datenbankdateien – Pflicht |
Verifizieren: Die YAML-Syntax ist fehlerfrei, wenn der Container Manager beim Anlegen des Projekts keine roten Fehlermeldungen zeigt und beide Services (freescout und freescout-db) im Projekt-Tab aufgelistet sind.
Schritt 3: Container starten und Erstinstallation abwarten
Starte das Projekt im Container Manager über den Button „Starten" oder per SSH:
docker compose -f /volume1/docker/freescout/compose.yaml up -d
Beim allerersten Start führt FreeScout automatisch alle Datenbank-Migrationen durch (SETUP_TYPE=AUTO). Dieser Vorgang dauert je nach NAS-CPU 2–5 Minuten. Brich ihn nicht ab. Beobachte den Fortschritt live:
docker logs freescout -f
Die Installation ist abgeschlossen, sobald im Log die Zeile erscheint:
FreeScout is ready
Verifizieren: Rufe http://NAS-IP:5135 im Browser auf. Du solltest die FreeScout-Anmeldeseite sehen. Melde dich mit ADMIN_EMAIL und ADMIN_PASS an. Bei einem „502 Bad Gateway" oder weißem Bild warte weitere 1–2 Minuten und lade neu.
Schritt 4: Synology Reverse Proxy und HTTPS einrichten
Damit FreeScout unter https://support.firma.de erreichbar ist und der APP_URL-Wert stimmt, richtest du einen Reverse-Proxy-Eintrag ein. Gehe in der DSM-Systemsteuerung zu Anmeldeportal > Erweitert > Reverse-Proxy und lege eine neue Regel an:
- Quellprotokoll: HTTPS, Port 443, Hostname:
support.firma.de - Ziel: HTTP,
localhost, Port5135 - Zertifikat: Let's Encrypt-Zertifikat für
support.firma.de(DSM-Zertifikatsverwaltung)
Öffne außerdem unter Systemsteuerung > Sicherheit > Firewall Port 5135 für das lokale Netzwerk. Eine detaillierte Anleitung zur DSM-Firewall findest du unter DSM-Firewall auf dem Synology NAS: Ports für Docker-Container freigeben.
Warum ENABLE_SSL_PROXY=TRUE zwingend nötig ist: Ohne diesen Wert erkennt FreeScout intern nur HTTP, generiert aber absolute URLs mit HTTP. Der Reverse Proxy leitet jedoch auf HTTPS um – das Ergebnis ist ein endloser Redirect-Loop, der den Browser blockiert.
Verifizieren: Rufe https://support.firma.de auf. Das Schloss-Symbol im Browser zeigt ein gültiges Zertifikat. Die FreeScout-Anmeldeseite lädt vollständig ohne Redirect-Fehler (ERR_TOO_MANY_REDIRECTS).
Schritt 5: SMTP-Versand testen
Melde dich als Admin an und gehe zu Admin-Panel > Einstellungen > E-Mail. Klicke auf Test-E-Mail senden. FreeScout verwendet die in der compose.yaml eingetragenen FREESCOUT_MAIL_*-Variablen für den Ausgang. Diese werden beim Container-Start automatisch in die Laravel-.env-Konfiguration geschrieben.
| Variable | Beispielwert | Bedeutung |
|---|---|---|
| FREESCOUT_MAIL_DRIVER | smtp | Ausgehender Mailtreiber |
| FREESCOUT_MAIL_HOST | smtp.ionos.de | SMTP-Server deines Providers |
| FREESCOUT_MAIL_PORT | 587 | 587 = STARTTLS, 465 = SSL/TLS |
| FREESCOUT_MAIL_USERNAME | support@firma.de | SMTP-Benutzername |
| FREESCOUT_MAIL_PASSWORD | MailPasswort | SMTP-Passwort |
| FREESCOUT_MAIL_ENCRYPTION | tls | tls für STARTTLS, ssl für SSL/TLS |
Verifizieren: Die Test-E-Mail kommt innerhalb von 1–2 Minuten im Empfängerpostfach an. Im FreeScout-Admin-Panel erscheint die grüne Meldung „E-Mail wurde erfolgreich gesendet". Kommt keine Mail an, prüfe den Container-Log (docker logs freescout) auf SMTP-Fehlermeldungen wie Connection refused oder Authentication failed.
Schritt 6: Mailbox anlegen und IMAP einrichten
Im Gegensatz zum SMTP-Ausgang wird der IMAP-Eingang nicht per Compose-Variable konfiguriert, sondern nach dem ersten Login in der Web-UI. Gehe zu Admin-Panel > Mailboxen > Neue Mailbox anlegen und fülle die Felder aus:
- Name: z. B. „Support"
- E-Mail-Adresse:
support@firma.de - IMAP-Server: z. B.
imap.ionos.de - IMAP-Port: 993 (SSL/TLS) oder 143 (STARTTLS)
- Benutzername:
support@firma.de - Passwort: dein IMAP-Passwort
FreeScout pollt das Postfach automatisch über den eingebauten Cron-Scheduler – kein externer Cronjob auf dem NAS nötig. Eingehende Mails werden nach dem Fetch als gelesen markiert; achte darauf, dass kein anderer E-Mail-Client dasselbe IMAP-Konto gleichzeitig verwendet, da das den Fetch-Mechanismus stört.
Microsoft-365-Nutzer: Klassisches IMAP mit Benutzername/Passwort ist bei M365 seit Oktober 2022 deaktiviert. Du benötigst das FreeScout OAuth-Modul (im Marketplace) oder einen eigenen IMAP-Server. Mehr dazu in der Anleitung Exchange Online: SPF, DKIM und DMARC für die eigene Domäne.
Verifizieren: Klicke in der Mailbox-Konfiguration auf Verbindung testen – FreeScout meldet „Verbindung erfolgreich". Schicke dann eine Test-E-Mail an support@firma.de. Nach maximal 2 Minuten erscheint die Mail als neue Konversation unter Konversationen.
Schritt 7: Antwort-Roundtrip und Auto-Reply testen
Nach dem erfolgreichen IMAP-Test prüfst du den vollständigen Roundtrip:
- Öffne die frisch eingegangene Konversation in FreeScout.
- Verfasse eine Antwort über den Antwort-Editor und klicke auf Senden.
- Prüfe im Postfach des ursprünglichen Absenders, ob die Antwort ankommt (SMTP-Weg).
- Antworte auf diese Antwort – FreeScout soll die Folge-Mail der bestehenden Konversation zuordnen (Thread-Erkennung via
In-Reply-To-Header).
Die Auto-Reply-Funktion (automatische Eingangsbestätigung) ist im FreeScout-Core enthalten. Aktiviere sie unter Admin-Panel > Mailboxen > [Mailbox bearbeiten] > Auto-Reply. Für erweiterte Regelwerke (z. B. Abwesenheitszeiten) gibt es die kostenlosen Module „Office Hours" und „Noreply Emails" im FreeScout-Marketplace.
Verifizieren: Der Absender erhält die Antwort aus FreeScout. Die Folge-Mail des Absenders erscheint in derselben Konversation (nicht als neue). Ist Auto-Reply aktiviert, kommt bei der ersten eingehenden Mail eine automatische Eingangsbestätigung an.
Troubleshooting / Typische Fehler
- „ERR_TOO_MANY_REDIRECTS" nach dem Login:
ENABLE_SSL_PROXY=TRUEfehlt oder ist falsch geschrieben. Trage es in der compose.yaml ein und starte den Container neu:docker compose up -d --force-recreate freescout. - Container startet, aber Web-UI lädt nicht (502): Der erste Start dauert 2–5 Minuten. Beobachte
docker logs freescout -fbis „FreeScout is ready" erscheint. Kein Abbruch. - „SQLSTATE[HY000] [2002] Connection refused" im Log: FreeScout hat vor MariaDB gestartet. Durch
restart: on-failure:5versucht FreeScout automatisch den Neustart. Falls der Fehler dauerhaft bleibt, prüfe obfreescout-dbläuft:docker ps | grep freescout-db. - E-Mail-Fetch funktioniert nicht: Prüfe, ob der Scheduler im Container läuft:
docker exec freescout ps aux | grep artisan. Es sollte einartisan schedule:run-Prozess sichtbar sein. Außerdem darf das IMAP-Konto nicht gleichzeitig von Outlook, Thunderbird o. Ä. geöffnet sein. - IMAP-Verbindung schlägt bei Microsoft 365 fehl: Basic Auth für IMAP ist bei M365 deaktiviert. Entweder OAuth-Modul aus dem FreeScout Marketplace oder einen separaten IMAP/SMTP-Server nutzen.
- „FreeScout is ready" erscheint nie: Prüfe Berechtigungen:
ls -la /volume1/docker/freescout/data. Der Container braucht Schreibzugriff (UID 33). Falls nötig,chmod 777 /volume1/docker/freescout/dataeinmalig ausführen. - Altes tiredofit-Image verwendet: Falls du
ghcr.io/tiredofit/docker-freescout:latestaus einer alten Anleitung kopiert hast, bekommst du v1 ohne aktuellen Support. Ersetze es durchghcr.io/nfrastack/container-freescout:latestund passe den Logs-Volume-Pfad von/www/logsauf/logsan. - APP_URL mit abschließendem Schrägstrich oder als HTTP: FreeScout generiert dann falsche Asset-URLs. Korrekt:
https://support.firma.de– ohne/am Ende, mithttps://.
Häufige Fragen
Wie richte ich den IMAP-Empfang für support@firma.de ein?
Die IMAP-Konfiguration erfolgt ausschließlich in der Web-UI, nicht per Compose-Variable. Nach dem ersten Login: Admin-Panel > Mailboxen > Neue Mailbox anlegen, dort IMAP-Host, Port (993/SSL oder 143/STARTTLS), Benutzername und Passwort eintragen. FreeScout pollt das Postfach dann automatisch alle paar Minuten über den eingebauten Cron-Scheduler – kein externer Cronjob auf dem NAS nötig.
Kann ich mehrere Postfächer in einer Installation betreiben?
Ja. FreeScout unterstützt beliebig viele Mailboxen in einer Installation. Jede bekommt eigene IMAP/SMTP-Einstellungen und kann unterschiedlichen Agenten oder Teams zugewiesen werden. Ein Container, eine Datenbank, beliebig viele Postfächer – ideal für support@, sales@, billing@ in einem KMU.
Was ist der Unterschied zu Chatwoot und GLPI?
FreeScout ist rein E-Mail-fokussiert – die ideale Einstiegslösung als HelpScout-Ersatz für KMU mit einem bestehenden support@-Postfach. Chatwoot bietet zusätzlich Live-Chat, WhatsApp und weitere Kanäle und eignet sich für Multichannel-Support. GLPI ist ein vollständiges ITSM-System mit Asset-Management, CMDB und Change-Management für IT-Abteilungen.
Wie aktiviere ich die deutschsprachige Oberfläche?
Setze FREESCOUT_APP_LOCALE=de in der compose.yaml – das greift beim Container-Start automatisch. Alternativ nach dem Login: Admin-Panel > Einstellungen > Sprache > Deutsch auswählen. Das deutsche Sprachpaket ist im FreeScout-Marketplace kostenlos verfügbar.
Wie migriere ich vom alten tiredofit-Image auf nfrastack?
Lege zuerst ein Backup von /volume1/docker/freescout/data und /volume1/docker/freescout/db an. Aktualisiere dann die compose.yaml: Image auf ghcr.io/nfrastack/container-freescout:latest ändern, Logs-Volume-Pfad von /www/logs auf /logs anpassen. Container stoppen (docker compose down), neu starten (docker compose up -d). Der Container migriert die Konfigurationsdatei beim ersten Start automatisch.
Soll ich ENABLE_AUTO_UPDATE auf TRUE oder FALSE setzen?
Für den Produktivbetrieb: FALSE. Mit TRUE lädt der Container bei jedem Neustart die neueste FreeScout-Version, führt Datenbank-Migrationen aus und verzögert den Start unkontrolliert. Führe Updates stattdessen kontrolliert durch: docker compose pull && docker compose up -d, wenn du Zeit hast das Ergebnis zu prüfen.
Fazit
FreeScout ist der pragmatische E-Mail-Helpdesk für KMU, die sofort produktiv werden wollen, ohne ein teures SaaS-Abo. Der Compose-Stack mit MariaDB ist in unter 35 Minuten aufgesetzt, der SMTP-Ausgang läuft über Umgebungsvariablen, und die IMAP-Konfiguration in der Web-UI dauert keine fünf Minuten. Wer bisher mit einer geteilten Mailbox in Outlook oder Thunderbird gearbeitet hat, wird die Kollisionserkennung, die Ticket-Zuweisung und die internen Notizen von FreeScout sofort zu schätzen wissen. Für Teams, die über E-Mail hinausgehen wollen, ist Chatwoot (Multichannel) oder GLPI (ITSM) der nächste Schritt – die Links dazu findest du im nächsten Abschnitt.
Weiterführende Anleitungen und Quellen
- Container Manager auf dem Synology NAS: Docker-Compose-Projekt anlegen, starten und aktualisieren
- DSM-Firewall auf dem Synology NAS: Ports für Docker-Container freigeben
- Exchange Online: SPF, DKIM und DMARC für die eigene Domäne – wichtig bei Microsoft 365 und IMAP-OAuth
- Chatwoot auf dem Synology NAS: Kundensupport mit Live-Chat (Multichannel)
- GLPI auf dem Synology NAS: Helpdesk und IT-Asset-Management für KMU
Offizielle Quellen: nfrastack/container-freescout auf GitHub (README mit allen Umgebungsvariablen), freescout-helpdesk/freescout auf GitHub (Hauptprojekt, Versionshistorie), FreeScout Installation Guide (offizielles Wiki).