From d8286ced7cedc2146d8126268f3de560b69138db Mon Sep 17 00:00:00 2001 From: bunkerity Date: Wed, 4 Aug 2021 15:02:55 +0200 Subject: [PATCH] examples improvement - certbot cloudflare and wildcard, clamav, crowdsec, ghost and gogs --- .gitmodules | 4 ++++ examples/authelia/.README.md.swp | Bin 1024 -> 0 bytes examples/certbot-cloudflare/README.md | 21 +++++++++++++++++++ examples/certbot-cloudflare/architecture.png | Bin 0 -> 16316 bytes examples/certbot-cloudflare/certbot-renew.sh | 2 +- examples/certbot-wildcard/README.md | 21 +++++++++++++++++++ examples/certbot-wildcard/architecture.png | Bin 0 -> 13024 bytes examples/clamav/README.md | 19 +++++++++++++++++ examples/clamav/architecture.png | Bin 0 -> 22676 bytes examples/crowdsec/README.md | 21 +++++++++++++++++++ examples/crowdsec/architecture.png | Bin 0 -> 31060 bytes examples/crowdsec/bouncer_key.sh | 4 ++-- examples/ghost/README.md | 11 ++++++++++ examples/ghost/architecture.png | Bin 0 -> 10147 bytes examples/gogs/README.md | 11 ++++++++++ examples/gogs/architecture.png | Bin 0 -> 17162 bytes 16 files changed, 111 insertions(+), 3 deletions(-) delete mode 100644 examples/authelia/.README.md.swp create mode 100644 examples/certbot-cloudflare/README.md create mode 100644 examples/certbot-cloudflare/architecture.png create mode 100644 examples/certbot-wildcard/README.md create mode 100644 examples/certbot-wildcard/architecture.png create mode 100644 examples/clamav/README.md create mode 100644 examples/clamav/architecture.png create mode 100644 examples/crowdsec/README.md create mode 100644 examples/crowdsec/architecture.png create mode 100644 examples/ghost/README.md create mode 100644 examples/ghost/architecture.png create mode 100644 examples/gogs/README.md create mode 100644 examples/gogs/architecture.png diff --git a/.gitmodules b/.gitmodules index ad595ac..246eab3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,7 @@ [submodule "bunkerized-nginx-crowdsec"] path = examples/crowdsec/bunkerized-nginx-crowdsec url = https://github.com/bunkerity/bunkerized-nginx-crowdsec + +[submodule "bunkerized-nginx-clamav"] + path = examples/clamav/bunkerized-nginx-clamav + url = https://github.com/bunkerity/bunkerized-nginx-clamav diff --git a/examples/authelia/.README.md.swp b/examples/authelia/.README.md.swp deleted file mode 100644 index bd48a1fdef6557b01c2a3422d135bc4734e51b44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmYc?$V<%2S1{HyVn6}@j0_B=#i>Oof;c!XuEE|R{sFq~L9Wg&em*!gA^3R6Qy&8UmvsK + +## Configuration + +First of all you will need to edit the **certbot-new.sh** and **cloudflare.ini** files (e.g : domains, CF token, ...). + +Then run the **certbot-new.sh** script to get the certificates and add cron job for **certbot-renew.sh** to setup automatic renewal. + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/certbot-cloudflare/docker-compose.yml). diff --git a/examples/certbot-cloudflare/architecture.png b/examples/certbot-cloudflare/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..9eeb14fbd00f5530ea81c3f3d97521d7981d0eb5 GIT binary patch literal 16316 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

