Crear Apache2 Proxypass
En el directorio de hosting donde reside el docker-compose.yml
y el plausible-conf.env
encontrará una carpeta llamada reverse-proxy
. En el interior de la carpeta encontrar una configuración de ejemplo para cada uno de los servidores web mas comunes (Apache, Nginx, Traefik...)
Copie el fichero a sites-avaible y modifique su contenido para ajustarlo al virtualhost que va a usar
cp apache2/plausible.conf /etc/apache2/sites-available/plausible.conf
nano /etc/apache2/sites-available/plausible.conf
El contenido debe quedar parecido a lo siguiente
<VirtualHost *:80>
ServerAdmin mi@gmail.com
ServerName plytics.driverlandia.com
ProxyPreserveHost On
ProxyPass / http://localhost:8000/
ProxyPassReverse / http://localhost:8000/
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" forwarded
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!forwarded
CustomLog ${APACHE_LOG_DIR}/access.log forwarded env=forwarded
#RewriteEngine on
#RewriteCond %{SERVER_NAME} =plytics.driverlandia.com
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
A continuación active los módulos necesarios en Apache para que funcione el ProxyPass y active el virtualhost
a2enmod proxy proxy_http proxy_ajp remoteip headers
systemctl restart apache2
a2ensite plausible.conf
systemctl restart apache2
Compruebe que funciona todo correctamente mediante protocolo HTTP (almenos que consigue cargar la página de login correctamente). En caso de que haya cargado todo correctamente, use Certbot para generar el virtualhost en HTTPS y obtener los certificados
certbot --apache
Finalmente bloquee con un Firewall el acceso al puerto 8000 desde cualquier máquina, así forzará a todo usuario que vaya a usar la web a hacerlo por los canales cifrados (HTTPS).
Para cualquier configuración de otro ProxyPass use la documentación oficial https://github.com/plausible/hosting/tree/master/reverse-proxy
Problemas con el ProxyPass
Si se encuentra con el siguiente problema lo más seguro es que tenga un firewall instalado en la máquina como puede ser Shorewall.
Pruebe a desactivarlo temporalmente, reiniciar y comprobar si funciona todo el sistema. Otra opción es modificar la configuración del ProxyPass cambiando localhost por 127.0.0.1 y en el docker-compose.yml configurando el puerto 8000 solo a través de la ip 127.0.0.1.
Como configurar Shorewall:
- Interfaces https://gist.github.com/lukasnellen/20761a20286f32efc396e207d986295d
- Zonas y reglas https://shorewall.org/Docker.html