Inspiriert durch Martins Artikel „Searx auf Uberspace einrichten“ habe ich mich nun auch an der Metasuchmaschine Searx versucht. Da es mit der aktuellen Installationsanleitung aber unter Debian Stretch aktuell Probleme gibt, habe ich mich für die Docker-Variante entschieden. Hierzu wurde Searx hinter einen Reverse Proxy auf dem Apache2 meines Servers gepackt.
Searx läuft auf dem Port 8888 (http://5.1.76.25:8888/). Der Reverse Proxy leitet nun die über https://searx.cybt.de (Port 443) eingehende Anfrage auf den Port 8888 des Servers um.
Der Reverse Proxy wurde als VirtualHost in /etc/apache2/sites-available/proxy.conf angelegt und sieht in meinem Fall so aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<VirtualHost *:80> ServerName searx.cybt.de ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine On RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] ProxyPass / http://127.0.0.1:8888/ ProxyPassReverse / http://127.0.0.1:8888/ ProxyPreserveHost On ProxyAddHeaders On </VirtualHost> <VirtualHost *:443> ServerName searx.cybt.de ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ProxyPass / http://127.0.0.1:8888/ ProxyPassReverse / http://127.0.0.1:8888/ ProxyPreserveHost On ProxyAddHeaders On # This header does not need to be set when using http RequestHeader set X-Forwarded-Proto "https" Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains;" SSLCertificateFile /etc/letsencrypt/live/searx.cybt.de/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/searx.cybt.de/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> |
Damit das alles auch funktioniert, müssen die entsprechenden Module aktiviert sein. Hier die Ausgabe zu meinem Apache2 der HTTPS für die entsprechende URL erzwingt.
1 |
# apache2ctl -M |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Loaded Modules: core_module (static) so_module (static) watchdog_module (static) http_module (static) log_config_module (static) logio_module (static) version_module (static) unixd_module (static) access_compat_module (shared) alias_module (shared) auth_basic_module (shared) authn_core_module (shared) authn_file_module (shared) authz_core_module (shared) authz_host_module (shared) authz_user_module (shared) autoindex_module (shared) deflate_module (shared) dir_module (shared) env_module (shared) filter_module (shared) headers_module (shared) mime_module (shared) mpm_prefork_module (shared) negotiation_module (shared) php7_module (shared) proxy_module (shared) proxy_http_module (shared) reqtimeout_module (shared) rewrite_module (shared) setenvif_module (shared) socache_shmcb_module (shared) ssl_module (shared) status_module (shared) |