Projekt Mailpiler mit Docker Compose ausrollen
Ich habe auf Github ein Projekt ins Leben gerufen, um den Mailpiler auf einfache und unkomplizierte Art und Weise in einem Docker-Compose-System zum Laufen zu bringen.
Mehr Informationen über das Piler-Projekt findet hier:
DockerHub:
https://hub.docker.com/r/simatec/piler
Github:
https://github.com/simatec/piler-docker
Wie ihr den Mailpiler auf euren System schnell und einfach innerhalb von 2-3 Minuten zum laufen bekommt, erkläre ich hier in einem kurzen Tutorial.
Installationsanleitung:
Docker und Abhängigkeiten installieren:
apt install curl git -y
curl -sSL https://get.docker.com/ | CHANNEL=stable sh
systemctl enable --now docker
Docker-Compose installieren:
curl -L https://github.com/docker/compose/releases/download/v$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
System neustarten:
reboot now
Repository clonen:
cd /opt
git clone https://github.com/simatec/piler-docker.git
cd /opt/piler-docker
Installation und ausrollen von Mailpiler:
Während der Installation wird ein Assistent gestartet, in dem du alle deinen Daten wie Domain usw. eintragen musst.
bash install-piler.sh
Herzlichen Glückwunsch, dein Mailpiler ist installiert…
Wenn du Let’s Encrypt aktiviert hast, kannst du den Piler unter „https://your-piler-domain“ erreichen.
Wenn Let’s Encrypt deaktiviert ist, findest du den Piler unter „http://your-piler-domain“ oder unter „http://your-local-IP„
Der Standard-Login ist admin@local und das Passwort ist pilerrocks
Nach der Installation können jederzeit Änderungen in der piler.conf vorgenommen werden und das Installationsskript erneut ausgeführt werden.
Updates installieren:
Du kannst die folgenden Befehle ausführen, um die Container zu aktualisieren. Dabei werden die aktuellen yml-Dateien von Github heruntergeladen und die Container bei Bedarf aktualisiert.
cd /opt/piler-docker bash install-piler.sh
Du erhältst ein Auswahlmenü mit den folgenden Optionen:
1) Install-Piler 2) Update-Piler
Nach einer erfolgreichen Aktualisierung können unbenutzte Container-Images mit folgendem Befehl aus dem System entfernt werden:
docker system prune
Den Mailpiler auf der Kommandozeile verwenden:
Für die Verwendung in der Kommandozeile melden wir uns zunächst am Container an.
docker exec -it piler /bin/bash
Als nächstes wechseln wir zu dem Benutzer „piler“:
su piler
Um Schreibrechte zu erhalten, wechseln wir in den Ordner /var/tmp:
cd /var/tmp
Hier kannst du nun die Funktionen des Mailpiler auf der Kommandozeile ausführen. Anbei einige Beispiele:
pilerimport -h crontab -l
Fazit:
Mailpiler ist ein geniales Tool, um Mails sicher zu archivieren.
Ich wünsche dir viel Spaß mit Mailpiler und meiner Docker Version.
Willst du mich bei diesem Projekt unterstützen, kannst du das gerne hier tun.
Moin,
auf der suche nach einer gescheiten Installations Möglichkeit für MailPiler bin ich auf deinen Blog gestoßen. Erstmal vielen Dank das du dir die Mühe machst für andere die Installation zu vereinfachen. Die Dokumentation von MailPiler direkt empfinde ich als Katastrophe 😀
Nun habe ich versucht mit deinem Docker Image MailPiler zu installieren. Läuft auch alles Fehlerfrei durch, nur leider bekomme ich anschließend das Webinterface nicht aufgerufen…kannst du mir da eventuell behilflich sein? Falls ja was benötigst du um zu sehen was ich falsch mache 😀
Mit freundlichen Grüßen
Dennis
Schön, dass dir mein Beitrag geholfen hat.
Hast du eine Domain vergeben, die auch in den Records auf deine Piler Installation zeigt? Firewall Regeln für 443 / TCP freigegeben? Wo hast du den Piler installiert?
Wenn du einen Cloud Server nutzt, sollte dort auch die Ports beim Provider freigegeben sein
Moin,
Auch von meiner Seite herzlichen Dank für diese tolle Dockercompositon. Tatsächlich ist das bisher die Einzige, welche ich zum Laufen bekommen habe und die im Grunde keinerlei manuelle Eingriffe erfordert. Bei mir laufen die Container in einer separaten VM auf einer Synology NAS. Meine Überlegung war, den Container Manager (Dockerdienst) der Synology zu nutzen, um eine VM einzusparen, was letztendlich auch das Backup vereinfacht. Dazu habe ich die piler-default.yml (SSL mit Let’sEncrypt macht der Reverse Proxy der Synology) direkt mit den benötigten Attributen gefüttert, die dein Install Script abfragen würde. An einer Stelle komme ich aber nicht wirklich weiter. Konfiguriere ich die Volumes so, dass die veränderlichen Daten auf einer speziellen Freigabe der Synology landen, bekomme ich beim Starten des Piler-Containers folgende Fehlermeldungen: „cp: cannot stat ‚/etc/piler/piler-nginx.conf.dist‘: No such file or directory“
und „DEBUG: Writing /etc/piler/piler-nginx.conf“. Hast du da eine Idee?
Liebe Grüße
René
So wie sich das liest, passen irgendwelche Volumes oder Rechte nicht. Ist natürlich so schwierig zu sagen.
Der Script hat einige verschachtelte Infos, von denen durch die manuelle Erstellung deine docker-compose.yml etwas verloren gegangen sein kann.
Hallo,
Ich musste beim SQL-Container mit einer Userdeklaration für den Container arbeiten, damit ein auf der NAS vorhandener User „angezapft“ wird und die DBs erstellt werden konnten. Hab das auch für den Pilercontainer gemacht, brachte aber nichts. Die Volumes sind für alle Container bis auf die Unterordner identisch, insofern schließe ich das auch aus. Solltest du noch eine Idee haben, freue ich mich. Falls nicht, bleibe ich erst mal bei der separaten VM.
Liebe Grüße
René
Hallo,
als aller erstes: vielen Dank für die deine super Anleitung! Die Anleitung ist einfach eine extreme Erleichterung Mailpiler per Docker zu installieren und so bereitzustellen! 🙂
Die Installation von Mailpiler über die Mailpiler-Doku ist ja echt Horror 😐
Ich habe eine Frage zu deinem Docker Container.
In meinem Fall habe ich einen Ubuntu 22.04 VPS. Auf dem VPS läuft Mailcow per Docker. Mailcow ist angepasst mit einem apache als Reverse Proxy, also der HTTP Port ist auf 8080 und der HTTPS Port auf 8443 angepasst. Apache ist ohne Docker auf dem VPS installiert und stellt verschiedene Websites bereit. Funktioniert alles soweit super. Jetzt wollte ich auf dem gleichen VPS noch ein Mailpiler bereitstellen. Allerdings müssten hier die HTTP und HTTPS Ports des Nginx Webservers von deinem Mailpiler Docker Container ebenfalls angepasst werden.
Ist das irgendwie möglich?
Besten Dank vorab,
Simon
Ich denke das sollte schwierig werden. Soweit ich weiß benötigt Port 80 und 443 für die Erstellung und Erneuerung der Zertifikate. Port 80 wird dafür auf jeden Fall benötigt. Denke eine Apache und ein Nginx auf einem System ist nicht so optimal.
Okay, danke für deine Antwort – dann läuft Mailpiler auf einem zweiten VPS. Vielen Dank nochmal für deine tolle Anleitung 🙂
Vielen Dank für das docker-image.
Es ist erstaunlich, dass bei jeder neuen Installation immer wieder andere Probleme auftauchen mit mailpiler.
Aber diese Lösung hier ist perfekt. Ich habe mailpiler auf dem gleichen Server wie meine Mailcow Instanz installiert. Jedoch habe ich alle exposed Ports 25, 80, 443 vor der Installation in allen Files abgeändert und somit gab es keinerlei Konflikte mit Mailcow.
Ich war nie so schnell fertig mit der Mailpiler installation 🙂
Noch einmal Danke 🙂
Danke für die wirklich einfache Lösung!
Hab den Piler am Laufen, leider aktualisiert er bei mir nicht alle 5 Minuten wie bei der Installation angegeben. Die cronjobs sind im Container nach der Installation ja schon eingerichtet. Woran kann das liegen?
Vielen Dank vorweg 🙂
Eigentlich hast du in der aktuellen Version eine Echtzeitsync. Prüfe mal, ob Mails kommen? Die Mailadresse, die die in deinem Mailserver nutzer musst ist piler@deine_Domain
Hallo, ich habe nochmal eine Frage bzgl. dem Docker Piler.
Aktuell habe ich das Problem, dass mein Piler öfters (ca. jede 2-3 Stunden) über die Weboberfläche nicht mehr erreichbar ist. Ich erhalte die Meldung:
„Error: SQLSTATE[HY000] [2002] Connection refused on database: sphinx“.
Das gleiche passiert auch wenn ich über den Benutzer piler im Docker Container „piler“ mein Backup wieder einspielen will. Hier muss ich noch ca. 32000 Mails importieren. Das problem hierbei ist, dass ich ca. 100-500 Mails importieren kann und dann bricht der Import über pilerimport mit Fehler ab, auf der Website erscheint ebenfalls der SQLSTATE error.
Nach einem Neustart des piler containers klappt es wieder, zumindest solang bis die Fehlermeldung wieder „von alleine“ auftritt oder ich Emails importieren will.
Ist dir das auch schon mal passiert, bzw. weiß du woran das liegen könnte?
Besten Dank vorab,
Simon