v2.2.0 New Brand (#319)
* Tweaks and backend vscode settings * Version bump * Updated Icon to be more vibrant * New logo and new login screen layout, version bump * New documentation! * Use CI to update package versions because I was sick of changing it everywhere * Generate docs * Docs upload * Fix pipeline * Fix pipeline * Update readme version before generating docs * Testing docs deploy * Fix pipeline * Updated CI link * Fix docs upload * Docs upload fixes * Fix s3 upload grrr * Docs tweaks * Updated readme * Updated screenshots Co-authored-by: Jamie Curnow <jamiec@benon.com>
							
								
								
									
										62
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -42,6 +42,15 @@ pipeline { | |||||||
| 						} | 						} | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
|  | 				stage('Versions') { | ||||||
|  | 					steps { | ||||||
|  | 						sh 'cat frontend/package.json | jq --arg BUILD_VERSION "${BUILD_VERSION}" \'.version = $BUILD_VERSION\' | sponge frontend/package.json' | ||||||
|  | 						sh 'echo -e "\\E[1;36mFrontend Version is:\\E[1;33m $(cat frontend/package.json | jq -r .version)\\E[0m"' | ||||||
|  | 						sh 'cat backend/package.json | jq --arg BUILD_VERSION "${BUILD_VERSION}" \'.version = $BUILD_VERSION\' | sponge backend/package.json' | ||||||
|  | 						sh 'echo -e "\\E[1;36mBackend Version is:\\E[1;33m  $(cat backend/package.json | jq -r .version)\\E[0m"' | ||||||
|  | 						sh 'sed -i -E "s/(version-)[0-9]+\\.[0-9]+\\.[0-9]+(-green)/\\1${BUILD_VERSION}\\2/" README.md' | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		stage('Frontend') { | 		stage('Frontend') { | ||||||
| @@ -105,6 +114,27 @@ pipeline { | |||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | 		stage('Docs') { | ||||||
|  | 			when { | ||||||
|  | 				not { | ||||||
|  | 					equals expected: 'UNSTABLE', actual: currentBuild.result | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			steps { | ||||||
|  | 				ansiColor('xterm') { | ||||||
|  | 					dir(path: 'docs') { | ||||||
|  | 						sh 'yarn install' | ||||||
|  | 						sh 'yarn build' | ||||||
|  | 					} | ||||||
|  |  | ||||||
|  | 					dir(path: 'docs/.vuepress/dist') { | ||||||
|  | 						sh 'tar -czf ../../docs.tgz *' | ||||||
|  | 					} | ||||||
|  |  | ||||||
|  | 					archiveArtifacts(artifacts: 'docs/docs.tgz', allowEmptyArchive: false) | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
| 		stage('MultiArch Build') { | 		stage('MultiArch Build') { | ||||||
| 			when { | 			when { | ||||||
| 				not { | 				not { | ||||||
| @@ -121,6 +151,38 @@ pipeline { | |||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | 		stage('Docs Deploy') { | ||||||
|  | 			when { | ||||||
|  | 				allOf { | ||||||
|  | 					branch 'master' | ||||||
|  | 					not { | ||||||
|  | 						equals expected: 'UNSTABLE', actual: currentBuild.result | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			steps { | ||||||
|  | 				withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'npm-s3-docs', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) { | ||||||
|  | 					sh """docker run --rm \\ | ||||||
|  | 						--name \${COMPOSE_PROJECT_NAME}-docs-upload \\ | ||||||
|  | 						-e S3_BUCKET=jc21-npm-site \\ | ||||||
|  | 						-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\ | ||||||
|  | 						-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \\ | ||||||
|  | 						-v \$(pwd):/app \\ | ||||||
|  | 						-w /app \\ | ||||||
|  | 						jc21/ci-tools \\ | ||||||
|  | 						scripts/docs-upload /app/docs/.vuepress/dist/ | ||||||
|  | 					""" | ||||||
|  |  | ||||||
|  | 					sh """docker run --rm \\ | ||||||
|  | 						--name \${COMPOSE_PROJECT_NAME}-docs-invalidate \\ | ||||||
|  | 						-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\ | ||||||
|  | 						-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \\ | ||||||
|  | 						jc21/ci-tools \\ | ||||||
|  | 						aws cloudfront create-invalidation --distribution-id EYAMDX2I8TPDZ --paths '/*' | ||||||
|  | 					""" | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
| 		stage('PR Comment') { | 		stage('PR Comment') { | ||||||
| 			when { | 			when { | ||||||
| 				allOf { | 				allOf { | ||||||
|   | |||||||
							
								
								
									
										72
									
								
								README.md
									
									
									
									
									
								
							
							
						
						| @@ -1,15 +1,16 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| # Nginx Proxy Manager |  | ||||||
|  | [](https://hub.docker.com/repository/docker/jc21/nginx-proxy-manager) | ||||||
|  | [](https://hub.docker.com/repository/docker/jc21/nginx-proxy-manager) | ||||||
|  | [](https://ci.nginxproxymanager.com/blue/organizations/jenkins/nginx-proxy-manager/branches/) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| This project comes as a pre-built docker image that enables you to easily forward to your websites | This project comes as a pre-built docker image that enables you to easily forward to your websites | ||||||
| running at home or otherwise, including free SSL, without having to know too much about Nginx or Letsencrypt. | running at home or otherwise, including free SSL, without having to know too much about Nginx or Letsencrypt. | ||||||
|  |  | ||||||
|  | - [Quick Setup](https://nginxproxymanager.com#quick-setup) | ||||||
|  | - [Full Setup](https://nginxproxymanager.com/setup/) | ||||||
|  | - [Screenshots](https://nginxproxymanager.com/screenshots/) | ||||||
|  |  | ||||||
| ## Project Goal | ## Project Goal | ||||||
|  |  | ||||||
| @@ -31,54 +32,6 @@ so that the barrier for entry here is low. | |||||||
| - User management, permissions and audit log | - User management, permissions and audit log | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Screenshots |  | ||||||
|  |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/login.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/dashboard.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/proxy-hosts.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/proxy-hosts-new1.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/proxy-hosts-new2.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/redirection-hosts.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/redirection-hosts-new1.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/streams.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/streams-new1.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/dead-hosts.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/dead-hosts-new1.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/certificates.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/certificates-new1.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/certificates-new2.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/access-lists.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/access-lists-new1.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/users.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/users-permissions.jpg) |  | ||||||
| [](https://public.jc21.com/nginx-proxy-manager/v2/large/audit-log.jpg) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Getting started |  | ||||||
|  |  | ||||||
| Please consult the [installation instructions](doc/INSTALL.md) for a complete guide or |  | ||||||
| if you just want to get up and running in the quickest time possible, grab all the files in the `doc/example/` folder and run `docker-compose up -d` |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Administration |  | ||||||
|  |  | ||||||
| When your docker container is running, connect to it on port `81` for the admin interface. |  | ||||||
|  |  | ||||||
| [http://localhost:81](http://localhost:81) |  | ||||||
|  |  | ||||||
| Note: Requesting SSL Certificates won't work until this project is accessible from the outside world, as explained below. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ### Default Administrator User |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| Email:    admin@example.com |  | ||||||
| Password: changeme |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Immediately after logging in with this default user you will be asked to modify your details and change your password. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Hosting your home network | ## Hosting your home network | ||||||
|  |  | ||||||
| I won't go in to too much detail here but here are the basics for someone new to this self-hosted world. | I won't go in to too much detail here but here are the basics for someone new to this self-hosted world. | ||||||
| @@ -87,14 +40,3 @@ I won't go in to too much detail here but here are the basics for someone new to | |||||||
| 2. Add port forwarding for port 80 and 443 to the server hosting this project | 2. Add port forwarding for port 80 and 443 to the server hosting this project | ||||||
| 3. Configure your domain name details to point to your home, either with a static ip or a service like DuckDNS or [Amazon Route53](https://github.com/jc21/route53-ddns) | 3. Configure your domain name details to point to your home, either with a static ip or a service like DuckDNS or [Amazon Route53](https://github.com/jc21/route53-ddns) | ||||||
| 4. Use the Nginx Proxy Manager as your gateway to forward to your other web based services | 4. Use the Nginx Proxy Manager as your gateway to forward to your other web based services | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Nginx Proxy Manager in the wild |  | ||||||
|  |  | ||||||
| As this software gains popularity it's common to see it integrated with other platforms. Please be aware that unless specifically mentioned in the documenation of those |  | ||||||
| integrations, they are *not supported* by me and any donation links on the pages of those integrations will not come to me even though it looks like it. |  | ||||||
|  |  | ||||||
| Known integrations: |  | ||||||
|  |  | ||||||
| - [HomeAssistant Hass.io plugin](https://github.com/hassio-addons/addon-nginx-proxy-manager) |  | ||||||
| - [UnRaid / Synology](https://github.com/jlesage/docker-nginx-proxy-manager) |  | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
| 	"name": "nginx-proxy-manager", | 	"name": "nginx-proxy-manager", | ||||||
| 	"version": "2.1.2", | 	"version": "0.0.0", | ||||||
| 	"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": { | ||||||
|   | |||||||
| @@ -1,10 +0,0 @@ | |||||||
| { |  | ||||||
|   "database": { |  | ||||||
|     "engine": "mysql", |  | ||||||
|     "host": "db", |  | ||||||
|     "name": "npm", |  | ||||||
|     "user": "npm", |  | ||||||
|     "password": "npm", |  | ||||||
|     "port": 3306 |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -1,28 +0,0 @@ | |||||||
| version: "3" |  | ||||||
| services: |  | ||||||
|   app: |  | ||||||
|     image: jc21/nginx-proxy-manager:latest |  | ||||||
|     restart: always |  | ||||||
|     ports: |  | ||||||
|       - 80:80 |  | ||||||
|       - 81:81 |  | ||||||
|       - 443:443 |  | ||||||
|     volumes: |  | ||||||
|       - ./config.json:/app/config/production.json |  | ||||||
|       - ./data:/data |  | ||||||
|       - ./letsencrypt:/etc/letsencrypt |  | ||||||
|     depends_on: |  | ||||||
|       - db |  | ||||||
|     environment: |  | ||||||
|     # if you want pretty colors in your docker logs: |  | ||||||
|     - FORCE_COLOR=1 |  | ||||||
|   db: |  | ||||||
|     image: jc21/mariadb-aria:latest |  | ||||||
|     restart: always |  | ||||||
|     environment: |  | ||||||
|       MYSQL_ROOT_PASSWORD: "npm" |  | ||||||
|       MYSQL_DATABASE: "npm" |  | ||||||
|       MYSQL_USER: "npm" |  | ||||||
|       MYSQL_PASSWORD: "npm" |  | ||||||
|     volumes: |  | ||||||
|       - ./data/mysql:/var/lib/mysql |  | ||||||
							
								
								
									
										3
									
								
								docs/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | |||||||
|  | .vuepress/dist | ||||||
|  | node_modules | ||||||
|  | ts | ||||||
							
								
								
									
										80
									
								
								docs/.vuepress/config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,80 @@ | |||||||
|  | module.exports = { | ||||||
|  | 	locales: { | ||||||
|  | 		"/": { | ||||||
|  | 			lang: "en-US", | ||||||
|  | 			title: "Nginx Proxy Manager", | ||||||
|  | 			description: "Expose your services easily and securely" | ||||||
|  | 		} | ||||||
|  | 	}, | ||||||
|  | 	head: [ | ||||||
|  | 		["link", { rel: "icon", href: "/icon.png" }], | ||||||
|  | 		["meta", { name: "description", content: "Docker container and built in Web Application for managing Nginx proxy hosts with a simple, powerful interface, providing free SSL support via Let's Encrypt" }], | ||||||
|  | 		["meta", { property: "og:title", content: "Nginx Proxy Manager" }], | ||||||
|  | 		["meta", { property: "og:description", content: "Docker container and built in Web Application for managing Nginx proxy hosts with a simple, powerful interface, providing free SSL support via Let's Encrypt"}], | ||||||
|  | 		["meta", { property: "og:type", content: "website" }], | ||||||
|  | 		["meta", { property: "og:url", content: "https://nginxproxymanager.com/" }], | ||||||
|  | 		["meta", { property: "og:image", content: "https://nginxproxymanager.com/icon.png" }], | ||||||
|  | 		["meta", { name: "twitter:card", content: "summary"}], | ||||||
|  | 		["meta", { name: "twitter:title", content: "Nginx Proxy Manager"}], | ||||||
|  | 		["meta", { name: "twitter:description", content: "Docker container and built in Web Application for managing Nginx proxy hosts with a simple, powerful interface, providing free SSL support via Let's Encrypt"}], | ||||||
|  | 		["meta", { name: "twitter:image", content: "https://nginxproxymanager.com/icon.png"}], | ||||||
|  | 		["meta", { name: "twitter:alt", content: "Nginx Proxy Manager"}], | ||||||
|  | 	], | ||||||
|  | 	themeConfig: { | ||||||
|  | 		logo: "/icon.png", | ||||||
|  | 		// the GitHub repo path | ||||||
|  | 		repo: "jc21/nginx-proxy-manager", | ||||||
|  | 		// the label linking to the repo | ||||||
|  | 		repoLabel: "GitHub", | ||||||
|  | 		// if your docs are not at the root of the repo: | ||||||
|  | 		docsDir: "docs", | ||||||
|  | 		// defaults to false, set to true to enable | ||||||
|  | 		editLinks: true, | ||||||
|  | 		locales: { | ||||||
|  | 			"/": { | ||||||
|  | 				// text for the language dropdown | ||||||
|  | 				selectText: "Languages", | ||||||
|  | 				// label for this locale in the language dropdown | ||||||
|  | 				label: "English", | ||||||
|  | 				// Custom text for edit link. Defaults to "Edit this page" | ||||||
|  | 				editLinkText: "Edit this page on GitHub", | ||||||
|  | 				// Custom navbar values | ||||||
|  | 				nav: [{ text: "Setup", link: "/setup/" }], | ||||||
|  | 				// Custom sidebar values | ||||||
|  | 				sidebar: [ | ||||||
|  | 					"/", | ||||||
|  | 					["/guide/", "Guide"], | ||||||
|  | 					["/screenshots/", "Screenshots"], | ||||||
|  | 					["/setup/", "Setup Instructions"], | ||||||
|  | 					["/advanced-config/", "Advanced Configuration"], | ||||||
|  | 					["/third-party/", "Third Party"] | ||||||
|  | 				] | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	}, | ||||||
|  | 	plugins: [ | ||||||
|  | 		[ | ||||||
|  | 			"@vuepress/google-analytics", | ||||||
|  | 			{ | ||||||
|  | 				ga: "UA-99675467-4" | ||||||
|  | 			} | ||||||
|  | 		], | ||||||
|  | 		[ | ||||||
|  | 			"sitemap", | ||||||
|  | 			{ | ||||||
|  | 				hostname: "https://nginxproxymanager.com" | ||||||
|  | 			} | ||||||
|  | 		], | ||||||
|  | 		[ | ||||||
|  | 			'vuepress-plugin-zooming', | ||||||
|  | 			{ | ||||||
|  | 				selector: '.zooming', | ||||||
|  | 				delay: 1000, | ||||||
|  | 				options: { | ||||||
|  | 					bgColor: 'black', | ||||||
|  | 					zIndex: 10000, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
|  | 		], | ||||||
|  | 	] | ||||||
|  | }; | ||||||
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/github.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 13 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 18 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 57 KiB | 
							
								
								
									
										1
									
								
								docs/.vuepress/public/logo.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 13 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/nerd-font.woff2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										2
									
								
								docs/.vuepress/public/robots.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,2 @@ | |||||||
|  | User-agent: * | ||||||
|  | Disallow: | ||||||
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/screenshots/access-lists.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 106 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/screenshots/audit-log.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 178 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/screenshots/certificates.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 173 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/screenshots/custom-settings.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 141 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/screenshots/dashboard.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 102 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/screenshots/dead-hosts.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 150 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/screenshots/login.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 92 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/screenshots/permissions.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 151 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/screenshots/proxy-hosts-add.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 207 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/screenshots/proxy-hosts.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 181 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/.vuepress/public/screenshots/redirection-hosts.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 162 KiB | 
							
								
								
									
										23
									
								
								docs/.vuepress/styles/index.styl
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,23 @@ | |||||||
|  | .home .hero img | ||||||
|  |   max-width: 500px !important | ||||||
|  |   min-width: 300px | ||||||
|  |   width: 100% | ||||||
|  |  | ||||||
|  | .center | ||||||
|  |   margin 0 auto; | ||||||
|  |   width: 80% | ||||||
|  |  | ||||||
|  | #main-title | ||||||
|  |   display: none | ||||||
|  |  | ||||||
|  | .hero | ||||||
|  |   margin: 150px 25px 70px | ||||||
|  |  | ||||||
|  | @font-face | ||||||
|  |   font-family: 'Nerd Font'; | ||||||
|  |   src: url("/nerd-font.woff2") format("woff2"); | ||||||
|  |   font-weight: 400; | ||||||
|  |   font-style: normal | ||||||
|  |  | ||||||
|  | code | ||||||
|  |   font-family: 'Nerd Font', source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; | ||||||
							
								
								
									
										4
									
								
								docs/.vuepress/styles/palette.styl
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,4 @@ | |||||||
|  | $accentColor = #f15833 | ||||||
|  | $textColor = #663015 | ||||||
|  | $borderColor = #eaecef | ||||||
|  | $codeBgColor = #282c34 | ||||||
							
								
								
									
										93
									
								
								docs/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,93 @@ | |||||||
|  | --- | ||||||
|  | home: true | ||||||
|  | heroImage: /logo.png | ||||||
|  | actionText: Get Started → | ||||||
|  | actionLink: /guide/ | ||||||
|  | footer: MIT Licensed | Copyright © 2016-present jc21.com | ||||||
|  | --- | ||||||
|  |  | ||||||
|  | <div class="features"> | ||||||
|  |   <div class="feature"> | ||||||
|  |     <h2>Get Connected</h2> | ||||||
|  |     <p> | ||||||
|  |       Expose web services on your network · | ||||||
|  |       Free SSL with Let's Encrypt  · | ||||||
|  |       Designed with security in mind  · | ||||||
|  |       Perfect for home networks | ||||||
|  |     </p> | ||||||
|  |   </div> | ||||||
|  |   <div class="feature"> | ||||||
|  |     <h2>Proxy Hosts</h2> | ||||||
|  |     <p>Expose your private network Web services and get connected anywhere.</p> | ||||||
|  |   </div> | ||||||
|  |   <div class="feature"> | ||||||
|  |     <h2>Beautiful UI</h2> | ||||||
|  |     <p>Based on Tabler, the interface is a pleasure to use. Configuring a server has never been so fun.</p> | ||||||
|  |   </div> | ||||||
|  |   <div class="feature"> | ||||||
|  |     <h2>Free SSL</h2> | ||||||
|  |     <p>Built in Let’s Encrypt support allows you to secure your Web services at no cost to you. The certificates even renew themselves!</p> | ||||||
|  |   </div> | ||||||
|  |   <div class="feature"> | ||||||
|  |     <h2>Docker FTW</h2> | ||||||
|  |     <p>Built as a Docker Image, Nginx Proxy Manager only requires a database.</p> | ||||||
|  |   </div> | ||||||
|  |   <div class="feature"> | ||||||
|  |     <h2>Multiple Users</h2> | ||||||
|  |     <p>Configure other users to either view or manage their own hosts. Full access permissions are available.</p> | ||||||
|  |   </div> | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | ### Quick Setup | ||||||
|  |  | ||||||
|  | 1. Install Docker and Docker-Compose | ||||||
|  |  | ||||||
|  | - [Docker Install documentation](https://docs.docker.com/install/) | ||||||
|  | - [Docker-Compose Install documentation](https://docs.docker.com/compose/install/) | ||||||
|  |  | ||||||
|  | 2. Create a docker-compose.yml file similar to this: | ||||||
|  |  | ||||||
|  | ```yml | ||||||
|  | version: '3' | ||||||
|  | services: | ||||||
|  |   app: | ||||||
|  |     image: 'jc21/nginx-proxy-manager:latest' | ||||||
|  |     ports: | ||||||
|  |       - '80:80' | ||||||
|  |       - '81:81' | ||||||
|  |       - '443:443' | ||||||
|  |     volumes: | ||||||
|  |       - ./config.json:/app/config/production.json | ||||||
|  |       - ./data:/data | ||||||
|  |       - ./letsencrypt:/etc/letsencrypt | ||||||
|  |   db: | ||||||
|  |     image: 'jc21/mariadb-aria:10.4' | ||||||
|  |     environment: | ||||||
|  |       MYSQL_ROOT_PASSWORD: 'npm' | ||||||
|  |       MYSQL_DATABASE: 'npm' | ||||||
|  |       MYSQL_USER: 'npm' | ||||||
|  |       MYSQL_PASSWORD: 'npm' | ||||||
|  |     volumes: | ||||||
|  |       - ./data/mysql:/var/lib/mysql | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | 3. Bring up your stack | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | docker-compose up -d | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | 4. Log in to the Admin UI | ||||||
|  |  | ||||||
|  | When your docker container is running, connect to it on port `81` for the admin interface. | ||||||
|  |  | ||||||
|  | [http://127.0.0.1:81](http://127.0.0.1:81) | ||||||
|  |  | ||||||
|  | Default Admin User: | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  | Email:    admin@example.com | ||||||
|  | Password: changeme | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Immediately after logging in with this default user you will be asked to modify your details and change your password. | ||||||
| @@ -1,4 +1,6 @@ | |||||||
| ## Advanced Nginx Configuration | # Advanced Configuration | ||||||
|  | 
 | ||||||
|  | ### Custom Nginx Configurations | ||||||
| 
 | 
 | ||||||
| If you are a more advanced user, you might be itching for extra Nginx customizability. | If you are a more advanced user, you might be itching for extra Nginx customizability. | ||||||
| 
 | 
 | ||||||
| @@ -15,3 +17,16 @@ You can add your custom configuration snippet files at `/data/nginx/custom` as f | |||||||
| `/data/nginx/custom/server_stream_udp.conf`: Included at the end of every UDP stream server block | `/data/nginx/custom/server_stream_udp.conf`: Included at the end of every UDP stream server block | ||||||
| 
 | 
 | ||||||
| Every file is optional. | Every file is optional. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### X-FRAME-OPTIONS Header | ||||||
|  | 
 | ||||||
|  | You can configure the [`X-FRAME-OPTIONS`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) header | ||||||
|  | value by specifying it as a Docker environment variable. The default if not specified is `deny`. | ||||||
|  | 
 | ||||||
|  | ```yml | ||||||
|  |   ... | ||||||
|  |   environment: | ||||||
|  |     X_FRAME_OPTIONS: "sameorigin" | ||||||
|  |   ... | ||||||
|  | ``` | ||||||
							
								
								
									
										1
									
								
								docs/guide/README.md
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						| @@ -0,0 +1 @@ | |||||||
|  | ../../README.md | ||||||
							
								
								
									
										777
									
								
								docs/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,777 @@ | |||||||
|  | { | ||||||
|  |   "name": "docs", | ||||||
|  |   "version": "1.0.0", | ||||||
|  |   "description": "", | ||||||
|  |   "main": "index.js", | ||||||
|  |   "dependencies": { | ||||||
|  |     "@vuepress/plugin-google-analytics": "^1.3.1", | ||||||
|  |     "abbrev": "^1.1.1", | ||||||
|  |     "accepts": "^1.3.7", | ||||||
|  |     "acorn": "^6.4.0", | ||||||
|  |     "agentkeepalive": "^2.2.0", | ||||||
|  |     "ajv": "^6.11.0", | ||||||
|  |     "ajv-errors": "^1.0.1", | ||||||
|  |     "ajv-keywords": "^3.4.1", | ||||||
|  |     "algoliasearch": "^3.35.1", | ||||||
|  |     "alphanum-sort": "^1.0.2", | ||||||
|  |     "ansi-colors": "^3.2.4", | ||||||
|  |     "ansi-escapes": "^4.3.0", | ||||||
|  |     "ansi-html": "^0.0.7", | ||||||
|  |     "ansi-regex": "^2.1.1", | ||||||
|  |     "ansi-styles": "^3.2.1", | ||||||
|  |     "anymatch": "^2.0.0", | ||||||
|  |     "aproba": "^1.2.0", | ||||||
|  |     "argparse": "^1.0.10", | ||||||
|  |     "arr-diff": "^4.0.0", | ||||||
|  |     "arr-flatten": "^1.1.0", | ||||||
|  |     "arr-union": "^3.1.0", | ||||||
|  |     "array-flatten": "^1.1.1", | ||||||
|  |     "array-union": "^1.0.2", | ||||||
|  |     "array-uniq": "^1.0.3", | ||||||
|  |     "array-unique": "^0.3.2", | ||||||
|  |     "asn1": "^0.2.4", | ||||||
|  |     "asn1.js": "^4.10.1", | ||||||
|  |     "assert": "^1.5.0", | ||||||
|  |     "assert-plus": "^1.0.0", | ||||||
|  |     "assign-symbols": "^1.0.0", | ||||||
|  |     "async": "^2.6.3", | ||||||
|  |     "async-each": "^1.0.3", | ||||||
|  |     "async-limiter": "^1.0.1", | ||||||
|  |     "asynckit": "^0.4.0", | ||||||
|  |     "atob": "^2.1.2", | ||||||
|  |     "autocomplete.js": "^0.36.0", | ||||||
|  |     "autoprefixer": "^9.7.4", | ||||||
|  |     "aws-sign2": "^0.7.0", | ||||||
|  |     "aws4": "^1.9.1", | ||||||
|  |     "babel-loader": "^8.0.6", | ||||||
|  |     "babel-plugin-dynamic-import-node": "^2.3.0", | ||||||
|  |     "babel-plugin-module-resolver": "^3.2.0", | ||||||
|  |     "balanced-match": "^1.0.0", | ||||||
|  |     "base": "^0.11.2", | ||||||
|  |     "base64-js": "^1.3.1", | ||||||
|  |     "batch": "^0.6.1", | ||||||
|  |     "bcrypt-pbkdf": "^1.0.2", | ||||||
|  |     "big.js": "^5.2.2", | ||||||
|  |     "binary-extensions": "^1.13.1", | ||||||
|  |     "bluebird": "^3.7.2", | ||||||
|  |     "bn.js": "^4.11.8", | ||||||
|  |     "body-parser": "^1.19.0", | ||||||
|  |     "bonjour": "^3.5.0", | ||||||
|  |     "boolbase": "^1.0.0", | ||||||
|  |     "brace-expansion": "^1.1.11", | ||||||
|  |     "braces": "^2.3.2", | ||||||
|  |     "brorand": "^1.1.0", | ||||||
|  |     "browserify-aes": "^1.2.0", | ||||||
|  |     "browserify-cipher": "^1.0.1", | ||||||
|  |     "browserify-des": "^1.0.2", | ||||||
|  |     "browserify-rsa": "^4.0.1", | ||||||
|  |     "browserify-sign": "^4.0.4", | ||||||
|  |     "browserify-zlib": "^0.2.0", | ||||||
|  |     "browserslist": "^4.8.5", | ||||||
|  |     "buffer": "^4.9.2", | ||||||
|  |     "buffer-from": "^1.1.1", | ||||||
|  |     "buffer-indexof": "^1.1.1", | ||||||
|  |     "buffer-json": "^2.0.0", | ||||||
|  |     "buffer-xor": "^1.0.3", | ||||||
|  |     "builtin-status-codes": "^3.0.0", | ||||||
|  |     "bytes": "^3.1.0", | ||||||
|  |     "cac": "^6.5.5", | ||||||
|  |     "cacache": "^12.0.3", | ||||||
|  |     "cache-base": "^1.0.1", | ||||||
|  |     "cache-loader": "^3.0.1", | ||||||
|  |     "call-me-maybe": "^1.0.1", | ||||||
|  |     "caller-callsite": "^2.0.0", | ||||||
|  |     "caller-path": "^2.0.0", | ||||||
|  |     "callsites": "^2.0.0", | ||||||
|  |     "camel-case": "^3.0.0", | ||||||
|  |     "camelcase": "^5.3.1", | ||||||
|  |     "caniuse-api": "^3.0.0", | ||||||
|  |     "caniuse-lite": "^1.0.30001022", | ||||||
|  |     "caseless": "^0.12.0", | ||||||
|  |     "chalk": "^2.4.2", | ||||||
|  |     "chokidar": "^2.1.8", | ||||||
|  |     "chownr": "^1.1.3", | ||||||
|  |     "chrome-trace-event": "^1.0.2", | ||||||
|  |     "ci-info": "^1.6.0", | ||||||
|  |     "cipher-base": "^1.0.4", | ||||||
|  |     "class-utils": "^0.3.6", | ||||||
|  |     "clean-css": "^4.2.1", | ||||||
|  |     "clipboard": "^2.0.4", | ||||||
|  |     "cliui": "^4.1.0", | ||||||
|  |     "coa": "^2.0.2", | ||||||
|  |     "code-point-at": "^1.1.0", | ||||||
|  |     "collection-visit": "^1.0.0", | ||||||
|  |     "color": "^3.1.2", | ||||||
|  |     "color-convert": "^1.9.3", | ||||||
|  |     "color-name": "^1.1.3", | ||||||
|  |     "color-string": "^1.5.3", | ||||||
|  |     "combined-stream": "^1.0.8", | ||||||
|  |     "commander": "^2.17.1", | ||||||
|  |     "commondir": "^1.0.1", | ||||||
|  |     "component-emitter": "^1.3.0", | ||||||
|  |     "compressible": "^2.0.18", | ||||||
|  |     "compression": "^1.7.4", | ||||||
|  |     "concat-map": "^0.0.1", | ||||||
|  |     "concat-stream": "^1.6.2", | ||||||
|  |     "connect-history-api-fallback": "^1.6.0", | ||||||
|  |     "consola": "^2.11.3", | ||||||
|  |     "console-browserify": "^1.2.0", | ||||||
|  |     "consolidate": "^0.15.1", | ||||||
|  |     "constants-browserify": "^1.0.0", | ||||||
|  |     "content-disposition": "^0.5.3", | ||||||
|  |     "content-type": "^1.0.4", | ||||||
|  |     "convert-source-map": "^1.7.0", | ||||||
|  |     "cookie": "^0.4.0", | ||||||
|  |     "cookie-signature": "^1.0.6", | ||||||
|  |     "copy-concurrently": "^1.0.5", | ||||||
|  |     "copy-descriptor": "^0.1.1", | ||||||
|  |     "copy-webpack-plugin": "^5.1.1", | ||||||
|  |     "core-js": "^2.6.11", | ||||||
|  |     "core-util-is": "^1.0.2", | ||||||
|  |     "cosmiconfig": "^5.2.1", | ||||||
|  |     "create-ecdh": "^4.0.3", | ||||||
|  |     "create-hash": "^1.2.0", | ||||||
|  |     "create-hmac": "^1.1.7", | ||||||
|  |     "cross-spawn": "^6.0.5", | ||||||
|  |     "crypto-browserify": "^3.12.0", | ||||||
|  |     "css": "^2.2.4", | ||||||
|  |     "css-color-names": "^0.0.4", | ||||||
|  |     "css-declaration-sorter": "^4.0.1", | ||||||
|  |     "css-loader": "^2.1.1", | ||||||
|  |     "css-parse": "^2.0.0", | ||||||
|  |     "css-select": "^1.2.0", | ||||||
|  |     "css-select-base-adapter": "^0.1.1", | ||||||
|  |     "css-tree": "^1.0.0-alpha.37", | ||||||
|  |     "css-unit-converter": "^1.1.1", | ||||||
|  |     "css-what": "^2.1.3", | ||||||
|  |     "cssesc": "^3.0.0", | ||||||
|  |     "cssnano": "^4.1.10", | ||||||
|  |     "cssnano-preset-default": "^4.0.7", | ||||||
|  |     "cssnano-util-get-arguments": "^4.0.0", | ||||||
|  |     "cssnano-util-get-match": "^4.0.0", | ||||||
|  |     "cssnano-util-raw-cache": "^4.0.1", | ||||||
|  |     "cssnano-util-same-parent": "^4.0.1", | ||||||
|  |     "csso": "^4.0.2", | ||||||
|  |     "cyclist": "^1.0.1", | ||||||
|  |     "dashdash": "^1.14.1", | ||||||
|  |     "de-indent": "^1.0.2", | ||||||
|  |     "debug": "^2.6.9", | ||||||
|  |     "decamelize": "^1.2.0", | ||||||
|  |     "decode-uri-component": "^0.2.0", | ||||||
|  |     "deep-equal": "^1.1.1", | ||||||
|  |     "deepmerge": "^1.5.2", | ||||||
|  |     "default-gateway": "^4.2.0", | ||||||
|  |     "define-properties": "^1.1.3", | ||||||
|  |     "define-property": "^0.2.5", | ||||||
|  |     "del": "^4.1.1", | ||||||
|  |     "delayed-stream": "^1.0.0", | ||||||
|  |     "delegate": "^3.2.0", | ||||||
|  |     "depd": "^1.1.2", | ||||||
|  |     "des.js": "^1.0.1", | ||||||
|  |     "destroy": "^1.0.4", | ||||||
|  |     "detect-node": "^2.0.4", | ||||||
|  |     "diacritics": "^1.3.0", | ||||||
|  |     "diffie-hellman": "^5.0.3", | ||||||
|  |     "dir-glob": "^2.2.2", | ||||||
|  |     "dns-equal": "^1.0.0", | ||||||
|  |     "dns-packet": "^1.3.1", | ||||||
|  |     "dns-txt": "^2.0.2", | ||||||
|  |     "docsearch.js": "^2.6.3", | ||||||
|  |     "dom-converter": "^0.2.0", | ||||||
|  |     "dom-serializer": "^0.2.2", | ||||||
|  |     "dom-walk": "^0.1.1", | ||||||
|  |     "domain-browser": "^1.2.0", | ||||||
|  |     "domelementtype": "^1.3.1", | ||||||
|  |     "domhandler": "^2.4.2", | ||||||
|  |     "domutils": "^1.7.0", | ||||||
|  |     "dot-prop": "^4.2.0", | ||||||
|  |     "duplexify": "^3.7.1", | ||||||
|  |     "ecc-jsbn": "^0.1.2", | ||||||
|  |     "ee-first": "^1.1.1", | ||||||
|  |     "electron-to-chromium": "^1.3.338", | ||||||
|  |     "elliptic": "^6.5.2", | ||||||
|  |     "emoji-regex": "^7.0.3", | ||||||
|  |     "emojis-list": "^2.1.0", | ||||||
|  |     "encodeurl": "^1.0.2", | ||||||
|  |     "end-of-stream": "^1.4.4", | ||||||
|  |     "enhanced-resolve": "^4.1.1", | ||||||
|  |     "entities": "^1.1.2", | ||||||
|  |     "envify": "^4.1.0", | ||||||
|  |     "envinfo": "^7.5.0", | ||||||
|  |     "errno": "^0.1.7", | ||||||
|  |     "error-ex": "^1.3.2", | ||||||
|  |     "es-abstract": "^1.17.4", | ||||||
|  |     "es-to-primitive": "^1.2.1", | ||||||
|  |     "es6-promise": "^4.2.8", | ||||||
|  |     "escape-html": "^1.0.3", | ||||||
|  |     "escape-string-regexp": "^1.0.5", | ||||||
|  |     "eslint-scope": "^4.0.3", | ||||||
|  |     "esprima": "^4.0.1", | ||||||
|  |     "esrecurse": "^4.2.1", | ||||||
|  |     "estraverse": "^4.3.0", | ||||||
|  |     "esutils": "^2.0.3", | ||||||
|  |     "etag": "^1.8.1", | ||||||
|  |     "eventemitter3": "^4.0.0", | ||||||
|  |     "events": "^1.1.1", | ||||||
|  |     "eventsource": "^1.0.7", | ||||||
|  |     "evp_bytestokey": "^1.0.3", | ||||||
|  |     "execa": "^1.0.0", | ||||||
|  |     "expand-brackets": "^2.1.4", | ||||||
|  |     "express": "^4.17.1", | ||||||
|  |     "extend": "^3.0.2", | ||||||
|  |     "extend-shallow": "^2.0.1", | ||||||
|  |     "extglob": "^2.0.4", | ||||||
|  |     "extsprintf": "^1.3.0", | ||||||
|  |     "fast-deep-equal": "^3.1.1", | ||||||
|  |     "fast-glob": "^2.2.7", | ||||||
|  |     "fast-json-stable-stringify": "^2.1.0", | ||||||
|  |     "faye-websocket": "^0.10.0", | ||||||
|  |     "figgy-pudding": "^3.5.1", | ||||||
|  |     "figures": "^3.1.0", | ||||||
|  |     "file-loader": "^3.0.1", | ||||||
|  |     "fill-range": "^4.0.0", | ||||||
|  |     "finalhandler": "^1.1.2", | ||||||
|  |     "find-babel-config": "^1.2.0", | ||||||
|  |     "find-cache-dir": "^2.1.0", | ||||||
|  |     "find-up": "^3.0.0", | ||||||
|  |     "flush-write-stream": "^1.1.1", | ||||||
|  |     "follow-redirects": "^1.9.0", | ||||||
|  |     "for-in": "^1.0.2", | ||||||
|  |     "foreach": "^2.0.5", | ||||||
|  |     "forever-agent": "^0.6.1", | ||||||
|  |     "form-data": "^2.3.3", | ||||||
|  |     "forwarded": "^0.1.2", | ||||||
|  |     "fragment-cache": "^0.2.1", | ||||||
|  |     "fresh": "^0.5.2", | ||||||
|  |     "from2": "^2.3.0", | ||||||
|  |     "fs-extra": "^7.0.1", | ||||||
|  |     "fs-write-stream-atomic": "^1.0.10", | ||||||
|  |     "fs.realpath": "^1.0.0", | ||||||
|  |     "function-bind": "^1.1.1", | ||||||
|  |     "gensync": "^1.0.0-beta.1", | ||||||
|  |     "get-caller-file": "^1.0.3", | ||||||
|  |     "get-stream": "^4.1.0", | ||||||
|  |     "get-value": "^2.0.6", | ||||||
|  |     "getpass": "^0.1.7", | ||||||
|  |     "glob": "^7.1.6", | ||||||
|  |     "glob-parent": "^3.1.0", | ||||||
|  |     "glob-to-regexp": "^0.3.0", | ||||||
|  |     "global": "^4.4.0", | ||||||
|  |     "globals": "^11.12.0", | ||||||
|  |     "globby": "^7.1.1", | ||||||
|  |     "good-listener": "^1.2.2", | ||||||
|  |     "graceful-fs": "^4.2.3", | ||||||
|  |     "gray-matter": "^4.0.2", | ||||||
|  |     "handle-thing": "^2.0.0", | ||||||
|  |     "har-schema": "^2.0.0", | ||||||
|  |     "har-validator": "^5.1.3", | ||||||
|  |     "has": "^1.0.3", | ||||||
|  |     "has-ansi": "^2.0.0", | ||||||
|  |     "has-flag": "^3.0.0", | ||||||
|  |     "has-symbols": "^1.0.1", | ||||||
|  |     "has-value": "^1.0.0", | ||||||
|  |     "has-values": "^1.0.0", | ||||||
|  |     "hash-base": "^3.0.4", | ||||||
|  |     "hash-sum": "^1.0.2", | ||||||
|  |     "hash.js": "^1.1.7", | ||||||
|  |     "he": "^1.2.0", | ||||||
|  |     "hex-color-regex": "^1.1.0", | ||||||
|  |     "hmac-drbg": "^1.0.1", | ||||||
|  |     "hogan.js": "^3.0.2", | ||||||
|  |     "hpack.js": "^2.1.6", | ||||||
|  |     "hsl-regex": "^1.0.0", | ||||||
|  |     "hsla-regex": "^1.0.0", | ||||||
|  |     "html-comment-regex": "^1.1.2", | ||||||
|  |     "html-entities": "^1.2.1", | ||||||
|  |     "html-minifier": "^3.5.21", | ||||||
|  |     "html-tags": "^2.0.0", | ||||||
|  |     "htmlparser2": "^3.10.1", | ||||||
|  |     "http-deceiver": "^1.2.7", | ||||||
|  |     "http-errors": "^1.7.2", | ||||||
|  |     "http-parser-js": "^0.4.10", | ||||||
|  |     "http-proxy": "^1.18.0", | ||||||
|  |     "http-proxy-middleware": "^0.19.1", | ||||||
|  |     "http-signature": "^1.2.0", | ||||||
|  |     "https-browserify": "^1.0.0", | ||||||
|  |     "iconv-lite": "^0.4.24", | ||||||
|  |     "icss-replace-symbols": "^1.1.0", | ||||||
|  |     "icss-utils": "^4.1.1", | ||||||
|  |     "ieee754": "^1.1.13", | ||||||
|  |     "iferr": "^0.1.5", | ||||||
|  |     "ignore": "^3.3.10", | ||||||
|  |     "immediate": "^3.2.3", | ||||||
|  |     "import-cwd": "^2.1.0", | ||||||
|  |     "import-fresh": "^2.0.0", | ||||||
|  |     "import-from": "^2.1.0", | ||||||
|  |     "import-local": "^2.0.0", | ||||||
|  |     "imurmurhash": "^0.1.4", | ||||||
|  |     "indexes-of": "^1.0.1", | ||||||
|  |     "infer-owner": "^1.0.4", | ||||||
|  |     "inflight": "^1.0.6", | ||||||
|  |     "inherits": "^2.0.4", | ||||||
|  |     "internal-ip": "^4.3.0", | ||||||
|  |     "invariant": "^2.2.4", | ||||||
|  |     "invert-kv": "^2.0.0", | ||||||
|  |     "ip": "^1.1.5", | ||||||
|  |     "ip-regex": "^2.1.0", | ||||||
|  |     "ipaddr.js": "^1.9.1", | ||||||
|  |     "is-absolute-url": "^3.0.3", | ||||||
|  |     "is-accessor-descriptor": "^1.0.0", | ||||||
|  |     "is-arguments": "^1.0.4", | ||||||
|  |     "is-arrayish": "^0.2.1", | ||||||
|  |     "is-binary-path": "^1.0.1", | ||||||
|  |     "is-buffer": "^1.1.6", | ||||||
|  |     "is-callable": "^1.1.5", | ||||||
|  |     "is-color-stop": "^1.1.0", | ||||||
|  |     "is-data-descriptor": "^1.0.0", | ||||||
|  |     "is-date-object": "^1.0.2", | ||||||
|  |     "is-descriptor": "^1.0.2", | ||||||
|  |     "is-directory": "^0.3.1", | ||||||
|  |     "is-extendable": "^0.1.1", | ||||||
|  |     "is-extglob": "^2.1.1", | ||||||
|  |     "is-fullwidth-code-point": "^2.0.0", | ||||||
|  |     "is-glob": "^4.0.1", | ||||||
|  |     "is-number": "^3.0.0", | ||||||
|  |     "is-obj": "^1.0.1", | ||||||
|  |     "is-path-cwd": "^2.2.0", | ||||||
|  |     "is-path-in-cwd": "^2.1.0", | ||||||
|  |     "is-path-inside": "^2.1.0", | ||||||
|  |     "is-plain-obj": "^1.1.0", | ||||||
|  |     "is-plain-object": "^2.0.4", | ||||||
|  |     "is-regex": "^1.0.5", | ||||||
|  |     "is-resolvable": "^1.1.0", | ||||||
|  |     "is-stream": "^1.1.0", | ||||||
|  |     "is-svg": "^3.0.0", | ||||||
|  |     "is-symbol": "^1.0.3", | ||||||
|  |     "is-typedarray": "^1.0.0", | ||||||
|  |     "is-windows": "^1.0.2", | ||||||
|  |     "is-wsl": "^1.1.0", | ||||||
|  |     "isarray": "^1.0.0", | ||||||
|  |     "isexe": "^2.0.0", | ||||||
|  |     "isobject": "^3.0.1", | ||||||
|  |     "isstream": "^0.1.2", | ||||||
|  |     "javascript-stringify": "^1.6.0", | ||||||
|  |     "js-levenshtein": "^1.1.6", | ||||||
|  |     "js-tokens": "^4.0.0", | ||||||
|  |     "js-yaml": "^3.13.1", | ||||||
|  |     "jsbn": "^0.1.1", | ||||||
|  |     "jsesc": "^2.5.2", | ||||||
|  |     "json-parse-better-errors": "^1.0.2", | ||||||
|  |     "json-schema": "^0.2.3", | ||||||
|  |     "json-schema-traverse": "^0.4.1", | ||||||
|  |     "json-stringify-safe": "^5.0.1", | ||||||
|  |     "json3": "^3.3.3", | ||||||
|  |     "json5": "^0.5.1", | ||||||
|  |     "jsonfile": "^4.0.0", | ||||||
|  |     "jsprim": "^1.4.1", | ||||||
|  |     "killable": "^1.0.1", | ||||||
|  |     "kind-of": "^6.0.3", | ||||||
|  |     "last-call-webpack-plugin": "^3.0.0", | ||||||
|  |     "lcid": "^2.0.0", | ||||||
|  |     "linkify-it": "^2.2.0", | ||||||
|  |     "load-script": "^1.0.0", | ||||||
|  |     "loader-runner": "^2.4.0", | ||||||
|  |     "loader-utils": "^1.2.3", | ||||||
|  |     "locate-path": "^3.0.0", | ||||||
|  |     "lodash": "^4.17.15", | ||||||
|  |     "lodash._reinterpolate": "^3.0.0", | ||||||
|  |     "lodash.chunk": "^4.2.0", | ||||||
|  |     "lodash.clonedeep": "^4.5.0", | ||||||
|  |     "lodash.debounce": "^4.0.8", | ||||||
|  |     "lodash.kebabcase": "^4.1.1", | ||||||
|  |     "lodash.memoize": "^4.1.2", | ||||||
|  |     "lodash.padstart": "^4.6.1", | ||||||
|  |     "lodash.sortby": "^4.7.0", | ||||||
|  |     "lodash.template": "^4.5.0", | ||||||
|  |     "lodash.templatesettings": "^4.2.0", | ||||||
|  |     "lodash.uniq": "^4.5.0", | ||||||
|  |     "loglevel": "^1.6.6", | ||||||
|  |     "loose-envify": "^1.4.0", | ||||||
|  |     "lower-case": "^1.1.4", | ||||||
|  |     "lru-cache": "^5.1.1", | ||||||
|  |     "make-dir": "^2.1.0", | ||||||
|  |     "mamacro": "^0.0.3", | ||||||
|  |     "map-age-cleaner": "^0.1.3", | ||||||
|  |     "map-cache": "^0.2.2", | ||||||
|  |     "map-visit": "^1.0.0", | ||||||
|  |     "markdown-it": "^8.4.2", | ||||||
|  |     "markdown-it-anchor": "^5.2.5", | ||||||
|  |     "markdown-it-chain": "^1.3.0", | ||||||
|  |     "markdown-it-container": "^2.0.0", | ||||||
|  |     "markdown-it-emoji": "^1.4.0", | ||||||
|  |     "markdown-it-table-of-contents": "^0.4.4", | ||||||
|  |     "md5.js": "^1.3.5", | ||||||
|  |     "mdn-data": "^2.0.4", | ||||||
|  |     "mdurl": "^1.0.1", | ||||||
|  |     "media-typer": "^0.3.0", | ||||||
|  |     "mem": "^4.3.0", | ||||||
|  |     "memory-fs": "^0.4.1", | ||||||
|  |     "merge-descriptors": "^1.0.1", | ||||||
|  |     "merge-source-map": "^1.1.0", | ||||||
|  |     "merge2": "^1.3.0", | ||||||
|  |     "methods": "^1.1.2", | ||||||
|  |     "micromatch": "^3.1.10", | ||||||
|  |     "miller-rabin": "^4.0.1", | ||||||
|  |     "mime": "^2.4.4", | ||||||
|  |     "mime-db": "^1.43.0", | ||||||
|  |     "mime-types": "^2.1.26", | ||||||
|  |     "mimic-fn": "^2.1.0", | ||||||
|  |     "min-document": "^2.19.0", | ||||||
|  |     "mini-css-extract-plugin": "^0.6.0", | ||||||
|  |     "minimalistic-assert": "^1.0.1", | ||||||
|  |     "minimalistic-crypto-utils": "^1.0.1", | ||||||
|  |     "minimatch": "^3.0.4", | ||||||
|  |     "minimist": "^1.2.0", | ||||||
|  |     "mississippi": "^3.0.0", | ||||||
|  |     "mixin-deep": "^1.3.2", | ||||||
|  |     "mkdirp": "^0.5.1", | ||||||
|  |     "move-concurrently": "^1.0.1", | ||||||
|  |     "ms": "^2.0.0", | ||||||
|  |     "multicast-dns": "^6.2.3", | ||||||
|  |     "multicast-dns-service-types": "^1.1.0", | ||||||
|  |     "nanomatch": "^1.2.13", | ||||||
|  |     "negotiator": "^0.6.2", | ||||||
|  |     "neo-async": "^2.6.1", | ||||||
|  |     "nice-try": "^1.0.5", | ||||||
|  |     "no-case": "^2.3.2", | ||||||
|  |     "node-forge": "^0.9.0", | ||||||
|  |     "node-libs-browser": "^2.2.1", | ||||||
|  |     "node-releases": "^1.1.47", | ||||||
|  |     "nopt": "^1.0.10", | ||||||
|  |     "normalize-path": "^3.0.0", | ||||||
|  |     "normalize-range": "^0.1.2", | ||||||
|  |     "normalize-url": "^2.0.1", | ||||||
|  |     "npm-run-path": "^2.0.2", | ||||||
|  |     "nprogress": "^0.2.0", | ||||||
|  |     "nth-check": "^1.0.2", | ||||||
|  |     "num2fraction": "^1.2.2", | ||||||
|  |     "number-is-nan": "^1.0.1", | ||||||
|  |     "oauth-sign": "^0.9.0", | ||||||
|  |     "object-assign": "^4.1.1", | ||||||
|  |     "object-copy": "^0.1.0", | ||||||
|  |     "object-inspect": "^1.7.0", | ||||||
|  |     "object-is": "^1.0.2", | ||||||
|  |     "object-keys": "^1.1.1", | ||||||
|  |     "object-visit": "^1.0.1", | ||||||
|  |     "object.assign": "^4.1.0", | ||||||
|  |     "object.getownpropertydescriptors": "^2.1.0", | ||||||
|  |     "object.pick": "^1.3.0", | ||||||
|  |     "object.values": "^1.1.1", | ||||||
|  |     "obuf": "^1.1.2", | ||||||
|  |     "on-finished": "^2.3.0", | ||||||
|  |     "on-headers": "^1.0.2", | ||||||
|  |     "once": "^1.4.0", | ||||||
|  |     "opencollective-postinstall": "^2.0.2", | ||||||
|  |     "opn": "^5.5.0", | ||||||
|  |     "optimize-css-assets-webpack-plugin": "^5.0.3", | ||||||
|  |     "original": "^1.0.2", | ||||||
|  |     "os-browserify": "^0.3.0", | ||||||
|  |     "os-locale": "^3.1.0", | ||||||
|  |     "p-defer": "^1.0.0", | ||||||
|  |     "p-finally": "^1.0.0", | ||||||
|  |     "p-is-promise": "^2.1.0", | ||||||
|  |     "p-limit": "^2.2.2", | ||||||
|  |     "p-locate": "^3.0.0", | ||||||
|  |     "p-map": "^2.1.0", | ||||||
|  |     "p-retry": "^3.0.1", | ||||||
|  |     "p-try": "^2.2.0", | ||||||
|  |     "pako": "^1.0.10", | ||||||
|  |     "parallel-transform": "^1.2.0", | ||||||
|  |     "param-case": "^2.1.1", | ||||||
|  |     "parse-asn1": "^5.1.5", | ||||||
|  |     "parse-json": "^4.0.0", | ||||||
|  |     "parseurl": "^1.3.3", | ||||||
|  |     "pascalcase": "^0.1.1", | ||||||
|  |     "path-browserify": "^0.0.1", | ||||||
|  |     "path-dirname": "^1.0.2", | ||||||
|  |     "path-exists": "^3.0.0", | ||||||
|  |     "path-is-absolute": "^1.0.1", | ||||||
|  |     "path-is-inside": "^1.0.2", | ||||||
|  |     "path-key": "^2.0.1", | ||||||
|  |     "path-parse": "^1.0.6", | ||||||
|  |     "path-to-regexp": "^0.1.7", | ||||||
|  |     "path-type": "^3.0.0", | ||||||
|  |     "pbkdf2": "^3.0.17", | ||||||
|  |     "performance-now": "^2.1.0", | ||||||
|  |     "pify": "^4.0.1", | ||||||
|  |     "pinkie": "^2.0.4", | ||||||
|  |     "pinkie-promise": "^2.0.1", | ||||||
|  |     "pkg-dir": "^3.0.0", | ||||||
|  |     "pkg-up": "^2.0.0", | ||||||
|  |     "portfinder": "^1.0.25", | ||||||
|  |     "posix-character-classes": "^0.1.1", | ||||||
|  |     "postcss": "^7.0.26", | ||||||
|  |     "postcss-calc": "^7.0.1", | ||||||
|  |     "postcss-colormin": "^4.0.3", | ||||||
|  |     "postcss-convert-values": "^4.0.1", | ||||||
|  |     "postcss-discard-comments": "^4.0.2", | ||||||
|  |     "postcss-discard-duplicates": "^4.0.2", | ||||||
|  |     "postcss-discard-empty": "^4.0.1", | ||||||
|  |     "postcss-discard-overridden": "^4.0.1", | ||||||
|  |     "postcss-load-config": "^2.1.0", | ||||||
|  |     "postcss-loader": "^3.0.0", | ||||||
|  |     "postcss-merge-longhand": "^4.0.11", | ||||||
|  |     "postcss-merge-rules": "^4.0.3", | ||||||
|  |     "postcss-minify-font-values": "^4.0.2", | ||||||
|  |     "postcss-minify-gradients": "^4.0.2", | ||||||
|  |     "postcss-minify-params": "^4.0.2", | ||||||
|  |     "postcss-minify-selectors": "^4.0.2", | ||||||
|  |     "postcss-modules-extract-imports": "^2.0.0", | ||||||
|  |     "postcss-modules-local-by-default": "^2.0.6", | ||||||
|  |     "postcss-modules-scope": "^2.1.1", | ||||||
|  |     "postcss-modules-values": "^2.0.0", | ||||||
|  |     "postcss-normalize-charset": "^4.0.1", | ||||||
|  |     "postcss-normalize-display-values": "^4.0.2", | ||||||
|  |     "postcss-normalize-positions": "^4.0.2", | ||||||
|  |     "postcss-normalize-repeat-style": "^4.0.2", | ||||||
|  |     "postcss-normalize-string": "^4.0.2", | ||||||
|  |     "postcss-normalize-timing-functions": "^4.0.2", | ||||||
|  |     "postcss-normalize-unicode": "^4.0.1", | ||||||
|  |     "postcss-normalize-url": "^4.0.1", | ||||||
|  |     "postcss-normalize-whitespace": "^4.0.2", | ||||||
|  |     "postcss-ordered-values": "^4.1.2", | ||||||
|  |     "postcss-reduce-initial": "^4.0.3", | ||||||
|  |     "postcss-reduce-transforms": "^4.0.2", | ||||||
|  |     "postcss-safe-parser": "^4.0.1", | ||||||
|  |     "postcss-selector-parser": "^3.1.1", | ||||||
|  |     "postcss-svgo": "^4.0.2", | ||||||
|  |     "postcss-unique-selectors": "^4.0.1", | ||||||
|  |     "postcss-value-parser": "^3.3.1", | ||||||
|  |     "prepend-http": "^2.0.0", | ||||||
|  |     "prettier": "^1.19.1", | ||||||
|  |     "pretty-error": "^2.1.1", | ||||||
|  |     "pretty-time": "^1.1.0", | ||||||
|  |     "prismjs": "^1.19.0", | ||||||
|  |     "private": "^0.1.8", | ||||||
|  |     "process": "^0.11.10", | ||||||
|  |     "process-nextick-args": "^2.0.1", | ||||||
|  |     "promise-inflight": "^1.0.1", | ||||||
|  |     "proxy-addr": "^2.0.5", | ||||||
|  |     "prr": "^1.0.1", | ||||||
|  |     "pseudomap": "^1.0.2", | ||||||
|  |     "psl": "^1.7.0", | ||||||
|  |     "public-encrypt": "^4.0.3", | ||||||
|  |     "pump": "^3.0.0", | ||||||
|  |     "pumpify": "^1.5.1", | ||||||
|  |     "punycode": "^1.4.1", | ||||||
|  |     "q": "^1.5.1", | ||||||
|  |     "qs": "^6.7.0", | ||||||
|  |     "query-string": "^5.1.1", | ||||||
|  |     "querystring": "^0.2.0", | ||||||
|  |     "querystring-es3": "^0.2.1", | ||||||
|  |     "querystringify": "^2.1.1", | ||||||
|  |     "randombytes": "^2.1.0", | ||||||
|  |     "randomfill": "^1.0.4", | ||||||
|  |     "range-parser": "^1.2.1", | ||||||
|  |     "raw-body": "^2.4.0", | ||||||
|  |     "readable-stream": "^2.3.7", | ||||||
|  |     "readdirp": "^2.2.1", | ||||||
|  |     "reduce": "^1.0.2", | ||||||
|  |     "regenerate": "^1.4.0", | ||||||
|  |     "regenerate-unicode-properties": "^8.1.0", | ||||||
|  |     "regenerator-runtime": "^0.13.3", | ||||||
|  |     "regenerator-transform": "^0.14.1", | ||||||
|  |     "regex-not": "^1.0.2", | ||||||
|  |     "regexp.prototype.flags": "^1.3.0", | ||||||
|  |     "regexpu-core": "^4.6.0", | ||||||
|  |     "regjsgen": "^0.5.1", | ||||||
|  |     "regjsparser": "^0.6.2", | ||||||
|  |     "relateurl": "^0.2.7", | ||||||
|  |     "remove-trailing-separator": "^1.1.0", | ||||||
|  |     "renderkid": "^2.0.3", | ||||||
|  |     "repeat-element": "^1.1.3", | ||||||
|  |     "repeat-string": "^1.6.1", | ||||||
|  |     "request": "^2.88.0", | ||||||
|  |     "require-directory": "^2.1.1", | ||||||
|  |     "require-main-filename": "^1.0.1", | ||||||
|  |     "requires-port": "^1.0.0", | ||||||
|  |     "reselect": "^3.0.1", | ||||||
|  |     "resolve": "^1.14.2", | ||||||
|  |     "resolve-cwd": "^2.0.0", | ||||||
|  |     "resolve-from": "^3.0.0", | ||||||
|  |     "resolve-url": "^0.2.1", | ||||||
|  |     "ret": "^0.1.15", | ||||||
|  |     "retry": "^0.12.0", | ||||||
|  |     "rgb-regex": "^1.0.1", | ||||||
|  |     "rgba-regex": "^1.0.0", | ||||||
|  |     "rimraf": "^2.7.1", | ||||||
|  |     "ripemd160": "^2.0.2", | ||||||
|  |     "run-queue": "^1.0.3", | ||||||
|  |     "safe-buffer": "^5.2.0", | ||||||
|  |     "safe-regex": "^1.1.0", | ||||||
|  |     "safer-buffer": "^2.1.2", | ||||||
|  |     "sax": "^1.2.4", | ||||||
|  |     "schema-utils": "^1.0.0", | ||||||
|  |     "section-matter": "^1.0.0", | ||||||
|  |     "select": "^1.1.2", | ||||||
|  |     "select-hose": "^2.0.0", | ||||||
|  |     "selfsigned": "^1.10.7", | ||||||
|  |     "semver": "^5.7.1", | ||||||
|  |     "send": "^0.17.1", | ||||||
|  |     "serialize-javascript": "^2.1.2", | ||||||
|  |     "serve-index": "^1.9.1", | ||||||
|  |     "serve-static": "^1.14.1", | ||||||
|  |     "set-blocking": "^2.0.0", | ||||||
|  |     "set-value": "^2.0.1", | ||||||
|  |     "setimmediate": "^1.0.5", | ||||||
|  |     "setprototypeof": "^1.1.1", | ||||||
|  |     "sha.js": "^2.4.11", | ||||||
|  |     "shebang-command": "^1.2.0", | ||||||
|  |     "shebang-regex": "^1.0.0", | ||||||
|  |     "signal-exit": "^3.0.2", | ||||||
|  |     "simple-swizzle": "^0.2.2", | ||||||
|  |     "sitemap": "^3.2.2", | ||||||
|  |     "slash": "^1.0.0", | ||||||
|  |     "smoothscroll-polyfill": "^0.4.4", | ||||||
|  |     "snapdragon": "^0.8.2", | ||||||
|  |     "snapdragon-node": "^2.1.1", | ||||||
|  |     "snapdragon-util": "^3.0.1", | ||||||
|  |     "sockjs": "^0.3.19", | ||||||
|  |     "sockjs-client": "^1.4.0", | ||||||
|  |     "sort-keys": "^2.0.0", | ||||||
|  |     "source-list-map": "^2.0.1", | ||||||
|  |     "source-map": "^0.6.1", | ||||||
|  |     "source-map-resolve": "^0.5.3", | ||||||
|  |     "source-map-support": "^0.5.16", | ||||||
|  |     "source-map-url": "^0.4.0", | ||||||
|  |     "spdy": "^4.0.1", | ||||||
|  |     "spdy-transport": "^3.0.0", | ||||||
|  |     "split-string": "^3.1.0", | ||||||
|  |     "sprintf-js": "^1.0.3", | ||||||
|  |     "sshpk": "^1.16.1", | ||||||
|  |     "ssri": "^6.0.1", | ||||||
|  |     "stable": "^0.1.8", | ||||||
|  |     "stack-utils": "^1.0.2", | ||||||
|  |     "static-extend": "^0.1.2", | ||||||
|  |     "statuses": "^1.5.0", | ||||||
|  |     "std-env": "^2.2.1", | ||||||
|  |     "stream-browserify": "^2.0.2", | ||||||
|  |     "stream-each": "^1.2.3", | ||||||
|  |     "stream-http": "^2.8.3", | ||||||
|  |     "stream-shift": "^1.0.1", | ||||||
|  |     "strict-uri-encode": "^1.1.0", | ||||||
|  |     "string-width": "^2.1.1", | ||||||
|  |     "string.prototype.trimleft": "^2.1.1", | ||||||
|  |     "string.prototype.trimright": "^2.1.1", | ||||||
|  |     "string_decoder": "^1.3.0", | ||||||
|  |     "strip-ansi": "^3.0.1", | ||||||
|  |     "strip-bom-string": "^1.0.0", | ||||||
|  |     "strip-eof": "^1.0.0", | ||||||
|  |     "stylehacks": "^4.0.3", | ||||||
|  |     "stylus": "^0.54.7", | ||||||
|  |     "stylus-loader": "^3.0.2", | ||||||
|  |     "supports-color": "^6.1.0", | ||||||
|  |     "svg-tags": "^1.0.0", | ||||||
|  |     "svgo": "^1.3.2", | ||||||
|  |     "tapable": "^1.1.3", | ||||||
|  |     "terser": "^4.6.3", | ||||||
|  |     "terser-webpack-plugin": "^1.4.3", | ||||||
|  |     "text-table": "^0.2.0", | ||||||
|  |     "through": "^2.3.8", | ||||||
|  |     "through2": "^2.0.5", | ||||||
|  |     "thunky": "^1.1.0", | ||||||
|  |     "timers-browserify": "^2.0.11", | ||||||
|  |     "timsort": "^0.3.0", | ||||||
|  |     "tiny-emitter": "^2.1.0", | ||||||
|  |     "to-arraybuffer": "^1.0.1", | ||||||
|  |     "to-factory": "^1.0.0", | ||||||
|  |     "to-fast-properties": "^2.0.0", | ||||||
|  |     "to-object-path": "^0.3.0", | ||||||
|  |     "to-regex": "^3.0.2", | ||||||
|  |     "to-regex-range": "^2.1.1", | ||||||
|  |     "toidentifier": "^1.0.0", | ||||||
|  |     "toml": "^3.0.0", | ||||||
|  |     "toposort": "^1.0.7", | ||||||
|  |     "tough-cookie": "^2.4.3", | ||||||
|  |     "tr46": "^1.0.1", | ||||||
|  |     "tslib": "^1.10.0", | ||||||
|  |     "tty-browserify": "^0.0.0", | ||||||
|  |     "tunnel-agent": "^0.6.0", | ||||||
|  |     "tweetnacl": "^0.14.5", | ||||||
|  |     "type-fest": "^0.8.1", | ||||||
|  |     "type-is": "^1.6.18", | ||||||
|  |     "typedarray": "^0.0.6", | ||||||
|  |     "uc.micro": "^1.0.6", | ||||||
|  |     "uglify-js": "^3.4.10", | ||||||
|  |     "unicode-canonical-property-names-ecmascript": "^1.0.4", | ||||||
|  |     "unicode-match-property-ecmascript": "^1.0.4", | ||||||
|  |     "unicode-match-property-value-ecmascript": "^1.1.0", | ||||||
|  |     "unicode-property-aliases-ecmascript": "^1.0.5", | ||||||
|  |     "union-value": "^1.0.1", | ||||||
|  |     "uniq": "^1.0.1", | ||||||
|  |     "uniqs": "^2.0.0", | ||||||
|  |     "unique-filename": "^1.1.1", | ||||||
|  |     "unique-slug": "^2.0.2", | ||||||
|  |     "universalify": "^0.1.2", | ||||||
|  |     "unpipe": "^1.0.0", | ||||||
|  |     "unquote": "^1.1.1", | ||||||
|  |     "unset-value": "^1.0.0", | ||||||
|  |     "upath": "^1.2.0", | ||||||
|  |     "upper-case": "^1.1.3", | ||||||
|  |     "uri-js": "^4.2.2", | ||||||
|  |     "urix": "^0.1.0", | ||||||
|  |     "url": "^0.11.0", | ||||||
|  |     "url-loader": "^1.1.2", | ||||||
|  |     "url-parse": "^1.4.7", | ||||||
|  |     "use": "^3.1.1", | ||||||
|  |     "util": "^0.11.1", | ||||||
|  |     "util-deprecate": "^1.0.2", | ||||||
|  |     "util.promisify": "^1.0.0", | ||||||
|  |     "utila": "^0.4.0", | ||||||
|  |     "utils-merge": "^1.0.1", | ||||||
|  |     "uuid": "^3.4.0", | ||||||
|  |     "vary": "^1.1.2", | ||||||
|  |     "vendors": "^1.0.3", | ||||||
|  |     "verror": "^1.10.0", | ||||||
|  |     "vm-browserify": "^1.1.2", | ||||||
|  |     "vue": "^2.6.11", | ||||||
|  |     "vue-hot-reload-api": "^2.3.4", | ||||||
|  |     "vue-loader": "^15.8.3", | ||||||
|  |     "vue-router": "^3.1.5", | ||||||
|  |     "vue-server-renderer": "^2.6.11", | ||||||
|  |     "vue-style-loader": "^4.1.2", | ||||||
|  |     "vue-template-compiler": "^2.6.11", | ||||||
|  |     "vue-template-es2015-compiler": "^1.9.1", | ||||||
|  |     "vuepress": "^1.3.1", | ||||||
|  |     "vuepress-html-webpack-plugin": "^3.2.0", | ||||||
|  |     "vuepress-plugin-container": "^2.1.2", | ||||||
|  |     "vuepress-plugin-sitemap": "^2.3.1", | ||||||
|  |     "vuepress-plugin-smooth-scroll": "^0.0.3", | ||||||
|  |     "vuepress-plugin-zooming": "^1.1.7", | ||||||
|  |     "watchpack": "^1.6.0", | ||||||
|  |     "wbuf": "^1.7.3", | ||||||
|  |     "webidl-conversions": "^4.0.2", | ||||||
|  |     "webpack": "^4.41.5", | ||||||
|  |     "webpack-chain": "^4.12.1", | ||||||
|  |     "webpack-dev-middleware": "^3.7.2", | ||||||
|  |     "webpack-dev-server": "^3.10.1", | ||||||
|  |     "webpack-log": "^2.0.0", | ||||||
|  |     "webpack-merge": "^4.2.2", | ||||||
|  |     "webpack-sources": "^1.4.3", | ||||||
|  |     "webpackbar": "^3.2.0", | ||||||
|  |     "websocket-driver": "^0.7.3", | ||||||
|  |     "websocket-extensions": "^0.1.3", | ||||||
|  |     "whatwg-url": "^7.1.0", | ||||||
|  |     "when": "^3.6.4", | ||||||
|  |     "which": "^1.3.1", | ||||||
|  |     "which-module": "^2.0.0", | ||||||
|  |     "worker-farm": "^1.7.0", | ||||||
|  |     "wrap-ansi": "^5.1.0", | ||||||
|  |     "wrappy": "^1.0.2", | ||||||
|  |     "ws": "^6.2.1", | ||||||
|  |     "xmlbuilder": "^13.0.2", | ||||||
|  |     "xtend": "^4.0.2", | ||||||
|  |     "y18n": "^4.0.0", | ||||||
|  |     "yallist": "^3.1.1", | ||||||
|  |     "yargs": "^12.0.5", | ||||||
|  |     "yargs-parser": "^11.1.1", | ||||||
|  |     "zepto": "^1.2.0" | ||||||
|  |   }, | ||||||
|  |   "devDependencies": {}, | ||||||
|  |   "scripts": { | ||||||
|  |     "dev": "vuepress dev", | ||||||
|  |     "build": "vuepress build" | ||||||
|  |   }, | ||||||
|  |   "author": "", | ||||||
|  |   "license": "ISC" | ||||||
|  | } | ||||||
							
								
								
									
										12
									
								
								docs/screenshots/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,12 @@ | |||||||
|  | # Screenshots | ||||||
|  |  | ||||||
|  | <img class="no-medium-zoom zooming" src="/screenshots/login.png" alt="Login" title="Login" width="200"/> | ||||||
|  | <img class="no-medium-zoom zooming" src="/screenshots/dashboard.png" alt="Dashboard" title="Dashboard" width="200"/> | ||||||
|  | <img class="no-medium-zoom zooming" src="/screenshots/proxy-hosts.png" alt="Proxy Hosts" title="Proxy Hosts" width="200"/> | ||||||
|  | <img class="no-medium-zoom zooming" src="/screenshots/proxy-hosts-add.png" alt="Add Proxy Host" title="Add Proxy Host" width="200"/> | ||||||
|  | <img class="no-medium-zoom zooming" src="/screenshots/redirection-hosts.png" alt="Redirection Hosts" title="Redirection Hosts" width="200"/> | ||||||
|  | <img class="no-medium-zoom zooming" src="/screenshots/dead-hosts.png" alt="404 Hosts" title="404 Hosts" width="200"/> | ||||||
|  | <img class="no-medium-zoom zooming" src="/screenshots/permissions.png" alt="User Permissions" title="User Permissions" width="200"/> | ||||||
|  | <img class="no-medium-zoom zooming" src="/screenshots/certificates.png" alt="Certificates" title="Certificates" width="200"/> | ||||||
|  | <img class="no-medium-zoom zooming" src="/screenshots/audit-log.png" alt="Audit Log" title="Audit Log" width="200"/> | ||||||
|  | <img class="no-medium-zoom zooming" src="/screenshots/custom-settings.png" alt="Custom Settings" title="Custom Settings" width="200"/> | ||||||
| @@ -1,13 +1,4 @@ | |||||||
| ## Installation and Configuration | # Full Setup Instructions | ||||||
| 
 |  | ||||||
| If you just want to get up and running in the quickest time possible, grab all the files in |  | ||||||
| the [doc/example/](https://github.com/jc21/nginx-proxy-manager/tree/master/doc/example) |  | ||||||
| folder and run: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| docker-compose up -d |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| ### Configuration File | ### Configuration File | ||||||
| 
 | 
 | ||||||
| @@ -48,6 +39,12 @@ This app doesn't come with a database, you have to provide one yourself. Current | |||||||
| It's easy to use another docker container for your database also and link it as part of the docker stack, so that's what the following examples | It's easy to use another docker container for your database also and link it as part of the docker stack, so that's what the following examples | ||||||
| are going to use. | are going to use. | ||||||
| 
 | 
 | ||||||
|  | ::: warning | ||||||
|  | 
 | ||||||
|  | When using a `mariadb` database, the NPM configuration file should still use the `mysql` engine! | ||||||
|  | 
 | ||||||
|  | ::: | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ### Running the App | ### Running the App | ||||||
| 
 | 
 | ||||||
| @@ -61,11 +58,11 @@ services: | |||||||
|     restart: always |     restart: always | ||||||
|     ports: |     ports: | ||||||
|       # Public HTTP Port: |       # Public HTTP Port: | ||||||
|       - 80:80 |       - '80:80' | ||||||
|       # Public HTTPS Port: |       # Public HTTPS Port: | ||||||
|       - 443:443 |       - '443:443' | ||||||
|       # Admin Web Port: |       # Admin Web Port: | ||||||
|       - 81:81 |       - '81:81' | ||||||
|     volumes: |     volumes: | ||||||
|       # Make sure this config.json file exists as per instructions above: |       # Make sure this config.json file exists as per instructions above: | ||||||
|       - ./config.json:/app/config/production.json |       - ./config.json:/app/config/production.json | ||||||
| @@ -74,7 +71,7 @@ services: | |||||||
|     depends_on: |     depends_on: | ||||||
|       - db |       - db | ||||||
|   db: |   db: | ||||||
|     image: jc21/mariadb-aria:latest |     image: jc21/mariadb-aria:10.4 | ||||||
|     restart: always |     restart: always | ||||||
|     environment: |     environment: | ||||||
|       MYSQL_ROOT_PASSWORD: "npm" |       MYSQL_ROOT_PASSWORD: "npm" | ||||||
| @@ -114,9 +111,9 @@ on Raspbian. | |||||||
| 
 | 
 | ||||||
| After the app is running for the first time, the following will happen: | After the app is running for the first time, the following will happen: | ||||||
| 
 | 
 | ||||||
| - The database will initialize with table structures | 1. The database will initialize with table structures | ||||||
| - GPG keys will be generated and saved in the configuration file | 2. GPG keys will be generated and saved in the configuration file | ||||||
| - A default admin user will be created | 3. A default admin user will be created | ||||||
| 
 | 
 | ||||||
| This process can take a couple of minutes depending on your machine. | This process can take a couple of minutes depending on your machine. | ||||||
| 
 | 
 | ||||||
| @@ -129,22 +126,3 @@ Password: changeme | |||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Immediately after logging in with this default user you will be asked to modify your details and change your password. | Immediately after logging in with this default user you will be asked to modify your details and change your password. | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ### Advanced Options |  | ||||||
| 
 |  | ||||||
| #### X-FRAME-OPTIONS Header |  | ||||||
| 
 |  | ||||||
| You can configure the [`X-FRAME-OPTIONS`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) header |  | ||||||
| value by specifying it as a Docker environment variable. The default if not specified is `deny`. |  | ||||||
| 
 |  | ||||||
| ```yml |  | ||||||
|   ... |  | ||||||
|   environment: |  | ||||||
|     X_FRAME_OPTIONS: "sameorigin" |  | ||||||
|   ... |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| ... -e "X_FRAME_OPTIONS=sameorigin" ... |  | ||||||
| ``` |  | ||||||
							
								
								
									
										12
									
								
								docs/third-party/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,12 @@ | |||||||
|  | # Third Party | ||||||
|  |  | ||||||
|  | As this software gains popularity it's common to see it integrated with other platforms. Please be aware that unless specifically mentioned in the documenation of those | ||||||
|  | integrations, they are *not supported* by me. | ||||||
|  |  | ||||||
|  | Known integrations: | ||||||
|  |  | ||||||
|  | - [HomeAssistant Hass.io plugin](https://github.com/hassio-addons/addon-nginx-proxy-manager) | ||||||
|  | - [UnRaid / Synology](https://github.com/jlesage/docker-nginx-proxy-manager) | ||||||
|  |  | ||||||
|  | If you would like your integration of NPM listed, please open a | ||||||
|  | [Github issue](https://github.com/jc21/nginx-proxy-manager/issues/new?assignees=&labels=enhancement&template=feature_request.md&title=) | ||||||
							
								
								
									
										7964
									
								
								docs/yarn.lock
									
									
									
									
									
										Normal file
									
								
							
							
						
						| Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB | 
| Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 56 KiB | 
| Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 16 KiB | 
| @@ -2,8 +2,8 @@ | |||||||
| <browserconfig> | <browserconfig> | ||||||
|     <msapplication> |     <msapplication> | ||||||
|         <tile> |         <tile> | ||||||
|             <square150x150logo src="/images/favicon/mstile-150x150.png"/> |             <square150x150logo src="/images/favicons/mstile-150x150.png"/> | ||||||
|             <TileColor>#f0ad00</TileColor> |             <TileColor>#333333</TileColor> | ||||||
|         </tile> |         </tile> | ||||||
|     </msapplication> |     </msapplication> | ||||||
| </browserconfig> | </browserconfig> | ||||||
|   | |||||||
| Before Width: | Height: | Size: 958 B After Width: | Height: | Size: 1.5 KiB | 
| Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 2.6 KiB | 
| Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB | 
| Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 12 KiB | 
| @@ -9,24 +9,77 @@ Created by potrace 1.11, written by Peter Selinger 2001-2013 | |||||||
| </metadata> | </metadata> | ||||||
| <g transform="translate(0.000000,512.000000) scale(0.100000,-0.100000)" | <g transform="translate(0.000000,512.000000) scale(0.100000,-0.100000)" | ||||||
| fill="#000000" stroke="none"> | fill="#000000" stroke="none"> | ||||||
| <path d="M2384 5110 c-1036 -74 -1922 -761 -2248 -1743 -146 -437 -170 -915 | <path d="M2348 4766 c-109 -63 -203 -116 -210 -120 -7 -3 -20 -10 -28 -16 -19 | ||||||
| -70 -1367 193 -869 838 -1582 1687 -1864 437 -146 915 -170 1367 -70 632 141 | -12 -114 -68 -410 -238 -481 -276 -1017 -586 -1087 -628 -39 -23 -73 -40 -76 | ||||||
| 1204 533 1564 1074 222 333 358 697 412 1100 22 167 22 473 0 640 -96 722 | -38 -3 3 -5 -519 -5 -1160 l0 -1165 292 -169 c293 -170 727 -421 801 -462 22 | ||||||
| -473 1348 -1062 1767 -472 335 -1074 504 -1650 463z m1514 -1050 c173 -18 201 | -12 99 -56 170 -98 167 -96 690 -399 732 -423 l32 -18 207 120 c114 66 226 | ||||||
| -52 210 -250 8 -190 -30 -414 -110 -655 -112 -338 -282 -619 -509 -842 -131 | 131 248 143 23 13 214 124 426 246 212 122 401 231 420 242 19 11 127 73 240 | ||||||
| -130 -233 -203 -384 -278 -211 -105 -410 -162 -663 -188 l-114 -12 -97 -109 | 138 213 123 225 130 383 220 61 35 95 60 92 68 -3 7 0 10 5 7 11 -7 7 36 -4 | ||||||
| c-201 -228 -505 -449 -846 -616 -210 -102 -316 -133 -338 -98 -25 39 106 345 | 54 -4 5 -2 13 4 16 8 5 7 12 -2 23 -10 12 -10 14 0 8 6 -4 12 -2 12 3 0 6 -6 | ||||||
| 248 578 166 275 296 430 548 657 36 32 47 49 47 72 l0 30 -137 -66 c-229 -109 | 11 -12 11 -10 0 -9 3 1 9 10 6 10 10 1 16 -9 6 -9 9 0 15 9 6 9 12 0 30 -9 17 | ||||||
| -615 -273 -644 -273 -15 0 -35 7 -43 16 -24 24 -20 109 8 169 38 82 425 784 | -9 21 0 15 14 -9 10 27 -5 37 -6 5 -6 8 2 8 11 0 10 30 -2 49 -3 5 -1 13 5 16 | ||||||
| 473 860 88 136 163 193 292 221 71 15 247 18 324 5 l48 -8 49 61 c305 381 900 | 8 5 7 11 -1 22 -10 11 -10 16 0 22 10 7 11 13 1 31 -8 15 -8 20 -1 16 6 -4 11 | ||||||
| 682 1434 726 50 4 96 8 101 8 6 1 52 -3 103 -8z m-558 -2245 c-21 -148 -73 | -3 11 3 0 5 -5 13 -11 17 -8 5 -8 9 1 14 9 6 9 12 0 30 -8 15 -8 20 -1 16 15 | ||||||
| -226 -214 -319 -97 -64 -842 -472 -899 -492 -47 -17 -110 -18 -138 -4 -13 7 | -10 14 7 -1 22 -9 9 -9 12 0 12 12 0 12 26 -1 46 -3 6 -3 14 0 18 10 10 11 | ||||||
| -19 21 -19 44 0 29 102 278 230 563 36 81 28 76 165 88 273 25 602 139 810 | 256 1 262 -4 3 -4 13 2 23 6 12 5 22 -3 31 -9 10 -9 11 1 6 6 -4 12 -2 12 3 0 | ||||||
| 283 l70 48 3 -65 c2 -36 -2 -102 -8 -146z"/> | 6 -5 11 -10 11 -7 0 -7 6 0 20 6 11 7 20 1 20 -12 0 -9 33 4 43 6 6 5 10 -3 | ||||||
| <path d="M3580 3711 c-72 -23 -112 -76 -112 -151 0 -88 62 -152 150 -153 194 | 14 -10 4 -10 8 0 21 10 12 10 14 1 8 -7 -4 -13 -2 -13 3 0 6 6 11 13 11 9 0 8 | ||||||
| -3 214 278 22 307 -19 3 -46 1 -60 -3z"/> | 3 -2 9 -11 7 -11 10 0 15 11 5 11 7 1 12 -10 5 -10 9 0 22 10 12 10 14 1 8 -7 | ||||||
| <path d="M3035 3392 c-68 -33 -128 -93 -158 -161 -31 -69 -29 -178 5 -252 54 | -4 -13 -2 -13 3 0 6 6 11 13 11 9 0 8 3 -2 9 -11 7 -11 10 0 15 11 5 11 7 1 | ||||||
| -117 159 -184 288 -184 96 1 169 33 234 106 60 66 80 129 74 228 -7 118 -59 | 12 -10 5 -10 9 0 22 10 12 10 14 1 8 -7 -4 -13 -2 -13 3 0 6 6 11 13 11 9 0 8 | ||||||
| 201 -160 256 -44 24 -67 30 -138 33 -77 3 -90 1 -145 -26z"/> | 3 -2 9 -11 7 -11 10 0 15 11 5 11 7 1 12 -10 5 -10 9 0 22 10 12 10 14 1 8 -7 | ||||||
|  | -4 -13 -3 -13 3 0 5 6 12 13 15 9 5 9 7 0 12 -9 4 -10 11 -3 25 7 13 7 19 1 | ||||||
|  | 19 -7 0 -7 8 -1 24 6 16 5 27 -3 35 -8 8 -8 14 -2 19 15 10 17 32 5 46 -5 7 | ||||||
|  | -7 16 -3 20 12 12 10 190 -2 198 -7 5 -7 8 1 8 12 0 12 29 -1 49 -5 10 -4 12 | ||||||
|  | 3 7 7 -4 12 -3 12 3 0 5 -5 13 -11 17 -8 5 -8 9 1 14 9 6 9 12 0 30 -8 15 -8 | ||||||
|  | 20 -1 16 6 -4 11 -3 11 3 0 5 -5 13 -11 17 -8 5 -8 9 1 14 9 6 9 12 0 30 -8 | ||||||
|  | 16 -9 20 -1 15 12 -7 9 34 -3 54 -4 5 -2 13 4 16 8 5 7 12 -2 23 -10 12 -10 | ||||||
|  | 14 0 8 6 -4 12 -2 12 3 0 6 -6 11 -12 11 -10 0 -9 3 1 9 10 6 10 10 1 16 -9 6 | ||||||
|  | -9 9 0 15 9 6 9 12 0 30 -9 17 -9 21 0 15 14 -9 10 27 -5 37 -6 5 -6 8 2 8 11 | ||||||
|  | 0 10 36 -2 48 -2 3 0 11 6 18 7 8 7 14 -1 19 -5 3 -10 12 -10 18 0 7 4 6 10 | ||||||
|  | -3 8 -12 9 -9 8 12 -2 24 -34 45 -313 206 -458 265 -1024 592 -1070 617 -22 | ||||||
|  | 13 -174 100 -338 194 -165 94 -304 171 -310 171 -7 0 -101 -52 -209 -114z | ||||||
|  | m347 -191 c33 -19 85 -49 116 -66 l56 -32 0 -174 -1 -174 -68 -40 c-80 -47 | ||||||
|  | -184 -105 -214 -120 -18 -9 -43 1 -165 71 -79 46 -146 84 -148 86 -2 2 -4 17 | ||||||
|  | -4 34 0 36 -6 36 -102 11 -204 -54 -409 -148 -565 -259 -164 -116 -329 -287 | ||||||
|  | -433 -447 -105 -163 -197 -382 -232 -554 -16 -78 -20 -102 -30 -191 -7 -50 -6 | ||||||
|  | -247 0 -300 3 -25 7 -69 10 -99 3 -29 8 -57 10 -61 7 -11 -5 -40 -16 -40 -4 0 | ||||||
|  | -35 -16 -68 -35 -64 -38 -77 -42 -78 -22 -1 19 -14 91 -18 105 -25 73 -25 511 | ||||||
|  | 0 584 2 7 6 27 8 43 12 77 66 267 97 340 116 269 219 425 399 606 173 172 297 | ||||||
|  | 262 506 364 144 71 261 112 412 146 l101 23 -2 50 -1 50 149 88 150 87 35 -20 | ||||||
|  | c20 -10 63 -35 96 -54z m512 -300 c296 -108 565 -305 798 -586 96 -115 237 | ||||||
|  | -374 288 -529 100 -300 129 -643 77 -900 -6 -30 -13 -68 -16 -85 -4 -28 -23 | ||||||
|  | -98 -57 -207 l-15 -48 47 -25 46 -25 0 -175 0 -174 -110 -62 c-60 -35 -127 | ||||||
|  | -74 -148 -88 -45 -29 -21 -38 -253 97 l-91 53 1 174 c1 95 3 175 6 177 3 3 69 | ||||||
|  | 41 148 86 141 80 144 81 173 67 16 -9 29 -13 29 -10 0 3 0 7 0 10 0 3 7 22 14 | ||||||
|  | 42 21 55 55 211 63 290 9 85 10 330 0 403 -21 171 -95 421 -159 534 -5 11 -22 | ||||||
|  | 40 -36 65 -140 253 -346 467 -597 621 -75 46 -204 108 -270 131 -22 7 -43 16 | ||||||
|  | -48 19 -6 5 -12 143 -8 173 2 12 16 9 118 -28z m-231 -776 c645 -372 604 -346 | ||||||
|  | 605 -377 0 -15 1 -278 1 -586 l1 -558 -29 -24 c-16 -13 -32 -23 -35 -24 -4 0 | ||||||
|  | -421 -236 -529 -300 -8 -4 -109 -63 -223 -129 l-208 -121 -132 76 c-73 42 | ||||||
|  | -148 85 -167 96 -28 16 -222 127 -473 271 -18 11 -82 48 -142 83 l-111 64 1 | ||||||
|  | 589 c0 324 2 591 5 594 3 2 145 84 315 182 171 98 378 217 461 265 83 48 157 | ||||||
|  | 90 165 93 11 6 41 24 75 46 1 1 190 -108 420 -240z m-1788 -1533 c71 -41 138 | ||||||
|  | -80 149 -87 19 -11 20 -23 20 -186 l0 -174 -29 -15 c-15 -8 -28 -18 -28 -23 0 | ||||||
|  | -13 167 -174 235 -227 125 -97 270 -180 406 -235 74 -29 194 -67 233 -73 18 | ||||||
|  | -3 39 -8 47 -10 73 -26 352 -39 514 -24 95 8 261 43 354 74 163 55 413 195 | ||||||
|  | 535 302 15 12 32 22 38 22 7 0 45 -19 85 -42 l74 -42 -23 -21 c-260 -239 -658 | ||||||
|  | -426 -983 -460 -27 -3 -63 -8 -79 -11 -32 -7 -285 -7 -361 0 -200 18 -437 87 | ||||||
|  | -633 184 -194 96 -315 185 -487 355 l-120 118 -38 -21 -38 -22 -137 78 c-75 | ||||||
|  | 42 -144 83 -152 90 -12 10 -15 43 -14 178 0 99 4 170 10 176 8 8 283 168 291 | ||||||
|  | 170 1 0 60 -33 131 -74z"/> | ||||||
|  | <path d="M2475 4451 l-80 -47 -3 -84 c-3 -111 0 -122 46 -147 21 -11 59 -32 | ||||||
|  | 83 -46 l44 -26 80 46 c44 25 83 51 87 56 3 6 6 53 5 106 l-2 94 -72 43 c-39 | ||||||
|  | 23 -80 44 -90 47 -10 3 -51 -15 -98 -42z"/> | ||||||
|  | <path d="M3978 1843 l-78 -45 0 -102 0 -102 83 -47 c46 -26 87 -47 92 -47 4 0 | ||||||
|  | 44 21 89 47 l83 46 -1 101 -1 101 -80 47 c-44 27 -87 47 -95 47 -8 -1 -50 -22 | ||||||
|  | -92 -46z"/> | ||||||
|  | <path d="M2307 3015 c-137 -80 -253 -145 -258 -145 -11 0 -10 21 -12 -318 -2 | ||||||
|  | -241 0 -285 13 -296 14 -11 435 -258 487 -285 20 -10 50 4 275 135 139 80 256 | ||||||
|  | 151 260 157 3 6 6 142 6 303 l0 293 -132 77 c-72 42 -147 86 -166 96 -19 11 | ||||||
|  | -76 45 -127 74 -50 30 -93 54 -95 54 -1 -1 -115 -66 -251 -145z"/> | ||||||
|  | <path d="M971 1846 c-40 -24 -76 -48 -80 -54 -5 -8 -6 -160 -2 -194 1 -8 156 | ||||||
|  | -98 169 -98 5 0 46 21 90 47 l81 47 3 70 c6 126 4 131 -60 168 -90 51 -104 58 | ||||||
|  | -116 58 -6 -1 -44 -20 -85 -44z"/> | ||||||
| </g> | </g> | ||||||
| </svg> | </svg> | ||||||
|   | |||||||
| Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 5.6 KiB | 
| @@ -1,13 +1,14 @@ | |||||||
| { | { | ||||||
|     "name": "", |     "name": "", | ||||||
|  |     "short_name": "", | ||||||
|     "icons": [ |     "icons": [ | ||||||
|         { |         { | ||||||
|             "src": "/images/favicon/android-chrome-192x192.png", |             "src": "/images/favicons/android-chrome-192x192.png", | ||||||
|             "sizes": "192x192", |             "sizes": "192x192", | ||||||
|             "type": "image/png" |             "type": "image/png" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "src": "/images/favicon/android-chrome-512x512.png", |             "src": "/images/favicons/android-chrome-512x512.png", | ||||||
|             "sizes": "512x512", |             "sizes": "512x512", | ||||||
|             "type": "image/png" |             "type": "image/png" | ||||||
|         } |         } | ||||||
| @@ -15,4 +16,4 @@ | |||||||
|     "theme_color": "#ffffff", |     "theme_color": "#ffffff", | ||||||
|     "background_color": "#ffffff", |     "background_color": "#ffffff", | ||||||
|     "display": "standalone" |     "display": "standalone" | ||||||
| } | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								frontend/app-images/logo-256.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 30 KiB | 
							
								
								
									
										
											BIN
										
									
								
								frontend/app-images/logo-text-vertical-grey.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 14 KiB | 
| @@ -5,22 +5,20 @@ | |||||||
| 		<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> | 		<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> | ||||||
| 		<meta http-equiv="X-UA-Compatible" content="ie=edge"> | 		<meta http-equiv="X-UA-Compatible" content="ie=edge"> | ||||||
| 		<meta http-equiv="Content-Language" content="en"> | 		<meta http-equiv="Content-Language" content="en"> | ||||||
| 		<meta name="msapplication-TileColor" content="#2d89ef"> |  | ||||||
| 		<meta name="theme-color" content="#4188c9"> |  | ||||||
| 		<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> | 		<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> | ||||||
| 		<meta name="apple-mobile-web-app-capable" content="yes"> | 		<meta name="apple-mobile-web-app-capable" content="yes"> | ||||||
| 		<meta name="mobile-web-app-capable" content="yes"> | 		<meta name="mobile-web-app-capable" content="yes"> | ||||||
| 		<meta name="HandheldFriendly" content="True"> | 		<meta name="HandheldFriendly" content="True"> | ||||||
| 		<meta name="MobileOptimized" content="320"> | 		<meta name="MobileOptimized" content="320"> | ||||||
| 		<title><%- title %></title> | 		<title><%- title %></title> | ||||||
| 		<link rel="apple-touch-icon" sizes="180x180" href="/images/favicons/apple-touch-icon.png?v=<%= version %>"> | 		<link rel="apple-touch-icon" sizes="180x180" href="/images/favicons/apple-touch-icon.png"> | ||||||
| 		<link rel="icon" type="image/png" sizes="32x32" href="/images/favicons/favicon-32x32.png?v=<%= version %>"> | 		<link rel="icon" type="image/png" sizes="32x32" href="/images/favicons/favicon-32x32.png"> | ||||||
| 		<link rel="icon" type="image/png" sizes="16x16" href="/images/favicons/favicon-16x16.png?v=<%= version %>"> | 		<link rel="icon" type="image/png" sizes="16x16" href="/images/favicons/favicon-16x16.png"> | ||||||
| 		<link rel="manifest" href="/images/favicons/site.webmanifest?v=<%= version %>"> | 		<link rel="manifest" href="/images/favicons/site.webmanifest"> | ||||||
| 		<link rel="mask-icon" href="/images/favicons/safari-pinned-tab.svg?v=<%= version %>" color="#5bbad5"> | 		<link rel="mask-icon" href="/images/favicons/safari-pinned-tab.svg" color="#5bbad5"> | ||||||
| 		<link rel="shortcut icon" href="/images/favicons/favicon.ico?v=<%= version %>"> | 		<link rel="shortcut icon" href="/images/favicons/favicon.ico"> | ||||||
| 		<meta name="msapplication-TileColor" content="#f5f5f5"> | 		<meta name="msapplication-TileColor" content="#333333"> | ||||||
| 		<meta name="msapplication-config" content="/images/favicons/browserconfig.xml?v=<%= version %>"> | 		<meta name="msapplication-config" content="/images/favicons/browserconfig.xml"> | ||||||
| 		<meta name="theme-color" content="#ffffff"> | 		<meta name="theme-color" content="#ffffff"> | ||||||
| 		<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300i,400,400i,500,500i,600,600i,700,700i&subset=latin-ext"> | 		<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300i,400,400i,500,500i,600,600i,700,700i&subset=latin-ext"> | ||||||
| 		<link href="/css/main.css?v=<%= version %>" rel="stylesheet"> | 		<link href="/css/main.css?v=<%= version %>" rel="stylesheet"> | ||||||
|   | |||||||
| @@ -3,24 +3,35 @@ | |||||||
|         <div class="col col-login mx-auto"> |         <div class="col col-login mx-auto"> | ||||||
|             <form class="card" action="" method="post"> |             <form class="card" action="" method="post"> | ||||||
|                 <div class="card-body p-6"> |                 <div class="card-body p-6"> | ||||||
|                     <div class="card-title"><%- i18n('login', 'title') %></div> |                     <div class="container"> | ||||||
|                     <div class="form-group"> |                         <div class="row"> | ||||||
|                         <label class="form-label"><%- i18n('str', 'email-address') %></label> |                             <div class="col-sm-12 col-md-6"> | ||||||
|                         <input name="identity" type="email" class="form-control" placeholder="<%- i18n('str', 'email-address') %>" required> |                                 <div class="text-center p-6"> | ||||||
|                     </div> |                                     <img src="/images/logo-text-vertical-grey.png" alt="Logo" /> | ||||||
|                     <div class="form-group"> |                                     <div class="text-center text-muted mt-5"> | ||||||
|                         <label class="form-label"><%- i18n('str', 'password') %></label> |                                         <%- i18n('main', 'version', {version: getVersion()}) %> | ||||||
|                         <input name="secret" type="password" class="form-control" placeholder="<%- i18n('str', 'password') %>" required> |                                     </div> | ||||||
|                         <div class="invalid-feedback secret-error"></div> |                                 </div> | ||||||
|                     </div> |                             </div> | ||||||
|                     <div class="form-footer"> |                             <div class="col-sm-12 col-md-6"> | ||||||
|                         <button type="submit" class="btn btn-teal btn-block"><%- i18n('str', 'sign-in') %></button> |                                 <div class="card-title"><%- i18n('login', 'title') %></div> | ||||||
|  |                                 <div class="form-group"> | ||||||
|  |                                     <label class="form-label"><%- i18n('str', 'email-address') %></label> | ||||||
|  |                                     <input name="identity" type="email" class="form-control" placeholder="<%- i18n('str', 'email-address') %>" required> | ||||||
|  |                                 </div> | ||||||
|  |                                 <div class="form-group"> | ||||||
|  |                                     <label class="form-label"><%- i18n('str', 'password') %></label> | ||||||
|  |                                     <input name="secret" type="password" class="form-control" placeholder="<%- i18n('str', 'password') %>" required> | ||||||
|  |                                     <div class="invalid-feedback secret-error"></div> | ||||||
|  |                                 </div> | ||||||
|  |                                 <div class="form-footer"> | ||||||
|  |                                     <button type="submit" class="btn btn-teal btn-block"><%- i18n('str', 'sign-in') %></button> | ||||||
|  |                                 </div> | ||||||
|  |                             </div> | ||||||
|  |                         </div> | ||||||
|                     </div> |                     </div> | ||||||
|                 </div> |                 </div> | ||||||
|             </form> |             </form> | ||||||
|             <div class="text-center text-muted"> |  | ||||||
|                 <%- i18n('main', 'app') %> <%- i18n('main', 'version', {version: getVersion()}) %> |  | ||||||
|             </div> |  | ||||||
|         </div> |         </div> | ||||||
|     </div> |     </div> | ||||||
| </div> | </div> | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "nginx-proxy-manager", |   "name": "nginx-proxy-manager", | ||||||
|   "version": "2.1.2", |   "version": "0.0.0", | ||||||
|   "description": "A beautiful interface for creating Nginx endpoints", |   "description": "A beautiful interface for creating Nginx endpoints", | ||||||
|   "main": "js/index.js", |   "main": "js/index.js", | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|   | |||||||
| @@ -32,3 +32,7 @@ a:hover { | |||||||
|     display: flex; |     display: flex; | ||||||
|     flex-wrap: wrap; |     flex-wrap: wrap; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | .col-login { | ||||||
|  |     max-width: 48rem; | ||||||
|  | } | ||||||
							
								
								
									
										55
									
								
								scripts/docs-upload
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @@ -0,0 +1,55 @@ | |||||||
|  | #!/bin/bash | ||||||
|  |  | ||||||
|  | # Note: This script is designed to be run inside CI builds | ||||||
|  |  | ||||||
|  | CYAN='\E[1;36m' | ||||||
|  | YELLOW='\E[1;33m' | ||||||
|  | BLUE='\E[1;34m' | ||||||
|  | GREEN='\E[1;32m' | ||||||
|  | RESET='\E[0m' | ||||||
|  |  | ||||||
|  | echo -e "${BLUE}❯ ${CYAN}Uploading docs in: ${YELLOW}$1${RESET}" | ||||||
|  |  | ||||||
|  | cd "$1" || exit 1 | ||||||
|  | ALL_FILES=$(find . -follow) | ||||||
|  |  | ||||||
|  | for FILE in $ALL_FILES | ||||||
|  | do | ||||||
|  | 	# remove preceeding ./ | ||||||
|  | 	FILE=$(echo "$FILE" | sed -E "s/\.\///g") | ||||||
|  | 	echo '=======================================' | ||||||
|  | 	echo "FILE: $FILE" | ||||||
|  |  | ||||||
|  | 	if [[ -d $FILE ]]; then | ||||||
|  | 		echo "Skipping $FILE because it's a directory" | ||||||
|  | 	elif [[ -f $FILE ]]; then | ||||||
|  | 		PARAM_STRING="--guess-mime-type" | ||||||
|  | 		EXT="${FILE##*.}" | ||||||
|  | 		if [ "$EXT" == "css" ]; then | ||||||
|  | 			PARAM_STRING="-mtext/css" | ||||||
|  | 		elif [ "$EXT" == "js" ]; then | ||||||
|  | 			PARAM_STRING="-mapplication/javascript" | ||||||
|  | 		elif [[ "$EXT" == "html" ]]; then | ||||||
|  | 			PARAM_STRING="-mtext/html" | ||||||
|  | 		elif [[ "$EXT" == "png" ]]; then | ||||||
|  | 			PARAM_STRING="-mimage/png" | ||||||
|  | 		elif [[ "$EXT" == "jpg" ]]; then | ||||||
|  | 			PARAM_STRING="-mimage/jpg" | ||||||
|  | 		elif [[ "$EXT" == "svg" ]]; then | ||||||
|  | 			PARAM_STRING="-mimage/svg+xml" | ||||||
|  | 		fi | ||||||
|  |  | ||||||
|  | 		DEST_FOLDER=$(dirname "$FILE") | ||||||
|  | 		if [ "$DEST_FOLDER" == "." ]; then | ||||||
|  | 			DEST_FOLDER= | ||||||
|  | 		else | ||||||
|  | 			DEST_FOLDER="${DEST_FOLDER}/" | ||||||
|  | 		fi | ||||||
|  |  | ||||||
|  | 		echo s3cmd -v -f -P "$PARAM_STRING" --add-header="Cache-Control:public,max-age=604800" sync "$FILE" "s3://$S3_BUCKET/$DEST_FOLDER" | ||||||
|  | 		s3cmd -v -f -P "$PARAM_STRING" --add-header="Cache-Control:public,max-age=604800" sync "$FILE" "s3://$S3_BUCKET/$DEST_FOLDER" | ||||||
|  | 		rc=$?; if [ $rc != 0 ]; then exit $rc; fi | ||||||
|  | 	fi | ||||||
|  | done | ||||||
|  |  | ||||||
|  | echo -e "${BLUE}❯ ${GREEN}Upload Complete${RESET}" | ||||||