diff --git a/.gitmodules b/.gitmodules
index ad595ac40..246eab385 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 bd48a1fde..000000000
Binary files a/examples/authelia/.README.md.swp and /dev/null differ
diff --git a/examples/certbot-cloudflare/README.md b/examples/certbot-cloudflare/README.md
new file mode 100644
index 000000000..3ab3ea33a
--- /dev/null
+++ b/examples/certbot-cloudflare/README.md
@@ -0,0 +1,21 @@
+# Certbot with Cloudflare
+
+Cloudflare supports HTTPS traffic between their servers and the origin one. This examples shows how to automatically valid HTTPS certificates signed by Let's Encrypt using the Cloudflare API.
+
+## Preamble
+
+We will assume that you already have some basic knowledges about Cloudflare. If that's not the case, we have made a dedicated blog post [here](https://www.bunkerity.com/web-security-at-almost-no-cost-cloudflare-free-plan-with-bunkerized-nginx/).
+
+## Architecture
+
+
+
+## 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 000000000..9eeb14fbd
Binary files /dev/null and b/examples/certbot-cloudflare/architecture.png differ
diff --git a/examples/certbot-cloudflare/certbot-renew.sh b/examples/certbot-cloudflare/certbot-renew.sh
index 8b3c8145e..ea1689f3f 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 000000000..c1cc1aaee
--- /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 000000000..1e679a4c5
Binary files /dev/null and b/examples/certbot-wildcard/architecture.png differ
diff --git a/examples/clamav/README.md b/examples/clamav/README.md
new file mode 100644
index 000000000..638b99c30
--- /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 000000000..f8450c481
Binary files /dev/null and b/examples/clamav/architecture.png differ
diff --git a/examples/crowdsec/README.md b/examples/crowdsec/README.md
new file mode 100644
index 000000000..8afd603d1
--- /dev/null
+++ b/examples/crowdsec/README.md
@@ -0,0 +1,21 @@
+# Crowdsec plugin
+
+Crowdsec integration example with bunkerized-nginx. See the [bunkerized-nginx-crowdsec](https://github.com/bunkerity/bunkerized-nginx-crowdsec) 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
+
+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 000000000..5f0f69d30
Binary files /dev/null and b/examples/crowdsec/architecture.png differ
diff --git a/examples/crowdsec/bouncer_key.sh b/examples/crowdsec/bouncer_key.sh
index ee42e7e56..bcb913e26 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 000000000..4a42b35a8
--- /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 000000000..b0846a495
Binary files /dev/null and b/examples/ghost/architecture.png differ
diff --git a/examples/gogs/README.md b/examples/gogs/README.md
new file mode 100644
index 000000000..2fa34251a
--- /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 000000000..0dad0ea57
Binary files /dev/null and b/examples/gogs/architecture.png differ