Expose reverse proxy related configuration as environment variables (#1048)

* Expose reverse proxy related configuration as environment variables

Signed-off-by: András Maróy <andras@maroy.hu>

* Update README.md

Co-Authored-By: J0WI <J0WI@users.noreply.github.com>
Signed-off-by: András Maróy <andras@maroy.hu>

* Update README.md

Co-Authored-By: J0WI <J0WI@users.noreply.github.com>
Signed-off-by: András Maróy <andras@maroy.hu>

* Add default values for reverse proxy config from environment

Signed-off-by: András Maróy <andras@maroy.hu>

* Change reverse proxy default values to null

Signed-off-by: András Maróy <andras@maroy.hu>

* Store environment variables in vars in reverse-proxy config

Signed-off-by: András Maróy <andras@maroy.hu>

* Merge reverse proxy configs

Signed-off-by: András Maróy <andras@maroy.hu>

* Move overwrite parameters to reverse proxy section in the readme

Signed-off-by: András Maróy <andras@maroy.hu>

* Add reverse proxy config to 19.0-beta images

Signed-off-by: András Maróy <andras@maroy.hu>

* Remove default null from reverse proxy config to avoid breaking existing deployments

Signed-off-by: András Maróy <andras@maroy.hu>

Co-authored-by: J0WI <J0WI@users.noreply.github.com>
This commit is contained in:
András Maróy 2020-04-16 17:54:48 +02:00 committed by GitHub
parent 815298f5de
commit 6d2390726f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 338 additions and 144 deletions

View File

@ -0,0 +1,25 @@
<?php
$overwriteHost = getenv('OVERWRITEHOST');
if ($overwriteHost) {
$CONFIG['overwritehost'] = $overwriteHost;
}
$overwriteProtocol = getenv('OVERWRITEPROTOCOL');
if ($overwriteProtocol) {
$CONFIG['overwriteprotocol'] = $overwriteProtocol;
}
$overwriteWebRoot = getenv('OVERWRITEWEBROOT');
if ($overwriteWebRoot) {
$CONFIG['overwritewebroot'] = $overwriteWebRoot;
}
$overwriteCondAddr = getenv('OVERWRITECONDADDR');
if ($overwriteCondAddr) {
$CONFIG['overwritecondaddr'] = $overwriteCondAddr;
}
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$CONFIG['trusted_proxies'] = array_filter(array_map('trim', explode(' ', $trustedProxies)));
}

View File

@ -1,11 +0,0 @@
<?php
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$trustedProxies = array_filter(array_map('trim', explode(' ', $trustedProxies)));
} else {
$trustedProxies = null;
}
$CONFIG['trusted_proxies'] = $trustedProxies;

View File

@ -0,0 +1,25 @@
<?php
$overwriteHost = getenv('OVERWRITEHOST');
if ($overwriteHost) {
$CONFIG['overwritehost'] = $overwriteHost;
}
$overwriteProtocol = getenv('OVERWRITEPROTOCOL');
if ($overwriteProtocol) {
$CONFIG['overwriteprotocol'] = $overwriteProtocol;
}
$overwriteWebRoot = getenv('OVERWRITEWEBROOT');
if ($overwriteWebRoot) {
$CONFIG['overwritewebroot'] = $overwriteWebRoot;
}
$overwriteCondAddr = getenv('OVERWRITECONDADDR');
if ($overwriteCondAddr) {
$CONFIG['overwritecondaddr'] = $overwriteCondAddr;
}
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$CONFIG['trusted_proxies'] = array_filter(array_map('trim', explode(' ', $trustedProxies)));
}

View File

@ -1,11 +0,0 @@
<?php
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$trustedProxies = array_filter(array_map('trim', explode(' ', $trustedProxies)));
} else {
$trustedProxies = null;
}
$CONFIG['trusted_proxies'] = $trustedProxies;

View File

@ -0,0 +1,25 @@
<?php
$overwriteHost = getenv('OVERWRITEHOST');
if ($overwriteHost) {
$CONFIG['overwritehost'] = $overwriteHost;
}
$overwriteProtocol = getenv('OVERWRITEPROTOCOL');
if ($overwriteProtocol) {
$CONFIG['overwriteprotocol'] = $overwriteProtocol;
}
$overwriteWebRoot = getenv('OVERWRITEWEBROOT');
if ($overwriteWebRoot) {
$CONFIG['overwritewebroot'] = $overwriteWebRoot;
}
$overwriteCondAddr = getenv('OVERWRITECONDADDR');
if ($overwriteCondAddr) {
$CONFIG['overwritecondaddr'] = $overwriteCondAddr;
}
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$CONFIG['trusted_proxies'] = array_filter(array_map('trim', explode(' ', $trustedProxies)));
}

