phiilu/mailman

Error. The API Server did not respond

Closed this issue · 7 comments

Hi, ich habe mailman als Docker installiert und es lief die ersten Minuten wunderbar. Habe einen apache2 proxy auf den Port zeigend. Ein paar email accounts eingerichtet und plötzlich kommt nur noch diese Fehlermeldung. Ich erkenne das Problem aber nicht. Docker läuft, Apache2 läuft, Postfix, Dovecot läuft, MariaDB läuft. Sieht alles OK aus.

docker logs 9244cfaaa841


- Mailman is running on http://127.0.0.1:4000/ in production mode
- GET / 200 10.258 ms - 636
- GET /static/css/main.b27653d9.css 200 1.016 ms - 68
- GET /static/js/main.7081a796.js 200 1.225 ms - 808422
- GET /service-worker.js 200 0.609 ms - 3162
- GET /favicon.ico 200 0.450 ms - 3870
- GET /static/css/main.b27653d9.css 304 0.700 ms - -
- GET /index.html?_sw-precache=8f10b86c753c780d773837fe7ef00ecf 200 1.345 ms - 636
- GET /static/js/main.7081a796.js 200 0.410 ms - 808422
- POST /api/auth/authenticate 200 215.311 ms - 203
- GET /api/domains 200 5.307 ms - 50
- GET /api/accounts 200 2.622 ms - 111
- GET /api/aliases 200 3.284 ms - 14
- GET /api/tlspolicies 200 3.353 ms - 290
- POST /api/accounts 200 105.506 ms - 240
- POST /api/aliases 200 3.523 ms - 167
- GET / 200 0.454 ms - 636
- POST /api/accounts 200 97.838 ms - 240
- PUT /api/accounts/2 200 4.242 ms - 243
- PUT /api/accounts/3 200 3.429 ms - 243
- PUT /api/accounts/2 200 2.859 ms - 243
- Mailman is running on http://127.0.0.1:4000/ in production mode

Apache2 Proxy:

`cat /etc/apache2/sites-available/mailman.conf
<VirtualHost *:80>
    ServerName mailman.domain.org
    Redirect / https://mailman.domain.org/
</VirtualHost>


<VirtualHost *:443>
    ServerName mailman.domain.org

    SSLEngine on
    SSLHonorCipherOrder on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
    SSLCertificateFile /etc/letsencrypt/live/domain.org/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/domain.org/privkey.pem

<Proxy *>
        Order allow,deny
        Allow from all
        allow from localhost
</Proxy>

     ProxyPass / http://localhost:4000/
     ProxyPassReverse / http://localhost:4000/
</VirtualHost>
`
docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                                    NAMES
9244cfaaa841        phiilu/mailman          "node build/main.js"     5 hours ago         Up 8 minutes                                                                 mailman

Was für eine Fehlermeldung? Dem Docker-Log würde ich entnehmen, dass alles funktioniert, da die Daten ja anscheinend übertragen werden (HTML-Status 200 --> OK)?

GET / 200 10.258 ms - 636
...

"The API Server did not respond" wird ausgegeben, wenn der "RESTful" API server keine Antwort zurücksendet:

} else if (error.request) {
// The request was made but no response was received
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of
// http.ClientRequest in node.js
return {
status: 500,
message: "The API server did not respond"
};

Aus deinen Logs kann ich entnehmen, dass Mailman kurz neugestartet hat.

Da Mailman eine SPA ist die im Browser läuft, sind die JavaScript Dateien lokal gecached und aufrufbar, obwohl der Server nicht mehr läuft.

Ich würde vorschlagen den Docker Container neustarten und dann sollte es ja wieder funktionieren. Warum Mailman überhaupt neugestartet ist, kann ich aus den Logs leider nicht entnehmen.

Warum Mailman überhaupt neugestartet ist, kann ich aus den Logs leider nicht entnehmen.

Das scheint ein generelles Stabilitätsproblem zu sein. Bei mir beendet sich der Container bei Verwendung von Mailman regelmäßig von selbst, weshalb ich diesen bei der Erstellung um den Parameter --restart=always erweitert habe. Dies scheint besonders häufig nach einem Logout zu passieren.
Gibt es dazu entsprechende Logs, die ich hier bereitstellen könnte?

Interessant!

Leider logge ich aktuell nicht wirklich viel mit, weshalb die Logs auch eher bescheiden sind.
Mailman ist in Node.js geschrieben und Node.js beendet den Prozess, falls ein Fehler auftritt.

Deshalb gibt es tools wie forever oder eben pm2.

--restart=always macht genau dasselbe wie forever oder pm2 und sollte auch in in die README Datei aufgenommen werden 👍

Ich hoffe ich finde bald wieder mehr Zeit um Mailman weiterzuentwickeln!

Es ist echt eigenartig, egal was ich nun mache. Docker Container stop/start, Image löschen und neu machen, Docker restart es läuft nicht mehr. Ich verstehe es einfach nicht. Die logs sehen soweit nicht auffällig aus. Mich würde auch interessieren wie ich mit logs den Fehler besser eingrenzen kann.

Also ich habe das Ganze nochmal auf einem anderen Server aufgesetzt. Dort habe ich unter Chrome 63.0.3239.132 exakt das gleiche Problem. Unter Firefox läuft es aber.

Wenn es im Firefox funktioniert, sollte es auch im Chrome funktionieren.

Vielleicht hilft es wenn du in den Chrome Entwickler Tools unter Application den Button "Clear site data" betätigst:

capture

Der Client verwendet einen ServiceWorker, welcher unter anderem dafür verwendet wird um CSS und JS zu cachen. Möglicherweiße sollte ich das nochmal überdenken.