mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-11-04 01:15:14 +00:00 
			
		
		
		
	v2.1.0 (#293)
* Fix wrapping when too many hosts are shown (#207) * Update npm packages, fixes CVE-2019-10757 * Revert some breaking packages * Major overhaul - Docker buildx support in CI - Cypress API Testing in CI - Restructured folder layout (insert clean face meme) - Added Swagger documentation and validate API against that (to be completed) - Use common base image for all supported archs, which includes updated nginx with ipv6 support - Updated certbot and changes required for it - Large amount of Hosts names will wrap in UI - Updated packages for frontend - Version bump 2.1.0 * Updated documentation * Fix JWT expire time going crazy. Now set to 1day * Backend JS formatting rules * Remove v1 importer, I doubt anyone is using v1 anymore * Added backend formatting rules and enforce them in Jenkins builds * Fix CI, doesn't need a tty * Thanks bcrypt. Why can't you just be normal. * Cleanup after syntax check Co-authored-by: Marcelo Castagna <margaale@users.noreply.github.com>
This commit is contained in:
		
							
								
								
									
										11
									
								
								docker/rootfs/bin/check-health
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								docker/rootfs/bin/check-health
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
OK=$(curl --silent http://127.0.0.1:81/api/ | jq --raw-output '.status')
 | 
			
		||||
 | 
			
		||||
if [ "$OK" == "OK" ]; then
 | 
			
		||||
	echo "OK"
 | 
			
		||||
	exit 0
 | 
			
		||||
else
 | 
			
		||||
	echo "NOT OK"
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										2
									
								
								docker/rootfs/etc/cont-finish.d/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								docker/rootfs/etc/cont-finish.d/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
*
 | 
			
		||||
!.gitignore
 | 
			
		||||
							
								
								
									
										2
									
								
								docker/rootfs/etc/cont-init.d/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								docker/rootfs/etc/cont-init.d/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
*
 | 
			
		||||
!.gitignore
 | 
			
		||||
							
								
								
									
										2
									
								
								docker/rootfs/etc/fix-attrs.d/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								docker/rootfs/etc/fix-attrs.d/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
*
 | 
			
		||||
!.gitignore
 | 
			
		||||
							
								
								
									
										4
									
								
								docker/rootfs/etc/letsencrypt.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								docker/rootfs/etc/letsencrypt.ini
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
text = True
 | 
			
		||||
non-interactive = True
 | 
			
		||||
authenticator = webroot
 | 
			
		||||
webroot-path = /data/letsencrypt-acme-challenge
 | 
			
		||||
							
								
								
									
										39
									
								
								docker/rootfs/etc/nginx/conf.d/default.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								docker/rootfs/etc/nginx/conf.d/default.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
# "You are not configured" page, which is the default if another default doesn't exist
 | 
			
		||||
server {
 | 
			
		||||
	listen 80;
 | 
			
		||||
	listen [::]:80;
 | 
			
		||||
 | 
			
		||||
	set $forward_scheme "http";
 | 
			
		||||
	set $server "127.0.0.1";
 | 
			
		||||
	set $port "80";
 | 
			
		||||
 | 
			
		||||
	server_name localhost-nginx-proxy-manager;
 | 
			
		||||
	access_log /data/logs/default.log standard;
 | 
			
		||||
	error_log /dev/null crit;
 | 
			
		||||
	include conf.d/include/assets.conf;
 | 
			
		||||
	include conf.d/include/block-exploits.conf;
 | 
			
		||||
 | 
			
		||||
	location / {
 | 
			
		||||
		index index.html;
 | 
			
		||||
		root /var/www/html;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# First 443 Host, which is the default if another default doesn't exist
 | 
			
		||||
server {
 | 
			
		||||
	listen 443 ssl;
 | 
			
		||||
	listen [::]:443 ssl;
 | 
			
		||||
 | 
			
		||||
	set $forward_scheme "https";
 | 
			
		||||
	set $server "127.0.0.1";
 | 
			
		||||
	set $port "443";
 | 
			
		||||
 | 
			
		||||
	server_name localhost;
 | 
			
		||||
	access_log /data/logs/default.log standard;
 | 
			
		||||
	error_log /dev/null crit;
 | 
			
		||||
	ssl_certificate /data/nginx/dummycert.pem;
 | 
			
		||||
	ssl_certificate_key /data/nginx/dummykey.pem;
 | 
			
		||||
	include conf.d/include/ssl-ciphers.conf;
 | 
			
		||||
 | 
			
		||||
	return 444;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								docker/rootfs/etc/nginx/conf.d/dev.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								docker/rootfs/etc/nginx/conf.d/dev.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
server {
 | 
			
		||||
	listen 81 default;
 | 
			
		||||
	listen [::]:81 default;
 | 
			
		||||
 | 
			
		||||
	server_name nginxproxymanager-dev;
 | 
			
		||||
	root /app/frontend/dist;
 | 
			
		||||
	access_log /dev/null;
 | 
			
		||||
 | 
			
		||||
	location /api {
 | 
			
		||||
		return 302 /api/;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	location /api/ {
 | 
			
		||||
		add_header            X-Served-By $host;
 | 
			
		||||
		proxy_set_header Host $host;
 | 
			
		||||
		proxy_set_header      X-Forwarded-Scheme $scheme;
 | 
			
		||||
		proxy_set_header      X-Forwarded-Proto  $scheme;
 | 
			
		||||
		proxy_set_header      X-Forwarded-For    $remote_addr;
 | 
			
		||||
		proxy_pass            http://127.0.0.1:3000/;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	location / {
 | 
			
		||||
		index index.html;
 | 
			
		||||
		try_files $uri $uri.html $uri/ /index.html;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								docker/rootfs/etc/nginx/conf.d/include/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								docker/rootfs/etc/nginx/conf.d/include/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
resolvers.conf
 | 
			
		||||
							
								
								
									
										31
									
								
								docker/rootfs/etc/nginx/conf.d/include/assets.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								docker/rootfs/etc/nginx/conf.d/include/assets.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
location ~* ^.*\.(css|js|jpe?g|gif|png|woff|eot|ttf|svg|ico|css\.map|js\.map)$ {
 | 
			
		||||
	if_modified_since off;
 | 
			
		||||
 | 
			
		||||
	# use the public cache
 | 
			
		||||
	proxy_cache public-cache;
 | 
			
		||||
	proxy_cache_key $host$request_uri;
 | 
			
		||||
 | 
			
		||||
	# ignore these headers for media
 | 
			
		||||
	proxy_ignore_headers Set-Cookie Cache-Control Expires X-Accel-Expires;
 | 
			
		||||
 | 
			
		||||
	# cache 200s and also 404s (not ideal but there are a few 404 images for some reason)
 | 
			
		||||
	proxy_cache_valid any 30m;
 | 
			
		||||
	proxy_cache_valid 404 1m;
 | 
			
		||||
 | 
			
		||||
	# strip this header to avoid If-Modified-Since requests
 | 
			
		||||
	proxy_hide_header Last-Modified;
 | 
			
		||||
	proxy_hide_header Cache-Control;
 | 
			
		||||
	proxy_hide_header Vary;
 | 
			
		||||
 | 
			
		||||
	proxy_cache_bypass 0;
 | 
			
		||||
	proxy_no_cache 0;
 | 
			
		||||
 | 
			
		||||
	proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504 http_404;
 | 
			
		||||
	proxy_connect_timeout 5s;
 | 
			
		||||
	proxy_read_timeout 45s;
 | 
			
		||||
 | 
			
		||||
	expires @30m;
 | 
			
		||||
	access_log  off;
 | 
			
		||||
 | 
			
		||||
	include conf.d/include/proxy.conf;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										136
									
								
								docker/rootfs/etc/nginx/conf.d/include/block-exploits.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								docker/rootfs/etc/nginx/conf.d/include/block-exploits.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,136 @@
 | 
			
		||||
## Block SQL injections
 | 
			
		||||
set $block_sql_injections 0;
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "union.*select.*\(") {
 | 
			
		||||
	set $block_sql_injections 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "union.*all.*select.*") {
 | 
			
		||||
	set $block_sql_injections 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "concat.*\(") {
 | 
			
		||||
	set $block_sql_injections 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($block_sql_injections = 1) {
 | 
			
		||||
	return 403;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
## Block file injections
 | 
			
		||||
set $block_file_injections 0;
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "[a-zA-Z0-9_]=http://") {
 | 
			
		||||
	set $block_file_injections 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "[a-zA-Z0-9_]=(\.\.//?)+") {
 | 
			
		||||
	set $block_file_injections 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "[a-zA-Z0-9_]=/([a-z0-9_.]//?)+") {
 | 
			
		||||
	set $block_file_injections 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($block_file_injections = 1) {
 | 
			
		||||
	return 403;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
## Block common exploits
 | 
			
		||||
set $block_common_exploits 0;
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "(<|%3C).*script.*(>|%3E)") {
 | 
			
		||||
	set $block_common_exploits 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") {
 | 
			
		||||
	set $block_common_exploits 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") {
 | 
			
		||||
	set $block_common_exploits 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "proc/self/environ") {
 | 
			
		||||
	set $block_common_exploits 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3D)") {
 | 
			
		||||
	set $block_common_exploits 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "base64_(en|de)code\(.*\)") {
 | 
			
		||||
	set $block_common_exploits 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($block_common_exploits = 1) {
 | 
			
		||||
	return 403;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
## Block spam
 | 
			
		||||
set $block_spam 0;
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "\b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)\b") {
 | 
			
		||||
	set $block_spam 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "\b(erections|hoodia|huronriveracres|impotence|levitra|libido)\b") {
 | 
			
		||||
	set $block_spam 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "\b(ambien|blue\spill|cialis|cocaine|ejaculation|erectile)\b") {
 | 
			
		||||
	set $block_spam 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($query_string ~ "\b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)\b") {
 | 
			
		||||
	set $block_spam 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($block_spam = 1) {
 | 
			
		||||
	return 403;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
## Block user agents
 | 
			
		||||
set $block_user_agents 0;
 | 
			
		||||
 | 
			
		||||
# Disable Akeeba Remote Control 2.5 and earlier
 | 
			
		||||
if ($http_user_agent ~ "Indy Library") {
 | 
			
		||||
	set $block_user_agents 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Common bandwidth hoggers and hacking tools.
 | 
			
		||||
if ($http_user_agent ~ "libwww-perl") {
 | 
			
		||||
	set $block_user_agents 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($http_user_agent ~ "GetRight") {
 | 
			
		||||
	set $block_user_agents 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($http_user_agent ~ "GetWeb!") {
 | 
			
		||||
	set $block_user_agents 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($http_user_agent ~ "Go!Zilla") {
 | 
			
		||||
	set $block_user_agents 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($http_user_agent ~ "Download Demon") {
 | 
			
		||||
	set $block_user_agents 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($http_user_agent ~ "Go-Ahead-Got-It") {
 | 
			
		||||
	set $block_user_agents 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($http_user_agent ~ "TurnitinBot") {
 | 
			
		||||
	set $block_user_agents 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($http_user_agent ~ "GrabNet") {
 | 
			
		||||
	set $block_user_agents 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($block_user_agents = 1) {
 | 
			
		||||
	return 403;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								docker/rootfs/etc/nginx/conf.d/include/force-ssl.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docker/rootfs/etc/nginx/conf.d/include/force-ssl.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
if ($scheme = "http") {
 | 
			
		||||
	return 301 https://$host$request_uri;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										196
									
								
								docker/rootfs/etc/nginx/conf.d/include/ip_ranges.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										196
									
								
								docker/rootfs/etc/nginx/conf.d/include/ip_ranges.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,196 @@
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 144.220.0.0/16;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.124.128.0/17;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 54.230.0.0/16;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 54.239.128.0/18;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.82.128.0/19;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 99.84.0.0/16;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 204.246.172.0/24;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 205.251.192.0/19;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 54.239.192.0/19;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 70.132.0.0/18;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 13.32.0.0/15;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 13.224.0.0/14;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 13.35.0.0/16;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 204.246.164.0/22;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 204.246.168.0/22;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 71.152.0.0/17;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 216.137.32.0/19;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 205.251.249.0/24;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 99.86.0.0/16;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.46.0.0/18;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.84.0.0/15;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 204.246.173.0/24;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 130.176.0.0/16;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 64.252.64.0/18;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 204.246.174.0/23;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 64.252.128.0/18;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 205.251.254.0/24;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 143.204.0.0/16;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 205.251.252.0/23;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 204.246.176.0/20;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 13.249.0.0/16;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 54.240.128.0/18;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 205.251.250.0/23;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.222.128.0/17;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 54.182.0.0/16;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 54.192.0.0/16;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 13.124.199.0/24;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 34.226.14.0/24;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.15.127.128/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 35.158.136.0/24;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.57.254.0/24;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 18.216.170.128/25;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 13.52.204.0/23;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 13.54.63.128/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 13.59.250.0/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 13.210.67.128/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 35.167.191.128/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.47.139.0/24;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.199.127.192/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.212.248.0/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.66.194.128/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 13.113.203.0/24;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 99.79.168.0/23;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 34.195.252.0/24;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 35.162.63.192/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 34.223.12.224/27;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.56.127.0/25;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 34.223.80.192/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 13.228.69.0/24;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 34.216.51.0/25;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 3.231.2.0/25;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 54.233.255.128/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 18.200.212.0/23;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.52.191.128/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 3.234.232.224/27;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.78.247.128/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 52.220.191.0/26;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 34.232.163.208/29;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2600:9000:eee::/48;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2600:9000:4000::/36;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2600:9000:3000::/36;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2600:9000:f000::/36;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2600:9000:fff::/48;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2600:9000:2000::/36;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2600:9000:1000::/36;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2600:9000:ddd::/48;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2600:9000:5300::/40;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 173.245.48.0/20;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 103.21.244.0/22;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 103.22.200.0/22;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 103.31.4.0/22;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 141.101.64.0/18;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 108.162.192.0/18;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 190.93.240.0/20;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 188.114.96.0/20;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 197.234.240.0/22;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 198.41.128.0/17;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 162.158.0.0/15;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 104.16.0.0/12;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 172.64.0.0/13;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 131.0.72.0/22;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2400:cb00::/32;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2606:4700::/32;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2803:f800::/32;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2405:b500::/32;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2405:8100::/32;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2a06:98c0::/29;
 | 
			
		||||
 | 
			
		||||
set_real_ip_from 2c0f:f248::/32;
 | 
			
		||||
@@ -0,0 +1,29 @@
 | 
			
		||||
# Rule for legitimate ACME Challenge requests (like /.well-known/acme-challenge/xxxxxxxxx)
 | 
			
		||||
# We use ^~ here, so that we don't check other regexes (for speed-up). We actually MUST cancel
 | 
			
		||||
# other regex checks, because in our other config files have regex rule that denies access to files with dotted names.
 | 
			
		||||
location ^~ /.well-known/acme-challenge/ {
 | 
			
		||||
	# Since this is for letsencrypt authentication of a domain and they do not give IP ranges of their infrastructure
 | 
			
		||||
	# we need to open up access by turning off auth and IP ACL for this location.
 | 
			
		||||
	auth_basic off;
 | 
			
		||||
	allow all;
 | 
			
		||||
 | 
			
		||||
	# Set correct content type. According to this:
 | 
			
		||||
	# https://community.letsencrypt.org/t/using-the-webroot-domain-verification-method/1445/29
 | 
			
		||||
	# Current specification requires "text/plain" or no content header at all.
 | 
			
		||||
	# It seems that "text/plain" is a safe option.
 | 
			
		||||
	default_type "text/plain";
 | 
			
		||||
 | 
			
		||||
	# This directory must be the same as in /etc/letsencrypt/cli.ini
 | 
			
		||||
	# as "webroot-path" parameter. Also don't forget to set "authenticator" parameter
 | 
			
		||||
	# there to "webroot".
 | 
			
		||||
	# Do NOT use alias, use root! Target directory is located here:
 | 
			
		||||
	# /var/www/common/letsencrypt/.well-known/acme-challenge/
 | 
			
		||||
	root /data/letsencrypt-acme-challenge;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Hide /acme-challenge subdirectory and return 404 on all requests.
 | 
			
		||||
# It is somewhat more secure than letting Nginx return 403.
 | 
			
		||||
# Ending slash is important!
 | 
			
		||||
location = /.well-known/acme-challenge/ {
 | 
			
		||||
	return 404;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										6
									
								
								docker/rootfs/etc/nginx/conf.d/include/proxy.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								docker/rootfs/etc/nginx/conf.d/include/proxy.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
add_header       X-Served-By $host;
 | 
			
		||||
proxy_set_header Host $host;
 | 
			
		||||
proxy_set_header X-Forwarded-Scheme $scheme;
 | 
			
		||||
proxy_set_header X-Forwarded-Proto  $scheme;
 | 
			
		||||
proxy_set_header X-Forwarded-For    $remote_addr;
 | 
			
		||||
proxy_pass       $forward_scheme://$server:$port;
 | 
			
		||||
							
								
								
									
										9
									
								
								docker/rootfs/etc/nginx/conf.d/include/ssl-ciphers.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								docker/rootfs/etc/nginx/conf.d/include/ssl-ciphers.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
ssl_session_timeout 5m;
 | 
			
		||||
ssl_session_cache shared:SSL:50m;
 | 
			
		||||
 | 
			
		||||
# intermediate configuration. tweak to your needs.
 | 
			
		||||
ssl_protocols TLSv1.2 TLSv1.3;
 | 
			
		||||
ssl_ciphers 'EECDH+AESGCM:AES256+EECDH:AES256+EDH:EDH+AESGCM:ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-
 | 
			
		||||
ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AE
 | 
			
		||||
S128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES';
 | 
			
		||||
ssl_prefer_server_ciphers on;
 | 
			
		||||
							
								
								
									
										30
									
								
								docker/rootfs/etc/nginx/conf.d/production.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								docker/rootfs/etc/nginx/conf.d/production.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
# Admin Interface
 | 
			
		||||
server {
 | 
			
		||||
	listen 81 default;
 | 
			
		||||
	listen [::]:81 default;
 | 
			
		||||
 | 
			
		||||
	server_name nginxproxymanager;
 | 
			
		||||
	root /app/frontend;
 | 
			
		||||
	access_log /dev/null;
 | 
			
		||||
 | 
			
		||||
	location /api {
 | 
			
		||||
		return 302 /api/;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	location /api/ {
 | 
			
		||||
		add_header            X-Served-By $host;
 | 
			
		||||
		proxy_set_header Host $host;
 | 
			
		||||
		proxy_set_header      X-Forwarded-Scheme $scheme;
 | 
			
		||||
		proxy_set_header      X-Forwarded-Proto  $scheme;
 | 
			
		||||
		proxy_set_header      X-Forwarded-For    $remote_addr;
 | 
			
		||||
		proxy_pass            http://127.0.0.1:3000/;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	location / {
 | 
			
		||||
		index index.html;
 | 
			
		||||
		if ($request_uri ~ ^/(.*)\.html$) {
 | 
			
		||||
			return 302 /$1;
 | 
			
		||||
		}
 | 
			
		||||
		try_files $uri $uri.html $uri/ /index.html;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										96
									
								
								docker/rootfs/etc/nginx/mime.types
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								docker/rootfs/etc/nginx/mime.types
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,96 @@
 | 
			
		||||
types {
 | 
			
		||||
    text/html                                        html htm shtml;
 | 
			
		||||
    text/css                                         css;
 | 
			
		||||
    text/xml                                         xml;
 | 
			
		||||
    image/gif                                        gif;
 | 
			
		||||
    image/jpeg                                       jpeg jpg;
 | 
			
		||||
    application/javascript                           js;
 | 
			
		||||
    application/atom+xml                             atom;
 | 
			
		||||
    application/rss+xml                              rss;
 | 
			
		||||
 | 
			
		||||
    text/mathml                                      mml;
 | 
			
		||||
    text/plain                                       txt;
 | 
			
		||||
    text/vnd.sun.j2me.app-descriptor                 jad;
 | 
			
		||||
    text/vnd.wap.wml                                 wml;
 | 
			
		||||
    text/x-component                                 htc;
 | 
			
		||||
 | 
			
		||||
    image/png                                        png;
 | 
			
		||||
    image/svg+xml                                    svg svgz;
 | 
			
		||||
    image/tiff                                       tif tiff;
 | 
			
		||||
    image/vnd.wap.wbmp                               wbmp;
 | 
			
		||||
    image/webp                                       webp;
 | 
			
		||||
    image/x-icon                                     ico;
 | 
			
		||||
    image/x-jng                                      jng;
 | 
			
		||||
    image/x-ms-bmp                                   bmp;
 | 
			
		||||
 | 
			
		||||
    font/woff                                        woff;
 | 
			
		||||
    font/woff2                                       woff2;
 | 
			
		||||
 | 
			
		||||
    application/java-archive                         jar war ear;
 | 
			
		||||
    application/json                                 json;
 | 
			
		||||
    application/mac-binhex40                         hqx;
 | 
			
		||||
    application/msword                               doc;
 | 
			
		||||
    application/pdf                                  pdf;
 | 
			
		||||
    application/postscript                           ps eps ai;
 | 
			
		||||
    application/rtf                                  rtf;
 | 
			
		||||
    application/vnd.apple.mpegurl                    m3u8;
 | 
			
		||||
    application/vnd.google-earth.kml+xml             kml;
 | 
			
		||||
    application/vnd.google-earth.kmz                 kmz;
 | 
			
		||||
    application/vnd.ms-excel                         xls;
 | 
			
		||||
    application/vnd.ms-fontobject                    eot;
 | 
			
		||||
    application/vnd.ms-powerpoint                    ppt;
 | 
			
		||||
    application/vnd.oasis.opendocument.graphics      odg;
 | 
			
		||||
    application/vnd.oasis.opendocument.presentation  odp;
 | 
			
		||||
    application/vnd.oasis.opendocument.spreadsheet   ods;
 | 
			
		||||
    application/vnd.oasis.opendocument.text          odt;
 | 
			
		||||
    application/vnd.openxmlformats-officedocument.presentationml.presentation
 | 
			
		||||
                                                     pptx;
 | 
			
		||||
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
 | 
			
		||||
                                                     xlsx;
 | 
			
		||||
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
 | 
			
		||||
                                                     docx;
 | 
			
		||||
    application/vnd.wap.wmlc                         wmlc;
 | 
			
		||||
    application/x-7z-compressed                      7z;
 | 
			
		||||
    application/x-cocoa                              cco;
 | 
			
		||||
    application/x-java-archive-diff                  jardiff;
 | 
			
		||||
    application/x-java-jnlp-file                     jnlp;
 | 
			
		||||
    application/x-makeself                           run;
 | 
			
		||||
    application/x-perl                               pl pm;
 | 
			
		||||
    application/x-pilot                              prc pdb;
 | 
			
		||||
    application/x-rar-compressed                     rar;
 | 
			
		||||
    application/x-redhat-package-manager             rpm;
 | 
			
		||||
    application/x-sea                                sea;
 | 
			
		||||
    application/x-shockwave-flash                    swf;
 | 
			
		||||
    application/x-stuffit                            sit;
 | 
			
		||||
    application/x-tcl                                tcl tk;
 | 
			
		||||
    application/x-x509-ca-cert                       der pem crt;
 | 
			
		||||
    application/x-xpinstall                          xpi;
 | 
			
		||||
    application/xhtml+xml                            xhtml;
 | 
			
		||||
    application/xspf+xml                             xspf;
 | 
			
		||||
    application/zip                                  zip;
 | 
			
		||||
 | 
			
		||||
    application/octet-stream                         bin exe dll;
 | 
			
		||||
    application/octet-stream                         deb;
 | 
			
		||||
    application/octet-stream                         dmg;
 | 
			
		||||
    application/octet-stream                         iso img;
 | 
			
		||||
    application/octet-stream                         msi msp msm;
 | 
			
		||||
 | 
			
		||||
    audio/midi                                       mid midi kar;
 | 
			
		||||
    audio/mpeg                                       mp3;
 | 
			
		||||
    audio/ogg                                        ogg;
 | 
			
		||||
    audio/x-m4a                                      m4a;
 | 
			
		||||
    audio/x-realaudio                                ra;
 | 
			
		||||
 | 
			
		||||
    video/3gpp                                       3gpp 3gp;
 | 
			
		||||
    video/mp2t                                       ts;
 | 
			
		||||
    video/mp4                                        mp4;
 | 
			
		||||
    video/mpeg                                       mpeg mpg;
 | 
			
		||||
    video/quicktime                                  mov;
 | 
			
		||||
    video/webm                                       webm;
 | 
			
		||||
    video/x-flv                                      flv;
 | 
			
		||||
    video/x-m4v                                      m4v;
 | 
			
		||||
    video/x-mng                                      mng;
 | 
			
		||||
    video/x-ms-asf                                   asx asf;
 | 
			
		||||
    video/x-ms-wmv                                   wmv;
 | 
			
		||||
    video/x-msvideo                                  avi;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										84
									
								
								docker/rootfs/etc/nginx/nginx.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								docker/rootfs/etc/nginx/nginx.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,84 @@
 | 
			
		||||
# run nginx in foreground
 | 
			
		||||
daemon off;
 | 
			
		||||
 | 
			
		||||
user root;
 | 
			
		||||
 | 
			
		||||
# Set number of worker processes automatically based on number of CPU cores.
 | 
			
		||||
worker_processes auto;
 | 
			
		||||
 | 
			
		||||
# Enables the use of JIT for regular expressions to speed-up their processing.
 | 
			
		||||
pcre_jit on;
 | 
			
		||||
 | 
			
		||||
error_log /data/logs/error.log warn;
 | 
			
		||||
 | 
			
		||||
# Includes files with directives to load dynamic modules.
 | 
			
		||||
include /etc/nginx/modules/*.conf;
 | 
			
		||||
 | 
			
		||||
events {
 | 
			
		||||
	worker_connections  1024;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
http {
 | 
			
		||||
	include                       /etc/nginx/mime.types;
 | 
			
		||||
	default_type                  application/octet-stream;
 | 
			
		||||
	sendfile                      on;
 | 
			
		||||
	server_tokens                 off;
 | 
			
		||||
	tcp_nopush                    on;
 | 
			
		||||
	tcp_nodelay                   on;
 | 
			
		||||
	client_body_temp_path         /tmp/nginx/body 1 2;
 | 
			
		||||
	keepalive_timeout             65;
 | 
			
		||||
	ssl_prefer_server_ciphers     on;
 | 
			
		||||
	gzip                          on;
 | 
			
		||||
	proxy_ignore_client_abort     off;
 | 
			
		||||
	client_max_body_size          2000m;
 | 
			
		||||
	server_names_hash_bucket_size 64;
 | 
			
		||||
	proxy_http_version            1.1;
 | 
			
		||||
	proxy_set_header              X-Forwarded-Scheme $scheme;
 | 
			
		||||
	proxy_set_header              X-Forwarded-For $proxy_add_x_forwarded_for;
 | 
			
		||||
	proxy_set_header              Accept-Encoding "";
 | 
			
		||||
	proxy_cache                   off;
 | 
			
		||||
	proxy_cache_path              /var/lib/nginx/cache/public  levels=1:2 keys_zone=public-cache:30m max_size=192m;
 | 
			
		||||
	proxy_cache_path              /var/lib/nginx/cache/private levels=1:2 keys_zone=private-cache:5m max_size=1024m;
 | 
			
		||||
 | 
			
		||||
	log_format proxy '[$time_local] $upstream_cache_status $upstream_status $status - $request_method $scheme $host "$request_uri" [Client $remote_addr] [Length $body_bytes_sent] [Gzip $gzip_ratio] [Sent-to $server] "$http_user_agent" "$http_referer"';
 | 
			
		||||
	log_format standard '[$time_local] $status - $request_method $scheme $host "$request_uri" [Client $remote_addr] [Length $body_bytes_sent] [Gzip $gzip_ratio] "$http_user_agent" "$http_referer"';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	access_log /data/logs/default.log proxy;
 | 
			
		||||
 | 
			
		||||
	# Dynamically generated resolvers file
 | 
			
		||||
	include /etc/nginx/conf.d/include/resolvers.conf;
 | 
			
		||||
 | 
			
		||||
	# Default upstream scheme
 | 
			
		||||
	map $host $forward_scheme {
 | 
			
		||||
		default http;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	# Real IP Determination
 | 
			
		||||
	# Docker subnet:
 | 
			
		||||
	set_real_ip_from 172.0.0.0/8;
 | 
			
		||||
	# NPM generated CDN ip ranges:
 | 
			
		||||
	include conf.d/include/ip_ranges.conf;
 | 
			
		||||
	# always put the following 2 lines after ip subnets:
 | 
			
		||||
	real_ip_header X-Forwarded-For;
 | 
			
		||||
	real_ip_recursive on;
 | 
			
		||||
 | 
			
		||||
	# Files generated by NPM
 | 
			
		||||
	include /etc/nginx/conf.d/*.conf;
 | 
			
		||||
	include /data/nginx/default_host/*.conf;
 | 
			
		||||
	include /data/nginx/proxy_host/*.conf;
 | 
			
		||||
	include /data/nginx/redirection_host/*.conf;
 | 
			
		||||
	include /data/nginx/dead_host/*.conf;
 | 
			
		||||
	include /data/nginx/temp/*.conf;
 | 
			
		||||
 | 
			
		||||
	# Custom
 | 
			
		||||
	include /data/nginx/custom/http[.]conf;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
stream {
 | 
			
		||||
	# Files generated by NPM
 | 
			
		||||
	include /data/nginx/stream/*.conf;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Custom
 | 
			
		||||
include /data/nginx/custom/root[.]conf;
 | 
			
		||||
							
								
								
									
										6
									
								
								docker/rootfs/etc/services.d/frontend/finish
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								docker/rootfs/etc/services.d/frontend/finish
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
#!/usr/bin/execlineb -S1
 | 
			
		||||
if { s6-test ${1} -ne 0 }
 | 
			
		||||
if { s6-test ${1} -ne 256 }
 | 
			
		||||
 | 
			
		||||
s6-svscanctl -t /var/run/s6/services
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								docker/rootfs/etc/services.d/frontend/run
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								docker/rootfs/etc/services.d/frontend/run
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
#!/usr/bin/with-contenv bash
 | 
			
		||||
 | 
			
		||||
# This service is DEVELOPMENT only.
 | 
			
		||||
 | 
			
		||||
if [ "$DEVELOPMENT" == "true" ]; then
 | 
			
		||||
	cd /app/frontend || exit 1
 | 
			
		||||
	yarn install
 | 
			
		||||
	yarn watch
 | 
			
		||||
else
 | 
			
		||||
	exit 0
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										3
									
								
								docker/rootfs/etc/services.d/manager/finish
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										3
									
								
								docker/rootfs/etc/services.d/manager/finish
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
#!/usr/bin/with-contenv bash
 | 
			
		||||
 | 
			
		||||
s6-svscanctl -t /var/run/s6/services
 | 
			
		||||
							
								
								
									
										18
									
								
								docker/rootfs/etc/services.d/manager/run
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										18
									
								
								docker/rootfs/etc/services.d/manager/run
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
#!/usr/bin/with-contenv bash
 | 
			
		||||
 | 
			
		||||
mkdir -p /data/letsencrypt-acme-challenge
 | 
			
		||||
 | 
			
		||||
cd /app || echo
 | 
			
		||||
 | 
			
		||||
if [ "$DEVELOPMENT" == "true" ]; then
 | 
			
		||||
	cd /app/backend || exit 1
 | 
			
		||||
	yarn install
 | 
			
		||||
	node --max_old_space_size=250 --abort_on_uncaught_exception node_modules/nodemon/bin/nodemon.js
 | 
			
		||||
else
 | 
			
		||||
	cd /app || exit 1
 | 
			
		||||
	while :
 | 
			
		||||
	do
 | 
			
		||||
		node --abort_on_uncaught_exception --max_old_space_size=250 index.js
 | 
			
		||||
		sleep 1
 | 
			
		||||
	done
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										1
									
								
								docker/rootfs/etc/services.d/nginx/finish
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								docker/rootfs/etc/services.d/nginx/finish
									
									
									
									
									
										Symbolic link
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
/bin/true
 | 
			
		||||
							
								
								
									
										45
									
								
								docker/rootfs/etc/services.d/nginx/run
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										45
									
								
								docker/rootfs/etc/services.d/nginx/run
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
#!/usr/bin/with-contenv bash
 | 
			
		||||
 | 
			
		||||
# Create required folders
 | 
			
		||||
mkdir -p /tmp/nginx/body \
 | 
			
		||||
	/run/nginx \
 | 
			
		||||
	/var/log/nginx \
 | 
			
		||||
	/data/nginx \
 | 
			
		||||
	/data/custom_ssl \
 | 
			
		||||
	/data/logs \
 | 
			
		||||
	/data/access \
 | 
			
		||||
	/data/nginx/default_host \
 | 
			
		||||
	/data/nginx/default_www \
 | 
			
		||||
	/data/nginx/proxy_host \
 | 
			
		||||
	/data/nginx/redirection_host \
 | 
			
		||||
	/data/nginx/stream \
 | 
			
		||||
	/data/nginx/dead_host \
 | 
			
		||||
	/data/nginx/temp \
 | 
			
		||||
	/var/lib/nginx/cache/public \
 | 
			
		||||
	/var/lib/nginx/cache/private \
 | 
			
		||||
	/var/cache/nginx/proxy_temp
 | 
			
		||||
 | 
			
		||||
touch /var/log/nginx/error.log && chmod 777 /var/log/nginx/error.log && chmod -R 777 /var/cache/nginx
 | 
			
		||||
chown root /tmp/nginx
 | 
			
		||||
 | 
			
		||||
# Dynamically generate resolvers file, if resolver is IPv6, enclose in `[]`
 | 
			
		||||
# thanks @tfmm
 | 
			
		||||
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" {print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf);" > /etc/nginx/conf.d/include/resolvers.conf
 | 
			
		||||
 | 
			
		||||
# Generate dummy self-signed certificate.
 | 
			
		||||
if [ ! -f /data/nginx/dummycert.pem ] || [ ! -f /data/nginx/dummykey.pem ]
 | 
			
		||||
then
 | 
			
		||||
	echo "Generating dummy SSL certificate..."
 | 
			
		||||
	openssl req \
 | 
			
		||||
		-new \
 | 
			
		||||
		-newkey rsa:2048 \
 | 
			
		||||
		-days 3650 \
 | 
			
		||||
		-nodes \
 | 
			
		||||
		-x509 \
 | 
			
		||||
		-subj '/O=Nginx Proxy Manager/OU=Dummy Certificate/CN=localhost' \
 | 
			
		||||
		-keyout /data/nginx/dummykey.pem \
 | 
			
		||||
		-out /data/nginx/dummycert.pem
 | 
			
		||||
	echo "Complete"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
exec nginx
 | 
			
		||||
							
								
								
									
										20
									
								
								docker/rootfs/root/.bashrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								docker/rootfs/root/.bashrc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
if [ -t 1 ]; then
 | 
			
		||||
	export PS1="\e[1;34m[\e[1;33m\u@\e[1;32mdocker-\h\e[1;37m:\w\[\e[1;34m]\e[1;36m\\$ \e[0m"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Aliases
 | 
			
		||||
alias l='ls -lAsh --color'
 | 
			
		||||
alias ls='ls -C1 --color'
 | 
			
		||||
alias cp='cp -ip'
 | 
			
		||||
alias rm='rm -i'
 | 
			
		||||
alias mv='mv -i'
 | 
			
		||||
alias h='cd ~;clear;'
 | 
			
		||||
 | 
			
		||||
. /etc/os-release
 | 
			
		||||
 | 
			
		||||
echo -e -n '\E[1;34m'
 | 
			
		||||
figlet -w 120 "NginxProxyManager"
 | 
			
		||||
echo -e "\E[1;36mVersion \E[1;32m${NPM_BUILD_VERSION:-2.0.0-dev}\E[1;36m (${NPM_BUILD_COMMIT:-dev}) ${NPM_BUILD_DATE:-0000-00-00}, Nginx \E[1;32m${NGINX_VERSION:-unknown}\E[1;36m, Alpine \E[1;32m${VERSION_ID:-unknown}\E[1;36m, Kernel \E[1;32m$(uname -r)\E[0m"
 | 
			
		||||
echo
 | 
			
		||||
							
								
								
									
										24
									
								
								docker/rootfs/var/www/html/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								docker/rootfs/var/www/html/index.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html lang="en">
 | 
			
		||||
    <head>
 | 
			
		||||
        <meta charset="utf-8">
 | 
			
		||||
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | 
			
		||||
        <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
			
		||||
        <title>Default Site</title>
 | 
			
		||||
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
 | 
			
		||||
        <style>
 | 
			
		||||
            .jumbotron { margin-top: 50px; }
 | 
			
		||||
        </style>
 | 
			
		||||
    </head>
 | 
			
		||||
    <body>
 | 
			
		||||
        <div class="container">
 | 
			
		||||
            <div class="jumbotron">
 | 
			
		||||
                <h1>Congratulations!</h1>
 | 
			
		||||
                <p>You've successfully started the Nginx Proxy Manager.</p>
 | 
			
		||||
                <p>If you're seeing this site then you're trying to access a host that isn't set up yet.</p>
 | 
			
		||||
                <p>Log in to the Admin panel to get started.</p>
 | 
			
		||||
            </div>
 | 
			
		||||
            <p class="text-center"><small>Powered by <a href="https://github.com/jc21/nginx-proxy-manager" target="_blank">Nginx Proxy Manager</a></small></p>
 | 
			
		||||
        </div>
 | 
			
		||||
    </body>
 | 
			
		||||
</html>
 | 
			
		||||
		Reference in New Issue
	
	Block a user