From e0ee091a7bff287fa401a93fba5198fc18585b25 Mon Sep 17 00:00:00 2001 From: Michel Date: Sat, 9 Sep 2023 14:53:02 +0200 Subject: [PATCH] Initial commit --- cyberchef/.env.sample | 5 + cyberchef/compose.yml | 10 ++ domotica/.env.sample | 37 +++++ domotica/Telegraf/etc/telegraf/telegraf.conf | 30 ++++ domotica/compose.yml | 101 ++++++++++++ domotica/readme.md | 157 +++++++++++++++++++ dozzle/.env.sample | 7 + dozzle/compose.yml | 15 ++ drawio/.env.sample | 5 + drawio/compose.yml | 10 ++ drawio/readme.md | 64 ++++++++ filezilla/.env.sample | 10 ++ filezilla/compose.yml | 16 ++ firefox/.env.sample | 10 ++ firefox/compose.yml | 16 ++ grocy/.env.sample | 10 ++ grocy/compose.yml | 16 ++ hammond/.env.sample | 9 ++ hammond/compose.yml | 16 ++ hammond/readme.md | 46 ++++++ heimdall/.env.sample | 10 ++ heimdall/compose.yml | 16 ++ ittools/.env.sample | 5 + ittools/compose.yml | 10 ++ opengist/.env.sample | 9 ++ opengist/compose.yml | 15 ++ podgrab/.env.sample | 12 ++ podgrab/compose.yml | 19 +++ rapiddashboard/.env.sample | 5 + rapiddashboard/compose.yml | 12 ++ readme.md | 64 ++++++++ uptimekuma/.env.sample | 8 + uptimekuma/compose.yml | 13 ++ 33 files changed, 788 insertions(+) create mode 100644 cyberchef/.env.sample create mode 100644 cyberchef/compose.yml create mode 100644 domotica/.env.sample create mode 100644 domotica/Telegraf/etc/telegraf/telegraf.conf create mode 100644 domotica/compose.yml create mode 100644 domotica/readme.md create mode 100644 dozzle/.env.sample create mode 100644 dozzle/compose.yml create mode 100644 drawio/.env.sample create mode 100644 drawio/compose.yml create mode 100644 drawio/readme.md create mode 100644 filezilla/.env.sample create mode 100644 filezilla/compose.yml create mode 100644 firefox/.env.sample create mode 100644 firefox/compose.yml create mode 100644 grocy/.env.sample create mode 100644 grocy/compose.yml create mode 100644 hammond/.env.sample create mode 100644 hammond/compose.yml create mode 100644 hammond/readme.md create mode 100644 heimdall/.env.sample create mode 100644 heimdall/compose.yml create mode 100644 ittools/.env.sample create mode 100644 ittools/compose.yml create mode 100644 opengist/.env.sample create mode 100644 opengist/compose.yml create mode 100644 podgrab/.env.sample create mode 100644 podgrab/compose.yml create mode 100644 rapiddashboard/.env.sample create mode 100644 rapiddashboard/compose.yml create mode 100644 readme.md create mode 100644 uptimekuma/.env.sample create mode 100644 uptimekuma/compose.yml diff --git a/cyberchef/.env.sample b/cyberchef/.env.sample new file mode 100644 index 0000000..cf3d931 --- /dev/null +++ b/cyberchef/.env.sample @@ -0,0 +1,5 @@ +# Uncomment and change the following variables if you want to use them. +#RESTART=unless-stopped +#CYBERCHEF_CONTAINER_NAME=CyberChef +#CYBERCHEF_TAG=latest +#CYBERCHEF_PORT=8000 diff --git a/cyberchef/compose.yml b/cyberchef/compose.yml new file mode 100644 index 0000000..9ec0bb2 --- /dev/null +++ b/cyberchef/compose.yml @@ -0,0 +1,10 @@ +services: + # CyberChef + cyberchef: + container_name: ${CYBERCHEF_CONTAINER_NAME:-CyberChef} + image: mpepping/cyberchef:${CYBERCHEF_TAG:-latest} + restart: ${RESTART:-unless-stopped} + healthcheck: + test: curl -f http://localhost:8000/ || exit 1 + ports: + - ${CYBERCHEF_PORT:-8000}:8000 diff --git a/domotica/.env.sample b/domotica/.env.sample new file mode 100644 index 0000000..8b4f19a --- /dev/null +++ b/domotica/.env.sample @@ -0,0 +1,37 @@ +# Uncomment and change the following variables if you want to use them. + +#RESTART=unless-stopped +#SYNOLOGY_VOLUME=volume1 +#STACK_NAME=domotica +#UID=1024 +#GID=101 +#TZ=Europe/Amsterdam + +#HOMEASSISTANT_CONTAINER_NAME=HomeAssistant +#HOMEASSISTANT_TAG=latest + +#ZIGBEE2MQTT_CONTAINER_NAME=Zigbee2mqtt +#ZIGBEE2MQTT_TAG=latest + +#NODERED_CONTAINER_NAME=NodeRed +#NODERED_TAG=latest + +#ECLIPSEMOSQUITTO_CONTAINER_NAME=EclipseMosquitto +#ECLIPSEMOSQUITTO_TAG=latest + +#INFLUXDB_CONTAINER_NAME=InfluxDB +#INFLUXDB_TAG=latest + +#TELEGRAF_CONTAINER_NAME=Telegraf +#TELEGRAF_TAG=latest +#TELEGRAF_CONF_INFLUXDBV2_URL=http://localhost:8086 +TELEGRAF_CONF_INFLUXDBV2_TOKEN= +TELEGRAF_CONF_INFLUXDBV2_ORGANIZATION= +TELEGRAF_CONF_INFLUXDBV2_BUCKET= + +#GRAFANA_CONTAINER_NAME=Grafana +#GRAFANA_TAG=latest +#GRAFANA_SECURITY_ALLOW_EMBEDDING=true + +#ESPHOME_CONTAINER_NAME=ESPHome +#ESPHOME_TAG=latest \ No newline at end of file diff --git a/domotica/Telegraf/etc/telegraf/telegraf.conf b/domotica/Telegraf/etc/telegraf/telegraf.conf new file mode 100644 index 0000000..b86543f --- /dev/null +++ b/domotica/Telegraf/etc/telegraf/telegraf.conf @@ -0,0 +1,30 @@ +[agent] + interval = "10s" + round_interval = true + metric_batch_size = 1000 + metric_buffer_limit = 10000 + collection_jitter = "0s" + flush_interval = "10s" + flush_jitter = "0s" + precision = "" + hostname = "" + omit_hostname = false +[[outputs.influxdb_v2]] + urls = ["$TELEGRAF_CONF_INFLUXDBV2_URL"] + token = "$TELEGRAF_CONF_INFLUXDBV2_TOKEN" + organization = "$TELEGRAF_CONF_INFLUXDBV2_ORGANIZATION" + bucket = "$TELEGRAF_CONF_INFLUXDBV2_BUCKET" +[[inputs.cpu]] + percpu = true + totalcpu = true + collect_cpu_time = false + report_active = false +[[inputs.disk]] + ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"] +[[inputs.diskio]] +[[inputs.mem]] +[[inputs.net]] +[[inputs.processes]] +[[inputs.swap]] +[[inputs.system]] +[[inputs.temp]] \ No newline at end of file diff --git a/domotica/compose.yml b/domotica/compose.yml new file mode 100644 index 0000000..244c80e --- /dev/null +++ b/domotica/compose.yml @@ -0,0 +1,101 @@ +services: + # Home Assistant + homeassistant: + container_name: ${HOMEASSISTANT_CONTAINER_NAME:-HomeAssistant} + image: homeassistant/home-assistant:${HOMEASSISTANT_TAG:-latest} + user: ${UID:-1024}:${GID:-101} + restart: ${RESTART:-unless-stopped} + network_mode: host + healthcheck: + test: curl -f http://localhost:8123/ || exit 1 + environment: + TZ: ${TZ:-Europe/Amsterdam} + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-domotica}/${HOMEASSISTANT_CONTAINER_NAME:-HomeAssistant}/config:/config + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-domotica}/${HOMEASSISTANT_CONTAINER_NAME:-HomeAssistant}/media:/media + + # Zigbee2mqtt + zigbee2mqtt: + container_name: ${ZIGBEE2MQTT_CONTAINER_NAME:-Zigbee2mqtt} + image: koenkk/zigbee2mqtt:${ZIGBEE2MQTT_TAG:-latest} + user: ${UID:-1024}:${GID:-101} + restart: ${RESTART:-unless-stopped} + network_mode: host + environment: + TZ: ${TZ:-Europe/Amsterdam} + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-domotica}/${ZIGBEE2MQTT_CONTAINER_NAME:-Zigbee2mqtt}/app/data:/app/data + + # Node-RED + nodered: + container_name: ${NODERED_CONTAINER_NAME:-NodeRed} + image: nodered/node-red:${NODERED_TAG:-latest} + user: ${UID:-1024}:${GID:-101} + restart: ${RESTART:-unless-stopped} + network_mode: host + environment: + TZ: ${TZ:-Europe/Amsterdam} + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-domotica}/${NODERED_CONTAINER_NAME:-NodeRed}/data:/data + + # Eclipse Mosquitto + eclipsemosquitto: + container_name: ${ECLIPSEMOSQUITTO_CONTAINER_NAME:-EclipseMosquitto} + image: eclipse-mosquitto:${ECLIPSEMOSQUITTO_TAG:-latest} + user: ${UID:-1024}:${GID:-101} + restart: ${RESTART:-unless-stopped} + network_mode: host + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-domotica}/${ECLIPSEMOSQUITTO_CONTAINER_NAME:-EclipseMosquitto}/mosquitto/config:/mosquitto/config + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-domotica}/${ECLIPSEMOSQUITTO_CONTAINER_NAME:-EclipseMosquitto}/mosquitto/data:/mosquitto/data + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-domotica}/${ECLIPSEMOSQUITTO_CONTAINER_NAME:-EclipseMosquitto}/mosquitto/log:/mosquitto/log + + # InfluxDB + influxdb: + container_name: ${INFLUXDB_CONTAINER_NAME:-InfluxDB} + image: influxdb:${INFLUXDB_TAG:-latest} + user: ${UID:-1024}:${GID:-101} + restart: ${RESTART:-unless-stopped} + network_mode: host + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-domotica}/${INFLUXDB_CONTAINER_NAME:-InfluxDB}/var/lib/influxdb2:/var/lib/influxdb2 + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-domotica}/${INFLUXDB_CONTAINER_NAME:-InfluxDB}/etc/influxdb2:/etc/influxdb2 + + # Telegraf + telegraf: + container_name: ${TELEGRAF_CONTAINER_NAME:-Telegraf} + image: telegraf:${TELEGRAF_TAG:-latest} + restart: ${RESTART:-unless-stopped} + network_mode: host + environment: + TELEGRAF_CONF_INFLUXDBV2_URL: ${TELEGRAF_CONF_INFLUXDBV2_URL:-http://localhost:8086} + TELEGRAF_CONF_INFLUXDBV2_TOKEN: $TELEGRAF_CONF_INFLUXDBV2_TOKEN + TELEGRAF_CONF_INFLUXDBV2_ORGANIZATION: $TELEGRAF_CONF_INFLUXDBV2_ORGANIZATION + TELEGRAF_CONF_INFLUXDBV2_BUCKET: $TELEGRAF_CONF_INFLUXDBV2_BUCKET + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${PROJECT_NAME:-domotica}/${TELEGRAF_CONTAINER_NAME:-Telegraf}/etc/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro + + # Grafana + grafana: + container_name: ${GRAFANA_CONTAINER_NAME:-Grafana} + image: grafana/grafana:${GRAFANA_TAG:-latest} + user: ${UID:-1024}:${GID:-101} + restart: ${RESTART:-unless-stopped} + network_mode: host + healthcheck: + test: curl -f http://localhost:3000/ || exit 1 + environment: + GF_SECURITY_ALLOW_EMBEDDING: ${GRAFANA_SECURITY_ALLOW_EMBEDDING:-true} + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-domotica}/${GRAFANA_CONTAINER_NAME:-Grafana}/var/lib/grafana:/var/lib/grafana + + # ESPHome + esphome: + container_name: ${ESPHOME_CONTAINER_NAME:-ESPHome} + image: esphome/esphome:${ESPHOME_TAG:-latest} + restart: ${RESTART:-unless-stopped} + network_mode: host + healthcheck: + test: curl -f http://localhost:6052/ || exit 1 + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-domotica}/${ESPHOME_CONTAINER_NAME:-ESPHome}/config:/config diff --git a/domotica/readme.md b/domotica/readme.md new file mode 100644 index 0000000..301d9d1 --- /dev/null +++ b/domotica/readme.md @@ -0,0 +1,157 @@ +# domotica + +This project/stack consists of multiple software which combined create my domotica project/stack. + +## Installation using Synology Container Manager + +### Untested, but should work with + +* Synology DS1019+ running DSM DSM 7.2-64570 Update 1; +* Container Manager from Synology Package Center version 20.10.23-1413; +* Home Assistant 2023.9; +* Zigbee2mqtt 1.33.0; +* Node-RED 3.1.0-16; +* Eclipse Mosquitto 2.0.17; +* InfluxDB 2.7.1 +* Telegraf 1.27.4; +* Grafana 10.1.1; +* ESPHome 2023.8. + +### Installation steps + +* Within your docker folder (/volume1/docker) create a folder named: domotica +* Move the following files to that newly created folder + * compose.yml + * .env.sample +* Rename .env.sample to .env +* Change the environment variables in the file .env as you see fit (don't forget to remove the # in front of the row you want to use) +* Create the folowing folders under /volume1/docker/domotica + * HomeAssistant/config + * HomeAssistant/media + * Zigbee2mqtt/app/data + * NodeRed/data + * EclipseMosquitto/mosquitto/config + * EclipseMosquitto/mosquitto/data + * EclipseMosquitto/mosquitto/log + * InfluxDB/var/lib/influxdb2 + * Grafana/var/lib/grafana + * ESPHome/config +* Copy the following file from the repository + * Telegraf/etc/telegraf/telegraf.conf, copy to: Telegraf/etc/telegraf +* Open Container Manager via Synology DiskStation Manager (DSM) +* Go to Project (in the left pane) +* Click Create +* Name your project domotica +* Select the path you created in step 1 +* Choose to use the existing docker-compose.yml file +* Click Next +* Click Next on the Web portal settings page +* Click Done and wait for Container Manager to finish (Exit Code: 0) + +## Installation using Portainer + +### Tested with + +* Synology DS1019+ running DSM DSM 7.2-64570 Update 1; +* Container Manager from Synology Package Center version 20.10.23-1413; +* Portainer.io Community Edition version 2.19.0; +* Home Assistant 2023.9; +* Zigbee2mqtt 1.33.0; +* Node-RED 3.1.0-16; +* Eclipse Mosquitto 2.0.17; +* InfluxDB 2.7.1 +* Telegraf 1.27.4; +* Grafana 10.1.1; +* ESPHome 2023.8. + +### Installation steps + +* Within your docker folder (/volume1/docker) create a folder named: domotica +* Create the folowing folders under /volume1/docker/domotica + * HomeAssistant/config + * HomeAssistant/media + * Zigbee2mqtt/app/data + * NodeRed/data + * EclipseMosquitto/mosquitto/config + * EclipseMosquitto/mosquitto/data + * EclipseMosquitto/mosquitto/log + * InfluxDB/var/lib/influxdb2 + * Grafana/var/lib/grafana + * ESPHome/config +* Copy the following file from the repository + * Telegraf/etc/telegraf/telegraf.conf, copy to: Telegraf/etc/telegraf +* Open Portainer with the correct environment. +* Under Stacks click the button + Add stack. +* Give your stack a name (i.e.: domotica). +* Paste the contents of compose.yml under Web editor. +* Paste the contents of .env.sample under Environment variables. + * Click Advanced mode to be able to paste. +* Change the environment variables as you see fit. (don't forget to remove the # in front of the row you want to use) +* Click Deploy the stack and wait for Portainer to finish. + +## Environment variables + +The following variables could be set an environment varaiables using the .env file. + +| Value | Default | Information | +|-|-|-| +| RESTART | unless-stopped | Choose a restart policy. | +| SYNOLOGY_VOLUME | volume1 | Volume you docker folder is on. | +| STACK_NAME | domotica | The name of your project/stack and also the base folder within your docker folder. | +| UID | 1024 | The User ID you want to use for ownership of the files. 1024 is the default Synology admin user. | +| GID | 101 | The Groud ID you want to use for ownership of the files. 101 is the default Synology admin group. | +| TZ | Europe/Amsterdam | | +| HOMEASSISTANT_CONTAINER_NAME | HomeAssistant | This is used for the name of the container | +| HOMEASSISTANT_TAG | latest | Choose a version tag. | +| ZIGBEE2MQTT_CONTAINER_NAME | Zigbee2mqtt | This is used for the name of the container | +| ZIGBEE2MQTT_TAG | latest | Choose a version tag. | +| NODERED_CONTAINER_NAME | NodeRed | This is used for the name of the container | +| NODERED_TAG | latest | Choose a version tag. | +| ECLIPSEMOSQUITTO_CONTAINER_NAME | EclipseMosquitto | This is used for the name of the container | +| ECLIPSEMOSQUITTO_TAG | latest | Choose a version tag. | +| INFLUXDB_CONTAINER_NAME | InfluxDB | This is used for the name of the container | +| INFLUXDB_TAG | latest | Choose a version tag. | +| TELEGRAF_CONTAINER_NAME | Telegraf | This is used for the name of the container | +| TELEGRAF_TAG | latest | Choose a version tag. | +| TELEGRAF_CONF_INFLUXDBV2_URL | http://localhost:8086 | The location of InfluxDB. | +| TELEGRAF_CONF_INFLUXDBV2_TOKEN | | The Token created in InfluxDB for your Telegraf information. | +| TELEGRAF_CONF_INFLUXDBV2_ORGANIZATION | | The organization created in InfluxDB for your Telegraf information. | +| TELEGRAF_CONF_INFLUXDBV2_BUCKET | | The bucket created in InfluxDB for your Telegraf information. | +| GRAFANA_CONTAINER_NAME | Grafana | This is used for the name of the container | +| GRAFANA_TAG | latest | Choose a version tag. | +| GRAFANA_SECURITY_ALLOW_EMBEDDING | true | Needed if you want to acces Grafana from an iframe in Home Assiatnt. [More info](https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/#allow_embedding). | +| ESPHOME_CONTAINER_NAME | ESPHome | This is used for the name of the container | +| ESPHOME_TAG | latest | Choose a version tag. | + +## Links + +* Home Assistant + * [Website](https://www.home-assistant.io/) + * [Docker Hub](https://hub.docker.com/r/homeassistant/home-assistant) + * [GitHub](https://github.com/home-assistant/core) +* Zigbee2mqtt + * [Website](https://www.zigbee2mqtt.io/) + * [Docker Hub](https://hub.docker.com/r/koenkk/zigbee2mqtt) + * [GitHub](https://github.com/Koenkk/zigbee2mqtt) +* Node-RED + * [Website](https://nodered.org/) + * [Docker Hub](https://hub.docker.com/r/nodered/node-red) + * [GitHub](https://github.com//node-red/node-red-docker) +* Eclipse Mosquitto + * [Website](https://mosquitto.org/) + * [Docker Hub](https://hub.docker.com/_/eclipse-mosquitto) + * [GitHub](https://github.com/eclipse/mosquitto) +* InfluxDB + * [Docker Hub](https://hub.docker.com/_/influxdb) + * [GitHub](https://github.com/influxdata/influxdata-docker/tree/master/influxdb) +* Telegraf + * [Docker Hub](https://hub.docker.com/_/telegraf) + * [GitHub](https://github.com/influxdata/influxdata-docker/tree/master/telegraf) +* Grafana + * [Website](https://grafana.com/) + * [Docker Hub](https://hub.docker.com/r/grafana/grafana) + * [GitHub](https://github.com/grafana/grafana) +* ESPHome + * [Website](https://esphome.io/) + * [Docker Hub](https://hub.docker.com/r/esphome/esphome) + * [GitHub](https://github.com/esphome/esphome) diff --git a/dozzle/.env.sample b/dozzle/.env.sample new file mode 100644 index 0000000..e22f533 --- /dev/null +++ b/dozzle/.env.sample @@ -0,0 +1,7 @@ +# Uncomment and change the following variables if you want to use them. +#RESTART=unless-stopped +#DOZZLE_CONTAINER_NAME=Dozzle +#DOZZLE_TAG=latest +#DOZZLE_PORT=8080 +#DOZZLE_USERNAME= +#DOZZLE_PASSWORD= \ No newline at end of file diff --git a/dozzle/compose.yml b/dozzle/compose.yml new file mode 100644 index 0000000..7dae3e5 --- /dev/null +++ b/dozzle/compose.yml @@ -0,0 +1,15 @@ +services: + # Dozzle + dozzle: + container_name: ${DOZZLE_CONTAINER_NAME:-Dozzle} + image: amir20/dozzle:${DOZZLE_TAG:-latest} + restart: ${RESTART:-unless-stopped} + healthcheck: + test: [ "CMD", "/dozzle", "healthcheck" ] + environment: + DOZZLE_USERNAME: ${DOZZLE_USERNAME:-} + DOZZLE_PASSWORD: ${DOZZLE_PASSWORD:-} + ports: + - ${DOZZLE_PORT:-8080}:8080 + volumes: + - /var/run/docker.sock:/var/run/docker.sock diff --git a/drawio/.env.sample b/drawio/.env.sample new file mode 100644 index 0000000..8344b6a --- /dev/null +++ b/drawio/.env.sample @@ -0,0 +1,5 @@ +# Uncomment and change the following variables if you want to use them. +#RESTART=unless-stopped +#DRAWIO_CONTAINER_NAME=draw.io +#DRAWIO_TAG=latest +#DRAWIO_PORT=8080 diff --git a/drawio/compose.yml b/drawio/compose.yml new file mode 100644 index 0000000..6684266 --- /dev/null +++ b/drawio/compose.yml @@ -0,0 +1,10 @@ +services: + # draw.io + drawio: + container_name: ${DRAWIO_CONTAINER_NAME:-draw.io} + image: jgraph/drawio:${DRAWIO_TAG:-latest} + restart: ${RESTART:-unless-stopped} + healthcheck: + test: curl -f http://localhost:8080/ || exit 1 + ports: + - ${DRAWIO_PORT:-8080}:8080 diff --git a/drawio/readme.md b/drawio/readme.md new file mode 100644 index 0000000..591ac0a --- /dev/null +++ b/drawio/readme.md @@ -0,0 +1,64 @@ +# draw.io + +draw.io is free online diagram software for making flowcharts, process diagrams, org charts, UML, ER and network diagrams. + +## Installation using Synology Container Manager + +### Tested with + +* Synology DS1019+ running DSM DSM 7.2-64570 Update 1; +* Container Manager from Synology Package Center version 20.10.23-1413; +* draw.io 21.7.4. + +### Installation steps + +* Within your docker folder (/volume1/docker) create a folder named: drawio +* Move the following files to that newly created folder + * compose.yml + * .env.sample +* Rename .env.sample to .env +* Change the environment variables in the file .env as you see fit (Don't forget to remove the # in front of the row you want to use) +* Open Container Manager via Synology DiskStation Manager (DSM) +* Go to Project (in the left pane) +* Click Create +* Name your project drawio +* Select the path you created in step 1 +* Choose to use the existing docker-compose.yml file +* Click Next +* Click Next on the Web portal settings page +* Click Done and wait for Container Manager to finish (Exit Code: 0) + +## Installation using Portainer + +### Tested with + +* Synology DS1019+ running DSM DSM 7.2-64570 Update 1; +* Container Manager from Synology Package Center version 20.10.23-1413; +* Portainer.io Community Edition version 2.19.0; +* draw.io 21.7.4. + +### Installation steps + +* Open Portainer with the correct environment. +* Under Stacks click the button + Add stack. +* Give your stack a name (i.e.: drawio). +* Paste the contents of compose.yml under Web editor. +* Paste the contents of .env.sample under Environment variables. + * Click Advanced mode to be able to paste. +* Change the environment variables as you see fit. +* Click Deploy the stack and wait for Portainer to finish. + +## Environment variables + +The following variables could be set an environment varaiables using the .env file. + +| Value | Default | Information | +|-|-|-| +| RESTART | unless-stopped | Choose a restart policy. | +| DRAWIO_CONTAINER_NAME | draw.io | This is used for the name of the container | +| DRAWIO_TAG | latest | Choose a version tag. | +| DRAWIO_PORT | 8080 | Default port. | + +## Links +* [Docker Hub](https://hub.docker.com/r/jgraph/drawio) +* [GitHub](https://github.com/jgraph/drawio) diff --git a/filezilla/.env.sample b/filezilla/.env.sample new file mode 100644 index 0000000..4c73e95 --- /dev/null +++ b/filezilla/.env.sample @@ -0,0 +1,10 @@ +# Uncomment and change the following variables if you want to use them. +#RESTART=unless-stopped +#SYNOLOGY_VOLUME=volume1 +#STACK_NAME=filezilla +#UID=1024 +#GID=101 +#TZ=Europe/Amsterdam +#FILEZILLA_CONTAINER_NAME=FileZilla +#FILEZILLA_TAG=latest +#FILEZILLA_PORT=3000 diff --git a/filezilla/compose.yml b/filezilla/compose.yml new file mode 100644 index 0000000..47488c8 --- /dev/null +++ b/filezilla/compose.yml @@ -0,0 +1,16 @@ +services: + # FileZilla + filezilla: + container_name: ${FILEZILLA_CONTAINER_NAME:-FileZilla} + image: linuxserver/filezilla:${FILEZILLA_TAG:-latest} + restart: ${RESTART:-unless-stopped} + healthcheck: + test: curl -f http://localhost:3000/ || exit 1 + environment: + PUID: ${UID:-1024} + PGID: ${GID:-101} + TZ: ${TZ:-Europe/Amsterdam} + ports: + - ${FILEZILLA_PORT:-3000}:3000 + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-filezilla}/${FILEZILLA_CONTAINER_NAME:-FileZilla}/config:/config diff --git a/firefox/.env.sample b/firefox/.env.sample new file mode 100644 index 0000000..51141e2 --- /dev/null +++ b/firefox/.env.sample @@ -0,0 +1,10 @@ +# Uncomment and change the following variables if you want to use them. +#RESTART=unless-stopped +#SYNOLOGY_VOLUME=volume1 +#STACK_NAME=firefox +#UID=1024 +#GID=101 +#TZ=Europe/Amsterdam +#FIREFOX_CONTAINER_NAME=Firefox +#FIREFOX_TAG=latest +#FIREFOX_PORT=3000 diff --git a/firefox/compose.yml b/firefox/compose.yml new file mode 100644 index 0000000..c7d1968 --- /dev/null +++ b/firefox/compose.yml @@ -0,0 +1,16 @@ +services: + # Firefox + filezilla: + container_name: ${FIREFOX_CONTAINER_NAME:-Firefox} + image: linuxserver/firefox:${FIREFOX_TAG:-latest} + restart: ${RESTART:-unless-stopped} + healthcheck: + test: curl -f http://localhost:3000/ || exit 1 + environment: + PUID: ${UID:-1024} + PGID: ${GID:-101} + TZ: ${TZ:-Europe/Amsterdam} + ports: + - ${FIREFOX_PORT:-3000}:3000 + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-firefox}/${FIREFOX_CONTAINER_NAME:-Firefox}/config:/config diff --git a/grocy/.env.sample b/grocy/.env.sample new file mode 100644 index 0000000..317db2f --- /dev/null +++ b/grocy/.env.sample @@ -0,0 +1,10 @@ +# Uncomment and change the following variables if you want to use them. +#RESTART=unless-stopped +#SYNOLOGY_VOLUME=volume1 +#STACK_NAME=grocy +#UID=1024 +#GID=101 +#TZ=Europe/Amsterdam +#GROCY_CONTAINER_NAME=Grocy +#GROCY_TAG=latest +#GROCY_PORT=80 diff --git a/grocy/compose.yml b/grocy/compose.yml new file mode 100644 index 0000000..c5708e9 --- /dev/null +++ b/grocy/compose.yml @@ -0,0 +1,16 @@ +services: + # Grocy + grocy: + container_name: ${GROCY_CONTAINER_NAME:-Grocy} + image: linuxserver/grocy:${GROCY_TAG:-latest} + restart: ${RESTART:-unless-stopped} + healthcheck: + test: curl -f http://localhost:80/ || exit 1 + environment: + PUID: ${UID:-1024} + PGID: ${GID:-101} + TZ: ${TZ:-Europe/Amsterdam} + ports: + - ${GROCY_PORT:-80}:80 + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-grocy}/${GROCY_CONTAINER_NAME:-Grocy}/config:/config diff --git a/hammond/.env.sample b/hammond/.env.sample new file mode 100644 index 0000000..02fe611 --- /dev/null +++ b/hammond/.env.sample @@ -0,0 +1,9 @@ +# Uncomment and change the following variables if you want to use them. +#RESTART=unless-stopped +#SYNOLOGY_VOLUME=volume1 +#STACK_NAME=hammond +#UID=1024 +#GID=101 +#HAMMOND_CONTAINER_NAME=Hammond +#HAMMOND_TAG=latest +#HAMMOND_PORT=3000 diff --git a/hammond/compose.yml b/hammond/compose.yml new file mode 100644 index 0000000..3f9ced8 --- /dev/null +++ b/hammond/compose.yml @@ -0,0 +1,16 @@ +services: + # Hammond + hammond: + container_name: ${HAMMOND_CONTAINER_NAME:-Hammond} + image: akhilrex/hammond:${HAMMOND_TAG:-latest} + restart: ${RESTART:-unless-stopped} + healthcheck: + test: wget --no-verbose --tries=1 --spider http://localhost:3000/ + environment: + UID: ${UID:-1024} + PID: ${GID:-101} + ports: + - ${HAMMOND_PORT:-3000}:3000 + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-hammond}/${HAMMOND_CONTAINER_NAME:-Hammond}/config:/config + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-hammond}/${HAMMOND_CONTAINER_NAME:-Hammond}/assets:/assets diff --git a/hammond/readme.md b/hammond/readme.md new file mode 100644 index 0000000..fb7090b --- /dev/null +++ b/hammond/readme.md @@ -0,0 +1,46 @@ +# Hammond + +Self hosted vehicle and expense management system. Like Clarkson, but better. + +## Installation using Portainer + +### Tested with + +* Synology DS1019+ running DSM 7.1.1-42962 Update 5; +* Docker from Synology Package Center version 20.10.3-1308; +* Portainer.io Community Edition version 2.18.3; +* Hammond 1.0.0. + +### Create the following folders + +* docker/Hammond/config +* docker/Hammond/assets + +### Installation steps + +* Open Portainer with the correct environment. +* Under Stacks click the button + Add stack. +* Give your stack a name (i.e.: hammond). +* Paste the contents of docker-compose.yml under Web editor. +* Paste the contents of .env under Environment variables. + * Click Advanced mode to be able to paste. +* Change the environment variables as you see fit. +* Click Deploy the stack and wait for Portainer to finish. + +## Environment variables + +The following variables could be set an environment varaiables using the .env file. + +| Value | Default | Information | +|-|-|-| +| UID | 1024 | The user id you want to use. | +| GID | 101 | The group id you want to use. | +| SYNOLOGY_VOLUME | volume1 | If you have only 1 volume Docker will be installed on volume 1. | +| RESTART | unless-stopped | Choose a restart policy. | +| HAMMOND_CONTAINER_NAME | Hammond | This is used for the name of the container and the main folder under de docker folder. | +| HAMMOND_TAG | latest | Choose a version tag. | +| HAMMOND_PORT | 3000 | Default port. | + +## Links +* [Docker Hub](https://hub.docker.com/r/akhilrex/hammond) +* [GitHub](https://github.com/akhilrex/hammond) diff --git a/heimdall/.env.sample b/heimdall/.env.sample new file mode 100644 index 0000000..5e0a3c4 --- /dev/null +++ b/heimdall/.env.sample @@ -0,0 +1,10 @@ +# Uncomment and change the following variables if you want to use them. +#RESTART=unless-stopped +#SYNOLOGY_VOLUME=volume1 +#STACK_NAME=heimdall +#UID=1024 +#GID=101 +#TZ=Europe/Amsterdam +#HEIMDALL_CONTAINER_NAME=Heimdall +#HEIMDALL_TAG=latest +#HEIMDALL_PORT=80 diff --git a/heimdall/compose.yml b/heimdall/compose.yml new file mode 100644 index 0000000..8db8142 --- /dev/null +++ b/heimdall/compose.yml @@ -0,0 +1,16 @@ +services: + # Heimdall + heimdall: + container_name: ${HEIMDALL_CONTAINER_NAME:-Heimdall} + image: linuxserver/heimdall:${HEIMDALL_TAG:-latest} + restart: ${RESTART:-unless-stopped} + healthcheck: + test: curl -f http://localhost:80/ || exit 1 + environment: + PUID: ${UID:-1024} + PGID: ${GID:-101} + TZ: ${TZ:-Europe/Amsterdam} + ports: + - ${HEIMDALL_PORT:-80}:80 + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-heimdall}/${HEIMDALL_CONTAINER_NAME:-Heimdall}/config:/config diff --git a/ittools/.env.sample b/ittools/.env.sample new file mode 100644 index 0000000..eba4052 --- /dev/null +++ b/ittools/.env.sample @@ -0,0 +1,5 @@ +# Uncomment and change the following variables if you want to use them. +#RESTART=unless-stopped +#ITTOOLS_CONTAINER_NAME=ITTools +#ITTOOLS_TAG=latest +#ITTOOLS_PORT=80 diff --git a/ittools/compose.yml b/ittools/compose.yml new file mode 100644 index 0000000..a3e18f5 --- /dev/null +++ b/ittools/compose.yml @@ -0,0 +1,10 @@ +services: + # IT Tools + ittools: + container_name: ${ITTOOLS_CONTAINER_NAME:-ITTools} + image: corentinth/it-tools:${ITTOOLS_TAG:-latest} + restart: ${RESTART:-unless-stopped} + healthcheck: + test: curl -f http://localhost:80/ || exit 1 + ports: + - ${ITTOOLS_HTTP_PORT:-80}:80 diff --git a/opengist/.env.sample b/opengist/.env.sample new file mode 100644 index 0000000..e1fc8da --- /dev/null +++ b/opengist/.env.sample @@ -0,0 +1,9 @@ +# Uncomment and change the following variables if you want to use them. +#RESTART=unless-stopped +#SYNOLOGY_VOLUME=volume1 +#STACK_NAME=opengist +#UID=1024 +#GID=101 +#OPENGIST_CONTAINER_NAME=Opengist +#OPENGIST_TAG=latest +#OPENGIST_PORT=6157 diff --git a/opengist/compose.yml b/opengist/compose.yml new file mode 100644 index 0000000..ced1973 --- /dev/null +++ b/opengist/compose.yml @@ -0,0 +1,15 @@ +services: + # Opengist + opengist: + container_name: ${OPENGIST_CONTAINER_NAME:-Opengist} + image: ghcr.io/thomiceli/opengist:${OPENGIST_TAG:-latest} + restart: ${RESTART:-unless-stopped} + healthcheck: + test: curl -f http://localhost:6157/ || exit 1 + environment: + UID: ${UID:-1024} + GID: ${GID:-101} + ports: + - ${OPENGIST_PORT:-6157}:6157 + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-opengist}/${OPENGIST_CONTAINER_NAME:-Opengist}/opengist:/opengist diff --git a/podgrab/.env.sample b/podgrab/.env.sample new file mode 100644 index 0000000..36978e8 --- /dev/null +++ b/podgrab/.env.sample @@ -0,0 +1,12 @@ +# Uncomment and change the following variables if you want to use them. +#RESTART=unless-stopped +#SYNOLOGY_VOLUME=volume1 +#STACK_NAME=podgrab +#UID=1024 +#GID=101 +#TZ=Europe/Amsterdam +#PODGRAB_CONTAINER_NAME=Podgrab +#PODGRAB_TAG=latest +#PODGRAB_PORT=8080 +#PODGRAB_CHECK_FREQUENCY=30 +#PODGRAB_PASSWORD= diff --git a/podgrab/compose.yml b/podgrab/compose.yml new file mode 100644 index 0000000..950ead0 --- /dev/null +++ b/podgrab/compose.yml @@ -0,0 +1,19 @@ +services: + # Podgrab + podgrab: + container_name: ${PODGRAB_CONTAINER_NAME:-Podgrab} + hostname: podgrab + image: akhilrex/podgrab:${PODGRAB_TAG:-latest} + user: ${UID:-1024}:${GID:-101} + restart: ${RESTART:-unless-stopped} + healthcheck: + test: wget --no-verbose --tries=1 --spider http://localhost:${PODGRAB_PORT:-8080}/ + environment: + CHECK_FREQUENCY: ${PODGRAB_CHECK_FREQUENCY:-30} + PASSWORD: ${PODGRAB_PASSWORD:-} + PORT: ${PODGRAB_PORT:-8080} + ports: + - ${PODGRAB_PORT:-8080}:${PODGRAB_PORT:-8080} + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-podgrab}/${PODGRAB_CONTAINER_NAME:-Podgrab}/config:/config + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-podgrab}/${PODGRAB_CONTAINER_NAME:-Podgrab}/assets:/assets diff --git a/rapiddashboard/.env.sample b/rapiddashboard/.env.sample new file mode 100644 index 0000000..709ba21 --- /dev/null +++ b/rapiddashboard/.env.sample @@ -0,0 +1,5 @@ +# Uncomment and change the following variables if you want to use them. +#RESTART=unless-stopped +#RAPIDDASHBOARD_CONTAINER_NAME=RapidDashboard +#RAPIDDASHBOARD_TAG=latest +#RAPIDDASHBOARD_PORT=8080 diff --git a/rapiddashboard/compose.yml b/rapiddashboard/compose.yml new file mode 100644 index 0000000..a2f1c06 --- /dev/null +++ b/rapiddashboard/compose.yml @@ -0,0 +1,12 @@ +services: + # Rapid Dashboard + rapiddashboard: + container_name: ${RAPIDDASHBOARD_CONTAINER_NAME:-RapidDashboard} + image: ozlerhakan/rapid:${RAPIDDASHBOARD_TAG:-latest} + restart: ${RESTART:-unless-stopped} + healthcheck: + test: wget --no-verbose --tries=1 --spider http://localhost:8080/ + ports: + - ${RAPIDDASHBOARD_PORT:-8080}:8080 + volumes: + - /var/run/docker.sock:/var/run/docker.sock diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..85ad447 --- /dev/null +++ b/readme.md @@ -0,0 +1,64 @@ +# Docker Compose Collection Optimized for Synology + +This repository will contain all the Dockerized software I currently use, have used in the past or just briefly tested. + +## The way I format my compose files + +Each compose file should contain as much variables as possible so in the event of an update to the compose file there is no extra work to replace it with the new file as all the changes are still in the .env file. + +Parts with an asterisk (*) should be always present. + +### container_name* +``` + container_name: ${APP_CONTAINER_NAME:-App} +``` + +### hostname +``` + hostname: app +``` +### image* + +``` + image: publisher/app:${APP_TAG:-latest} +``` + +The latest tag is the preferred tag. + +### restart* +``` + restart: ${RESTART:-unless-stopped} +``` + +### healthcheck +If the image does not contain a health check already then implement one of the following options. + +Always try to use an image specific healthcheck, if available + +Use curl +``` + healthcheck: + test: curl -f http://localhost:80/ || exit 1 +``` + +Use wget +``` + healthcheck: + test: wget --no-verbose --tries=1 --spider http://localhost:80/ +``` + +If none of the options is available then ommit the use of a health check. + +### ports +``` + ports: + - ${APP_PORT:-80}:80 +``` + +If there is only one port available use the variable name as in the example above. If there are multiple ports try to use a short desription for all of them. See the example below. + +``` + ports: + - ${APP_PORT_HTTP:-80}:80 + - ${APP_PORT_SSH:-22}:22 +``` diff --git a/uptimekuma/.env.sample b/uptimekuma/.env.sample new file mode 100644 index 0000000..e416ce5 --- /dev/null +++ b/uptimekuma/.env.sample @@ -0,0 +1,8 @@ +# Uncomment and change the following variables if you want to use them. +#RESTART=unless-stopped +#SYNOLOGY_VOLUME=volume1 +#STACK_NAME=uptimekuma +#TZ=Europe/Amsterdam +#UPTIMEKUMA_CONTAINER_NAME=UptimeKuma +#UPTIMEKUMA_TAG=latest +#UPTIMEKUMA_PORT=3001 diff --git a/uptimekuma/compose.yml b/uptimekuma/compose.yml new file mode 100644 index 0000000..940cd2e --- /dev/null +++ b/uptimekuma/compose.yml @@ -0,0 +1,13 @@ +services: + # UptimeKuma + uptimekuma: + container_name: ${UPTIMEKUMA_CONTAINER_NAME:-UptimeKuma} + image: louislam/uptime-kuma:${UPTIMEKUMA_TAG:-latest} + restart: ${RESTART:-unless-stopped} + environment: + TZ: ${TZ:-Europe/Amsterdam} + ports: + - ${UPTIMEKUMA_PORT:-3001}:3001 + volumes: + - /${SYNOLOGY_VOLUME:-volume1}/docker/${STACK_NAME:-uptimekuma}/${UPTIMEKUMA_CONTAINER_NAME:-UptimeKuma}/app/data:/app/data + - /var/run/docker.sock:/var/run/docker.sock:ro