View File

@ -1,11 +0,0 @@
<?php
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$trustedProxies = array_filter(array_map('trim', explode(' ', $trustedProxies)));
} else {
$trustedProxies = null;
}
$CONFIG['trusted_proxies'] = $trustedProxies;

View File

@ -0,0 +1,25 @@
<?php
$overwriteHost = getenv('OVERWRITEHOST');
if ($overwriteHost) {
$CONFIG['overwritehost'] = $overwriteHost;
}
$overwriteProtocol = getenv('OVERWRITEPROTOCOL');
if ($overwriteProtocol) {
$CONFIG['overwriteprotocol'] = $overwriteProtocol;
}
$overwriteWebRoot = getenv('OVERWRITEWEBROOT');
if ($overwriteWebRoot) {
$CONFIG['overwritewebroot'] = $overwriteWebRoot;
}
$overwriteCondAddr = getenv('OVERWRITECONDADDR');
if ($overwriteCondAddr) {
$CONFIG['overwritecondaddr'] = $overwriteCondAddr;
}
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$CONFIG['trusted_proxies'] = array_filter(array_map('trim', explode(' ', $trustedProxies)));
}

View File

@ -1,11 +0,0 @@
<?php
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$trustedProxies = array_filter(array_map('trim', explode(' ', $trustedProxies)));
} else {
$trustedProxies = null;
}
$CONFIG['trusted_proxies'] = $trustedProxies;

View File

@ -0,0 +1,25 @@
<?php
$overwriteHost = getenv('OVERWRITEHOST');
if ($overwriteHost) {
$CONFIG['overwritehost'] = $overwriteHost;
}
$overwriteProtocol = getenv('OVERWRITEPROTOCOL');
if ($overwriteProtocol) {
$CONFIG['overwriteprotocol'] = $overwriteProtocol;
}
$overwriteWebRoot = getenv('OVERWRITEWEBROOT');
if ($overwriteWebRoot) {
$CONFIG['overwritewebroot'] = $overwriteWebRoot;
}
$overwriteCondAddr = getenv('OVERWRITECONDADDR');
if ($overwriteCondAddr) {
$CONFIG['overwritecondaddr'] = $overwriteCondAddr;
}
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$CONFIG['trusted_proxies'] = array_filter(array_map('trim', explode(' ', $trustedProxies)));
}

View File

@ -1,11 +0,0 @@
<?php
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$trustedProxies = array_filter(array_map('trim', explode(' ', $trustedProxies)));
} else {
$trustedProxies = null;
}
$CONFIG['trusted_proxies'] = $trustedProxies;

View File

@ -0,0 +1,25 @@
<?php
$overwriteHost = getenv('OVERWRITEHOST');
if ($overwriteHost) {
$CONFIG['overwritehost'] = $overwriteHost;
}
$overwriteProtocol = getenv('OVERWRITEPROTOCOL');
if ($overwriteProtocol) {
$CONFIG['overwriteprotocol'] = $overwriteProtocol;
}
$overwriteWebRoot = getenv('OVERWRITEWEBROOT');
if ($overwriteWebRoot) {
$CONFIG['overwritewebroot'] = $overwriteWebRoot;
}
$overwriteCondAddr = getenv('OVERWRITECONDADDR');
if ($overwriteCondAddr) {
$CONFIG['overwritecondaddr'] = $overwriteCondAddr;
}
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$CONFIG['trusted_proxies'] = array_filter(array_map('trim', explode(' ', $trustedProxies)));
}

View File

@ -1,11 +0,0 @@
<?php
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$trustedProxies = array_filter(array_map('trim', explode(' ', $trustedProxies)));
} else {
$trustedProxies = null;
}
$CONFIG['trusted_proxies'] = $trustedProxies;

View File

@ -0,0 +1,25 @@
<?php
$overwriteHost = getenv('OVERWRITEHOST');
if ($overwriteHost) {
$CONFIG['overwritehost'] = $overwriteHost;
}
$overwriteProtocol = getenv('OVERWRITEPROTOCOL');
if ($overwriteProtocol) {
$CONFIG['overwriteprotocol'] = $overwriteProtocol;
}
$overwriteWebRoot = getenv('OVERWRITEWEBROOT');
if ($overwriteWebRoot) {
$CONFIG['overwritewebroot'] = $overwriteWebRoot;
}
$overwriteCondAddr = getenv('OVERWRITECONDADDR');
if ($overwriteCondAddr) {
$CONFIG['overwritecondaddr'] = $overwriteCondAddr;
}
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$CONFIG['trusted_proxies'] = array_filter(array_map('trim', explode(' ', $trustedProxies)));
}

