Skip to main content

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: