Compare commits

...

2 Commits

4 changed files with 44 additions and 55 deletions

View File

@@ -1,5 +1,7 @@
# Initial Setup Instructions # Initial Setup Instructions
How to first begin using this subproject. How to first begin using this subproject.
1. Move to the directory of this README. 1. Move to the directory of this README.
``` ```
$ cd $DOCKER_HOME/Config/ReverseProxy $ cd $DOCKER_HOME/Config/ReverseProxy
@@ -10,6 +12,7 @@ How to first begin using this subproject.
# ./create_placeholder_certs.sh # ./create_placeholder_certs.sh
``` ```
1. Make any personal changes to `./config/nginx.conf`. 1. Make any personal changes to `./config/nginx.conf`.
1. Copy the example files as `docker-compose.yml` and `.env`.
1. Build the project. 1. Build the project.
``` ```
# docker compose build # docker compose build
@@ -20,8 +23,8 @@ How to first begin using this subproject.
``` ```
1. Verify it started correctly, no configuration file errors. 1. Verify it started correctly, no configuration file errors.
``` ```
# docker logs reverseproxy-app-1 # docker logs rp-app
# docker logs reverseproxy-certbot-1 # docker logs rp-certbot
``` ```
1. Create the real certificates. 1. Create the real certificates.
``` ```
@@ -34,6 +37,7 @@ How to first begin using this subproject.
``` ```
## DO NOT ## DO NOT
* Edit any configurations or website data inside the container. It is destroyed on each build. * Edit any configurations or website data inside the container. It is destroyed on each build.
* Instead, modify the files in `./config/` then use the Update Config commands below. * Instead, modify the files in `./config/` then use the Update Config commands below.
* Install any additional software inside of the container. It will not persist a down and up. * Install any additional software inside of the container. It will not persist a down and up.
@@ -41,17 +45,22 @@ How to first begin using this subproject.
* Alternatively write a script such as `../Nextcloud/fixes.ksh` which is run after every upgrade. * Alternatively write a script such as `../Nextcloud/fixes.ksh` which is run after every upgrade.
# Other Commands # Other Commands
Tasks which will also likely come up while using this subproject. Tasks which will also likely come up while using this subproject.
## Stop ## Stop
If the proxy needs turned off either stop or down may be used. If the proxy needs turned off either stop or down may be used.
``` ```
# docker compose stop # docker compose stop
# docker compose down # docker compose down
``` ```
## Upgrade ## Upgrade
Upgrading the containers should be as easy as this: Upgrading the containers should be as easy as this:
``` ```
# docker compose down # docker compose down
# docker compose pull # docker compose pull
@@ -60,15 +69,19 @@ Upgrading the containers should be as easy as this:
``` ```
## Update Config ## Update Config
Replace the configuration based on any new, updated, or removed files. Replace the configuration based on any new, updated, or removed files.
This may be possible to do when the system is up, but the best results have come from going down and back up. This may be possible to do when the system is up, but the best results have come from going down and back up.
This is essentially an upgrade but there is no pull. This is essentially an upgrade but there is no pull.
``` ```
# docker compose down # docker compose down
# docker compose build # docker compose build
# docker compose up -d # docker compose up -d
``` ```
If wanted as a one-line command: If wanted as a one-line command:
``` ```
# docker compose down && docker compose build && docker compose up -d # docker compose down && docker compose build && docker compose up -d
``` ```

View File

@@ -16,6 +16,9 @@ services:
ports: ports:
- "80:80" - "80:80"
- "443:443" - "443:443"
environment:
- CPU=$CPU
- MEM=$MEM
volumes: volumes:
- ../../Volumes/ReverseProxy/letsencrypt:/etc/nginx/letsencrypt - ../../Volumes/ReverseProxy/letsencrypt:/etc/nginx/letsencrypt
- ../../Volumes/ReverseProxy/letsencrypt-certs:/etc/nginx/certs - ../../Volumes/ReverseProxy/letsencrypt-certs:/etc/nginx/certs
@@ -24,13 +27,16 @@ services:
mode: global mode: global
resources: resources:
limits: limits:
cpus: '0.20' cpus: $CPU
memory: 64M memory: $MEM
certbot: certbot:
container_name: rp-certbot container_name: rp-certbot
image: certbot/certbot image: certbot/certbot
restart: always restart: always
environment:
- CPU_LE=$CPU_LE
- MEM_LE=$MEM_LE
volumes: volumes:
- ../../Volumes/ReverseProxy/letsencrypt:/etc/letsencrypt - ../../Volumes/ReverseProxy/letsencrypt:/etc/letsencrypt
- ../../Volumes/ReverseProxy/letsencrypt-certs:/etc/letsencrypt/nginx - ../../Volumes/ReverseProxy/letsencrypt-certs:/etc/letsencrypt/nginx
@@ -39,5 +45,5 @@ services:
mode: global mode: global
resources: resources:
limits: limits:
cpus: '0.10' cpus: $CPU_LE
memory: 32M memory: $MEM_LE

View File

@@ -1,49 +0,0 @@
# 2022-10-05 Hyperling
# Reverse Proxy with LetsEncrypt Certbot.
# This is a revised version of these works:
# https://phoenixnap.com/kb/docker-nginx-reverse-proxy
# https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/
# https://pentacent.medium.com/nginx-and-lets-encrypt-with-docker-in-less-than-5-minutes-b4b8a60d3a71
services:
app:
container_name: rp-app
build:
context: ./
network: host
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ../../Volumes/ReverseProxy/letsencrypt:/etc/nginx/letsencrypt
- ../../Volumes/ReverseProxy/letsencrypt-certs:/etc/nginx/certs
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
deploy:
mode: global
resources:
limits:
cpus: '1.00'
memory: 512M
reservations:
cpus: '0.25'
memory: 128M
certbot:
container_name: rp-certbot
image: certbot/certbot
restart: always
volumes:
- ../../Volumes/ReverseProxy/letsencrypt:/etc/letsencrypt
- ../../Volumes/ReverseProxy/letsencrypt-certs:/etc/letsencrypt/nginx
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; cp -rL /etc/letsencrypt/live/* /etc/letsencrypt/nginx/; sleep 12h & wait $${!}; done;'"
deploy:
mode: global
resources:
limits:
cpus: '0.50'
memory: 256M
reservations:
cpus: '0.25'
memory: 128M

View File

@@ -0,0 +1,19 @@
# This file will need copied as `.env` and adjusted as necessary.
## Docker ##
COMPOSE_BAKE=true
## Performance ##
# Micro Server
CPU=0.20
MEM=0.10G
CPU_LE=0.10
MEM_LE=0.05G
# Capable Server
#CPU=1.00
#MEM=0.50G
#CPU_LE=0.50
#MEM_LE=0.25G