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 bd48a1f..0000000
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 0000000..3ab3ea3
--- /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 0000000..9eeb14f
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 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 0000000..1e679a4
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 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 0000000..f8450c4
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 0000000..8afd603
--- /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 0000000..5f0f69d
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 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 0000000..b0846a4
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 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 0000000..0dad0ea
Binary files /dev/null and b/examples/gogs/architecture.png differ