View File

@ -1,11 +0,0 @@
<?php
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$trustedProxies = array_filter(array_map('trim', explode(' ', $trustedProxies)));
} else {
$trustedProxies = null;
}
$CONFIG['trusted_proxies'] = $trustedProxies;

View File

@ -0,0 +1,25 @@
<?php
$overwriteHost = getenv('OVERWRITEHOST');
if ($overwriteHost) {
$CONFIG['overwritehost'] = $overwriteHost;
}
$overwriteProtocol = getenv('OVERWRITEPROTOCOL');
if ($overwriteProtocol) {
$CONFIG['overwriteprotocol'] = $overwriteProtocol;
}
$overwriteWebRoot = getenv('OVERWRITEWEBROOT');
if ($overwriteWebRoot) {
$CONFIG['overwritewebroot'] = $overwriteWebRoot;
}
$overwriteCondAddr = getenv('OVERWRITECONDADDR');
if ($overwriteCondAddr) {
$CONFIG['overwritecondaddr'] = $overwriteCondAddr;
}
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$CONFIG['trusted_proxies'] = array_filter(array_map('trim', explode(' ', $trustedProxies)));
}

View File

@ -1,11 +0,0 @@
<?php
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$trustedProxies = array_filter(array_map('trim', explode(' ', $trustedProxies)));
} else {
$trustedProxies = null;
}
$CONFIG['trusted_proxies'] = $trustedProxies;

View File

@ -0,0 +1,25 @@
<?php
$overwriteHost = getenv('OVERWRITEHOST');
if ($overwriteHost) {
$CONFIG['overwritehost'] = $overwriteHost;
}
$overwriteProtocol = getenv('OVERWRITEPROTOCOL');
if ($overwriteProtocol) {
$CONFIG['overwriteprotocol'] = $overwriteProtocol;
}
$overwriteWebRoot = getenv('OVERWRITEWEBROOT');
if ($overwriteWebRoot) {
$CONFIG['overwritewebroot'] = $overwriteWebRoot;
}
$overwriteCondAddr = getenv('OVERWRITECONDADDR');
if ($overwriteCondAddr) {
$CONFIG['overwritecondaddr'] = $overwriteCondAddr;
}
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$CONFIG['trusted_proxies'] = array_filter(array_map('trim', explode(' ', $trustedProxies)));
}

View File

@ -1,11 +0,0 @@
<?php
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$trustedProxies = array_filter(array_map('trim', explode(' ', $trustedProxies)));
} else {
$trustedProxies = null;
}
$CONFIG['trusted_proxies'] = $trustedProxies;

View File

@ -0,0 +1,25 @@
<?php
$overwriteHost = getenv('OVERWRITEHOST');
if ($overwriteHost) {
$CONFIG['overwritehost'] = $overwriteHost;
}
$overwriteProtocol = getenv('OVERWRITEPROTOCOL');
if ($overwriteProtocol) {
$CONFIG['overwriteprotocol'] = $overwriteProtocol;
}
$overwriteWebRoot = getenv('OVERWRITEWEBROOT');
if ($overwriteWebRoot) {
$CONFIG['overwritewebroot'] = $overwriteWebRoot;
}
$overwriteCondAddr = getenv('OVERWRITECONDADDR');
if ($overwriteCondAddr) {
$CONFIG['overwritecondaddr'] = $overwriteCondAddr;
}
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$CONFIG['trusted_proxies'] = array_filter(array_map('trim', explode(' ', $trustedProxies)));
}

View File

@ -1,11 +0,0 @@
<?php
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$trustedProxies = array_filter(array_map('trim', explode(' ', $trustedProxies)));
} else {
$trustedProxies = null;
}
$CONFIG['trusted_proxies'] = $trustedProxies;

View File

@ -0,0 +1,25 @@
<?php
$overwriteHost = getenv('OVERWRITEHOST');
if ($overwriteHost) {
$CONFIG['overwritehost'] = $overwriteHost;
}
$overwriteProtocol = getenv('OVERWRITEPROTOCOL');
if ($overwriteProtocol) {
$CONFIG['overwriteprotocol'] = $overwriteProtocol;
}
$overwriteWebRoot = getenv('OVERWRITEWEBROOT');
if ($overwriteWebRoot) {
$CONFIG['overwritewebroot'] = $overwriteWebRoot;
}
$overwriteCondAddr = getenv('OVERWRITECONDADDR');
if ($overwriteCondAddr) {
$CONFIG['overwritecondaddr'] = $overwriteCondAddr;
}
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$CONFIG['trusted_proxies'] = array_filter(array_map('trim', explode(' ', $trustedProxies)));
}

