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>
This commit is contained in:
jc21
2020-03-11 16:54:10 +10:00
committed by GitHub
parent 1b6993ee70
commit 256bd2336f
52 changed files with 9245 additions and 192 deletions

3
docs/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
.vuepress/dist
node_modules
ts

80
docs/.vuepress/config.js Normal file
View 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,
},
},
],
]
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

View File

@ -0,0 +1,2 @@
User-agent: *
Disallow:

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

View 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;

View File

@ -0,0 +1,4 @@
$accentColor = #f15833
$textColor = #663015
$borderColor = #eaecef
$codeBgColor = #282c34

93
docs/README.md Normal file
View 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 &middot;
Free SSL with Let's Encrypt &middot;
Designed with security in mind &middot;
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 Lets 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.

View File

@ -0,0 +1,32 @@
# Advanced Configuration
### Custom Nginx Configurations
If you are a more advanced user, you might be itching for extra Nginx customizability.
NPM has the ability to include different custom configuration snippets in different places.
You can add your custom configuration snippet files at `/data/nginx/custom` as follow:
`/data/nginx/custom/root.conf`: Included at the very end of nginx.conf
`/data/nginx/custom/http.conf`: Included at the end of the main http block
`/data/nginx/custom/server_proxy.conf`: Included at the end of every proxy server block
`/data/nginx/custom/server_redirect.conf`: Included at the end of every redirection server block
`/data/nginx/custom/server_stream.conf`: Included at the end of every stream server block
`/data/nginx/custom/server_stream_tcp.conf`: Included at the end of every TCP stream server block
`/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
View File

@ -0,0 +1 @@
../../README.md

777
docs/package.json Normal file
View 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"
}

View 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"/>

128
docs/setup/README.md Normal file
View File

@ -0,0 +1,128 @@
# Full Setup Instructions
### Configuration File
**The configuration file needs to be provided by you!**
Don't worry, this is easy to do.
The app requires a configuration file to let it know what database you're using.
Here's an example configuration for `mysql` (or mariadb) that is compatible with the docker-compose example below:
```json
{
"database": {
"engine": "mysql",
"host": "db",
"name": "npm",
"user": "npm",
"password": "npm",
"port": 3306
}
}
```
Once you've created your configuration file it's easy to mount it in the docker container.
**Note:** After the first run of the application, the config file will be altered to include generated encryption keys unique to your installation. These keys
affect the login and session management of the application. If these keys change for any reason, all users will be logged out.
### Database
This app doesn't come with a database, you have to provide one yourself. Currently only `mysql/mariadb` is supported for the minimum versions:
- MySQL v5.7.8+
- MariaDB v10.2.7+
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
Via `docker-compose`:
```yml
version: "3"
services:
app:
image: jc21/nginx-proxy-manager:2
restart: always
ports:
# Public HTTP Port:
- '80:80'
# Public HTTPS Port:
- '443:443'
# Admin Web Port:
- '81:81'
volumes:
# Make sure this config.json file exists as per instructions above:
- ./config.json:/app/config/production.json
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
depends_on:
- db
db:
image: jc21/mariadb-aria:10.4
restart: always
environment:
MYSQL_ROOT_PASSWORD: "npm"
MYSQL_DATABASE: "npm"
MYSQL_USER: "npm"
MYSQL_PASSWORD: "npm"
volumes:
- ./data/mysql:/var/lib/mysql
```
Then:
```bash
docker-compose up -d
```
### Running on Raspberry PI / ARM devices
The docker images support the following architectures:
- amd64
- arm64
- armv7
The docker images are a manifest of all the architecture docker builds supported, so this means
you don't have to worry about doing anything special and you can follow the common instructions above.
Check out the [dockerhub tags](https://cloud.docker.com/repository/registry-1.docker.io/jc21/nginx-proxy-manager/tags)
for a list of supported architectures and if you want one that doesn't exist,
[create a feature request](https://github.com/jc21/nginx-proxy-manager/issues/new?assignees=&labels=enhancement&template=feature_request.md&title=).
Also, if you don't know how to already, follow [this guide to install docker and docker-compose](https://manre-universe.net/how-to-run-docker-and-docker-compose-on-raspbian/)
on Raspbian.
### Initial Run
After the app is running for the first time, the following will happen:
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.
### 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.

12
docs/third-party/README.md vendored Normal file
View 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

File diff suppressed because it is too large Load Diff