diff --git a/README.md b/README.md index 3ce87f7..e2b62c5 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,12 @@ For further details on the settings see: https://manual.limesurvey.org/Data_encr # Reverse Proxy configuration +If you are running LimeSurvey behind a Reverse Proxy you might need some additional configuration in the Proxy. For example: + +* Apache: `ProxyPreserveHost On` +* Nginx: `fastcgi_param HTTP_HOST my-survey.example.local;` +* Traefik: Set the Host Header explicitly via a customRequestHeaders + ## Traefik example **Hint**: if you want to deploy LimeSurvey on a sub-path (e.g. https://example.com/limesurvey) you have to set the BASE_URL and adjust the Containers Webservers. See the docker-compose Traefik example in the repository. diff --git a/docker-compose.apache.yml b/docker-compose.apache.yml new file mode 100644 index 0000000..7a3a02b --- /dev/null +++ b/docker-compose.apache.yml @@ -0,0 +1,29 @@ +version: "3.0" +services: + limesurvey: + image: docker.io/martialblog/limesurvey:3-apache + links: + - lime-db + depends_on: + - lime-db + environment: + - "DB_HOST=lime-db" + - "DB_PASSWORD=secret" + - "ADMIN_PASSWORD=foobar" + - "PUBLIC_URL=http://my.survey.localhost:8080" # Example, Change this + - "BASE_URL=http://my.survey.localhost:8080" # Example, Change this + proxy: + image: docker.io/httpd:bullseye + volumes: + - "./examples/apache-httpd.conf:/usr/local/apache2/conf/httpd.conf:ro" + - "./examples/apache-reverse-proxy.conf:/usr/local/apache2/conf/reverse-proxy.conf:ro" + ports: + - "8080:8080" + lime-db: + image: docker.io/mysql:5.7 + environment: + - "MYSQL_USER=limesurvey" + - "MYSQL_DATABASE=limesurvey" + - "MYSQL_PASSWORD=secret" + - "MYSQL_ROOT_PASSWORD=secret" + diff --git a/examples/apache-httpd.conf b/examples/apache-httpd.conf new file mode 100644 index 0000000..2ed95f7 --- /dev/null +++ b/examples/apache-httpd.conf @@ -0,0 +1,131 @@ +ServerRoot "/usr/local/apache2" +Listen 8080 + +LoadModule mpm_event_module modules/mod_mpm_event.so +LoadModule authn_file_module modules/mod_authn_file.so +LoadModule authn_core_module modules/mod_authn_core.so +LoadModule authz_host_module modules/mod_authz_host.so +LoadModule authz_groupfile_module modules/mod_authz_groupfile.so +LoadModule authz_user_module modules/mod_authz_user.so +LoadModule authz_core_module modules/mod_authz_core.so +LoadModule access_compat_module modules/mod_access_compat.so +LoadModule auth_basic_module modules/mod_auth_basic.so +LoadModule watchdog_module modules/mod_watchdog.so +LoadModule reqtimeout_module modules/mod_reqtimeout.so +LoadModule filter_module modules/mod_filter.so +LoadModule mime_module modules/mod_mime.so +LoadModule log_config_module modules/mod_log_config.so +LoadModule env_module modules/mod_env.so +LoadModule headers_module modules/mod_headers.so +LoadModule setenvif_module modules/mod_setenvif.so +LoadModule version_module modules/mod_version.so +LoadModule proxy_module modules/mod_proxy.so +LoadModule proxy_connect_module modules/mod_proxy_connect.so +LoadModule proxy_ftp_module modules/mod_proxy_ftp.so +LoadModule proxy_http_module modules/mod_proxy_http.so +LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so +LoadModule proxy_scgi_module modules/mod_proxy_scgi.so +LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so +LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so +LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so +LoadModule proxy_ajp_module modules/mod_proxy_ajp.so +LoadModule proxy_balancer_module modules/mod_proxy_balancer.so +LoadModule proxy_express_module modules/mod_proxy_express.so +LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so +LoadModule slotmem_shm_module modules/mod_slotmem_shm.so +LoadModule ssl_module modules/mod_ssl.so +LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so +LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so +LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so +LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so +LoadModule unixd_module modules/mod_unixd.so +LoadModule status_module modules/mod_status.so +LoadModule autoindex_module modules/mod_autoindex.so +#LoadModule suexec_module modules/mod_suexec.so + + + + +LoadModule dir_module modules/mod_dir.so +LoadModule alias_module modules/mod_alias.so + + +User daemon +Group daemon + + + +ServerAdmin you@example.com +# + + AllowOverride none + Require all denied + + +DocumentRoot "/usr/local/apache2/htdocs" + + Options Indexes FollowSymLinks + AllowOverride None + Require all granted + + + + DirectoryIndex index.html + + + + Require all denied + + +ErrorLog /proc/self/fd/2 + +LogLevel warn + + + LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined + LogFormat "%h %l %u %t \"%r\" %>s %b" common + + + # You need to enable mod_logio.c to use %I and %O + LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio + + + CustomLog /proc/self/fd/1 common + + + + ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" + + + + + + + + AllowOverride None + Options None + Require all granted + + + + RequestHeader unset Proxy early + + + + TypesConfig conf/mime.types + + AddType application/x-compress .Z + AddType application/x-gzip .gz .tgz + + +# Configure mod_proxy_html to understand HTML4/XHTML1 + +Include conf/extra/proxy-html.conf + + + +SSLRandomSeed startup builtin +SSLRandomSeed connect builtin + + +IncludeOptional conf/reverse-proxy.conf \ No newline at end of file diff --git a/examples/apache-reverse-proxy.conf b/examples/apache-reverse-proxy.conf new file mode 100644 index 0000000..3667382 --- /dev/null +++ b/examples/apache-reverse-proxy.conf @@ -0,0 +1,8 @@ + + ServerAdmin admin@localhost.local + ServerName my.survey.localhost + + ProxyPass / http://limesurvey:80/ + ProxyPassReverse / http://limesurvey:80/ + ProxyPreserveHost On + \ No newline at end of file