Salut,
Le forum était en panne on ne savait pas trop pourquoi.
Gyom n’étant pas joignable j’ai finalement découvert que j’avais bien accès à cette vm en root sur le port standard
Du coup voici ce que j’ai fait et mon raisonnement. Je me suis dit que certain⋅e⋅s pouvaient être intéressée, rien de fulgurant toutefois.
Diagnostique
Je me suis d’abord demandé si c’était une histoire d’espace disque, vu qu’on avait dit que la vm était trop petite
$ df -h
udev 740M 0 740M 0% /dev
tmpfs 151M 7.9M 143M 6% /run
/dev/vda1 15G 9.7G 4.3G 70% /
tmpfs 751M 0 751M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 751M 0 751M 0% /sys/fs/cgroup
overlay 15G 9.7G 4.3G 70% /var/lib/docker/overlay2/c697cab75cd7bbf3e8ee44a19468a6c5763c2bcfd97b244d75cc970c3ce4866a/merged
shm 512M 0 512M 0% /var/lib/docker/containers/12a8ca5168157bdf8b64cd476a89e323d3d7789c5ec3b918636e6ea6b6680950/mounts/shm
tmpfs 151M 0 151M 0% /run/user/0
overlay 15G 9.7G 4.3G 70% /var/lib/docker/overlay2/544ee0c1fa0eeaf24d7345159025568d1d998359681ea5854c7f1d0badbee474/merged
shm 512M 8.0K 512M 1% /var/lib/docker/containers/a74b5e627cf3f6df45815e51852395072a653f3a0ffe05929b3c461c3c5062c9/mounts/shm
Comme on peut le voir il ne semble pas y avoir de soucis
Puis j’ai voulu voir qi il y avait un quelconque service running pour discourse et découvrir un peu l’install mais la sortie était trop grande.
ps aux
Puis j’ai soupçonné fail2ban de faire n’importe quoi en bannissant tout le monde
root@forum:/var/discourse# service fail2ban status
Unit fail2ban.service could not be found.
Puis que nginx était down (mais en fait il n’y a pas de nginx (je connais rien à ce setup hein)
root@forum:/var/discourse# service nginx status
Unit nginx.service could not be found.
Apache peut être ?
root@forum:/var/discourse# service apache2 status
[...] active [...]
Oui apache est là
Mais en même temps je me suis documenté sur discourse et l’install docker, et j’avais plutôt l’impression qu’il n’y avait pas de reverse proxy et que ça allait direct sur le docker
Je regarde alors les règles du parefeu, pour voir si le port 80 est redirigé:
root@forum:/var/discourse# iptables-save
[...]
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 25 -j ACCEPT
Non, mais le port 25 oui, je vérifie qu’on peut contacter en telnet de l’extérieur:
ljf@pirouette:~$ telnet forum.arn-fai.net 25
Trying 89.234.141.74...
Connected to forum.arn-fai.net.
Escape character is '^]'.
220 ESMTP server
Ok y a au moins un trucs qui peut faire du mail qui tourne.
Je tente au hasard et sans succcès au cas où il y a un service discourse à relancer
service discourse status
En lisant la doc de discourse je découvre qu’il est possible de lancer discourse via:
root@forum:/var/discourse# cd /var/discourse
root@forum:/var/discourse# ./launcher start app
You have less than 5GB of free space on the disk where /var/lib/docker is located. You will need more space to continue
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 15G 9.7G 4.3G 70% /
Would you like to attempt to recover space by cleaning docker images and containers in the system?(y/N)
Je tombe alors sur l’erreur dont parlais @Gyom
Je scrute les logs et les confs apache2
tail -f /var/log/apache2/error.log
tail -f /var/log/apache2/access.log
cat /etc/apache2/sites-available/000-default.conf
cat /etc/apache2/sites-available/default-ssl.conf
Je constate que y a bien des demandes dessus sur /
Et là je me dit que vu que c’est du docker faut que je trouve comment regarder les container (j’ai fait un peu de docker dans un très très lointain passé, sans doute que c’était pas moi mais plutôt mon jumeau…). Après avoir tapé dans startpage “How to list containers in Docker”, je tombe sur mon extension de cerveau (stackoverflow)
root@forum:/var/discourse# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
12a8ca516815 local_discourse/mail-receiver "/sbin/boot" 7 weeks ago Up 2 hours 0.0.0.0:25->25/tcp mail-receiver
root@forum:/var/discourse# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
12a8ca516815 local_discourse/mail-receiver "/sbin/boot" 7 weeks ago Up 2 hours 0.0.0.0:25->25/tcp mail-receiver
a74b5e627cf3 local_discourse/app "/sbin/boot" 7 weeks ago Down 19 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp app
Je me demande pourquoi le 2ème container est down (oui j’aurais sans doute pu tester ça de suite ^^)
root@forum:/var/discourse# docker logs a74b5e627cf3
Rien d’instructif
root@forum:/var/discourse# docker inspect a74b5e627cf3
[...]
"State": {
[...]
"Error": "driver failed programming external connectivity on endpoint app (c54db53155c9bf00426a37977c41d1a82daaf82c703ea42ecb967d1ecc46edf8): Error starting userland proxy: listen tcp 0.0.0.0:80: listen: address already in use",
},
Donc là je commence à faire un lien.
Je lance lsof après l’avoir installé pour voir si quelque chose d’autre écoute sur le port 80 (au hasard apache2)
root@forum:/var/discourse# lsof -i tcp:80
Là ça sort un truc avec apache2 dedans, donc oui apache2 utilise le port 80 et empèche le docker discourse de redémarrer…
Solution
J’éteins apache2 et je relance discourse.
service apache2 stop
docker start a74b5e627cf3
Je teste le lien. J’ai d’abord une erreur “502 bad Gateway” mais au bout de 15s le forum est de retour \o/
Reste alors à désactiver apache2 pour éviter qu’au prochain redémarrage de vm ou autre ce soit le même cirque.
root@forum:/var/discourse# systemctl disable apache2
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable apache2