View File

@ -1,11 +0,0 @@
<?php
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$trustedProxies = array_filter(array_map('trim', explode(' ', $trustedProxies)));
} else {
$trustedProxies = null;
}
$CONFIG['trusted_proxies'] = $trustedProxies;

View File

@ -0,0 +1,25 @@
<?php
$overwriteHost = getenv('OVERWRITEHOST');
if ($overwriteHost) {
$CONFIG['overwritehost'] = $overwriteHost;
}
$overwriteProtocol = getenv('OVERWRITEPROTOCOL');
if ($overwriteProtocol) {
$CONFIG['overwriteprotocol'] = $overwriteProtocol;
}
$overwriteWebRoot = getenv('OVERWRITEWEBROOT');
if ($overwriteWebRoot) {
$CONFIG['overwritewebroot'] = $overwriteWebRoot;
}
$overwriteCondAddr = getenv('OVERWRITECONDADDR');
if ($overwriteCondAddr) {
$CONFIG['overwritecondaddr'] = $overwriteCondAddr;
}
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$CONFIG['trusted_proxies'] = array_filter(array_map('trim', explode(' ', $trustedProxies)));
}

View File

@ -1,11 +0,0 @@
<?php
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$trustedProxies = array_filter(array_map('trim', explode(' ', $trustedProxies)));
} else {
$trustedProxies = null;
}
$CONFIG['trusted_proxies'] = $trustedProxies;

View File

@ -0,0 +1,25 @@
<?php
$overwriteHost = getenv('OVERWRITEHOST');
if ($overwriteHost) {
$CONFIG['overwritehost'] = $overwriteHost;
}
$overwriteProtocol = getenv('OVERWRITEPROTOCOL');
if ($overwriteProtocol) {
$CONFIG['overwriteprotocol'] = $overwriteProtocol;
}
$overwriteWebRoot = getenv('OVERWRITEWEBROOT');
if ($overwriteWebRoot) {
$CONFIG['overwritewebroot'] = $overwriteWebRoot;
}
$overwriteCondAddr = getenv('OVERWRITECONDADDR');
if ($overwriteCondAddr) {
$CONFIG['overwritecondaddr'] = $overwriteCondAddr;
}
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$CONFIG['trusted_proxies'] = array_filter(array_map('trim', explode(' ', $trustedProxies)));
}

View File

@ -1,11 +0,0 @@
<?php
$trustedProxies = getenv('TRUSTED_PROXIES');
if ($trustedProxies) {
$trustedProxies = array_filter(array_map('trim', explode(' ', $trustedProxies)));
} else {
$trustedProxies = null;
}
$CONFIG['trusted_proxies'] = $trustedProxies;

View File

@ -156,7 +156,8 @@ To use an external SMTP server, you have to provide the connection details. To c
- `MAIL_FROM_ADDRESS` (not set by default): Use this address for the 'from' field in the emails sent by Nextcloud.
- `MAIL_DOMAIN` (not set by default): Set a different domain for the emails than the domain where Nextcloud is installed.
Check the [Nextcloud documentation](https://docs.nextcloud.com/server/15/admin_manual/configuration_server/email_configuration.html) for other values to configure SMTP.
Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/email_configuration.html) for other values to configure SMTP.
## Using the apache image behind a reverse proxy and auto configure server host and protocol
@ -166,6 +167,17 @@ The apache image will replace the remote addr (ip address visible to Nextcloud)
- `TRUSTED_PROXIES` (empty by default): A space-separated list of trusted proxies. CIDR notation is supported for IPv4.
If the `TRUSTED_PROXIES` approach does not work for you, try using fixed values for overwrite parameters.
- `OVERWRITEHOST` (empty by default): Set the hostname of the proxy. Can also specify a port.
- `OVERWRITEPROTOCOL` (empty by default): Set the protocol of the proxy, http or https.
- `OVERWRITEWEBROOT` (empty by default): Set the absolute path of the proxy.
- `OVERWRITECONDADDR` (empty by default): Regex to overwrite the values dependent on the remote address.
Check the [Nexcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/reverse_proxy_configuration.html) for more details.
Keep in mind that once set, removing these environment variables won't remove these values from the configuration file, due to how Nextcloud merges configuration files together.
# Running this image with docker-compose
The easiest way to get a fully featured and functional setup is using a `docker-compose` file. There are too many different possibilities to setup your system, so here are only some examples of what you have to look for.