166 lines
3.9 KiB
Markdown
166 lines
3.9 KiB
Markdown
## Installation and Configuration
|
|
|
|
There's a few ways to configure this app depending on:
|
|
|
|
- Whether you use `docker-compose` or vanilla docker
|
|
- Which architecture you're running it on (raspberry pi also supported - Testers wanted!)
|
|
|
|
### 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):
|
|
|
|
```json
|
|
{
|
|
"database": {
|
|
"engine": "mysql",
|
|
"host": "127.0.0.1",
|
|
"name": "nginxproxymanager",
|
|
"user": "nginxproxymanager",
|
|
"password": "password123",
|
|
"port": 3306
|
|
}
|
|
}
|
|
```
|
|
|
|
Once you've created your configuration file it's easy to mount it in the docker container, examples below.
|
|
|
|
**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.
|
|
|
|
It's easy to use another docker container for your database also and link it as part of the docker stack. Here's an example:
|
|
|
|
```yml
|
|
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
|
|
db:
|
|
image: jc21/mariadb-aria
|
|
restart: always
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: "password123"
|
|
MYSQL_DATABASE: "nginxproxymanager"
|
|
MYSQL_USER: "nginxproxymanager"
|
|
MYSQL_PASSWORD: "password123"
|
|
volumes:
|
|
- ./data/mysql:/var/lib/mysql
|
|
```
|
|
|
|
|
|
### Running the App
|
|
|
|
Via `docker-compose`:
|
|
|
|
```yml
|
|
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
|
|
```
|
|
|
|
Vanilla Docker:
|
|
|
|
```bash
|
|
docker run -d \
|
|
--name nginx-proxy-manager \
|
|
-p 80:80 \
|
|
-p 81:81 \
|
|
-p 443:443 \
|
|
-v /path/to/config.json:/app/config/production.json \
|
|
-v /path/to/data:/data \
|
|
-v /path/to/letsencrypt:/etc/letsencrypt \
|
|
jc21/nginx-proxy-manager:latest
|
|
```
|
|
|
|
|
|
### Running on Raspberry PI / `armhf`
|
|
|
|
I have created `armhf` and `arm64` docker containers just for you. There may be issues with it,
|
|
if you have issues please report them here.
|
|
|
|
Note: Rpi v2 and below won't work with these images.
|
|
|
|
```bash
|
|
docker run -d \
|
|
--name nginx-proxy-manager-app \
|
|
-p 80:80 \
|
|
-p 81:81 \
|
|
-p 443:443 \
|
|
-v /path/to/config.json:/app/config/production.json \
|
|
-v /path/to/data:/data \
|
|
-v /path/to/letsencrypt:/etc/letsencrypt \
|
|
jc21/nginx-proxy-manager:latest-armhf
|
|
```
|
|
|
|
|
|
### Initial Run
|
|
|
|
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
|
|
|
|
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.
|
|
|
|
|
|
### 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" ...
|
|
```
|
|
|