mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-08-03 07:53:39 +00:00
fix stream/allow editing modsec conf/readme changes/dep updates
Signed-off-by: Zoey <zoey@z0ey.de>
This commit is contained in:
34
Dockerfile
34
Dockerfile
@@ -45,7 +45,7 @@ RUN apk add --no-cache ca-certificates git build-base && \
|
|||||||
sed -i "s|BAN_TEMPLATE_PATH=.*|BAN_TEMPLATE_PATH=/data/etc/crowdsec/ban.html|g" /src/crowdsec-nginx-bouncer/lua-mod/config_example.conf && \
|
sed -i "s|BAN_TEMPLATE_PATH=.*|BAN_TEMPLATE_PATH=/data/etc/crowdsec/ban.html|g" /src/crowdsec-nginx-bouncer/lua-mod/config_example.conf && \
|
||||||
sed -i "s|CAPTCHA_TEMPLATE_PATH=.*|CAPTCHA_TEMPLATE_PATH=/data/etc/crowdsec/captcha.html|g" /src/crowdsec-nginx-bouncer/lua-mod/config_example.conf
|
sed -i "s|CAPTCHA_TEMPLATE_PATH=.*|CAPTCHA_TEMPLATE_PATH=/data/etc/crowdsec/captcha.html|g" /src/crowdsec-nginx-bouncer/lua-mod/config_example.conf
|
||||||
|
|
||||||
FROM zoeyvid/certbot-docker:12 as certbot
|
FROM zoeyvid/certbot-docker:13 as certbot
|
||||||
|
|
||||||
FROM zoeyvid/nginx-quic:211
|
FROM zoeyvid/nginx-quic:211
|
||||||
SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
|
SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
|
||||||
@@ -56,38 +56,14 @@ RUN apk add --no-cache ca-certificates tzdata tini \
|
|||||||
openssl apache2-utils \
|
openssl apache2-utils \
|
||||||
coreutils grep jq curl shadow sudo \
|
coreutils grep jq curl shadow sudo \
|
||||||
luarocks5.1 wget lua5.1-dev build-base git yarn && \
|
luarocks5.1 wget lua5.1-dev build-base git yarn && \
|
||||||
wget -q https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended -O /usr/local/nginx/conf/conf.d/include/modsecurity.conf && \
|
wget -q https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended -O /usr/local/nginx/conf/conf.d/include/modsecurity.conf.example && \
|
||||||
wget -q https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/unicode.mapping -O /usr/local/nginx/conf/conf.d/include/unicode.mapping && \
|
wget -q https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/unicode.mapping -O /usr/local/nginx/conf/conf.d/include/unicode.mapping && \
|
||||||
sed -i "s|SecRuleEngine .*|SecRuleEngine On|g" /usr/local/nginx/conf/conf.d/include/modsecurity.conf && \
|
sed -i "s|SecRuleEngine.*|SecRuleEngine On|g" /usr/local/nginx/conf/conf.d/include/modsecurity.conf.example && \
|
||||||
echo "Include /data/etc/modsecurity/modsecurity.conf" | tee -a /usr/local/nginx/conf/conf.d/include/modsecurity.conf && \
|
sed -i "s|unicode.mapping|/usr/local/nginx/conf/conf.d/include/unicode.mapping|g" /usr/local/nginx/conf/conf.d/include/modsecurity.conf.example && \
|
||||||
cp /usr/local/nginx/conf/conf.d/include/modsecurity.conf /usr/local/nginx/conf/conf.d/include/modsecurity-crs.conf && \
|
|
||||||
echo "Include /data/etc/modsecurity/crs-setup.conf" | tee -a /usr/local/nginx/conf/conf.d/include/modsecurity-crs.conf && \
|
|
||||||
echo "Include /usr/local/nginx/conf/conf.d/include/coreruleset/crs-setup.conf" | tee -a /usr/local/nginx/conf/conf.d/include/modsecurity-crs.conf && \
|
|
||||||
echo "#Include /usr/local/nginx/conf/conf.d/include/coreruleset/plugins/*-config.conf" | tee -a /usr/local/nginx/conf/conf.d/include/modsecurity-crs.conf && \
|
|
||||||
echo "#Include /usr/local/nginx/conf/conf.d/include/coreruleset/plugins/*-before.conf" | tee -a /usr/local/nginx/conf/conf.d/include/modsecurity-crs.conf && \
|
|
||||||
echo "Include /usr/local/nginx/conf/conf.d/include/coreruleset/rules/*.conf" | tee -a /usr/local/nginx/conf/conf.d/include/modsecurity-crs.conf && \
|
|
||||||
echo "#Include /usr/local/nginx/conf/conf.d/include/coreruleset/plugins/*-after.conf" | tee -a /usr/local/nginx/conf/conf.d/include/modsecurity-crs.conf && \
|
|
||||||
git clone https://github.com/coreruleset/coreruleset /tmp/coreruleset && \
|
git clone https://github.com/coreruleset/coreruleset /tmp/coreruleset && \
|
||||||
mkdir /usr/local/nginx/conf/conf.d/include/coreruleset && \
|
mkdir /usr/local/nginx/conf/conf.d/include/coreruleset && \
|
||||||
cp /tmp/coreruleset/crs-setup.conf.example /usr/local/nginx/conf/conf.d/include/coreruleset/crs-setup.conf.example && \
|
mv -v /tmp/coreruleset/crs-setup.conf.example /usr/local/nginx/conf/conf.d/include/coreruleset/crs-setup.conf.example && \
|
||||||
sed -i '/#/!d' /usr/local/nginx/conf/conf.d/include/coreruleset/crs-setup.conf.example && \
|
|
||||||
mv /tmp/coreruleset/crs-setup.conf.example /usr/local/nginx/conf/conf.d/include/coreruleset/crs-setup.conf && \
|
|
||||||
mv /tmp/coreruleset/rules /usr/local/nginx/conf/conf.d/include/coreruleset/rules && \
|
mv /tmp/coreruleset/rules /usr/local/nginx/conf/conf.d/include/coreruleset/rules && \
|
||||||
#git clone --recursive https://github.com/coreruleset/phpmyadmin-rule-exclusions-plugin /tmp/phpmyadmin-rule-exclusions-plugin && \
|
|
||||||
#git clone --recursive https://github.com/coreruleset/nextcloud-rule-exclusions-plugin /tmp/nextcloud-rule-exclusions-plugin && \
|
|
||||||
#git clone --recursive https://github.com/coreruleset/wordpress-rule-exclusions-plugin /tmp/wordpress-rule-exclusions-plugin && \
|
|
||||||
#git clone --recursive https://github.com/coreruleset/cpanel-rule-exclusions-plugin /tmp/cpanel-rule-exclusions-plugin && \
|
|
||||||
#git clone --recursive https://github.com/coreruleset/body-decompress-plugin /tmp/body-decompress-plugin && \
|
|
||||||
#git clone --recursive https://github.com/coreruleset/auto-decoding-plugin /tmp/auto-decoding-plugin && \
|
|
||||||
#git clone --recursive https://github.com/coreruleset/google-oauth2-plugin /tmp/google-oauth2-plugin && \
|
|
||||||
mv /tmp/coreruleset/plugins /usr/local/nginx/conf/conf.d/include/coreruleset/plugins && \
|
|
||||||
#mv /tmp/phpmyadmin-rule-exclusions-plugin/plugins/* /usr/local/nginx/conf/conf.d/include/coreruleset/plugins && \
|
|
||||||
#mv /tmp/nextcloud-rule-exclusions-plugin/plugins/* /usr/local/nginx/conf/conf.d/include/coreruleset/plugins && \
|
|
||||||
#mv /tmp/wordpress-rule-exclusions-plugin/plugins/* /usr/local/nginx/conf/conf.d/include/coreruleset/plugins && \
|
|
||||||
#mv /tmp/cpanel-rule-exclusions-plugin/plugins/* /usr/local/nginx/conf/conf.d/include/coreruleset/plugins && \
|
|
||||||
#mv /tmp/body-decompress-plugin/plugins/* /usr/local/nginx/conf/conf.d/include/coreruleset/plugins && \
|
|
||||||
#mv /tmp/auto-decoding-plugin/plugins/* /usr/local/nginx/conf/conf.d/include/coreruleset/plugins && \
|
|
||||||
#mv /tmp/google-oauth2-plugin/plugins/* /usr/local/nginx/conf/conf.d/include/coreruleset/plugins && \
|
|
||||||
rm -r /tmp/* && \
|
rm -r /tmp/* && \
|
||||||
luarocks-5.1 install lua-resty-http && \
|
luarocks-5.1 install lua-resty-http && \
|
||||||
luarocks-5.1 install lua-cjson && \
|
luarocks-5.1 install lua-cjson && \
|
||||||
|
60
README.md
60
README.md
@@ -16,6 +16,8 @@ running at home or otherwise, including free TLS, without having to know too muc
|
|||||||
**Note: If you don't use network mode host, which I don't recommend, don't forget to expose port 443 on tcp AND udp (http3/quic needs udp).** <br>
|
**Note: If you don't use network mode host, which I don't recommend, don't forget to expose port 443 on tcp AND udp (http3/quic needs udp).** <br>
|
||||||
**Note: If you don't use network mode host, which I don't recommend, don't forget to enable IPv6 in Docker, see [here](https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md), you only need to edit the daemon.json and restart docker, if you use the bridge network, otherwise please enable IPv6 in your custom docker network!** <br>
|
**Note: If you don't use network mode host, which I don't recommend, don't forget to enable IPv6 in Docker, see [here](https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md), you only need to edit the daemon.json and restart docker, if you use the bridge network, otherwise please enable IPv6 in your custom docker network!** <br>
|
||||||
**Note: Don't forget to open Port 80 (tcp) and 443 (tcp AND udp, http3/quic needs udp) in your firewall (because of network mode host, you also need to open this ports in ufw, if you use ufw).** <br>
|
**Note: Don't forget to open Port 80 (tcp) and 443 (tcp AND udp, http3/quic needs udp) in your firewall (because of network mode host, you also need to open this ports in ufw, if you use ufw).** <br>
|
||||||
|
**Note: ModSecurity overblocking (403 Error)? Please see `/data/etc/modsecurity/modsecurity-default.conf` and `/opt/npm/etc/modsecurity/crs-setup.conf`.** <br>
|
||||||
|
**Note: Internal Instance? Please disable `must-staple` in `/opt/npm/tls/certbot/config.ini`.** <br>
|
||||||
|
|
||||||
|
|
||||||
## Project Goal
|
## Project Goal
|
||||||
@@ -46,7 +48,7 @@ so that the barrier for entry here is low.
|
|||||||
- Supports HTTP/3 (QUIC) protocol.
|
- Supports HTTP/3 (QUIC) protocol.
|
||||||
- Supports CrowdSec IPS. Please see [here](https://github.com/ZoeyVid/NPMplus#crowdsec) to enable it.
|
- Supports CrowdSec IPS. Please see [here](https://github.com/ZoeyVid/NPMplus#crowdsec) to enable it.
|
||||||
- Supports ModSecurity, with coreruleset as an option. You can configure ModSecurity/coreruleset by editing the files in the `/opt/npm/etc/modsecurity` folder.
|
- Supports ModSecurity, with coreruleset as an option. You can configure ModSecurity/coreruleset by editing the files in the `/opt/npm/etc/modsecurity` folder.
|
||||||
- If the core ruleset blocks valid requests, please check the `/data/etc/modsecurity/crs-setup.conf` file.
|
- If the core ruleset blocks valid requests, please check the `/opt/npm/etc/modsecurity/crs-setup.conf` file.
|
||||||
- Try to whitelist the Content-Type you are sending (for example, `application/activity+json` for Mastodon and `application/dns-message` for DoH).
|
- Try to whitelist the Content-Type you are sending (for example, `application/activity+json` for Mastodon and `application/dns-message` for DoH).
|
||||||
- Try to whitelist the HTTP request method you are using (for example, `PUT` is blocked by default, which also affects NPM).
|
- Try to whitelist the HTTP request method you are using (for example, `PUT` is blocked by default, which also affects NPM).
|
||||||
- Note: To fix [this issue](https://github.com/SpiderLabs/ModSecurity/issues/2848), instead of running `nginx -s reload`, this fork stops nginx and starts it again. This will result in a 502 error when you update your hosts. See https://github.com/ZoeyVid/NPMplus/issues/296 and https://github.com/ZoeyVid/NPMplus/issues/283.
|
- Note: To fix [this issue](https://github.com/SpiderLabs/ModSecurity/issues/2848), instead of running `nginx -s reload`, this fork stops nginx and starts it again. This will result in a 502 error when you update your hosts. See https://github.com/ZoeyVid/NPMplus/issues/296 and https://github.com/ZoeyVid/NPMplus/issues/283.
|
||||||
@@ -95,17 +97,15 @@ so that the barrier for entry here is low.
|
|||||||
- since this fork has dependency on `network_mode: host`, please don't forget to open port 80 and 443 (and maybe 81) in your firewall
|
- since this fork has dependency on `network_mode: host`, please don't forget to open port 80 and 443 (and maybe 81) in your firewall
|
||||||
|
|
||||||
# Crowdsec
|
# Crowdsec
|
||||||
1. Install crowdsec: https://doc.crowdsec.net/docs/getting_started/install_crowdsec
|
1. Install crowdsec using this compose file: https://github.com/ZoeyVid/NPMplus/blob/develop/compose.crowdsec.yaml
|
||||||
2. make sure to use `network_mode: host` in your compose file
|
2. make sure to use `network_mode: host` in your compose file
|
||||||
3. run `cscli bouncers add npm -o raw` and save the output
|
3. run `docker exec crowdsec cscli bouncers add npmplus -o raw` and save the output
|
||||||
4. run `cscli config show --key "Config.API.Client.Credentials.URL"` and save the output
|
4. open `/data/etc/crowdsec/crowdsec.conf`
|
||||||
5. open `/data/etc/crowdsec/crowdsec.conf`
|
5. set `ENABLED` to `true`
|
||||||
6. set `ENABLED` to `true`
|
6. use the output of step 4 as `API_KEY`
|
||||||
7. use the output of step 4 as `API_KEY`
|
7. make sure `API_URL` is set to `http://127.0.0.1:8080`
|
||||||
8. use the output of step 5 as `API_URL` - But remove the `/` at the end (correct: `http://127.0.0.1:8080` - incorrect: `http://127.0.0.1:8080/`)
|
9. save the file
|
||||||
9. make your changes
|
10. restart the npm
|
||||||
10. save the file
|
|
||||||
11. restart the npm
|
|
||||||
|
|
||||||
# Use as webserver
|
# Use as webserver
|
||||||
|
|
||||||
@@ -153,43 +153,7 @@ location / {
|
|||||||
- [Docker Install documentation](https://docs.docker.com/engine)
|
- [Docker Install documentation](https://docs.docker.com/engine)
|
||||||
- [Docker Compose Install documentation](https://docs.docker.com/compose/install/linux)
|
- [Docker Compose Install documentation](https://docs.docker.com/compose/install/linux)
|
||||||
|
|
||||||
2. Create a compose.yaml file similar to this (or use it as a portainer stack):
|
2. Create a compose.yaml file similar to [this](https://github.com/ZoeyVid/NPMplus/blob/develop/compose.yaml) (or use it as a portainer stack):´
|
||||||
|
|
||||||
```yml
|
|
||||||
version: "3"
|
|
||||||
services:
|
|
||||||
npmplus:
|
|
||||||
container_name: npmplus
|
|
||||||
image: zoeyvid/npmplus
|
|
||||||
restart: always
|
|
||||||
network_mode: host
|
|
||||||
volumes:
|
|
||||||
- "/opt/npm:/data"
|
|
||||||
# - "/var/www:/var/www" # optional, if you want to use it as webserver for html/php
|
|
||||||
# - "/opt/npm-letsencrypt:/etc/letsencrypt" # Only needed for first time migration from original nginx-proxy-manager to this fork
|
|
||||||
environment:
|
|
||||||
- "TZ=Europe/Berlin" # set timezone, required
|
|
||||||
# - "PUID=1000" # set group id, default 0 (root)
|
|
||||||
# - "PGID=1000" # set user id, default 0 (root)
|
|
||||||
# - "NIBEP=48694" # internal port, always bound to 127.0.0.1, default 48693, you need to change it, if you want to run multiple npm instances in network mode host
|
|
||||||
# - "NPM_PORT=82" # Port the NPM backend should be bound to, default 81, you need to change it, if you want to run multiple npm instances in network mode host
|
|
||||||
# - "IPV4_BINDING=127.0.0.1" # IPv4 address to bind, defaults to all
|
|
||||||
# - "NPM_IPV4_BINDING=127.0.0.1" # IPv4 address to bind for the NPM backend, defaults to all
|
|
||||||
# - "IPV6_BINDING=[::1]" # IPv6 address to bind, defaults to all
|
|
||||||
# - "NPM_IPV6_BINDING=[::1]" # IPv6 address to bind for the NPM backend, defaults to all
|
|
||||||
# - "DISABLE_IPV6=true" # disable IPv6, overrides with IPV6_BINDING, default false
|
|
||||||
# - "NPM_DISABLE_IPV6=true" # disable IPv6 for the NPM backend, overrides with NPM_IPV6_BINDING, default false, overrides NPM_LISTEN_LOCALHOST
|
|
||||||
# - "NPM_LISTEN_LOCALHOST=true" # Bind the NPM Dashboard on Port 81 only to localhost, overrides with NPM_IPV4_BINDING/NPM_IPV6_BINDING, default false
|
|
||||||
# - "NPM_CERT_ID=1" # ID of cert, which should be used instead of dummycerts, default 0/unset/dummycerts
|
|
||||||
# - "DISABLE_HTTP=true" # disables nginx to listen on port 80, default false
|
|
||||||
# - "NGINX_LOG_NOT_FOUND=true" # Allow logging of 404 errors, default false
|
|
||||||
# - "CLEAN=false" # Clean folders, default true
|
|
||||||
# - "FULLCLEAN=true" # Clean unused config folders, default false
|
|
||||||
# - "PHP81=true" # Activate PHP81, default false
|
|
||||||
# - "PHP81_APKS=php81-curl php-81-curl" # Add php extensions, see available packages here: https://pkgs.alpinelinux.org/packages?branch=v3.18&repo=community&arch=x86_64&name=php81-*, default none
|
|
||||||
# - "PHP82=true" # Activate PHP82, default false
|
|
||||||
# - "PHP82_APKS=php82-curl php-82-curl" # Add php extensions, see available packages here: https://pkgs.alpinelinux.org/packages?branch=v3.18&repo=community&arch=x86_64&name=php82-*, default none
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Bring up your stack by running (or deploy your portainer stack)
|
3. Bring up your stack by running (or deploy your portainer stack)
|
||||||
```bash
|
```bash
|
||||||
|
@@ -12,11 +12,11 @@
|
|||||||
"body-parser": "1.20.2",
|
"body-parser": "1.20.2",
|
||||||
"compression": "1.7.4",
|
"compression": "1.7.4",
|
||||||
"express": "4.18.2",
|
"express": "4.18.2",
|
||||||
"express-fileupload": "1.4.1",
|
"express-fileupload": "1.4.2",
|
||||||
"gravatar": "1.8.2",
|
"gravatar": "1.8.2",
|
||||||
"jsonwebtoken": "9.0.2",
|
"jsonwebtoken": "9.0.2",
|
||||||
"knex": "3.0.1",
|
"knex": "3.0.1",
|
||||||
"liquidjs": "10.9.3",
|
"liquidjs": "10.9.4",
|
||||||
"lodash": "4.17.21",
|
"lodash": "4.17.21",
|
||||||
"moment": "2.29.4",
|
"moment": "2.29.4",
|
||||||
"mysql": "2.18.1",
|
"mysql": "2.18.1",
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
"author": "Jamie Curnow <jc@jc21.com> and ZoeyVid <zoeyvid@zvcdn.de>",
|
"author": "Jamie Curnow <jc@jc21.com> and ZoeyVid <zoeyvid@zvcdn.de>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"eslint": "8.52.0",
|
"eslint": "8.53.0",
|
||||||
"eslint-plugin-align-assignments": "1.1.2"
|
"eslint-plugin-align-assignments": "1.1.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -10,8 +10,6 @@
|
|||||||
{% unless certificate and certificate_id > 0 -%}
|
{% unless certificate and certificate_id > 0 -%}
|
||||||
{% unless ssl_forced == 1 or ssl_forced == true %}
|
{% unless ssl_forced == 1 or ssl_forced == true %}
|
||||||
{% unless hsts_enabled == 1 or hsts_enabled == true %}
|
{% unless hsts_enabled == 1 or hsts_enabled == true %}
|
||||||
more_clear_headers "Content-Security-Policy";
|
|
||||||
|
|
||||||
more_clear_headers "Expect-CT";
|
more_clear_headers "Expect-CT";
|
||||||
more_clear_headers "Strict-Transport-Security";
|
more_clear_headers "Strict-Transport-Security";
|
||||||
{% endunless %}
|
{% endunless %}
|
||||||
|
13
compose.crowdsec.yaml
Normal file
13
compose.crowdsec.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
services:
|
||||||
|
crowdsec:
|
||||||
|
container_name: crowdsec
|
||||||
|
image: crowdsecurity/crowdsec
|
||||||
|
restart: always
|
||||||
|
network_mode: bridge
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:8080:8080"
|
||||||
|
environment:
|
||||||
|
- "TZ=Europe/Berlin"
|
||||||
|
volumes:
|
||||||
|
- "/opt/crowdsec/conf:/etc/crowdsec"
|
||||||
|
- "/opt/crowdsec/data:/var/lib/crowdsec/data"
|
@@ -4,7 +4,7 @@
|
|||||||
"description": "A beautiful interface for creating Nginx endpoints",
|
"description": "A beautiful interface for creating Nginx endpoints",
|
||||||
"main": "js/index.js",
|
"main": "js/index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/core": "7.23.2",
|
"@babel/core": "7.23.3",
|
||||||
"babel-core": "6.26.3",
|
"babel-core": "6.26.3",
|
||||||
"babel-loader": "8.3.0",
|
"babel-loader": "8.3.0",
|
||||||
"babel-preset-env": "1.7.0",
|
"babel-preset-env": "1.7.0",
|
||||||
|
@@ -359,7 +359,6 @@ find /data/nginx -type f -name '*.conf' -exec sed -i "/ssl_stapling/d" {} \;
|
|||||||
find /data/nginx -type f -name '*.conf' -exec sed -i "/ssl_stapling_verify/d" {} \;
|
find /data/nginx -type f -name '*.conf' -exec sed -i "/ssl_stapling_verify/d" {} \;
|
||||||
|
|
||||||
touch /data/etc/html/index.html \
|
touch /data/etc/html/index.html \
|
||||||
/data/etc/modsecurity/modsecurity.conf \
|
|
||||||
/data/nginx/default.conf \
|
/data/nginx/default.conf \
|
||||||
/data/nginx/ip_ranges.conf \
|
/data/nginx/ip_ranges.conf \
|
||||||
/data/nginx/custom/root.conf \
|
/data/nginx/custom/root.conf \
|
||||||
@@ -372,9 +371,21 @@ touch /data/etc/html/index.html \
|
|||||||
/data/nginx/custom/stream.conf \
|
/data/nginx/custom/stream.conf \
|
||||||
/data/nginx/custom/server_stream.conf \
|
/data/nginx/custom/server_stream.conf \
|
||||||
/data/nginx/custom/server_stream_tcp.conf \
|
/data/nginx/custom/server_stream_tcp.conf \
|
||||||
/data/nginx/custom/server_stream_udp.conf
|
/data/nginx/custom/server_stream_udp.conf \
|
||||||
|
/data/etc/modsecurity/modsecurity-extra.conf
|
||||||
|
|
||||||
cp -vn /usr/local/nginx/conf/conf.d/include/coreruleset/crs-setup.conf.example /data/etc/modsecurity/crs-setup.conf
|
if [ ! -f /data/etc/modsecurity/modsecurity-default.conf ]; then
|
||||||
|
cp -vn /usr/local/nginx/conf/conf.d/include/modsecurity.conf.example /data/etc/modsecurity/modsecurity-default.conf
|
||||||
|
fi
|
||||||
|
cp /usr/local/nginx/conf/conf.d/include/modsecurity.conf.example /data/etc/modsecurity/modsecurity-default.conf.example
|
||||||
|
|
||||||
|
if [ ! -f /data/etc/modsecurity/modsecurity.conf ]; then
|
||||||
|
mv -v /usr/local/nginx/conf/conf.d/include/coreruleset/crs-setup.conf.example /data/etc/modsecurity/modsecurity-extra.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f /data/etc/modsecurity/crs-setup.conf ]; then
|
||||||
|
cp -vn /usr/local/nginx/conf/conf.d/include/coreruleset/crs-setup.conf.example /data/etc/modsecurity/crs-setup.conf
|
||||||
|
fi
|
||||||
cp /usr/local/nginx/conf/conf.d/include/coreruleset/crs-setup.conf.example /data/etc/modsecurity/crs-setup.conf.example
|
cp /usr/local/nginx/conf/conf.d/include/coreruleset/crs-setup.conf.example /data/etc/modsecurity/crs-setup.conf.example
|
||||||
|
|
||||||
if [ "$NPM_CERT_ID" = "0" ]; then
|
if [ "$NPM_CERT_ID" = "0" ]; then
|
||||||
@@ -499,20 +510,20 @@ sed -i "s|48693|$NIBEP|g" /usr/local/nginx/conf/conf.d/npm.conf
|
|||||||
sed -i "s/#\?listen \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+:\)\?\({{ incoming_port }}\)/listen $IPV4_BINDING:\2/g" /app/templates/stream.conf
|
sed -i "s/#\?listen \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+:\)\?\({{ incoming_port }}\)/listen $IPV4_BINDING:\2/g" /app/templates/stream.conf
|
||||||
sed -i "s/#\?listen \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+:\)\?\([0-9]\+\)/listen $IPV4_BINDING:\2/g" /usr/local/nginx/conf/conf.d/no-server-name.conf
|
sed -i "s/#\?listen \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+:\)\?\([0-9]\+\)/listen $IPV4_BINDING:\2/g" /usr/local/nginx/conf/conf.d/no-server-name.conf
|
||||||
find /data/nginx -type f -name '*.conf' -exec sed -i "s/#\?listen \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+:\)\?\([0-9]\+\)/listen $IPV4_BINDING:\2/g" {} \;
|
find /data/nginx -type f -name '*.conf' -exec sed -i "s/#\?listen \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+:\)\?\([0-9]\+\)/listen $IPV4_BINDING:\2/g" {} \;
|
||||||
find /app/templates -type f -name '*.conf' -exec sed -i "s/#\?listen \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+:\)\?\([0-9]\+\)/listen $IPV4_BINDING:\2/g" {} \;
|
find /app/templates -type f -name '*.conf' -not -path "/app/templates/stream.conf" -exec sed -i "s/#\?listen \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+:\)\?\([0-9]\+\)/listen $IPV4_BINDING:\2/g" {} \;
|
||||||
find /usr/local/nginx/conf/conf.d -type f -name '*.conf' -exec sed -i "s/#\?listen \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+:\)\?\([0-9]\+\)/listen $IPV4_BINDING:\2/g" {} \;
|
find /usr/local/nginx/conf/conf.d -type f -name '*.conf' -exec sed -i "s/#\?listen \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+:\)\?\([0-9]\+\)/listen $IPV4_BINDING:\2/g" {} \;
|
||||||
|
|
||||||
if [ "$DISABLE_IPV6" = "true" ]; then
|
if [ "$DISABLE_IPV6" = "true" ]; then
|
||||||
sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\({{ incoming_port }}\)/#listen \[\1\]:\2/g" /app/templates/stream.conf
|
sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\({{ incoming_port }}\)/#listen \[\1\]:\2/g" /app/templates/stream.conf
|
||||||
sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/#listen \[\1\]:\2/g" /usr/local/nginx/conf/conf.d/no-server-name.conf
|
sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/#listen \[\1\]:\2/g" /usr/local/nginx/conf/conf.d/no-server-name.conf
|
||||||
find /data/nginx -type f -name '*.conf' -exec sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/#listen \[\1\]:\2/g" {} \;
|
find /data/nginx -type f -name '*.conf' -exec sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/#listen \[\1\]:\2/g" {} \;
|
||||||
find /app/templates -type f -name '*.conf' -exec sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/#listen \[\1\]:\2/g" {} \;
|
find /app/templates -type f -name '*.conf' -not -path "/app/templates/stream.conf" -exec sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/#listen \[\1\]:\2/g" {} \;
|
||||||
find /usr/local/nginx/conf/conf.d -type f -name '*.conf' -exec sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/#listen \[\1\]:\2/g" {} \;
|
find /usr/local/nginx/conf/conf.d -type f -name '*.conf' -exec sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/#listen \[\1\]:\2/g" {} \;
|
||||||
else
|
else
|
||||||
sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\({{ incoming_port }}\)/listen $IPV6_BINDING:\2/g" /app/templates/stream.conf
|
sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\({{ incoming_port }}\)/listen $IPV6_BINDING:\2/g" /app/templates/stream.conf
|
||||||
sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/listen $IPV6_BINDING:\2/g" /usr/local/nginx/conf/conf.d/no-server-name.conf
|
sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/listen $IPV6_BINDING:\2/g" /usr/local/nginx/conf/conf.d/no-server-name.conf
|
||||||
find /data/nginx -type f -name '*.conf' -exec sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/listen $IPV6_BINDING:\2/g" {} \;
|
find /data/nginx -type f -name '*.conf' -exec sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/listen $IPV6_BINDING:\2/g" {} \;
|
||||||
find /app/templates -type f -name '*.conf' -exec sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/listen $IPV6_BINDING:\2/g" {} \;
|
find /app/templates -type f -name '*.conf' -not -path "/app/templates/stream.conf" -exec sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/listen $IPV6_BINDING:\2/g" {} \;
|
||||||
find /usr/local/nginx/conf/conf.d -type f -name '*.conf' -exec sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/listen $IPV6_BINDING:\2/g" {} \;
|
find /usr/local/nginx/conf/conf.d -type f -name '*.conf' -exec sed -i "s/#\?listen \[\([0-9a-f:]\+\)\]:\([0-9]\+\)/listen $IPV6_BINDING:\2/g" {} \;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -529,11 +540,11 @@ fi
|
|||||||
|
|
||||||
if [ "$DISABLE_HTTP" = "true" ]; then
|
if [ "$DISABLE_HTTP" = "true" ]; then
|
||||||
find /data/nginx -type f -name '*.conf' -exec sed -i "s|#\?\(listen.*80\)|#\1|g" {} \;
|
find /data/nginx -type f -name '*.conf' -exec sed -i "s|#\?\(listen.*80\)|#\1|g" {} \;
|
||||||
find /app/templates -type f -name '*.conf' -exec sed -i "s|#\?\(listen.*80\)|#\1|g" {} \;
|
find /app/templates -type f -name '*.conf' -not -path "/app/templates/stream.conf" -exec sed -i "s|#\?\(listen.*80\)|#\1|g" {} \;
|
||||||
find /usr/local/nginx/conf/conf.d -type f -name '*.conf' -exec sed -i "s|#\?\(listen.*80\)|#\1|g" {} \;
|
find /usr/local/nginx/conf/conf.d -type f -name '*.conf' -exec sed -i "s|#\?\(listen.*80\)|#\1|g" {} \;
|
||||||
else
|
else
|
||||||
find /data/nginx -type f -name '*.conf' -exec sed -i "s|#\?\(listen.*80\)|\1|g" {} \;
|
find /data/nginx -type f -name '*.conf' -exec sed -i "s|#\?\(listen.*80\)|\1|g" {} \;
|
||||||
find /app/templates -type f -name '*.conf' -exec sed -i "s|#\?\(listen.*80\)|\1|g" {} \;
|
find /app/templates -type f -name '*.conf' -not -path "/app/templates/stream.conf" -exec sed -i "s|#\?\(listen.*80\)|\1|g" {} \;
|
||||||
find /usr/local/nginx/conf/conf.d -type f -name '*.conf' -exec sed -i "s|#\?\(listen.*80\)|\1|g" {} \;
|
find /usr/local/nginx/conf/conf.d -type f -name '*.conf' -exec sed -i "s|#\?\(listen.*80\)|\1|g" {} \;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -548,22 +559,25 @@ fi
|
|||||||
if [ ! -f /data/tls/certbot/config.ini ]; then
|
if [ ! -f /data/tls/certbot/config.ini ]; then
|
||||||
cp -vn /etc/tls/certbot.ini /data/tls/certbot/config.ini
|
cp -vn /etc/tls/certbot.ini /data/tls/certbot/config.ini
|
||||||
fi
|
fi
|
||||||
|
cp /etc/tls/certbot.ini /data/tls/certbot/config.ini.example
|
||||||
|
|
||||||
if [ ! -f /data/etc/crowdsec/ban.html ]; then
|
if [ ! -f /data/etc/crowdsec/ban.html ]; then
|
||||||
cp -vn /usr/local/nginx/conf/conf.d/include/ban.html /data/etc/crowdsec/ban.html
|
cp -vn /usr/local/nginx/conf/conf.d/include/ban.html /data/etc/crowdsec/ban.html
|
||||||
fi
|
fi
|
||||||
|
cp /usr/local/nginx/conf/conf.d/include/ban.html /data/etc/crowdsec/ban.html.example
|
||||||
|
|
||||||
if [ ! -f /data/etc/crowdsec/captcha.html ]; then
|
if [ ! -f /data/etc/crowdsec/captcha.html ]; then
|
||||||
cp -vn /usr/local/nginx/conf/conf.d/include/captcha.html /data/etc/crowdsec/captcha.html
|
cp -vn /usr/local/nginx/conf/conf.d/include/captcha.html /data/etc/crowdsec/captcha.html
|
||||||
fi
|
fi
|
||||||
|
cp /usr/local/nginx/conf/conf.d/include/captcha.html /data/etc/crowdsec/captcha.html.example
|
||||||
|
|
||||||
if [ ! -f /data/etc/crowdsec/crowdsec.conf ]; then
|
if [ ! -f /data/etc/crowdsec/crowdsec.conf ]; then
|
||||||
cp -vn /usr/local/nginx/conf/conf.d/include/crowdsec.conf /data/etc/crowdsec/crowdsec.conf
|
cp -vn /usr/local/nginx/conf/conf.d/include/crowdsec.conf /data/etc/crowdsec/crowdsec.conf
|
||||||
else
|
|
||||||
sed -i "s|crowdsec.conf|captcha.html|g" /data/etc/crowdsec/crowdsec.conf
|
|
||||||
fi
|
fi
|
||||||
|
cp /usr/local/nginx/conf/conf.d/include/crowdsec.conf /data/etc/crowdsec/crowdsec.conf.example
|
||||||
|
sed -i "s|crowdsec.conf|captcha.html|g" /data/etc/crowdsec/crowdsec.conf
|
||||||
|
|
||||||
if grep -iq "^ENABLED[ ]\+\?=[ ]\+\?true$" /data/etc/crowdsec/crowdsec.conf; then
|
if grep -iq "^ENABLED[ ]*=[ ]*true$" /data/etc/crowdsec/crowdsec.conf; then
|
||||||
cp -vn /usr/local/nginx/conf/conf.d/include/crowdsec_nginx.conf /usr/local/nginx/conf/conf.d/crowdsec.conf
|
cp -vn /usr/local/nginx/conf/conf.d/include/crowdsec_nginx.conf /usr/local/nginx/conf/conf.d/crowdsec.conf
|
||||||
else
|
else
|
||||||
rm -vf /usr/local/nginx/conf/conf.d/crowdsec.conf
|
rm -vf /usr/local/nginx/conf/conf.d/crowdsec.conf
|
||||||
|
@@ -2,6 +2,6 @@ more_set_headers "X-XSS-Protection: 0";
|
|||||||
more_set_headers "X-Frame-Options: SAMEORIGIN";
|
more_set_headers "X-Frame-Options: SAMEORIGIN";
|
||||||
more_set_headers "X-Content-Type-Options: nosniff";
|
more_set_headers "X-Content-Type-Options: nosniff";
|
||||||
more_set_headers "Referrer-Policy: strict-origin-when-cross-origin";
|
more_set_headers "Referrer-Policy: strict-origin-when-cross-origin";
|
||||||
more_set_headers "Content-Security-Policy: upgrade-insecure-requests";
|
more_set_headers "Content-Security-Policy: $content_security_policy";
|
||||||
|
|
||||||
more_set_headers "Strict-Transport-Security: max-age=31536000; includeSubDomains; preload";
|
more_set_headers "Strict-Transport-Security: max-age=31536000; includeSubDomains; preload";
|
@@ -0,0 +1,4 @@
|
|||||||
|
Include /data/etc/modsecurity/modsecurity-default.conf
|
||||||
|
Include /data/etc/modsecurity/modsecurity-extra.conf
|
||||||
|
Include /data/etc/modsecurity/crs-setup.conf
|
||||||
|
Include /usr/local/nginx/conf/conf.d/include/coreruleset/rules/*.conf
|
@@ -0,0 +1,2 @@
|
|||||||
|
Include /data/etc/modsecurity/modsecurity-default.conf
|
||||||
|
Include /data/etc/modsecurity/modsecurity-extra.conf
|
@@ -62,9 +62,9 @@ http {
|
|||||||
limit_req_zone $binary_remote_addr zone=one:10m rate=180r/s;
|
limit_req_zone $binary_remote_addr zone=one:10m rate=180r/s;
|
||||||
limit_req zone=one burst=1800;
|
limit_req zone=one burst=1800;
|
||||||
|
|
||||||
# Default upstream scheme
|
map $upstream_http_content_security_policy $content_security_policy {
|
||||||
map $host $forward_scheme {
|
default $upstream_http_content_security_policy;
|
||||||
default http;
|
'' "upgrade-insecure-requests";
|
||||||
}
|
}
|
||||||
|
|
||||||
# Websocket
|
# Websocket
|
||||||
|
Reference in New Issue
Block a user