diff --git a/README.md b/README.md
index 8c836f0..e4eabf0 100644
--- a/README.md
+++ b/README.md
@@ -10,20 +10,33 @@ The aims is to provide a ready-to-run recipes that you can just copy, paste and
So, without further ado, here's the current list:
# Ad Blockers & local DNS
-- [AdGuard Home](apps/ad-blockers/adguard-home.md)
+- [AdGuard Home](apps/ad-blockers/adguard.md)
- [PiHole](apps/ad-blockers/pihole.md)
-- [Block Lists](apps/ad-blockers/block-lists.md)
+- [Block Lists](apps/ad-blockers/lists.md)
+
+
+# Blogging
+- [AnchorCMS](https://github.com/anchorcms/anchor-cms#installation)
+- [Ghost](https://ghost.org/docs/install/docker/)
+- [Hugo](https://gohugo.io/)
+- [Kirby](https://getkirby.com/)
+- [Metalsmith](https://metalsmith.io/)
+- [Pagekit](https://pagekit.com/docs/getting-started/installation)
+- [Pelican](https://docs.getpelican.com/en/stable/quickstart.html#installation)
+- [PostLeaf](https://www.postleaf.org/installing)
+- [Textpattern](https://docs.textpattern.com/installation/)
+- [WriteFreely](https://github.com/writeas/writefreely)
# Bookmarks
-- Shaarli
-- Shiori
-- Shaark
+- [Shaarli](apps/bookmarks/shaarli.md)
+- [Shiori](apps/bookmarks/shiori.md)
+- [Shaark](apps/bookmarks/shaark.md)
# Cloud
-- FileRun
-- NextCloud
-- Pydio
-- Seafile
+- [FileRun](apps/cloud/filerun.md)
+- [NextCloud](apps/cloud/nextcloud.md)
+- [Pydio](apps/cloud/pydio.md)
+- [Seafile](apps/cloud/seafile.md)
# Dashboard
- DashMachine
diff --git a/apps/ad-blockers/adguard-home.md b/apps/ad-blockers/adguard.md
similarity index 95%
rename from apps/ad-blockers/adguard-home.md
rename to apps/ad-blockers/adguard.md
index 87af6ff..fe6e6c2 100644
--- a/apps/ad-blockers/adguard-home.md
+++ b/apps/ad-blockers/adguard.md
@@ -4,8 +4,9 @@
- [Homepage](https://adguard.com/en/adguard-home/overview.html)
- [Overview blog post](https://adguard.com/en/blog/in-depth-review-adguard-home.html)
-- [Github](https://github.com/AdguardTeam/AdguardHome)
-- [DockerHub](https://hub.docker.com/r/adguard/adguardhome)
+- [Github repo](https://github.com/AdguardTeam/AdguardHome)
+- [DockerHub repo](https://hub.docker.com/r/adguard/adguardhome)
+
## `docker-compose.yml`
```yml
diff --git a/apps/ad-blockers/blacklists.txt b/apps/ad-blockers/lists-black.txt
similarity index 100%
rename from apps/ad-blockers/blacklists.txt
rename to apps/ad-blockers/lists-black.txt
diff --git a/apps/ad-blockers/whitelist.txt b/apps/ad-blockers/lists-white.txt
similarity index 100%
rename from apps/ad-blockers/whitelist.txt
rename to apps/ad-blockers/lists-white.txt
diff --git a/apps/ad-blockers/block-lists.md b/apps/ad-blockers/lists.md
similarity index 91%
rename from apps/ad-blockers/block-lists.md
rename to apps/ad-blockers/lists.md
index d6b266d..d9618d8 100644
--- a/apps/ad-blockers/block-lists.md
+++ b/apps/ad-blockers/lists.md
@@ -6,8 +6,8 @@
- [disconnect.me/simple_ad](https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt)
- [hosts-file.net/ad_servers](https://hosts-file.net/ad_servers.txt)
- [ookangzheng/dbl-oisd-nl](https://raw.githubusercontent.com/ookangzheng/dbl-oisd-nl/master/dbl.txt)
-- [more lists](blacklists.txt)
+- [more lists](lists-black.txt)
# Whitelists
- [raghavdua1995/DNSlock-PiHole-whitelist](https://raw.githubusercontent.com/raghavdua1995/DNSlock-PiHole-whitelist/master/whitelist.list)
-- [another one](whitelist.txt)
+- [another one](lists-white.txt)
diff --git a/apps/ad-blockers/pihole.md b/apps/ad-blockers/pihole.md
index 8316f3a..f4807d6 100644
--- a/apps/ad-blockers/pihole.md
+++ b/apps/ad-blockers/pihole.md
@@ -1,12 +1,12 @@
# PiHole
## Overview
-
- [Homepage](https://pi-hole.net/)
- [Pihole Docker github repo](https://github.com/pi-hole/docker-pi-hole)
- [Docs](https://docs.pi-hole.net/)
-- [Github](https://github.com/pi-hole)
-- [DockerHub](https://hub.docker.com/r/pihole/pihole)
+- [Github repo](https://github.com/pi-hole)
+- [DockerHub repo](https://hub.docker.com/r/pihole/pihole)
+
## `docker-compose.yml`
```yml
diff --git a/apps/bookmarks/shaark.jpg b/apps/bookmarks/shaark.jpg
new file mode 100644
index 0000000..9d2faa2
Binary files /dev/null and b/apps/bookmarks/shaark.jpg differ
diff --git a/apps/bookmarks/shaark.md b/apps/bookmarks/shaark.md
new file mode 100644
index 0000000..b958ecb
--- /dev/null
+++ b/apps/bookmarks/shaark.md
@@ -0,0 +1,10 @@
+# Shaark
+Good looking, but doesn't work ATM.
+Also - doesn't have a public image on Docker Hub (or similar), so can't use `docker-compose` the easy way.
+
+- [Github repo](https://github.com/MarceauKa/shaark)
+- [DockerHub repo]()
+- [Docs](https://github.com/MarceauKa/shaark#documentation)
+- [Demo](https://shaark.mka.ovh): `admin@example.com`:`secret`
+
+
diff --git a/apps/bookmarks/shaarli.md b/apps/bookmarks/shaarli.md
new file mode 100644
index 0000000..c24c73c
--- /dev/null
+++ b/apps/bookmarks/shaarli.md
@@ -0,0 +1,136 @@
+# Shaarli
+Not too bad. Just stores & tags links, nothing more.
+- [Github repo](https://github.com/shaarli/Shaarli)
+- [Docs](https://shaarli.readthedocs.io/en/master/)
+- [Demo](https://demo.shaarli.org/)
+
+
+
+
+## docker-compose.yml
+```yml
+---
+version: '3'
+services:
+ shaarli:
+ image: shaarli/shaarli:master
+ container_name: shaarli
+ restart: unless-stopped
+ environment:
+ - TZ=Europe/Dublin
+ ports:
+ - "3123:80"
+ volumes:
+ - ./cache:/var/www/shaarli/cache
+ - ./data:/var/www/shaarli/data
+```
+
+## Tips & Tricks
+
+### Nicer theme
+Edit `shaarli/data/user.css`:
+```css
+:root {
+ --main-color: #144837;
+ --background-color: #333;
+ --dark-main-color: #0c281d;
+}
+
+#actions,
+#search { display: none; position: relative; }
+#actions.open,
+#search.open { display: block; }
+
+#shaarli-menu-tags,
+#shaarli-menu-picwall,
+#shaarli-menu-daily,
+#shaarli-menu-desktop-rss,
+#linklist-paging-bottom-block,
+#footer,
+.linksperpage form,
+.linkcount,
+.fa-external-link,
+.pure-u-lg-2-24,
+#search-linklist .searchform { display: none !important; }
+
+#link-count-content,
+#linklist-loop-content { width: 90%; margin: 10px auto; }
+
+#linklist { margin-bottom: 40px; }
+
+.linklist-item-title,
+.linklist-item { background-color: #222; color: #f0f0f0; }
+
+.linklist-item { margin-bottom: 20px; }
+
+.linklist-item-title .linklist-link { color: #ccc !important; font-weight: 300; }
+
+.linklist-item-infos { background: #0003; color: #333; }
+
+.linklist-filters,
+.linksperpage,
+.linklist-item-description,
+.linklist-item-infos { color: #aaa !important; }
+
+.linklist-item.private::before { display: none; }
+.linklist-item { box-shadow: none; }
+
+.linksperpage a,
+.linklist-filters .filter-off { background: none; color: #eee; }
+
+.linklist-item-infos { padding: 10px 20px; }
+.linklist-item-infos a { color: #317b63; }
+.linklist-item-infos a:hover { color: #eee; }
+
+.label { font-weight: 300; }
+.markdown { font-size: 14px; }
+
+.linklist-item-title { padding: 5px 10px; }
+.linklist-item-description { padding: 5px 20px; }
+.linklist-item-thumbnail { margin: -5px -10px 0 0; }
+
+
+.linklist-item-infos-dateblock { display: flex; align-items: center; }
+.linklist-item-infos-controls-group { display: inline-flex !important; align-items: center; border-right: 0; }
+.linklist-item-infos-controls-item {
+ height: 24px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: flex-start;
+ width: 32px;
+}
+.linklist-item-infos-url { font-size: 14.4px; }
+.linklist-item-editbuttons { position: absolute; right: 130px; }
+
+.page-form,
+.page-form .window-title,
+.page-form { background: #222; color: #eee; box-shadow: none; }
+
+.page-form-complete div,
+.page-form-complete p { color: #eee; }
+
+.page-form input[type="password"],
+.page-form input[type="text"],
+.page-form textarea { background: #111; color: #eee; border-color: #111; }
+
+.page-form a.button,
+.page-form input[type="submit"] { box-shadow: none; border-radius: 5px; }
+
+.pure-button {
+ background-color: #111;
+ color: #ccc;
+ border-radius: 5px;
+ padding: 12px;
+ font-weight: 300;
+}
+
+.linklist-item-tags { margin-bottom: 5px; }
+
+.edit-link,
+.delete-link,
+.pin-link { font-size: 14px !important; }
+
+.linklist-item-infos .pin-link,
+.edit-link,
+.delete-link { color: #ccc !important; }
+```
diff --git a/apps/bookmarks/shaarli.png b/apps/bookmarks/shaarli.png
new file mode 100644
index 0000000..bcfa0f6
Binary files /dev/null and b/apps/bookmarks/shaarli.png differ
diff --git a/apps/bookmarks/shiori.md b/apps/bookmarks/shiori.md
new file mode 100644
index 0000000..e133e34
--- /dev/null
+++ b/apps/bookmarks/shiori.md
@@ -0,0 +1,23 @@
+# Shiori
+- [Github repo](https://github.com/go-shiori/shiori)
+- [Docs](https://github.com/go-shiori/shiori/wiki)
+
+
+
+
+## docker-compose.yml
+```yml
+---
+version: '3'
+services:
+ shiori:
+ image: radhifadlillah/shiori
+ container_name: shiori
+ restart: unless-stopped
+ environment:
+ - TZ=Europe/Dublin
+ ports:
+ - "3010:8080"
+ volumes:
+ - ./data:/srv/shiori
+```
diff --git a/apps/bookmarks/shiori.png b/apps/bookmarks/shiori.png
new file mode 100644
index 0000000..28c58b0
Binary files /dev/null and b/apps/bookmarks/shiori.png differ
diff --git a/apps/cloud/filerun.jpg b/apps/cloud/filerun.jpg
new file mode 100644
index 0000000..f21978d
Binary files /dev/null and b/apps/cloud/filerun.jpg differ
diff --git a/apps/cloud/filerun.md b/apps/cloud/filerun.md
new file mode 100644
index 0000000..30b3ab9
--- /dev/null
+++ b/apps/cloud/filerun.md
@@ -0,0 +1,53 @@
+# FileRun
+Mobile apps are just webdav clients.
+
+
+
+- [Homepage](https://filerun.com/)
+- [DockerHub repo](https://hub.docker.com/r/afian/filerun/)
+- [Docs](https://docs.filerun.com/)
+- [Demo](https://demo.filerun.co/?username=admin&password=admin)
+
+
+
+
+## docker-compose.yml
+```yml
+version: '2'
+services:
+ db:
+ image: mariadb:10.1
+ container_name: filerun-db
+ restart: unless-stopped
+ environment:
+ MYSQL_ROOT_PASSWORD: your_mysql_root_password
+ MYSQL_USER: db_user
+ MYSQL_PASSWORD: db_user_password_01
+ MYSQL_DATABASE: filerundb
+ volumes:
+ - ./data/db:/var/lib/mysql
+
+ web:
+ image: afian/filerun
+ container_name: filerun
+ restart: unless-stopped
+ environment:
+ FR_DB_HOST: db
+ FR_DB_PORT: 3306
+ FR_DB_NAME: filerundb
+ FR_DB_USER: db_user
+ FR_DB_PASS: db_user_password_01
+ APACHE_RUN_USER: www-data
+ APACHE_RUN_USER_ID: 33
+ APACHE_RUN_GROUP: www-data
+ APACHE_RUN_GROUP_ID: 33
+ depends_on:
+ - db
+ links:
+ - db:db
+ ports:
+ - "3090:80"
+ volumes:
+ - ./data/html:/var/www/html
+ - ./data/user-files:/user-files
+```
diff --git a/apps/cloud/nextcloud.md b/apps/cloud/nextcloud.md
new file mode 100644
index 0000000..e337094
--- /dev/null
+++ b/apps/cloud/nextcloud.md
@@ -0,0 +1,82 @@
+# NextCloud
+- Mobile apps are just for files, not other apps (e.g. tasks) installed in NextCloud.
+
+
+
+- [Homepage](https://nextcloud.com/)
+- [Github repo](https://github.com/nextcloud)
+- [DockerHub repo](https://hub.docker.com/_/nextcloud/)
+- [Breeze dark theme](https://github.com/mwalbeck/nextcloud-breeze-dark) - some stuff doesn't work
+- [Docs](https://docs.nextcloud.com/server/20/admin_manual/)
+- [Demo](https://try.nextcloud.com/)
+
+
+## docker-compose.yml
+```yml
+version: '2'
+services:
+ app:
+ image: nextcloud:latest
+ container_name: nextcloud
+ restart: unless-stopped
+ links:
+ - db
+ - redis
+ ports:
+ - 3100:80
+ environment:
+ - MYSQL_PASSWORD=nextcloud
+ - MYSQL_DATABASE=nextcloud
+ - MYSQL_USER=nextcloud
+ - MYSQL_HOST=db
+ - TRUSTED_PROXIES= # e.g. HOST IP
+ - OVERWRITEPROTOCOL=https
+ - OVERWRITEHOST=nextcloud.domain.com
+ - REDIS_HOST=redis
+ - REDIS_HOST_PASSWORD=nextcloud # must be set, because of a bug
+ volumes:
+ - ./nextcloud:/var/www/html
+ - ./data:/var/www/html/data
+
+ cron:
+ image: nextcloud:latest
+ restart: unless-stopped
+ volumes:
+ - ./nextcloud:/var/www/html
+ entrypoint: /cron.sh
+ depends_on:
+ - db
+ - redis
+
+ db:
+ image: mariadb
+ container_name: nextcloud-db
+ command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
+ restart: unless-stopped
+ volumes:
+ - ./db:/var/lib/mysql
+ environment:
+ - MYSQL_ROOT_PASSWORD=nextcloud
+ - MYSQL_PASSWORD=nextcloud
+ - MYSQL_DATABASE=nextcloud
+ - MYSQL_USER=nextcloud
+
+ redis:
+ image: redis:alpine
+ container_name: nextcloud-redis
+ restart: unless-stopped
+ command: redis-server --requirepass nextcloud
+ environment:
+ - TZ=Europe/Dublin
+ volumes:
+ - ./redis:/data
+ expose:
+ - 6379
+```
+
+## Tips & Tricks
+
+### Generate password/secret key
+```sh
+openssl rand -base64 32
+```
diff --git a/apps/cloud/pydio.md b/apps/cloud/pydio.md
new file mode 100644
index 0000000..ede7702
--- /dev/null
+++ b/apps/cloud/pydio.md
@@ -0,0 +1,48 @@
+# Pydio Cells
+- Overly complex and... weird.
+- Has mobile apps.
+
+
+
+- [Homepage](https://pydio.com/en/features/pydio-cells-overview)
+- [Github repo](https://github.com/pydio/cells)
+- [DockerHub repo](https://hub.docker.com/r/pydio/cells/)
+- [Docs](https://pydio.com/en/docs/administration-guides)
+
+
+## docker-compose.yml
+```yml
+---
+version: '3'
+services:
+ cells:
+ image: pydio/cells:latest
+ container_name: pydio
+ hostname: cells
+ restart: unless-stopped
+ ports:
+ - "3060:8080"
+ environment:
+ - CELLS_NO_TLS=0
+ - CELLS_BIND=0.0.0.0:8080
+ - CELLS_EXTERNAL=pydio.domain.com
+ - EXTERNAL_BIND=pydio.domain.com
+ volumes:
+ - "./datadir:/var/cells/data"
+ - "./workingdir:/var/cells"
+
+ mysql:
+ image: mysql:5.7
+ container_name: pydio-db
+ restart: unless-stopped
+ ports:
+ - "3306:3306"
+ environment:
+ MYSQL_ROOT_PASSWORD: secret
+ MYSQL_DATABASE: cells
+ MYSQL_USER: pydio
+ MYSQL_PASSWORD: secret
+ command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci]
+ volumes:
+ - "./mysqldir:/var/lib/mysql"
+```
diff --git a/apps/cloud/seafile.md b/apps/cloud/seafile.md
new file mode 100644
index 0000000..a38f14a
--- /dev/null
+++ b/apps/cloud/seafile.md
@@ -0,0 +1,61 @@
+# Seafile
+- Too simple, just raw files nothing more.
+- Has mobile apps.
+
+
+
+- [Homepage](https://www.seafile.com/en/home/)
+- [Github repo](https://github.com/haiwen/seafile)
+- [DockerHub repo](https://hub.docker.com/r/seafileltd/seafile-mc)
+- [Docs](https://download.seafile.com/d/320e8adf90fa43ad8fee/files/?p=%2Findex.md)
+
+![Screenshot]()
+
+
+## docker-compose.yml
+```yml
+version: '2.0'
+services:
+ db:
+ image: mariadb:10.1
+ container_name: seafile-mysql
+ environment:
+ - MYSQL_ROOT_PASSWORD=db_dev # Requested, set the root's password of MySQL service.
+ - MYSQL_LOG_CONSOLE=true
+ volumes:
+ - ./db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store.
+ networks:
+ - seafile-net
+
+ memcached:
+ image: memcached:1.5.6
+ container_name: seafile-memcached
+ entrypoint: memcached -m 256
+ networks:
+ - seafile-net
+
+ seafile:
+ image: seafileltd/seafile-mc:latest
+ container_name: seafile
+ ports:
+ - "8080:80"
+# - "443:443" # If https is enabled, cancel the comment.
+ volumes:
+ - ./data:/shared # Requested, specifies the path to Seafile data persistent store.
+ environment:
+ - DB_HOST=db
+ - DB_ROOT_PASSWD=db_dev # Requested, the value shuold be root's password of MySQL service.
+ - TIME_ZONE=Europe/Dublin # Optional, default is UTC. Should be uncomment and set to your local time zone.
+ - SEAFILE_ADMIN_EMAIL=me@example.com # Specifies Seafile admin user, default is 'me@example.com'.
+ - SEAFILE_ADMIN_PASSWORD=asecret # Specifies Seafile admin password, default is 'asecret'.
+ - SEAFILE_SERVER_LETSENCRYPT=false # Whether to use https or not.
+ - SEAFILE_SERVER_HOSTNAME=docs.seafile.com # Specifies your host name if https is enabled.
+ depends_on:
+ - db
+ - memcached
+ networks:
+ - seafile-net
+
+networks:
+ seafile-net:
+```
diff --git a/template.md b/template.md
new file mode 100644
index 0000000..d6ac6e6
--- /dev/null
+++ b/template.md
@@ -0,0 +1,15 @@
+#
+- [Github repo]()
+- [DockerHub repo]()
+- [Docs]()
+
+![Screenshot]()
+
+
+## docker-compose.yml
+```yml
+
+```
+
+
+## Tips & Tricks