diff --git a/README.md b/README.md
index b40ca09..642dd0d 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,11 @@ Hence - this repo.
The aims is to provide a ready-to-run recipes that you can just copy, paste and run.
So, without further ado, here's the current list:
+# General Information
+- How to setup docker?
+- Troubleshooting
+
+
# Ad Blockers & local DNS
- [AdGuard Home](apps/ad-blockers/adguard.md)
- [PiHole](apps/ad-blockers/pihole.md)
@@ -43,7 +48,7 @@ So, without further ado, here's the current list:
- [Homer](apps/dashboard/homer.md)
- [SUI](apps/dashboard/sui.md)
- [Organizr](https://github.com/causefx/Organizr) [external]
-- [Heimdall](https://github.com/linuxserver/Heimdall)
+- [Heimdall](https://github.com/linuxserver/Heimdall) [external]
# Docker Managers
- [Diun](apps/docker/diun.md)
@@ -63,7 +68,7 @@ So, without further ado, here's the current list:
- Tools
# Home Automation
-- HomeAssistant
+- [HomeAssistant](apps/home-automation/home-assistant.md)
# Media Managers
- Calibre (e-books)
@@ -79,14 +84,46 @@ So, without further ado, here's the current list:
- Youtube downloader
# Monitors
-- Cachet
-- Dockprom
-- Statping
+## Self-hosted
+- [Cachet](apps/monitors/cachet.md)
+- [Dockprom](apps/monitors/dockprom.md)
+- [PhpServerMonitor](apps/monitors/php-server-monitor.md)
+- [Statping](apps/monitors/statping.md)
+
+## Other, not-fully tested
+- [Staytus](https://github.com/adamcooke/staytus) [external] - service status is updated manually!
+- [cstate](https://cstate.mnts.lt/) [external] - weird...
+- [Glances](https://glances.readthedocs.io/en/stable/install.html) [external] - resource hog
+- [Netdata](https://hub.docker.com/r/netdata/netdata) [external] - lots of stuff, nothing relevant
+- [LibreNMS](https://github.com/librenms/docker) [external] - ugly
+
+## Hosted
+- [statuspage.io](https://www.atlassian.com/software/statuspage) [external] - same - manual process!
+- [updown](https://updown.io) [external] - doesn't seem to have a page with multiple services' statuses...
+- [healthchecks](https://healthchecks.io) [external] - cron-based monitoring, no public status page, just badges
+- [uptimerobot](https://uptimerobot.com) [external] - free is very basic, constantly nags for upgrade to paid...
+
+## Useful links
+- [awesome-sysadmin: monitoring](https://github.com/n1trux/awesome-sysadmin#monitoring)
+- [reddit thread](https://www.reddit.com/r/selfhosted/comments/epzt3f/im_looking_for_a_lean_monitoring_and_altert/)
+- [reddit thread](https://www.reddit.com/r/selfhosted/comments/gwe18p/looking_for_a_neat_status_page_like/)
+
+
# Notifications
-- Pushover
-- Synology-notifications
-- Synology-sms-relay
+- [Notifiers by service](apps/notifications/notifiers-by-service.md) - comparison table
+- [Pushover](apps/notifications/pushover.md)
+- [Synology-sms-relay](apps/notifications/synology-sms-relay.md)
+
+
+## Other
+- [apprise](https://github.com/caronc/apprise)
+- [Synapse](https://github.com/matrix-org/synapse#synapse-installation)
+- [Gotify](https://github.com/gotify/server) - notification server
+- [pushover](https://pushover.net/)
+- [unifi event monitor](https://github.com/tborychowski/unifi-event-monitor)
+
+
# Photos
- PhotoPrism
@@ -94,6 +131,7 @@ So, without further ado, here's the current list:
- Piwigo
- Pixelfed
+
# Project Management
- Jira
- Kanboard
@@ -102,6 +140,7 @@ So, without further ado, here's the current list:
- Vikunja
- Wekan
+
# Reverse proxy & SSO
- Authelia
- Traefik
diff --git a/apps/downloads/qbit.md b/apps/downloads/qbit.md
index e39fe0c..51df3bd 100644
--- a/apps/downloads/qbit.md
+++ b/apps/downloads/qbit.md
@@ -50,4 +50,4 @@ networks:
- find the docker container IP, e.g. in /data/qbittorrent/logs
- in the settings, in WebUI/Authentication - enter the net mask, e.g.: `192.168.80.0/24`
-![Screenshot](qbit.png)
+![Screenshot](qbit-settings.png)
diff --git a/apps/home-automation/home-assistant.md b/apps/home-automation/home-assistant.md
new file mode 100644
index 0000000..28a8669
--- /dev/null
+++ b/apps/home-automation/home-assistant.md
@@ -0,0 +1,141 @@
+# Home Assistant
+
+- [Homepage](https://www.home-assistant.io/)
+- [Github repo](https://github.com/home-assistant/core)
+- [DockerHub repo](https://hub.docker.com/r/homeassistant/home-assistant)
+- [Docs](https://www.home-assistant.io/docs/)
+
+## Links
+- [awesome-ha](/Users/i313281/Projects/_playground/self-hosted-cookbook/apps/home-automation/home-assistant.md)
+- [MDI icons](https://cdn.rawgit.com/james-fry/home-assistant-mdi/efd95d7a/home-assistant-mdi.html)
+- [Full MDI icons](https://cdn.materialdesignicons.com/5.2.45/)
+- [DubhAd/Home-AssistantConfig](https://github.com/DubhAd/Home-AssistantConfig)
+- [compatible devices](https://www.hadevices.com/)
+
+## Integrations
+- [hacs](https://github.com/hacs/integration)
+- [aarlo](https://github.com/twrecked/hass-aarlo)
+- [garbage collection](https://github.com/bruxy70/Garbage-Collection)
+- [unifi protect](https://github.com/briis/unifiprotect)
+- [homeassistant-attributes](https://github.com/pilotak/homeassistant-attributes)
+
+## Plugins
+- [simple-thermostat](https://github.com/nervetattoo/simple-thermostat)
+- [lovelace-hass-aarlo](https://github.com/twrecked/lovelace-hass-aarlo)
+- [mini-graph-card](https://github.com/kalkih/mini-graph-card)
+- [custom-header](https://github.com/maykar/custom-header)
+
+## Themes
+- [grey-night](https://github.com/home-assistant-community-themes/grey-night)
+- [slate](https://github.com/seangreen2/slate_theme)
+
+
+## docker-compose.yml
+```yml
+version: '3'
+services:
+ homeassistant:
+ container_name: home-assistant
+ image: homeassistant/home-assistant
+ restart: unless-stopped
+ environment:
+ - TZ=Europe/Dublin
+ ports:
+ - 8123:8123
+ volumes:
+ - ./config:/config
+```
+
+## configuration.yml
+```yml
+default_config:
+
+tts: # Text to speech
+ - platform: google_translate
+
+group: !include groups.yaml
+automation: !include automations.yaml
+script: !include scripts.yaml
+scene: !include scenes.yaml
+frontend:
+ themes: !include_dir_merge_named themes
+homeassistant:
+ customize: !include customize.yaml
+
+updater:
+ reporting: false
+
+wake_on_lan:
+
+aarlo:
+ username: "email@example.com"
+ password: "password"
+
+webostv:
+ host:
+ name: LGTV
+ turn_on_action:
+ service: wake_on_lan.send_magic_packet
+ data:
+ mac:
+ broadcast_address:
+ broadcast_port: 9
+ customize:
+ sources:
+ - Apple TV
+ - TV
+ - YouTube
+ - Plex
+
+notify:
+ - name: pushover_notifier
+ platform: pushover
+ api_key:
+ user_key:
+
+calendar:
+ - platform: caldav
+ username: ""
+ password: ""
+ url:
+
+camera:
+ - platform: aarlo
+
+media_player:
+ - platform: aarlo
+
+weather:
+ - platform: gismeteo
+ mode: daily
+ latitude: 0
+ longitude: 0
+
+sensor:
+ - platform: aarlo
+ monitored_conditions:
+ - recent_activity
+ - captured_today
+ - battery_level
+ - platform: attributes
+ friendly_name: "Batteries"
+ attribute: battery_level
+ unit_of_measurement: "%"
+ entities:
+ - sensor.some_sensor_light_level
+```
+
+## customize.yml
+```yml
+sensor.some_sensor_light_level_battery_level:
+ friendly_name: Living Room
+
+media_player.lgtv:
+ source_list:
+ - Apple TV
+ - Plex
+ - TV
+ - YouTube
+```
+
+## Tips & Tricks
diff --git a/apps/monitors/cachet.md b/apps/monitors/cachet.md
new file mode 100644
index 0000000..8da73b3
--- /dev/null
+++ b/apps/monitors/cachet.md
@@ -0,0 +1,49 @@
+# Cachet
+
+- focuses on posting information rather than pinging services
+- looks like setting status is manual
+
+
+
+- [Github repo](https://github.com/CachetHQ/Docker)
+
+
+## docker-compose.yml
+```yml
+version: '3.3'
+services:
+ cachet:
+ image: cachethq/docker:latest
+ container_name: cachet
+ restart: unless-stopped
+ links:
+ - postgres
+ ports:
+ - 3123:8000
+ environment:
+ - DB_DRIVER=pgsql
+ - DB_HOST=postgres
+ - DB_DATABASE=postgres
+ - DB_USERNAME=postgres
+ - DB_PASSWORD=postgres
+ - APP_KEY=base64:tixFLbMoKffHKfUO1uEK9cGdpJxHYP7uCAp0lwwzEtM=
+
+ postgres:
+ image: postgres:9.5
+ container_name: cachet-db
+ restart: unless-stopped
+ environment:
+ - POSTGRES_USER=postgres
+ - POSTGRES_PASSWORD=postgres
+ volumes:
+ - ./data:/var/lib/postgresql/data
+```
+
+## Tips & Tricks
+
+### Generate APP_KEY
+Once the container is running, execute the following command:
+```sh
+docker exec -i ID_OF_THE_CONTAINER php artisan key:generate
+```
+The full key should include `base64`, e.g.: `base64:YOUR_UNIQUE_KEY`.
diff --git a/apps/monitors/dockprom.md b/apps/monitors/dockprom.md
new file mode 100644
index 0000000..cd07046
--- /dev/null
+++ b/apps/monitors/dockprom.md
@@ -0,0 +1,12 @@
+# Dockprom
+A monitoring solution for Docker hosts and containers with Prometheus, Grafana, cAdvisor, NodeExporter and alerting with AlertManager.
+
+- [Github repo](https://github.com/stefanprodan/dockprom)
+
+
+## installation
+```sh
+git clone https://github.com/stefanprodan/dockprom
+cd dockprom
+ADMIN_USER=admin ADMIN_PASSWORD=admin docker-compose up -d
+```
diff --git a/apps/monitors/php-server-monitor.md b/apps/monitors/php-server-monitor.md
new file mode 100644
index 0000000..9d4a6b5
--- /dev/null
+++ b/apps/monitors/php-server-monitor.md
@@ -0,0 +1,50 @@
+# PhpServerMonitor
+
+- Very basic and minimalist
+- Various monitors (ping, tcp & http service requests)
+- Has Pushover notifications
+
+
+
+
+- [Github repo](https://github.com/phpservermon/phpservermon)
+- [DockerHub repo](https://hub.docker.com/r/alwynpan/phpservermonitor)
+
+
+## docker-compose.yml
+```yml
+version: '3.8'
+services:
+ psm:
+ image: alwynpan/phpservermonitor
+ container_name: php-server-monitor
+ restart: unless-stopped
+ ports:
+ - 3123:80
+ depends_on:
+ - db
+ environment:
+ - DATABASE_HOST=db
+ - DATABASE_PORT=3306
+ - DATABASE_NAME=psm
+ - DATABASE_USER=psm
+ - DATABASE_PASSWORD=psm
+ - BASE_URL=http://192.168.1.10:3123
+ - CHECK_INTERVAL=1
+ - TIMEOUT=10
+ - DEBUG=true
+
+ db:
+ image: mysql:5.7
+ container_name: php-server-monitor-db
+ restart: unless-stopped
+ ports:
+ - 3306:3306
+ environment:
+ - MYSQL_ROOT_PASSWORD=top_secret
+ - MYSQL_DATABASE=psm
+ - MYSQL_USER=psm
+ - MYSQL_PASSWORD=psm
+ volumes:
+ - ./data/:/var/lib/mysql
+```
diff --git a/apps/monitors/statping.md b/apps/monitors/statping.md
new file mode 100644
index 0000000..1975d82
--- /dev/null
+++ b/apps/monitors/statping.md
@@ -0,0 +1,34 @@
+# Statping
+
+- Looks great
+- Has a mobile app (albeit buggy)
+- Lots of stuff (charts, data, etc)
+- Lots of integrations & notification types
+- Every other release doesn't work
+- Slow UI
+
+
+
+- [Homepage](https://statping.com/)
+- [Github repo](https://github.com/statping/statping/)
+- [DockerHub repo](https://hub.docker.com/r/statping/statping)
+
+
+## docker-compose.yml
+```yml
+---
+statping:
+ container_name: statping
+ image: hunterlong/statping
+ restart: unless-stopped
+ ports:
+ - 3020:8080
+ volumes:
+ - ./data:/app
+# - /var/run/docker.sock:/var/run/docker.sock
+ environment:
+ DB_CONN: sqlite
+```
+
+- and go to http://192.168.1.10:3020/setup
+- or login as `admin:admin`
diff --git a/apps/notifications/notifiers-by-service.md b/apps/notifications/notifiers-by-service.md
new file mode 100644
index 0000000..4a2ea43
--- /dev/null
+++ b/apps/notifications/notifiers-by-service.md
@@ -0,0 +1,11 @@
+# Notifiers by service
+
+| Service | email | slack | webhook | script | telegram | discord | pushover | pushbullet | gotify |
+|------------------------|:-----:|:-----:|:-------:|:------:|:--------:|:-------:|:--------:|:----------:|:------:|
+| Statping | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔️ | ⛔️ |
+| Sonarr | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔️ | ✅ | ✅ | ⛔️ |
+| Radarr | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔️ | ✅ | ✅ | ✅ |
+| Tautulli | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⛔️ |
+| synology-notifications | ✅ | ✅ | ⛔️ | ⛔️ | ⛔️ | ⛔️ | ⛔️ | ⛔️ | ⛔️ |
+| download station | ✅ | ✅ | ⛔️ | ⛔️ | ⛔️ | ⛔️ | ⛔️ | ⛔️ | ⛔️ |
+| qbittorrent | ✅ | ⛔️ | ✅ | ✅ | ⛔️ | ⛔️ | ⛔️ | ⛔️ | ⛔️ |
diff --git a/apps/notifications/pushover.md b/apps/notifications/pushover.md
new file mode 100644
index 0000000..0443200
--- /dev/null
+++ b/apps/notifications/pushover.md
@@ -0,0 +1,35 @@
+# Pushover
+
+- As of today, the best notifier out there
+- Has mobile app and web desktop client
+- Provides email-to-notification service
+- Free tier sufficient for a homelab
+
+
+
+- [Homepage](https://pushover.net)
+- [Web Client](https://client.pushover.net)
+- [Docs](https://pushover.net/api#messages)
+
+
+## Example script
+```sh
+#!/bin/bash
+
+# info #666d7b
+# success #408062
+# warning #af8a1a
+# danger #8b4848
+
+MSG=$(printf "%s" "$@")
+
+curl -s -X POST \
+ --data-urlencode "token=" \
+ --data-urlencode "user=" \
+ --data-urlencode "sound=pushover" \
+ --data-urlencode "priority=0" \
+ --data-urlencode "html=1" \
+ --data-urlencode "title=Home Server" \
+ --data-urlencode "message=$MSG" \
+ https://api.pushover.net/1/messages.json
+```
diff --git a/apps/notifications/synology-sms-relay.md b/apps/notifications/synology-sms-relay.md
new file mode 100644
index 0000000..4d78976
--- /dev/null
+++ b/apps/notifications/synology-sms-relay.md
@@ -0,0 +1,42 @@
+# Synology sms relay
+
+- [Github repo](https://github.com/tborychowski/synology-sms-relay)
+- [DockerHub repo](https://hub.docker.com/repository/docker/tborychowski/synology-sms-relay)
+- [Docs](https://github.com/tborychowski/synology-sms-relay#docker-compose)
+
+
+## docker-compose.yml
+```yml
+---
+version: '3.7'
+services:
+ synology-sms-relay:
+ container_name: synology-sms-relay
+ image: tborychowski/synology-sms-relay
+ restart: unless-stopped
+ ports:
+ - "3000:3000"
+ volumes:
+ - ./script.sh:/app/script.sh
+```
+
+## Example pushover `script.sh`
+```sh
+#!/bin/bash
+
+# info #666d7b
+# success #408062
+# warning #af8a1a
+# danger #8b4848
+
+MSG=$(printf "%s" "$@")
+curl -s -X POST \
+ --data-urlencode "token=" \
+ --data-urlencode "user=" \
+ --data-urlencode "sound=pushover" \
+ --data-urlencode "priority=0" \
+ --data-urlencode "html=1" \
+ --data-urlencode "title=Home Server" \
+ --data-urlencode "message=$MSG" \
+ https://api.pushover.net/1/messages.json
+```