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') { | ||||
| @@ -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') { | ||||
| 			when { | ||||
| 				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') { | ||||
| 			when { | ||||
| 				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 | ||||
| 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 | ||||
|  | ||||
| @@ -31,54 +32,6 @@ so that the barrier for entry here is low. | ||||
| - 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 | ||||
|  | ||||
| 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 | ||||
| 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 | ||||
|  | ||||
|  | ||||
| ## 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", | ||||
| 	"version": "2.1.2", | ||||
| 	"version": "0.0.0", | ||||
| 	"description": "A beautiful interface for creating Nginx endpoints", | ||||
| 	"main": "js/index.js", | ||||
| 	"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. | ||||
| 
 | ||||
| @@ -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 | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| 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 | ||||
| ``` | ||||
| 
 | ||||
| # Full Setup Instructions | ||||
| 
 | ||||
| ### 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 | ||||
| are going to use. | ||||
| 
 | ||||
| ::: warning | ||||
| 
 | ||||
| When using a `mariadb` database, the NPM configuration file should still use the `mysql` engine! | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| 
 | ||||
| ### Running the App | ||||
| 
 | ||||
| @@ -61,11 +58,11 @@ services: | ||||
|     restart: always | ||||
|     ports: | ||||
|       # Public HTTP Port: | ||||
|       - 80:80 | ||||
|       - '80:80' | ||||
|       # Public HTTPS Port: | ||||
|       - 443:443 | ||||
|       - '443:443' | ||||
|       # Admin Web Port: | ||||
|       - 81:81 | ||||
|       - '81:81' | ||||
|     volumes: | ||||
|       # Make sure this config.json file exists as per instructions above: | ||||
|       - ./config.json:/app/config/production.json | ||||
| @@ -74,7 +71,7 @@ services: | ||||
|     depends_on: | ||||
|       - db | ||||
|   db: | ||||
|     image: jc21/mariadb-aria:latest | ||||
|     image: jc21/mariadb-aria:10.4 | ||||
|     restart: always | ||||
|     environment: | ||||
|       MYSQL_ROOT_PASSWORD: "npm" | ||||
| @@ -114,9 +111,9 @@ on Raspbian. | ||||
| 
 | ||||
| After the app is running for the first time, the following will happen: | ||||
| 
 | ||||
| - The database will initialize with table structures | ||||
| - GPG keys will be generated and saved in the configuration file | ||||
| - A default admin user will be created | ||||
| 1. The database will initialize with table structures | ||||
| 2. GPG keys will be generated and saved in the configuration file | ||||
| 3. A default admin user will be created | ||||
| 
 | ||||
| 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. | ||||
| 
 | ||||
| 
 | ||||
| ### 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> | ||||
|     <msapplication> | ||||
|         <tile> | ||||
|             <square150x150logo src="/images/favicon/mstile-150x150.png"/> | ||||
|             <TileColor>#f0ad00</TileColor> | ||||
|             <square150x150logo src="/images/favicons/mstile-150x150.png"/> | ||||
|             <TileColor>#333333</TileColor> | ||||
|         </tile> | ||||
|     </msapplication> | ||||
| </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> | ||||
| <g transform="translate(0.000000,512.000000) scale(0.100000,-0.100000)" | ||||
| fill="#000000" stroke="none"> | ||||
| <path d="M2384 5110 c-1036 -74 -1922 -761 -2248 -1743 -146 -437 -170 -915 | ||||
| -70 -1367 193 -869 838 -1582 1687 -1864 437 -146 915 -170 1367 -70 632 141 | ||||
| 1204 533 1564 1074 222 333 358 697 412 1100 22 167 22 473 0 640 -96 722 | ||||
| -473 1348 -1062 1767 -472 335 -1074 504 -1650 463z m1514 -1050 c173 -18 201 | ||||
| -52 210 -250 8 -190 -30 -414 -110 -655 -112 -338 -282 -619 -509 -842 -131 | ||||
| -130 -233 -203 -384 -278 -211 -105 -410 -162 -663 -188 l-114 -12 -97 -109 | ||||
| c-201 -228 -505 -449 -846 -616 -210 -102 -316 -133 -338 -98 -25 39 106 345 | ||||
| 248 578 166 275 296 430 548 657 36 32 47 49 47 72 l0 30 -137 -66 c-229 -109 | ||||
| -615 -273 -644 -273 -15 0 -35 7 -43 16 -24 24 -20 109 8 169 38 82 425 784 | ||||
| 473 860 88 136 163 193 292 221 71 15 247 18 324 5 l48 -8 49 61 c305 381 900 | ||||
| 682 1434 726 50 4 96 8 101 8 6 1 52 -3 103 -8z m-558 -2245 c-21 -148 -73 | ||||
| -226 -214 -319 -97 -64 -842 -472 -899 -492 -47 -17 -110 -18 -138 -4 -13 7 | ||||
| -19 21 -19 44 0 29 102 278 230 563 36 81 28 76 165 88 273 25 602 139 810 | ||||
| 283 l70 48 3 -65 c2 -36 -2 -102 -8 -146z"/> | ||||
| <path d="M3580 3711 c-72 -23 -112 -76 -112 -151 0 -88 62 -152 150 -153 194 | ||||
| -3 214 278 22 307 -19 3 -46 1 -60 -3z"/> | ||||
| <path d="M3035 3392 c-68 -33 -128 -93 -158 -161 -31 -69 -29 -178 5 -252 54 | ||||
| -117 159 -184 288 -184 96 1 169 33 234 106 60 66 80 129 74 228 -7 118 -59 | ||||
| 201 -160 256 -44 24 -67 30 -138 33 -77 3 -90 1 -145 -26z"/> | ||||
| <path d="M2348 4766 c-109 -63 -203 -116 -210 -120 -7 -3 -20 -10 -28 -16 -19 | ||||
| -12 -114 -68 -410 -238 -481 -276 -1017 -586 -1087 -628 -39 -23 -73 -40 -76 | ||||
| -38 -3 3 -5 -519 -5 -1160 l0 -1165 292 -169 c293 -170 727 -421 801 -462 22 | ||||
| -12 99 -56 170 -98 167 -96 690 -399 732 -423 l32 -18 207 120 c114 66 226 | ||||
| 131 248 143 23 13 214 124 426 246 212 122 401 231 420 242 19 11 127 73 240 | ||||
| 138 213 123 225 130 383 220 61 35 95 60 92 68 -3 7 0 10 5 7 11 -7 7 36 -4 | ||||
| 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 30 -2 49 -3 5 -1 13 5 16 | ||||
| 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 | ||||
| -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 | ||||
| -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 | ||||
| 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 | ||||
| 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 | ||||
| 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 -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 -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 | ||||
| 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 | ||||
| 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> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 5.6 KiB | 
| @@ -1,13 +1,14 @@ | ||||
| { | ||||
|     "name": "", | ||||
|     "short_name": "", | ||||
|     "icons": [ | ||||
|         { | ||||
|             "src": "/images/favicon/android-chrome-192x192.png", | ||||
|             "src": "/images/favicons/android-chrome-192x192.png", | ||||
|             "sizes": "192x192", | ||||
|             "type": "image/png" | ||||
|         }, | ||||
|         { | ||||
|             "src": "/images/favicon/android-chrome-512x512.png", | ||||
|             "src": "/images/favicons/android-chrome-512x512.png", | ||||
|             "sizes": "512x512", | ||||
|             "type": "image/png" | ||||
|         } | ||||
| @@ -15,4 +16,4 @@ | ||||
|     "theme_color": "#ffffff", | ||||
|     "background_color": "#ffffff", | ||||
|     "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 http-equiv="X-UA-Compatible" content="ie=edge"> | ||||
| 		<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-capable" content="yes"> | ||||
| 		<meta name="mobile-web-app-capable" content="yes"> | ||||
| 		<meta name="HandheldFriendly" content="True"> | ||||
| 		<meta name="MobileOptimized" content="320"> | ||||
| 		<title><%- title %></title> | ||||
| 		<link rel="apple-touch-icon" sizes="180x180" href="/images/favicons/apple-touch-icon.png?v=<%= version %>"> | ||||
| 		<link rel="icon" type="image/png" sizes="32x32" href="/images/favicons/favicon-32x32.png?v=<%= version %>"> | ||||
| 		<link rel="icon" type="image/png" sizes="16x16" href="/images/favicons/favicon-16x16.png?v=<%= version %>"> | ||||
| 		<link rel="manifest" href="/images/favicons/site.webmanifest?v=<%= version %>"> | ||||
| 		<link rel="mask-icon" href="/images/favicons/safari-pinned-tab.svg?v=<%= version %>" color="#5bbad5"> | ||||
| 		<link rel="shortcut icon" href="/images/favicons/favicon.ico?v=<%= version %>"> | ||||
| 		<meta name="msapplication-TileColor" content="#f5f5f5"> | ||||
| 		<meta name="msapplication-config" content="/images/favicons/browserconfig.xml?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"> | ||||
| 		<link rel="icon" type="image/png" sizes="16x16" href="/images/favicons/favicon-16x16.png"> | ||||
| 		<link rel="manifest" href="/images/favicons/site.webmanifest"> | ||||
| 		<link rel="mask-icon" href="/images/favicons/safari-pinned-tab.svg" color="#5bbad5"> | ||||
| 		<link rel="shortcut icon" href="/images/favicons/favicon.ico"> | ||||
| 		<meta name="msapplication-TileColor" content="#333333"> | ||||
| 		<meta name="msapplication-config" content="/images/favicons/browserconfig.xml"> | ||||
| 		<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 href="/css/main.css?v=<%= version %>" rel="stylesheet"> | ||||
|   | ||||
| @@ -3,24 +3,35 @@ | ||||
|         <div class="col col-login mx-auto"> | ||||
|             <form class="card" action="" method="post"> | ||||
|                 <div class="card-body p-6"> | ||||
|                     <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 class="container"> | ||||
|                         <div class="row"> | ||||
|                             <div class="col-sm-12 col-md-6"> | ||||
|                                 <div class="text-center p-6"> | ||||
|                                     <img src="/images/logo-text-vertical-grey.png" alt="Logo" /> | ||||
|                                     <div class="text-center text-muted mt-5"> | ||||
|                                         <%- i18n('main', 'version', {version: getVersion()}) %> | ||||
|                                     </div> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                             <div class="col-sm-12 col-md-6"> | ||||
|                                 <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> | ||||
|             </form> | ||||
|             <div class="text-center text-muted"> | ||||
|                 <%- i18n('main', 'app') %> <%- i18n('main', 'version', {version: getVersion()}) %> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| </div> | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "nginx-proxy-manager", | ||||
|   "version": "2.1.2", | ||||
|   "version": "0.0.0", | ||||
|   "description": "A beautiful interface for creating Nginx endpoints", | ||||
|   "main": "js/index.js", | ||||
|   "devDependencies": { | ||||
|   | ||||
| @@ -32,3 +32,7 @@ a:hover { | ||||
|     display: flex; | ||||
|     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}" | ||||