oT_%Y 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 S%3)w&VDNPHb6Mw<&;$Tw{r!gk literal 0 HcmV?d00001 diff --git a/examples/certbot-cloudflare/certbot-renew.sh b/examples/certbot-cloudflare/certbot-renew.sh index 8b3c814..ea1689f 100755 --- a/examples/certbot-cloudflare/certbot-renew.sh +++ b/examples/certbot-cloudflare/certbot-renew.sh @@ -14,7 +14,7 @@ docker run --rm \ certbot/dns-cloudflare \ renew if [ $? -ne 0 ] ; then - echo "error while getting certificate for $DOMAINS" + echo "error while renewing certificate for $DOMAINS" exit 1 fi diff --git a/examples/certbot-wildcard/README.md b/examples/certbot-wildcard/README.md new file mode 100644 index 0000000..c1cc1aa --- /dev/null +++ b/examples/certbot-wildcard/README.md @@ -0,0 +1,21 @@ +# Certbot wildcard + +Simple example on how to get wildcard Let's Encrypt certificates through DNS challenge and use them with bunkerized-nginx. + +## Preamble + +We will assume that you already have some basic knowledges about Let's Encrypt DNS challenge. If that's not the case, you should read the [documentation](https://certbot.eff.org/docs/using.html#manual). + +## Architecture + + + +## Configuration + +First of all you will need to edit the **certbot-wildcard.sh** file with your domain(s). + +Then you can run the script to get the certificates. Don't forget that you will need to edit your DNS zone to prove that you own the domain(s). + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/certbot-wildcard/docker-compose.yml). diff --git a/examples/certbot-wildcard/architecture.png b/examples/certbot-wildcard/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..1e679a4c5b8e13d53fecd0e6409c70d72ba29f40 GIT binary patch literal 13024 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 literal 0 HcmV?d00001 diff --git a/examples/clamav/README.md b/examples/clamav/README.md new file mode 100644 index 0000000..638b99c --- /dev/null +++ b/examples/clamav/README.md @@ -0,0 +1,19 @@ +# ClamAV plugin + +Automatically scan files with ClamAV when they are uploaded and deny the upload if the file is detected. See the [bunkerized-nginx-clamav](https://github.com/bunkerity/bunkerized-nginx-clamav) repository for more information. + +## Preamble + +This example uses a bunkerized-nginx plugin, you can have a look at the [documentation](https://bunkerized-nginx.readthedocs.io/en/latest/plugins.html) to get more information about plugins. + +## Architecture + + + +## Configuration + +You will need to clone the bunkerized-nginx-clamav plugin and edit the **plugin.json** file. + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/clamav/docker-compose.yml). diff --git a/examples/clamav/architecture.png b/examples/clamav/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..f8450c481e8fa99afc54c26792680e5ebff21a6d GIT binary patch literal 22676 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 + +## Configuration + +First of all you will need to get a bouncer key, you can use the **bouncer_key.sh** to generate one. + +Then you can clone the bunkerized-nginx-crowdsec plugin and edit the **plugin.json** file. + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/crowdsec/docker-compose.yml). diff --git a/examples/crowdsec/architecture.png b/examples/crowdsec/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..5f0f69d305c5e9902a2298700b948bfc02081fc4 GIT binary patch literal 31060 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 HQ$iB}6G^vI literal 0 HcmV?d00001 diff --git a/examples/crowdsec/bouncer_key.sh b/examples/crowdsec/bouncer_key.sh index ee42e7e..bcb913e 100755 --- a/examples/crowdsec/bouncer_key.sh +++ b/examples/crowdsec/bouncer_key.sh @@ -10,8 +10,8 @@ sleep 10 # get the bouncer key docker-compose exec mycrowdsec cscli bouncers add MyBouncer -# enter the key into the CROWDSEC_KEY environment variable -read -p "edit CROWDSEC_KEY env var in docker-compose.yml file and press enter" edited +# enter the key into the CROWDSEC_KEY setting +read -p "edit CROWDSEC_KEY env var in plugin.json file and press enter" edited # start all services docker-compose up -d diff --git a/examples/ghost/README.md b/examples/ghost/README.md new file mode 100644 index 0000000..4a42b35 --- /dev/null +++ b/examples/ghost/README.md @@ -0,0 +1,11 @@ +# Ghost + +Ghost is a free and open source blogging platform written in JavaScript and distributed under the MIT License, designed to simplify the process of online publishing for individual bloggers as well as online publications. More info at official [website](https://ghost.org) and [repository](https://github.com/TryGhost/Ghost). + +## Architecture + + + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/ghost/docker-compose.yml). diff --git a/examples/ghost/architecture.png b/examples/ghost/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..b0846a495d1066f06f2e0b95bf2c1da8d23406fb GIT binary patch literal 10147 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 literal 0 HcmV?d00001 diff --git a/examples/gogs/README.md b/examples/gogs/README.md new file mode 100644 index 0000000..2fa3425 --- /dev/null +++ b/examples/gogs/README.md @@ -0,0 +1,11 @@ +# Gogs + +Gogs is an easy to install, cross-platform and lightweight self-hosted Git service. More info on the [website](https://gogs.io/). + +## Architecture + + + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/gogs/docker-compose.yml). diff --git a/examples/gogs/architecture.png b/examples/gogs/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..0dad0ea5720256c325e5f5b1171f36b792bd92a9 GIT binary patch literal 17162 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 Iol`;+0OoQ3YybcN literal 0 HcmV?d00001