From 44de2253d2c58fd210050a0d63096d1e79347a57 Mon Sep 17 00:00:00 2001 From: bunkerity Date: Wed, 4 Aug 2021 12:01:07 +0200 Subject: [PATCH] examples improvement - traefik alternative, autoconf reverse proxy and basic website --- examples/authelia/.README.md.swp | Bin 0 -> 1024 bytes examples/autoconf-php/README.md | 2 +- examples/autoconf-reverse-proxy/README.md | 13 ++++ .../autoconf-reverse-proxy/architecture.png | Bin 0 -> 16869 bytes .../docker-compose-apps.yml | 50 ++++++++++++++ .../docker-compose-nginx.yml | 45 +++++++++++++ examples/basic-website-with-php/README.md | 26 ++------ .../basic-website-with-php/architecture.png | Bin 0 -> 8565 bytes examples/behind-traefik/docker-compose.yml | 62 ------------------ examples/behind-traefik/traefik/acme.json | 0 examples/behind-traefik/traefik/traefik.toml | 29 -------- examples/behind-traefik/web1/index.php | 5 -- examples/behind-traefik/web2/index.php | 5 -- examples/traefik-alternative/README.md | 13 ++++ examples/traefik-alternative/architecture.png | Bin 0 -> 818 bytes .../docker-compose-bunkerized.yml} | 37 ++--------- .../docker-compose-traefik.yml | 35 ++++++++++ 17 files changed, 170 insertions(+), 152 deletions(-) create mode 100644 examples/authelia/.README.md.swp create mode 100644 examples/autoconf-reverse-proxy/README.md create mode 100644 examples/autoconf-reverse-proxy/architecture.png create mode 100644 examples/autoconf-reverse-proxy/docker-compose-apps.yml create mode 100644 examples/autoconf-reverse-proxy/docker-compose-nginx.yml create mode 100644 examples/basic-website-with-php/architecture.png delete mode 100644 examples/behind-traefik/docker-compose.yml delete mode 100644 examples/behind-traefik/traefik/acme.json delete mode 100644 examples/behind-traefik/traefik/traefik.toml delete mode 100644 examples/behind-traefik/web1/index.php delete mode 100644 examples/behind-traefik/web2/index.php create mode 100644 examples/traefik-alternative/README.md create mode 100644 examples/traefik-alternative/architecture.png rename examples/{autoconf-reverse-proxy/docker-compose.yml => traefik-alternative/docker-compose-bunkerized.yml} (52%) create mode 100644 examples/traefik-alternative/docker-compose-traefik.yml diff --git a/examples/authelia/.README.md.swp b/examples/authelia/.README.md.swp new file mode 100644 index 0000000000000000000000000000000000000000..bd48a1fdef6557b01c2a3422d135bc4734e51b44 GIT binary patch literal 1024 zcmYc?$V<%2S1{HyVn6}@j0_B=#i>Oof;c!XuEE|R{sFq~L9Wg&em*!gA^3R6Qy&8UmvsK -## Docker +## Autoconf First of all, you need to run bunkerized-nginx and bunkerized-nginx-autoconf : see [docker-compose-nginx.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/autoconf-php/docker-compose-nginx.yml). diff --git a/examples/autoconf-reverse-proxy/README.md b/examples/autoconf-reverse-proxy/README.md new file mode 100644 index 000000000..348b56c82 --- /dev/null +++ b/examples/autoconf-reverse-proxy/README.md @@ -0,0 +1,13 @@ +# Autoconf reverse proxy + +Quickly deploy web app on Docker containers without restarting bunkerized-nginx. + +## Architecture + + + +## Autoconf + +First of all, you need to run bunkerized-nginx and bunkerized-nginx-autoconf : see [docker-compose-nginx.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/autoconf-reverse-proxy/docker-compose-nginx.yml). + +Then, you can add and remove web apps with special `bunkerized-nginx.*` labels so the configurations are automatically generated : see [docker-compose-apps.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/autoconf-reverse-proxy/docker-compose-apps.yml). diff --git a/examples/autoconf-reverse-proxy/architecture.png b/examples/autoconf-reverse-proxy/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..f25a83be18771085d9823ea849c6501c08b67b08 GIT binary patch literal 16869 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 a;rcpYcw)N_{Lc))h2K}dS9JIJpZ^O>s?eGM literal 0 HcmV?d00001 diff --git a/examples/autoconf-reverse-proxy/docker-compose-apps.yml b/examples/autoconf-reverse-proxy/docker-compose-apps.yml new file mode 100644 index 000000000..56d93e687 --- /dev/null +++ b/examples/autoconf-reverse-proxy/docker-compose-apps.yml @@ -0,0 +1,50 @@ +version: '3' + +services: + + myapp1: + build: js-app + restart: always + environment: + - NODE_ENV=production + labels: + - "bunkerized-nginx.SERVER_NAME=app1.example.com" # replace with your domain + - "bunkerized-nginx.REVERSE_PROXY_URL=/" + - "bunkerized-nginx.REVERSE_PROXY_HOST=http://myapp1:3000" + networks: + myappnet: + aliases: + - myapp1 + + myapp2: + build: js-app + restart: always + environment: + - NODE_ENV=production + labels: + - "bunkerized-nginx.SERVER_NAME=app2.example.com" # replace with your domain + - "bunkerized-nginx.REVERSE_PROXY_URL=/" + - "bunkerized-nginx.REVERSE_PROXY_HOST=http://myapp2:3000" + networks: + myappnet: + aliases: + - myapp2 + + myapp3: + build: js-app + restart: always + environment: + - NODE_ENV=production + labels: + - "bunkerized-nginx.SERVER_NAME=app3.example.com" # replace with your domain + - "bunkerized-nginx.REVERSE_PROXY_URL=/" + - "bunkerized-nginx.REVERSE_PROXY_HOST=http://myapp3:3000" + networks: + myappnet: + aliases: + - myapp3 + +networks: + myphpnet: + external: + name: myphpnet diff --git a/examples/autoconf-reverse-proxy/docker-compose-nginx.yml b/examples/autoconf-reverse-proxy/docker-compose-nginx.yml new file mode 100644 index 000000000..957e82f8d --- /dev/null +++ b/examples/autoconf-reverse-proxy/docker-compose-nginx.yml @@ -0,0 +1,45 @@ +version: '3' + +services: + + mywww: + image: bunkerity/bunkerized-nginx + restart: always + ports: + - 80:8080 + - 443:8443 + # bunkerized-nginx runs as an unprivileged user with UID/GID 101 + # don't forget to edit the permissions of the files and folders accordingly + volumes: + - ./letsencrypt:/etc/letsencrypt + - autoconf:/etc/nginx + environment: + - SERVER_NAME= # must be left blank if you don't want to setup "static" conf + - MULTISITE=yes + - AUTO_LETS_ENCRYPT=yes + - REDIRECT_HTTP_TO_HTTPS=yes + - DISABLE_DEFAULT_SERVER=yes + - USE_CLIENT_CACHE=yes + - USE_PROXY_CACHE=yes + - USE_GZIP=yes + - USE_REVERSE_PROXY=yes + labels: + - "bunkerized-nginx.AUTOCONF" + networks: + - myappnet + + myautoconf: + image: bunkerity/bunkerized-nginx-autoconf + restart: always + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - autoconf:/etc/nginx + depends_on: + - mywww + +volumes: + autoconf: + +networks: + myappnet: + name: myappnet diff --git a/examples/basic-website-with-php/README.md b/examples/basic-website-with-php/README.md index 9014aeb5a..20c433a3a 100644 --- a/examples/basic-website-with-php/README.md +++ b/examples/basic-website-with-php/README.md @@ -2,28 +2,16 @@ This is a basic example for a typical PHP website/app. +## Architecture + + + ## Docker -```shell -$ mkdir letsencrypt -$ chown root:101 letsencrypt -$ chmod 770 letsencrypt -$ chmod 755 web-files -$ chmod -R 744 web-files/* -$ docker-compose up -``` +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/basic-website-with-php/docker-compose.yml). ## Linux -You will need to configure your php-fpm service to listen on localhost with the following directive : -```conf -listen = 127.0.0.1:9000 -``` +Please note that you need to install and configure a php-fpm instance on your server. -```shell -$ cp variables.env /opt/bunkerized-nginx/variables.env -$ cp web-files/* /opt/bunkerized-nginx/www -$ chown -R www-data:www-data /opt/bunkerized-nginx/www/* -$ chmod -R 774 /opt/bunkerized-nginx/www/* -$ bunkerized-nginx -``` +See [variables.env](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/basic-website-with-php/variables.env). diff --git a/examples/basic-website-with-php/architecture.png b/examples/basic-website-with-php/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..899064a8b3328d701fffd33a2bf9fcf74f115f9f GIT binary patch literal 8565 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 diff --git a/examples/behind-traefik/web2/index.php b/examples/behind-traefik/web2/index.php deleted file mode 100644 index bc4932de5..000000000 --- a/examples/behind-traefik/web2/index.php +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/examples/traefik-alternative/README.md b/examples/traefik-alternative/README.md new file mode 100644 index 000000000..cf21c6068 --- /dev/null +++ b/examples/traefik-alternative/README.md @@ -0,0 +1,13 @@ +# Traefik alternative + +Traefik (pronounced traffic) is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Traefik integrates with your existing infrastructure components (Docker, Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS, ...) and configures itself automatically and dynamically. See [documentation](https://doc.traefik.io/traefik/) and [GitHub repo](https://github.com/traefik/traefik) for more information. + +You can easily switch from Traefik to bunkerized-nginx if you are more concerned about security. + +## Architecture + + + +## Autoconf + +See [docker-compose-bunkerized.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/traefik-alternative/docker-compose-bunkerized.yml) which is the equivalent of [docker-compose-traefik.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/traefik-alternative/docker-compose-traefik.yml). diff --git a/examples/traefik-alternative/architecture.png b/examples/traefik-alternative/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..9a3aadd09d6f10a386a34dd30fc6ef012206f273 GIT binary patch literal 818 zcmeAS@N?(olHy`uVBq!ia0y~yU|a=cD{wFY$uk>QuLe?##X;^)4C~IxyaaMs(j9#r z85lP9bN@+X1@buyJR*x382Ao@Fyrz36)6l1OvgQ4978JN-rln97Iu_4P-wr@SF3uz zgIBh-VpB}At|P~dlV7XHpaWp?}>@)vvx}RXTR)3URt{N zMElJT=e=cE;Q55#Vetw12Dgd!482PA3{tND7)-kUFlLDSWWJ#BiG4xf6aE9K)qh_e zZ`a@dFX#Wy$BQTK-<6wwdG^In`)kGZax0Fn?!P~O|Ic5K?*6&LF=_v^FBsb{8&OeEZL}pSRauTbx<`n*YnO3-7re+r27zHragg z>ZdsyuT8(NH!bm8QQ339sqYre$Up0|Iix6bUq$BJ-FbK7AKCSvo%7~r_}%+Y=C=mk ztoZpadj9^&N)-zAchgqqAKtM>@cDUBl`D?Z&!u^9%J>!0<(;|7#9Q?2Ie+HxeWx83 zJ$wJ?m8P~zx4ZwkWnZ&@T@sx?|4*p>r#~}4e*5e{S^ww$0{OVQ*J`yNlW(xSs-66_ zEc)Apvh+=xmbXPsRp&Rhwbr!{-s64VZr-jXA0(#5y0?d}PfqV!UK`QQ{q}Qv(xSXy zPrsk|!1*bB`vzU3OLH$ya5b+9I8^7`y3)o{ZwiO;U)lHjy(c{P=X-qg>*VNKmxtt?9q?hs>Sqst>72pS)z4*}Q$iB}{FRjA literal 0 HcmV?d00001 diff --git a/examples/autoconf-reverse-proxy/docker-compose.yml b/examples/traefik-alternative/docker-compose-bunkerized.yml similarity index 52% rename from examples/autoconf-reverse-proxy/docker-compose.yml rename to examples/traefik-alternative/docker-compose-bunkerized.yml index eac3e28af..e8c61f849 100644 --- a/examples/autoconf-reverse-proxy/docker-compose.yml +++ b/examples/traefik-alternative/docker-compose-bunkerized.yml @@ -22,7 +22,6 @@ services: - USE_CLIENT_CACHE=yes - USE_PROXY_CACHE=yes - USE_GZIP=yes - - USE_REVERSE_PROXY=yes labels: - "bunkerized-nginx.AUTOCONF" @@ -34,39 +33,15 @@ services: - autoconf:/etc/nginx depends_on: - mywww - - myapp1 - - myapp2 - - myapp3 + - whoami - myapp1: - build: js-app - restart: always - environment: - - NODE_ENV=production + whoami: + image: "traefik/whoami" labels: - - "bunkerized-nginx.SERVER_NAME=app1.example.com" # replace with your domain + - "bunkerized-nginx.SERVER_NAME=www.example.com" + - "bunkerized-nginx.USE_REVERSE_PROXY=yes" - "bunkerized-nginx.REVERSE_PROXY_URL=/" - - "bunkerized-nginx.REVERSE_PROXY_HOST=http://myapp1:3000" - - myapp2: - build: js-app - restart: always - environment: - - NODE_ENV=production - labels: - - "bunkerized-nginx.SERVER_NAME=app2.example.com" # replace with your domain - - "bunkerized-nginx.REVERSE_PROXY_URL=/" - - "bunkerized-nginx.REVERSE_PROXY_HOST=http://myapp2:3000" - - myapp3: - build: js-app - restart: always - environment: - - NODE_ENV=production - labels: - - "bunkerized-nginx.SERVER_NAME=app3.example.com" # replace with your domain - - "bunkerized-nginx.REVERSE_PROXY_URL=/" - - "bunkerized-nginx.REVERSE_PROXY_HOST=http://myapp3:3000" + - "bunkerized-nginx.REVERSE_PROXY_HOST=http://whoami" volumes: autoconf: diff --git a/examples/traefik-alternative/docker-compose-traefik.yml b/examples/traefik-alternative/docker-compose-traefik.yml new file mode 100644 index 000000000..7641ae2e8 --- /dev/null +++ b/examples/traefik-alternative/docker-compose-traefik.yml @@ -0,0 +1,35 @@ +version: "3.3" + +services: + + traefik: + image: "traefik:v2.4" + container_name: "traefik" + command: + #- "--log.level=DEBUG" + - "--api.insecure=true" + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--entrypoints.web.address=:80" + - "--entrypoints.websecure.address=:443" + - "--certificatesresolvers.myresolver.acme.httpchallenge=true" + - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web" + #- "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory" + - "--certificatesresolvers.myresolver.acme.email=postmaster@example.com" + - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" + ports: + - "80:80" + - "443:443" + - "8080:8080" + volumes: + - "./letsencrypt:/letsencrypt" + - "/var/run/docker.sock:/var/run/docker.sock:ro" + + whoami: + image: "traefik/whoami" + container_name: "simple-service" + labels: + - "traefik.enable=true" + - "traefik.http.routers.whoami.rule=Host(`www.example.com`)" + - "traefik.http.routers.whoami.entrypoints=websecure" + - "traefik.http.routers.whoami.tls.certresolver=myresolver"