├── .gitignore ├── README.md ├── actual └── compose.yml ├── adguard-home └── compose.yml ├── alloy-stack ├── README.md ├── compose.yml ├── config.alloy ├── loki │ └── config.yaml └── prometheus │ └── prometheus.yaml ├── alloy ├── compose.yml └── config.alloy ├── alpine └── compose.yml ├── audiobookshelf └── compose.yml ├── authentik └── compose.yml ├── backrest └── compose.yml ├── cadvisor └── compose.yml ├── cloudcmd └── docker-compose.yml ├── code-server └── docker-compose.yml ├── cup ├── compose.yml └── config │ └── cup.json ├── cyberchef └── compose.yml ├── databases └── compose.yml ├── dawarich └── compose.yml ├── dockge └── compose.yml ├── dozzle └── compose.yml ├── dummy └── compose.yml ├── easyapointments └── compose.yml ├── epicgames-freegames-node ├── compose.yml └── config │ └── config.json ├── esphome └── compose.yml ├── filezilla └── compose.yml ├── free-games-claimer └── compose.yml ├── gitea └── compose.yml ├── glance ├── compose.yml └── config │ └── glance.yml ├── glances ├── compose.yml └── glances.conf ├── grafana-loki ├── config │ └── loki-config.yaml ├── docker-compose.yml └── provisioning │ ├── datasources │ └── default.yaml │ └── plugins │ └── app.yaml ├── grafana └── compose.yml ├── gramps-web └── docker-compose.yml ├── guacamole ├── README.md └── compose.yml ├── heimdall └── compose.yml ├── home-assistant └── docker-compose.yml ├── homepage ├── docker-compose.yml ├── homepage-config │ ├── bookmarks.yaml │ ├── custom.css │ ├── custom.js │ ├── docker.yaml │ ├── kubernetes.yaml │ ├── logs │ │ └── homepage.log │ ├── services.yaml │ ├── settings.yaml │ └── widgets.yaml └── images │ └── neon-sun.jpg ├── homepage1.jpg ├── homepage2.jpg ├── homer ├── assets │ ├── config.yml │ ├── example.custom.css │ └── example2.config.yml └── compose.yml ├── immich ├── .env └── docker-compose.yml ├── it-tools └── compose.yml ├── jdownloader2 └── docker-compose.yml ├── jupyter └── compose.yml ├── kavita └── compose.yml ├── loki ├── compose.yml └── config │ └── config.yaml ├── mariadb └── compose.yml ├── mealie └── compose.yml ├── metube └── compose.yml ├── monitor └── compose.yml ├── moodle └── compose.yml ├── myspeed └── compose.yml ├── navidrome └── compose.yml ├── netalertx └── compose.yml ├── netdata └── compose.yml ├── nextcloud └── docker-compose.yml ├── nexterm └── compose.yml ├── nginx-proxy-manager └── compose.yml ├── nginx ├── compose.yml ├── config │ └── default.conf └── data │ └── index.html ├── obsidian-livesync ├── compose.yml └── config │ └── local.ini ├── olivetin ├── compose.yml └── config │ └── config.yaml ├── ollama └── compose.yml ├── organizr └── compose.yml ├── pihole └── compose.yml ├── pinchflat └── compose.yml ├── plex-radarr-transmission └── docker-compose.yml ├── portainer └── docker-compose.yml ├── postgis └── compose.yml ├── postgres └── compose.yml ├── prometheus ├── compose.yml └── config │ └── prometheus.yaml ├── puter └── compose.yml ├── redis └── compose.yml ├── reverse-proxy-exercise └── compose.yml ├── rustdesk └── compose.yml ├── semaphore └── compose.yml ├── siyuan └── compose.yml ├── sqlchat └── compose.yml ├── stirlingpdf └── compose.yml ├── system-monitoring ├── docker-compose.yaml ├── grafana │ └── provisioning │ │ └── datasources │ │ └── datasources.yml └── telegraf │ └── telegraf.conf ├── tinyfilemanager └── compose.yml ├── traefik ├── config │ ├── certs │ │ └── acme.json │ └── traefik.yaml └── docker-compose.yml ├── uptimekuma └── docker-compose.yml ├── vaultwarden └── compose.yml ├── watchtower └── docker-compose.yml ├── watchyourlan └── compose.yml ├── webtop └── compose.yml ├── webtrees └── compose.yml ├── whoami └── compose.yml ├── wud └── compose.yml └── wygiwyh ├── .env └── compose.yml /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | filebrowser/ 3 | hortusfox-web/ 4 | linkwarden/ 5 | volumes/ 6 | birdnet/ 7 | mariadb/mysql/ 8 | system-monitoring/influxdb/ 9 | uptimekuma/uptime-kuma-data/ 10 | home-assistant/homeassistant_config/ 11 | jdownloader2/config/ 12 | jdownloader2/downloads/ 13 | code-server/config/ 14 | system-monitoring.zip 15 | portainer/portainer_data/ 16 | plex-radarr-transmission/plex/ 17 | plex-radarr-transmission/radarr/ 18 | plex-radarr-transmission/transmission/ 19 | guacamole/config/ 20 | myspeed/data/ 21 | postgres/data/ 22 | postgres/dev/ 23 | databases/dev/ 24 | mariadb/dbgate-data/ 25 | authentik/certs/ 26 | authentik/custom-templates/ 27 | authentik/media/ 28 | dockge/data/ 29 | dockge/stacks/ 30 | adguard-home/work/ 31 | adguard-home/conf/ 32 | obsidian-livesync/data/ 33 | kavita/data/ 34 | kavita/manga/ 35 | metube/downloads/ 36 | pinchflat/config/ 37 | pinchflat/downloads/ 38 | netalertx/logs/ 39 | netalertx/db/ 40 | netalertx/config/ 41 | stirlingpdf/trainingData/ 42 | stirlingpdf/configs/ 43 | vaultwarden/vw-data/ 44 | heimdall/config/ 45 | free-games-claimer/data/ 46 | gitea/data/ 47 | navidrome/data/ 48 | navidrome/music/ 49 | webtop/data/ 50 | immich/library/ 51 | immich/postgres/ 52 | esphome/config/ 53 | organizr/config/ 54 | audiobookshelf/audiobooks/ 55 | audiobookshelf/config/ 56 | audiobookshelf/metadata/ 57 | audiobookshelf/podcasts/ 58 | system-monitoring/grafana/storage/ 59 | homepage/homepage-config/logs/ 60 | monitor/db-data/ 61 | mariadb/nc_data/ 62 | nginx-proxy-manager/data/ 63 | nginx-proxy-manager/letsencrypt/ 64 | reverse-proxy-exercise/conf/ 65 | reverse-proxy-exercise/data/ 66 | reverse-proxy-exercise/work/ 67 | reverse-proxy-exercise/letsencrypt/ 68 | ollama/ollama/ 69 | ollama/webui/ 70 | rustdesk/data/ 71 | siyuan/workspace/ 72 | filezilla/config/ 73 | wygiwyh/postgres_data/ 74 | watchyourlan/data/ 75 | puter/config/ 76 | puter/data/ 77 | postgis/shared/ 78 | postgis/data/ 79 | backrest/backrest/ 80 | backrest/backup/ 81 | backrest/repos/ 82 | semaphore/semaphore_config/config.json 83 | semaphore/semaphore_data/database.boltdb 84 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ready-to-Run Docker Compose Collection 2 | 3 | ## Usage 4 | 5 | Run first: 6 | ```bash 7 | docker network create --driver bridge proxy 8 | ``` 9 | 10 | #### For container using host networking: 11 | The host networking driver only works on Linux hosts, but is availabe as a beta feature on Docker Desktop version 4.29 and later for Mac, Windows, and Linux. To enable this feature, navigate to the Features in development tab in Settings, and then select Enable host networking. 12 | 13 | ## Services 14 | 15 | | Service | Port | 16 | | ------------------------------------------------------------------------------ | -------------------------------------------------------------------- | 17 | | [Adguard Home](https://hub.docker.com/r/adguard/adguardhome) | [3002](http://localhost:3002) 53 67 68 | 18 | | [Adminer](https://www.adminer.org/) | [8081](http://localhost:8081) | 19 | | [Alpine](https://hub.docker.com/_/alpine) | docker exec -it alpine /bin/sh | 20 | | [Audiobookshelf](https://www.audiobookshelf.org/) | [8065](http://localhost:8065) | 21 | | [Authentik](https://goauthentik.io/) | [9001](http://localhost:9001) | 22 | | [cAdvisor](https://github.com/google/cadvisor) | [8096](http://localhost:8096) | 23 | | [Cloudcmd](https://cloudcmd.io/) | [8000](http://localhost:8000) | 24 | | [CockroachDB](https://www.cockroachlabs.com/) | 26257 | 25 | | [Code Server](https://github.com/linuxserver/docker-code-server) | [8443](http://localhost:8443) | 26 | | [CyberChef](https://github.com/gchq/CyberChef) | [8094](http://localhost:8094) | 27 | | [Dawarich](https://github.com/Freika/dawarich) | [3007](http://localhost:3007) | 28 | | [DBGate](https://dbgate.org/) | [8084](http://localhost:8084) | 29 | | [Dockge](https://github.com/louislam/dockge) | [5002](http://localhost:5002) | 30 | | [Dozzle](https://dozzle.dev/) | [8087](http://localhost:8087) | 31 | | [epicgames-freegames-node](https://github.com/claabs/epicgames-freegames-node) | [3003](http://localhost:3003) | 32 | | [ESPHome](https://esphome.io/) | [6052](http://localhost:6052) | 33 | | [Firebird](https://firebirdsql.org/) | 3050 | 34 | | [free-games-claimer](https://github.com/vogler/free-games-claimer) | [6080](http://localhost:6080) | 35 | | [Gitea](https://about.gitea.com/) | [3004](http://localhost:3004) 222 | 36 | | [Glances](https://nicolargo.github.io/glances/) | [61208](http://localhost:61208) | 37 | | [Grafana-Loki](https://grafana.com/docs/loki/latest/) | [3000](http://localhost:3000) 3100 | 38 | | [Gramps Web](https://www.grampsweb.org/) | [81](http://localhost:81) | 39 | | [Guacamole](https://github.com/jwetzell/docker-guacamole) | [80](http://localhost) | 40 | | [Heimdall](https://heimdall.site/) | [8097](http://localhost:8097) | 41 | | [Home Assistant](https://www.home-assistant.io/) | [8123](http://localhost:8123) | 42 | | [Homepage](https://gethomepage.dev) | [3045](http://localhost:3045) | 43 | | [Homer](https://github.com/bastienwirtz/homer) | [8099](http://localhost:8099) | 44 | | [Immich](https://immich.app/) | [2283](http://localhost:2283) | 45 | | [InfluxDB](https://www.influxdata.com/) | [8086](http://localhost:8086) | 46 | | [IT-Tools](https://it-tools.tech/) | [8095](http://localhost:8095) | 47 | | [JDownloader2](https://jdownloader.org/jdownloader2) | [5800](http://localhost:5800) | 48 | | [Jupyter](https://jupyter.org/) | [8888](http://localhost:8888) | 49 | | [Kavita](https://www.kavitareader.com/) | [5003](http://localhost:5003) | 50 | | [libsql](https://github.com/tursodatabase/libsql) | 5001 8098 | 51 | | [MariaDB](https://mariadb.org/) | 3306 | 52 | | [Mealie](https://mealie.io/) | [9925](http://localhost:9925) | 53 | | [MeTube](https://github.com/alexta69/metube) | [8088](http://localhost:8088) | 54 | | [Monitor](https://docs.monitor.dev/) | [9120](http://localhost:9120) 27017 (mongodb) | 55 | | [moodle](https://hub.docker.com/r/bitnami/moodle) | [8089](http://localhost:8089) | 56 | | [MySpeed](https://github.com/gnmyt/myspeed) | [5216](http://localhost:5216) | 57 | | [MySQL 8](https://www.mysql.com/) | 3308 | 58 | | [Navidrome](https://www.navidrome.org/) | [4533](http://localhost:4533) | 59 | | [NetAlertX](https://github.com/jokob-sk/NetAlertX) | [20211](http://localhost:20211) | 60 | | [NetData](https://www.netdata.cloud/) | [19999](http://localhost:19999) | 61 | | [Nextcloud](https://github.com/nextcloud/docker) | [8080](http://localhost:8080) | 62 | | [nginx](https://hub.docker.com/_/nginx) | [82](http://localhost:82) | 63 | | [Nginx Proxy Manager](https://nginxproxymanager.com/x) | [8181](http://localhost:8181) | 64 | | [Obsidian-LiveSync](https://github.com/vrtmrz/obsidian-livesync) | [5984](http://localhost:5984/_utils/) | 65 | | [Ollama](https://ollama.com/) | [8075 Open WebUI](http://localhost:8075) 11434 Ollama | 66 | | [Olivetin](https://github.com/OliveTin/OliveTin) | [1337](http://localhost:1337) | 67 | | [Organizr](https://docs.organizr.app/) | [8777](http://localhost:8777) | 68 | | [PHPmyAdmin](https://hub.docker.com/_/phpmyadmin) | [8083](http://localhost:8083) | 69 | | [PiHole](https://pi-hole.net/) | [9002](http://localhost:9002) | 70 | | [Pinchflat](https://github.com/kieraneglin/pinchflat) | [8945](http://localhost:8945) | 71 | | [Plex](https://github.com/linuxserver/docker-plex) | [32400](http://localhost:32400) | 72 | | [Portainer](https://www.portainer.io/) | [9000](http://localhost:9000) | 73 | | [PostgreSQL 15](https://www.postgresql.org/) | [5432](http://localhost:5432) | 74 | | [Radarr](https://github.com/linuxserver/docker-radarr) | [7878](http://localhost:7878) | 75 | | [Redis](https://redis.io/) | [6379](http://localhost:6379) | 76 | | [SQLChat](https://github.com/sqlchat/sqlchat) | [3005](http://localhost:3005) | 77 | | [StirlingPDF](https://stirlingtools.com/) | [8092](http://localhost:8092) | 78 | | [Telegraf](https://www.influxdata.com/time-series-platform/telegraf/) | | 79 | | [TinyFileManager](https://tinyfilemanager.github.io/) | [8091](http://localhost:8091) | 80 | | [traefik](https://doc.traefik.io/traefik/) | [8085](http://localhost:8085) 83 444 | 81 | | [Transmission](https://github.com/linuxserver/docker-transmission) | [9091](http://localhost:9091) | 82 | | [Uptime Kuma](https://github.com/louislam/uptime-kuma) | [3001](http://localhost:3001) | 83 | | [Vaultwarden](https://github.com/dani-garcia/vaultwarden) | [8093](http://localhost:8093) | 84 | | [Watchtower](https://containrrr.dev/watchtower/) | | 85 | | [Webtop](https://github.com/linuxserver/docker-webtop) | [3008](http://localhost:3008) [3009](https://localhost:3009) (HTTPS) | 86 | | [Webtrees](https://github.com/fisharebest/webtrees) | [86](http://localhost:86) | 87 | | [Whoami](https://hub.docker.com/r/traefik/whoami) | [84](http://localhost:84) | 88 | | [whoDB](https://github.com/clidey/whodb) | [8082](http://localhost:8082) | 89 | 90 | 91 | ![homepage1](homepage1.jpg) 92 | ![homepage2](homepage2.jpg) 93 | 94 | ## Links 95 | 96 | - [Composerize](https://www.composerize.com/) 97 | - [Kasmweb](https://www.kasmweb.com/) 98 | - [ChristianLempa/boilerplates](https://github.com/ChristianLempa/boilerplates/tree/main/docker-compose) 99 | 100 | - [IOTStack](https://sensorsiot.github.io/IOTstack/) simple tool for creating your own IOT-Services in one Stack 101 | - [Media Stack Tutorial](https://www.reddit.com/r/tutorials/comments/x7azy5/installing_docker_and_a_media_stack_plex_arrs/) 102 | - [ArrStack (Update 8/2024) : r/selfhosted](https://www.reddit.com/r/selfhosted/comments/1ep6uxd/arrstack_update_82024/) 103 | - [Personal self-hosting guide](https://github.com/Yann39/self-hosted) 104 | 105 | - [Awesome Compose](https://github.com/docker/awesome-compose) 106 | - [Awesome Docker Compose Examples](https://github.com/Haxxnet/Compose-Examples) 107 | - [server-compose](https://github.com/carteakey/server-compose) 108 | - [Lissy93/portainer-templates](https://github.com/Lissy93/portainer-templates) 109 | - [ruanbekker/awesome-docker-compose](https://github.com/ruanbekker/awesome-docker-compose) 110 | 111 | * [r/selfhosted](https://www.reddit.com/r/selfhosted/) 112 | * [r/homelab](https://www.reddit.com/r/homelab/) 113 | 114 | ## TODO 115 | - monitor, nginx proxy manager -> Homepage 116 | 117 | -------------------------------------------------------------------------------- /actual/compose.yml: -------------------------------------------------------------------------------- 1 | # https://www.actualbudget.com/ 2 | 3 | # https://github.com/actualbudget/actual/blob/master/packages/sync-server/docker-compose.yml 4 | 5 | # https://demo.actualbudget.org/ 6 | 7 | name: actual 8 | 9 | services: 10 | actual: 11 | image: docker.io/actualbudget/actual-server:latest 12 | container_name: actual 13 | ports: 14 | # This line makes Actual available at port 5006 of the device you run the server on, 15 | # i.e. http://localhost:5006. You can change the first number to change the port, if you want. 16 | - "5006:5006" 17 | environment: 18 | # Uncomment any of the lines below to set configuration options. 19 | # - ACTUAL_HTTPS_KEY=/data/selfhost.key 20 | # - ACTUAL_HTTPS_CERT=/data/selfhost.crt 21 | - ACTUAL_PORT=5006 22 | # - ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB=20 23 | # - ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB=50 24 | # - ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB=20 25 | # See all options and more details at https://actualbudget.github.io/docs/Installing/Configuration 26 | # !! If you are not using any of these options, remove the 'environment:' tag entirely. 27 | volumes: 28 | # Change './actual-data' below to the path to the folder you want Actual to store its data in on your server. 29 | # '/data' is the path Actual will look for its files in by default, so leave that as-is. 30 | - ./actual-data:/data 31 | healthcheck: 32 | # Enable health check for the instance 33 | test: ["CMD-SHELL", "node src/scripts/health-check.js"] 34 | interval: 60s 35 | timeout: 10s 36 | retries: 3 37 | start_period: 20s 38 | restart: unless-stopped 39 | networks: 40 | - proxy 41 | 42 | networks: 43 | proxy: 44 | external: true 45 | -------------------------------------------------------------------------------- /adguard-home/compose.yml: -------------------------------------------------------------------------------- 1 | # https://hub.docker.com/r/adguard/adguardhome 2 | # Network-wide ads & trackers blocking DNS server 3 | 4 | # should not be run at the same time as pihole 5 | name: adguard-home 6 | services: 7 | adguardhome: 8 | container_name: adguard-home 9 | volumes: 10 | - ./work:/opt/adguardhome/work 11 | - ./conf:/opt/adguardhome/conf 12 | ports: 13 | - 53:53/tcp 14 | - 53:53/udp 15 | - 67:67/udp 16 | - 68:68/udp 17 | - 3002:3000 18 | - 8585:80 19 | #- 80:80/tcp 20 | #- 443:443/tcp 21 | #- 443:443/udp 22 | image: adguard/adguardhome 23 | networks: 24 | - proxy 25 | 26 | networks: 27 | proxy: 28 | external: true 29 | -------------------------------------------------------------------------------- /alloy-stack/README.md: -------------------------------------------------------------------------------- 1 | # Grafana-Alloy System Monitoring Stack 2 | 3 | - Alloy: Metrics and Logs collection, pushes to prometheus and loki 4 | - Loki: Logs DB 5 | - Prometheus: Metrics DB 6 | - Grafana: Data Visualisation 7 | 8 | ## Setup 9 | 10 | 1. Run compose 11 | 2. Open [Grafana Dashboard](http://localhost:3000) 12 | 3. Add new prometheus connection: Connections -> Add new Datasource -> search for "prometheus" -> http://prometheus:9090 -> Test & Save 13 | 4. Same for Loki -> http://loki:3100 14 | 15 | Use Drilldown to look through your data 16 | 17 | ## Links 18 | 19 | - https://grafana.com/docs/alloy/latest/ 20 | - https://www.youtube.com/watch?v=E654LPrkCjo 21 | - https://github.com/ChristianLempa/boilerplates/tree/main/docker-compose/alloy 22 | - https://github.com/grafana/alloy-scenarios 23 | -------------------------------------------------------------------------------- /alloy-stack/compose.yml: -------------------------------------------------------------------------------- 1 | name: alloy-stack 2 | 3 | services: 4 | alloy: 5 | image: grafana/alloy:v1.9.2 6 | container_name: alloy 7 | command: 8 | - run 9 | - --server.http.listen-addr=0.0.0.0:12345 10 | - --storage.path=/var/lib/alloy/data 11 | - /etc/alloy/config.alloy 12 | ports: 13 | - 12345:12345 14 | volumes: 15 | - ./config.alloy:/etc/alloy/config.alloy 16 | - alloy_data:/var/lib/alloy/data 17 | - /:/rootfs:ro 18 | - /run:/run:ro 19 | - /var/log:/var/log:ro 20 | - /sys:/sys:ro 21 | - /var/lib/docker/:/var/lib/docker/:ro 22 | - /run/udev/data:/run/udev/data:ro 23 | restart: unless-stopped 24 | grafana: 25 | container_name: grafana 26 | image: grafana/grafana 27 | environment: 28 | - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin 29 | - GF_AUTH_ANONYMOUS_ENABLED=true 30 | - GF_AUTH_BASIC_ENABLED=false 31 | ports: 32 | - 3000:3000/tcp 33 | volumes: 34 | - ./grafana:/etc/grafana/provisioning 35 | extra_hosts: 36 | - "host.docker.internal:host-gateway" 37 | restart: unless-stopped 38 | loki: 39 | container_name: loki 40 | image: docker.io/grafana/loki 41 | command: "-config.file=/etc/loki/config.yaml" 42 | ports: 43 | - 3100:3100 44 | volumes: 45 | - ./loki/config.yaml:/etc/loki/config.yaml:ro 46 | - data_loki:/loki:rw 47 | restart: unless-stopped 48 | prometheus: 49 | image: docker.io/prom/prometheus 50 | container_name: prometheus 51 | ports: 52 | - 9090:9090 53 | command: "--config.file=/etc/prometheus/prometheus.yaml --web.enable-remote-write-receiver" 54 | volumes: 55 | - ./prometheus/prometheus.yaml:/etc/prometheus/prometheus.yaml:ro 56 | - prometheus-data:/prometheus 57 | restart: unless-stopped 58 | 59 | volumes: 60 | alloy_data: 61 | driver: local 62 | data_loki: 63 | driver: local 64 | prometheus-data: 65 | driver: local 66 | -------------------------------------------------------------------------------- /alloy-stack/config.alloy: -------------------------------------------------------------------------------- 1 | /* Grafana Alloy Configuration Examples 2 | * --- 3 | * LINK: For more details, visit https://github.com/grafana/alloy-scenarios 4 | */ 5 | 6 | // SECTION: TARGETS 7 | 8 | loki.write "default" { 9 | endpoint { 10 | url = "http://loki:3100/loki/api/v1/push" 11 | } 12 | external_labels = {} 13 | } 14 | 15 | prometheus.remote_write "default" { 16 | endpoint { 17 | url = "http://prometheus:9090/api/v1/write" 18 | } 19 | } 20 | 21 | // !SECTION 22 | 23 | // SECTION: SYSTEM LOGS & JOURNAL 24 | 25 | 26 | local.file_match "system" { 27 | path_targets = [{ 28 | __address__ = "localhost", 29 | __path__ = "/var/log/{syslog,messages,*.log}", 30 | instance = constants.hostname, 31 | job = string.format("%s-logs", constants.hostname), 32 | }] 33 | } 34 | 35 | discovery.relabel "journal" { 36 | targets = [] 37 | rule { 38 | source_labels = ["__journal__systemd_unit"] 39 | target_label = "unit" 40 | } 41 | rule { 42 | source_labels = ["__journal__boot_id"] 43 | target_label = "boot_id" 44 | } 45 | rule { 46 | source_labels = ["__journal__transport"] 47 | target_label = "transport" 48 | } 49 | rule { 50 | source_labels = ["__journal_priority_keyword"] 51 | target_label = "level" 52 | } 53 | } 54 | 55 | loki.source.file "system" { 56 | targets = local.file_match.system.targets 57 | forward_to = [loki.write.default.receiver] 58 | } 59 | 60 | // !SECTION 61 | 62 | // SECTION: SYSTEM METRICS 63 | 64 | discovery.relabel "metrics" { 65 | targets = prometheus.exporter.unix.metrics.targets 66 | rule { 67 | target_label = "instance" 68 | replacement = constants.hostname 69 | } 70 | rule { 71 | target_label = "job" 72 | replacement = string.format("%s-metrics", constants.hostname) 73 | } 74 | } 75 | 76 | prometheus.exporter.unix "metrics" { 77 | disable_collectors = ["ipvs", "btrfs", "infiniband", "xfs", "zfs"] 78 | enable_collectors = ["meminfo"] 79 | filesystem { 80 | fs_types_exclude = "^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|tmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$" 81 | mount_points_exclude = "^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+)($|/)" 82 | mount_timeout = "5s" 83 | } 84 | netclass { 85 | ignored_devices = "^(veth.*|cali.*|[a-f0-9]{15})$" 86 | } 87 | netdev { 88 | device_exclude = "^(veth.*|cali.*|[a-f0-9]{15})$" 89 | } 90 | } 91 | 92 | prometheus.scrape "metrics" { 93 | scrape_interval = "15s" 94 | targets = discovery.relabel.metrics.output 95 | forward_to = [prometheus.remote_write.default.receiver] 96 | } 97 | 98 | // !SECTION 99 | 100 | // SECTION: DOCKER METRICS 101 | 102 | prometheus.exporter.cadvisor "dockermetrics" { 103 | docker_host = "unix:///var/run/docker.sock" 104 | storage_duration = "5m" 105 | } 106 | 107 | prometheus.scrape "dockermetrics" { 108 | targets = prometheus.exporter.cadvisor.dockermetrics.targets 109 | forward_to = [ prometheus.remote_write.default.receiver ] 110 | scrape_interval = "10s" 111 | } 112 | 113 | //!SECTION 114 | 115 | // SECTION: DOCKER LOGS 116 | 117 | discovery.docker "dockerlogs" { 118 | host = "unix:///var/run/docker.sock" 119 | } 120 | 121 | discovery.relabel "dockerlogs" { 122 | targets = [] 123 | 124 | rule { 125 | source_labels = ["__meta_docker_container_name"] 126 | regex = "/(.*)" 127 | target_label = "service_name" 128 | } 129 | 130 | } 131 | 132 | loki.source.docker "default" { 133 | host = "unix:///var/run/docker.sock" 134 | targets = discovery.docker.dockerlogs.targets 135 | labels = {"platform" = "docker"} 136 | relabel_rules = discovery.relabel.dockerlogs.rules 137 | forward_to = [loki.write.default.receiver] 138 | } 139 | 140 | // !SECTION 141 | 142 | // #################################### 143 | // Windows Server Metrics Configuration 144 | // #################################### 145 | 146 | prometheus.exporter.windows "default" { 147 | enabled_collectors = ["cpu","cs","logical_disk","net","os","service","system", "memory", "scheduled_task", "tcp"] 148 | } 149 | 150 | // Configure a prometheus.scrape component to collect windows metrics. 151 | prometheus.scrape "example" { 152 | targets = prometheus.exporter.windows.default.targets 153 | forward_to = [prometheus.remote_write.demo.receiver] 154 | } 155 | 156 | prometheus.remote_write "demo" { 157 | endpoint { 158 | url = "http://prometheus:9090/api/v1/write" 159 | } 160 | } 161 | 162 | // #################################### 163 | // Windows Server Logs Configuration 164 | // #################################### 165 | 166 | loki.source.windowsevent "application" { 167 | eventlog_name = "Application" 168 | use_incoming_timestamp = true 169 | forward_to = [loki.process.endpoint.receiver] 170 | } 171 | 172 | loki.source.windowsevent "System" { 173 | eventlog_name = "System" 174 | use_incoming_timestamp = true 175 | forward_to = [loki.process.endpoint.receiver] 176 | } 177 | 178 | loki.process "endpoint" { 179 | forward_to = [loki.write.endpoint.receiver] 180 | stage.json { 181 | expressions = { 182 | message = "", 183 | Overwritten = "", 184 | source = "", 185 | computer = "", 186 | eventRecordID = "", 187 | channel = "", 188 | component_id = "", 189 | execution_processId = "", 190 | execution_processName = "", 191 | } 192 | } 193 | 194 | stage.structured_metadata { 195 | values = { 196 | "eventRecordID" = "", 197 | "channel" = "", 198 | "component_id" = "", 199 | "execution_processId" = "", 200 | "execution_processName" = "", 201 | } 202 | } 203 | 204 | stage.eventlogmessage { 205 | source = "message" 206 | overwrite_existing = true 207 | } 208 | 209 | stage.labels { 210 | values = { 211 | "service_name" = "source", 212 | } 213 | } 214 | 215 | stage.output { 216 | source = "message" 217 | } 218 | 219 | } 220 | 221 | 222 | loki.write "endpoint" { 223 | endpoint { 224 | url ="http://loki:3100/loki/api/v1/push" 225 | } 226 | } 227 | 228 | livedebugging{} 229 | -------------------------------------------------------------------------------- /alloy-stack/loki/config.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | auth_enabled: false 3 | 4 | server: 5 | http_listen_port: 3100 6 | 7 | common: 8 | instance_addr: 127.0.0.1 9 | path_prefix: /loki 10 | storage: 11 | filesystem: 12 | chunks_directory: /loki/chunks 13 | rules_directory: /loki/rules 14 | replication_factor: 1 15 | ring: 16 | kvstore: 17 | store: inmemory 18 | 19 | schema_config: 20 | configs: 21 | - from: 2020-10-24 22 | store: tsdb 23 | object_store: filesystem 24 | schema: v13 25 | index: 26 | prefix: index_ 27 | period: 24h 28 | 29 | ruler: 30 | alertmanager_url: http://localhost:9093 31 | -------------------------------------------------------------------------------- /alloy-stack/prometheus/prometheus.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | global: 3 | scrape_interval: 15s # By default, scrape targets every 15 seconds. 4 | 5 | # Attach these labels to any time series or alerts when communicating with 6 | # external systems (federation, remote storage, Alertmanager). 7 | # external_labels: 8 | # monitor: 'codelab-monitor' 9 | 10 | # A scrape configuration containing exactly one endpoint to scrape: 11 | # Here it's Prometheus itself. 12 | scrape_configs: 13 | # The job name is added as a label `job=` to any timeseries scraped from this config. 14 | - job_name: "prometheus" 15 | # Override the global default and scrape targets from this job every 5 seconds. 16 | scrape_interval: 5s 17 | static_configs: 18 | - targets: ["localhost:9090"] 19 | # Example job for node_exporter 20 | # - job_name: 'node_exporter' 21 | # static_configs: 22 | # - targets: ['node_exporter:9100'] 23 | 24 | # Example job for cadvisor 25 | # - job_name: 'cadvisor' 26 | # static_configs: 27 | # - targets: ['cadvisor:8080'] 28 | -------------------------------------------------------------------------------- /alloy/compose.yml: -------------------------------------------------------------------------------- 1 | # 2 | 3 | # 4 | 5 | name: alloy 6 | 7 | services: 8 | alloy: 9 | image: grafana/alloy:v1.9.2 10 | container_name: alloy 11 | command: 12 | - run 13 | - --server.http.listen-addr=0.0.0.0:12345 14 | - --storage.path=/var/lib/alloy/data 15 | - /etc/alloy/config.alloy 16 | ports: 17 | - "12345:12345" 18 | volumes: 19 | - ./config.alloy:/etc/alloy/config.alloy 20 | - alloy_data:/var/lib/alloy/data 21 | - /:/rootfs:ro 22 | - /run:/run:ro 23 | - /var/log:/var/log:ro 24 | - /sys:/sys:ro 25 | - /var/lib/docker/:/var/lib/docker/:ro 26 | - /run/udev/data:/run/udev/data:ro 27 | restart: unless-stopped 28 | networks: 29 | - proxy 30 | 31 | volumes: 32 | alloy_data: 33 | driver: local 34 | 35 | 36 | networks: 37 | proxy: 38 | external: true 39 | -------------------------------------------------------------------------------- /alloy/config.alloy: -------------------------------------------------------------------------------- 1 | /* Grafana Alloy Configuration Examples 2 | * --- 3 | * LINK: For more details, visit https://github.com/grafana/alloy-scenarios 4 | */ 5 | 6 | // SECTION: TARGETS 7 | 8 | loki.write "default" { 9 | endpoint { 10 | url = "http://loki:3100/loki/api/v1/push" 11 | } 12 | external_labels = {} 13 | } 14 | 15 | prometheus.remote_write "default" { 16 | endpoint { 17 | url = "http://prometheus:9090/api/v1/write" 18 | } 19 | } 20 | 21 | // !SECTION 22 | 23 | // SECTION: SYSTEM LOGS & JOURNAL 24 | 25 | 26 | local.file_match "system" { 27 | path_targets = [{ 28 | __address__ = "localhost", 29 | __path__ = "/var/log/{syslog,messages,*.log}", 30 | instance = constants.hostname, 31 | job = string.format("%s-logs", constants.hostname), 32 | }] 33 | } 34 | 35 | discovery.relabel "journal" { 36 | targets = [] 37 | rule { 38 | source_labels = ["__journal__systemd_unit"] 39 | target_label = "unit" 40 | } 41 | rule { 42 | source_labels = ["__journal__boot_id"] 43 | target_label = "boot_id" 44 | } 45 | rule { 46 | source_labels = ["__journal__transport"] 47 | target_label = "transport" 48 | } 49 | rule { 50 | source_labels = ["__journal_priority_keyword"] 51 | target_label = "level" 52 | } 53 | } 54 | 55 | loki.source.file "system" { 56 | targets = local.file_match.system.targets 57 | forward_to = [loki.write.default.receiver] 58 | } 59 | 60 | // !SECTION 61 | 62 | // SECTION: SYSTEM METRICS 63 | 64 | discovery.relabel "metrics" { 65 | targets = prometheus.exporter.unix.metrics.targets 66 | rule { 67 | target_label = "instance" 68 | replacement = constants.hostname 69 | } 70 | rule { 71 | target_label = "job" 72 | replacement = string.format("%s-metrics", constants.hostname) 73 | } 74 | } 75 | 76 | prometheus.exporter.unix "metrics" { 77 | disable_collectors = ["ipvs", "btrfs", "infiniband", "xfs", "zfs"] 78 | enable_collectors = ["meminfo"] 79 | filesystem { 80 | fs_types_exclude = "^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|tmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$" 81 | mount_points_exclude = "^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+)($|/)" 82 | mount_timeout = "5s" 83 | } 84 | netclass { 85 | ignored_devices = "^(veth.*|cali.*|[a-f0-9]{15})$" 86 | } 87 | netdev { 88 | device_exclude = "^(veth.*|cali.*|[a-f0-9]{15})$" 89 | } 90 | } 91 | 92 | prometheus.scrape "metrics" { 93 | scrape_interval = "15s" 94 | targets = discovery.relabel.metrics.output 95 | forward_to = [prometheus.remote_write.default.receiver] 96 | } 97 | 98 | // !SECTION 99 | 100 | // SECTION: DOCKER METRICS 101 | 102 | prometheus.exporter.cadvisor "dockermetrics" { 103 | docker_host = "unix:///var/run/docker.sock" 104 | storage_duration = "5m" 105 | } 106 | 107 | prometheus.scrape "dockermetrics" { 108 | targets = prometheus.exporter.cadvisor.dockermetrics.targets 109 | forward_to = [ prometheus.remote_write.default.receiver ] 110 | scrape_interval = "10s" 111 | } 112 | 113 | //!SECTION 114 | 115 | // SECTION: DOCKER LOGS 116 | 117 | discovery.docker "dockerlogs" { 118 | host = "unix:///var/run/docker.sock" 119 | } 120 | 121 | discovery.relabel "dockerlogs" { 122 | targets = [] 123 | 124 | rule { 125 | source_labels = ["__meta_docker_container_name"] 126 | regex = "/(.*)" 127 | target_label = "service_name" 128 | } 129 | 130 | } 131 | 132 | loki.source.docker "default" { 133 | host = "unix:///var/run/docker.sock" 134 | targets = discovery.docker.dockerlogs.targets 135 | labels = {"platform" = "docker"} 136 | relabel_rules = discovery.relabel.dockerlogs.rules 137 | forward_to = [loki.write.default.receiver] 138 | } 139 | 140 | // !SECTION -------------------------------------------------------------------------------- /alpine/compose.yml: -------------------------------------------------------------------------------- 1 | # https://hub.docker.com/_/alpine 2 | 3 | # Alpine Linux⁠ is a Linux distribution built around musl libc⁠ and BusyBox⁠. 4 | # The image is only 5 MB in size and has access to a package repository⁠ that is much more complete than other BusyBox based images. 5 | # This makes Alpine Linux a great image base for utilities and even production applications. 6 | 7 | name: alpine 8 | services: 9 | alpine: 10 | stdin_open: true 11 | tty: true 12 | container_name: alpine 13 | image: alpine 14 | command: ash 15 | networks: 16 | - proxy 17 | 18 | networks: 19 | proxy: 20 | external: true 21 | -------------------------------------------------------------------------------- /audiobookshelf/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/advplyr/audiobookshelf 2 | # https://www.audiobookshelf.org/ 3 | 4 | # Audiobookshelf is a self-hosted audiobook and podcast server. 5 | name: audiobookshelf 6 | services: 7 | audiobookshelf: 8 | container_name: "audiobookshelf" 9 | image: "ghcr.io/advplyr/audiobookshelf:latest" 10 | ports: 11 | - "8065:80" 12 | restart: "unless-stopped" 13 | volumes: 14 | - ./metadata:/metadata 15 | - ./config:/config 16 | - ./audiobooks:/audiobooks 17 | - ./podcasts:/podcasts 18 | networks: 19 | - proxy 20 | 21 | networks: 22 | proxy: 23 | external: 24 | true 25 | -------------------------------------------------------------------------------- /authentik/compose.yml: -------------------------------------------------------------------------------- 1 | # https://goauthentik.io/ 2 | 3 | # secure and flexible solution for managing your identity needs. It covers both B2B and B2C use cases, supports various protocols and workflows, and lets you own your data and control your infrastructure. 4 | # To start the initial setup, navigate to http://:9000/if/flow/initial-setup/. 5 | 6 | name: authentik 7 | 8 | services: 9 | postgres: 10 | image: docker.io/library/postgres:16.3 11 | container_name: authentik-db 12 | environment: 13 | - POSTGRES_USER=${POSTGRES_USER:-authentik} 14 | - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-authentik} 15 | - POSTGRES_DB=${POSTGRES_DB:-authentik} 16 | - TZ=${TZ:-UTC} 17 | healthcheck: 18 | test: 19 | [ 20 | 'CMD-SHELL', 21 | 'pg_isready -U "${POSTGRES_USER:-authentik}"' 22 | ] 23 | start_period: 30s 24 | interval: 10s 25 | timeout: 10s 26 | retries: 5 27 | volumes: 28 | - postgres_data:/var/lib/postgresql/data 29 | restart: unless-stopped 30 | networks: 31 | - proxy 32 | redis: 33 | image: docker.io/library/redis:7.2.5 34 | container_name: authentik-redis 35 | command: --save 60 1 --loglevel warning 36 | healthcheck: 37 | test: [ "CMD-SHELL", "redis-cli ping | grep PONG" ] 38 | start_period: 20s 39 | interval: 30s 40 | retries: 5 41 | timeout: 3s 42 | volumes: 43 | - redis_data:/data 44 | restart: unless-stopped 45 | networks: 46 | - proxy 47 | server: 48 | image: ghcr.io/goauthentik/server:2024.6.1 49 | container_name: authentik-server 50 | command: server 51 | environment: 52 | - AUTHENTIK_REDIS__HOST=authentik-redis 53 | - AUTHENTIK_POSTGRESQL__HOST=authentik-db 54 | - AUTHENTIK_POSTGRESQL__USER=${POSTGRES_USER:-authentik} 55 | - AUTHENTIK_POSTGRESQL__NAME=${POSTGRES_DB:-authentik} 56 | - AUTHENTIK_POSTGRESQL__PASSWORD=${POSTGRES_PASSWORD:-authentik} 57 | # (Required) To generate a secret key run the following command: 58 | # echo $(openssl rand -base64 32) 59 | - AUTHENTIK_SECRET_KEY=MbcOqluK2LVkGtM9zI111PQSaGnqZvYEFnwf8EL8raA= 60 | # (Optional) Enable Error Reporting 61 | # - AUTHENTIK_ERROR_REPORTING__ENABLED=${AUTHENTIK_ERROR_REPORTING:-false} 62 | # (Optional) Enable Email Sending 63 | # - AUTHENTIK_EMAIL__HOST=${EMAIL_HOST:?error} 64 | # - AUTHENTIK_EMAIL__PORT=${EMAIL_PORT:-25} 65 | # - AUTHENTIK_EMAIL__USERNAME=${EMAIL_USERNAME:?error} 66 | # - AUTHENTIK_EMAIL__PASSWORD=${EMAIL_PASSWORD:?error} 67 | # - AUTHENTIK_EMAIL__USE_TLS=${EMAIL_USE_TLS:-false} 68 | # - AUTHENTIK_EMAIL__USE_SSL=${EMAIL_USE_SSL:-false} 69 | # - AUTHENTIK_EMAIL__TIMEOUT=${EMAIL_TIMEOUT:-10} 70 | # - AUTHENTIK_EMAIL__FROM=${EMAIL_FROM:?error} 71 | ports: 72 | - 9001:9000 73 | - 9443:9443 74 | volumes: 75 | - ./media:/media 76 | - ./custom-templates:/templates 77 | depends_on: 78 | - postgres 79 | - redis 80 | restart: unless-stopped 81 | networks: 82 | - proxy 83 | worker: 84 | image: ghcr.io/goauthentik/server:2024.6.1 85 | container_name: authentik-worker 86 | command: worker 87 | environment: 88 | - AUTHENTIK_REDIS__HOST=authentik-redis 89 | - AUTHENTIK_POSTGRESQL__HOST=authentik-db 90 | - AUTHENTIK_POSTGRESQL__USER=${POSTGRES_USER:-authentik} 91 | - AUTHENTIK_POSTGRESQL__NAME=${POSTGRES_DB:-authentik} 92 | - AUTHENTIK_POSTGRESQL__PASSWORD=${POSTGRES_PASSWORD:-authentik} 93 | # (Required) To generate a secret key run the following command: 94 | # echo $(openssl rand -base64 32) 95 | - AUTHENTIK_SECRET_KEY=MbcOqluK2LVkGtM9zI111PQSaGnqZvYEFnwf8EL8raA= 96 | # (Optional) Enable Error Reporting 97 | # - AUTHENTIK_ERROR_REPORTING__ENABLED=${AUTHENTIK_ERROR_REPORTING:-false} 98 | # (Optional) Enable Email Sending 99 | # - AUTHENTIK_EMAIL__HOST=${EMAIL_HOST:?error} 100 | # - AUTHENTIK_EMAIL__PORT=${EMAIL_PORT:-25} 101 | # - AUTHENTIK_EMAIL__USERNAME=${EMAIL_USERNAME:?error} 102 | # - AUTHENTIK_EMAIL__PASSWORD=${EMAIL_PASSWORD:?error} 103 | # - AUTHENTIK_EMAIL__USE_TLS=${EMAIL_USE_TLS:-false} 104 | # - AUTHENTIK_EMAIL__USE_SSL=${EMAIL_USE_SSL:-false} 105 | # - AUTHENTIK_EMAIL__TIMEOUT=${EMAIL_TIMEOUT:-10} 106 | # - AUTHENTIK_EMAIL__FROM=${EMAIL_FROM:?error} 107 | # (Optional) When using the docker socket integration 108 | # See more for the docker socket integration here: 109 | # https://goauthentik.io/docs/outposts/integrations/docker 110 | # user: root 111 | volumes: 112 | # (Optional) When using the docker socket integration 113 | # - /run/docker.sock:/run/docker.sock 114 | - ./media:/media 115 | - ./certs:/certs 116 | - ./custom-templates:/templates 117 | depends_on: 118 | - postgres 119 | - redis 120 | restart: unless-stopped 121 | networks: 122 | - proxy 123 | 124 | networks: 125 | proxy: 126 | external: true 127 | 128 | volumes: 129 | postgres_data: 130 | driver: local 131 | redis_data: 132 | driver: local 133 | -------------------------------------------------------------------------------- /backrest/compose.yml: -------------------------------------------------------------------------------- 1 | # 2 | 3 | # https://github.com/garethgeorge/backrest 4 | 5 | name: backrest 6 | 7 | services: 8 | backrest: 9 | image: garethgeorge/backrest:latest 10 | container_name: backrest 11 | volumes: 12 | - ./backrest/data:/data 13 | - ./backrest/config:/config 14 | - ./backrest/cache:/cache 15 | - ./backrest/tmp:/tmp 16 | - ./backup/data:/userdata # Mount local paths to backup 17 | - ./repos:/repos # Mount local repos (optional for remote storage) 18 | environment: 19 | - BACKREST_DATA=/data 20 | - BACKREST_CONFIG=/config/config.json 21 | - XDG_CACHE_HOME=/cache 22 | - TMPDIR=/tmp 23 | - TZ=Europe/Vienna 24 | ports: 25 | - "9898:9898" 26 | restart: unless-stopped 27 | networks: 28 | - proxy 29 | 30 | networks: 31 | proxy: 32 | external: true 33 | -------------------------------------------------------------------------------- /cadvisor/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/google/cadvisor 2 | 3 | # provides container users an understanding of the resource usage and performance characteristics of their running containers 4 | 5 | name: cadvisor 6 | services: 7 | cadvisor: 8 | image: gcr.io/cadvisor/cadvisor:v0.50.0 9 | container_name: cadvisor 10 | ports: 11 | - 8096:8080 12 | volumes: 13 | #- /var/run/docker.sock:/var/run/docker.sock 14 | - /:/rootfs:ro 15 | - /run:/run:ro 16 | - /sys:/sys:ro 17 | - /var/lib/docker/:/var/lib/docker:ro 18 | - /dev/disk/:/dev/disk:ro 19 | devices: 20 | - /dev/kmsg 21 | privileged: true 22 | networks: 23 | - proxy 24 | 25 | networks: 26 | proxy: 27 | external: true 28 | -------------------------------------------------------------------------------- /cloudcmd/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # https://cloudcmd.io/ 2 | 3 | version: '2' 4 | 5 | name: cloudcmd-stack 6 | 7 | services: 8 | cloudcmd: 9 | container_name: cloudcmd 10 | ports: 11 | - 8000:8000 12 | volumes: 13 | - ~:/root 14 | - /:/mnt/fs 15 | image: coderaiser/cloudcmd 16 | networks: 17 | - proxy 18 | 19 | networks: 20 | proxy: 21 | external: true 22 | -------------------------------------------------------------------------------- /code-server/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/linuxserver/docker-code-server 2 | 3 | name: code-server 4 | services: 5 | code-server: 6 | image: lscr.io/linuxserver/code-server:latest 7 | container_name: code-server 8 | environment: 9 | - PUID=1000 10 | - PGID=1000 11 | - TZ=Europe/Vienna 12 | - PASSWORD=password #optional 13 | - HASHED_PASSWORD= #optional 14 | - SUDO_PASSWORD=password #optional 15 | - SUDO_PASSWORD_HASH= #optional 16 | #- PROXY_DOMAIN=code-server.my.domain #optional 17 | - DEFAULT_WORKSPACE=/config/workspace #optional 18 | volumes: 19 | - ./config:/config 20 | - ~:/files 21 | ports: 22 | - 8443:8443 23 | restart: unless-stopped 24 | networks: 25 | - proxy 26 | 27 | networks: 28 | proxy: 29 | external: true 30 | -------------------------------------------------------------------------------- /cup/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/sergi0g/cup 2 | 3 | # 4 | 5 | name: cup 6 | 7 | services: 8 | cup: 9 | image: ghcr.io/sergi0g/cup:latest 10 | container_name: cup # Optional 11 | restart: unless-stopped 12 | command: -c /config/cup.json serve 13 | ports: 14 | - 8000:8000 15 | volumes: 16 | - /var/run/docker.sock:/var/run/docker.sock 17 | - ./config:/config 18 | networks: 19 | - proxy 20 | 21 | networks: 22 | proxy: 23 | external: true 24 | -------------------------------------------------------------------------------- /cup/config/cup.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /cyberchef/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/gchq/CyberChef 2 | # https://cyberchef.org/ 3 | # Cyber Swiss Army Knife 4 | # CyberChef is a simple, intuitive web app for carrying out all manner of "cyber" operations within a web browser. These operations include simple encoding like XOR and Base64, more complex encryption like AES, DES and Blowfish, creating binary and hexdumps, compression and decompression of data, calculating hashes and checksums, IPv6 and X.509 parsing, changing character encodings, and much more 5 | 6 | name: cyberchef 7 | 8 | services: 9 | cyberchef: 10 | container_name: cyberchef 11 | image: ghcr.io/gchq/cyberchef:latest 12 | ports: 13 | - 8094:80 14 | networks: 15 | - proxy 16 | 17 | networks: 18 | proxy: 19 | external: true 20 | -------------------------------------------------------------------------------- /databases/compose.yml: -------------------------------------------------------------------------------- 1 | name: databases 2 | 3 | volumes: 4 | mysql8: 5 | cockroachdb: 6 | firebird: 7 | 8 | 9 | services: 10 | mysql8: 11 | container_name: mysql8 12 | image: mysql:8.0.21 13 | command: --default-authentication-plugin=mysql_native_password 14 | restart: always 15 | environment: 16 | MYSQL_ROOT_PASSWORD: example 17 | MYSQL_DATABASE: test 18 | ports: 19 | - 3308:3306 20 | volumes: 21 | - mysql8:/var/lib/mysql 22 | - ./dev/docker_mysql_init:/docker-entrypoint-initdb.d 23 | networks: 24 | - proxy 25 | cockroachdb: 26 | container_name: cockroachdb 27 | image: cockroachdb/cockroach:v22.1.1 28 | volumes: 29 | - cockroachdb:/cockroach/cockroach-data 30 | ports: 31 | - 26257:26257 32 | command: start-single-node --insecure 33 | networks: 34 | - proxy 35 | # use keyspace; describe tables; # get all the tables for a specific keyspace 36 | # select * from system_schema.keyspaces; # gets all keyspaces 37 | # https://www.folkstalk.com/2022/09/get-all-keyspaces-in-cassandra-with-code-examples.html 38 | # Create keyspace https://www.tutorialspoint.com/cassandra/cassandra_create_keyspace.htm 39 | firebird: 40 | container_name: firebird 41 | image: jacobalberty/firebird:v4.0.1 42 | volumes: 43 | - ./dev/docker_firebird:/docker_init 44 | ports: 45 | - 3050:3050 46 | environment: 47 | - ISC_PASSWORD=masterkey 48 | - EnableLegacyClientAuth=true 49 | command: sh -c 'chmod +x /docker_init/entrypoint.sh; /docker_init/entrypoint.sh & /usr/local/firebird/docker-entrypoint.sh firebird;' 50 | networks: 51 | - proxy 52 | libsql: 53 | container_name: libsql 54 | image: ghcr.io/tursodatabase/libsql-server:latest 55 | platform: linux/amd64 56 | ports: 57 | - 8098:8080 58 | - 5001:5001 59 | # environment: 60 | # - SQLD_NODE=primary 61 | # volumes: 62 | # - ./dev/docker_libsql:/var/lib/sqld 63 | networks: 64 | - proxy 65 | 66 | networks: 67 | proxy: 68 | external: true 69 | -------------------------------------------------------------------------------- /dawarich/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/Freika/dawarich 2 | # https://demo.dawarich.app/ 3 | 4 | # import your location history from Google Maps Timeline and Owntracks, view it on a map and see some statistics, such as the number of countries and cities visited, and distance traveled 5 | 6 | # Default credentials user@domain.com/password 7 | 8 | name: dawarich 9 | 10 | services: 11 | redis: 12 | image: redis:7.0-alpine 13 | command: redis-server 14 | container_name: redis 15 | volumes: 16 | - shared_data:/var/shared/redis 17 | networks: 18 | - proxy 19 | postgres14: 20 | image: postgres:14.2-alpine 21 | container_name: postgres14 22 | volumes: 23 | - db_data:/var/lib/postgresql/data 24 | - shared_data:/var/shared 25 | environment: 26 | POSTGRES_USER: postgres 27 | POSTGRES_PASSWORD: password 28 | networks: 29 | - proxy 30 | dawarich: 31 | image: freikin/dawarich:latest 32 | container_name: dawarich 33 | volumes: 34 | - gem_cache:/usr/local/bundle/gems 35 | - public:/var/app/public 36 | ports: 37 | - 3007:3000 38 | stdin_open: true 39 | tty: true 40 | entrypoint: dev-entrypoint.sh 41 | command: [ 'bin/dev' ] 42 | restart: on-failure 43 | environment: 44 | RAILS_ENV: development 45 | REDIS_URL: redis://redis:6379/0 46 | DATABASE_HOST: postgres14 47 | DATABASE_USERNAME: postgres 48 | DATABASE_PASSWORD: password 49 | DATABASE_NAME: dawarich 50 | MIN_MINUTES_SPENT_IN_CITY: 60 51 | APPLICATION_HOST: localhost 52 | APPLICATION_HOSTS: localhost 53 | TIME_ZONE: Europe/Vienna 54 | APPLICATION_PROTOCOL: http 55 | logging: 56 | driver: "json-file" 57 | options: 58 | max-size: "100m" 59 | max-file: "5" 60 | depends_on: 61 | - postgres14 62 | - redis 63 | networks: 64 | - proxy 65 | sidekiq: 66 | image: freikin/dawarich:latest 67 | container_name: sidekiq 68 | volumes: 69 | - gem_cache:/usr/local/bundle/gems 70 | - public:/var/app/public 71 | stdin_open: true 72 | tty: true 73 | entrypoint: dev-entrypoint.sh 74 | command: [ 'sidekiq' ] 75 | restart: on-failure 76 | environment: 77 | RAILS_ENV: development 78 | REDIS_URL: redis://redis:6379/0 79 | DATABASE_HOST: postgres14 80 | DATABASE_USERNAME: postgres 81 | DATABASE_PASSWORD: password 82 | DATABASE_NAME: dawarich 83 | APPLICATION_HOST: localhost 84 | APPLICATION_HOSTS: localhost 85 | BACKGROUND_PROCESSING_CONCURRENCY: 10 86 | APPLICATION_PROTOCOL: http 87 | logging: 88 | driver: "json-file" 89 | options: 90 | max-size: "100m" 91 | max-file: "5" 92 | depends_on: 93 | - postgres14 94 | - redis 95 | - dawarich 96 | networks: 97 | - proxy 98 | 99 | networks: 100 | proxy: 101 | external: true 102 | 103 | volumes: 104 | db_data: 105 | gem_cache: 106 | shared_data: 107 | public: 108 | -------------------------------------------------------------------------------- /dockge/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/louislam/dockge 2 | 3 | # A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager. 4 | 5 | name: dockge 6 | 7 | services: 8 | dockge: 9 | image: louislam/dockge:1 10 | container_name: dockge 11 | ports: 12 | - 5002:5001 13 | volumes: 14 | - /var/run/docker.sock:/var/run/docker.sock 15 | - ./data:/app/data 16 | # Stacks Directory 17 | # ⚠️ READ IT CAREFULLY. If you did it wrong, your data could end up writing into a WRONG PATH. 18 | # ⚠️ 1. FULL path only. No relative path (MUST) 19 | # ⚠️ 2. Left Stacks Path === Right Stacks Path (MUST) 20 | - ./stacks:/opt/stacks 21 | environment: 22 | # Tell Dockge where to find the stacks 23 | - DOCKGE_STACKS_DIR=/opt/stacks 24 | networks: 25 | - proxy 26 | 27 | networks: 28 | proxy: 29 | external: true 30 | -------------------------------------------------------------------------------- /dozzle/compose.yml: -------------------------------------------------------------------------------- 1 | # https://dozzle.dev/ 2 | 3 | # Real-time logging and monitoring for Docker in the browser 4 | 5 | name: dozzle 6 | 7 | services: 8 | dozzle: 9 | image: amir20/dozzle:latest 10 | container_name: dozzle 11 | volumes: 12 | - /var/run/docker.sock:/var/run/docker.sock 13 | ports: 14 | - 8087:8080 15 | networks: 16 | - proxy 17 | 18 | networks: 19 | proxy: 20 | external: true 21 | -------------------------------------------------------------------------------- /dummy/compose.yml: -------------------------------------------------------------------------------- 1 | # 2 | 3 | # 4 | 5 | name: 6 | 7 | services: 8 | 9 | networks: 10 | - proxy 11 | 12 | networks: 13 | proxy: 14 | external: true 15 | -------------------------------------------------------------------------------- /easyapointments/compose.yml: -------------------------------------------------------------------------------- 1 | # https://easyappointments.org/ 2 | 3 | name: easyappointments 4 | services: 5 | easyapointments: 6 | container_name: easyappointments 7 | image: alextselegidis/easyappointments:latest 8 | restart: always 9 | ports: 10 | - "8990:80" 11 | environment: 12 | - BASE_URL=http://localhost 13 | - DEBUG_MODE=TRUE 14 | - DB_HOST=mysql 15 | - DB_NAME=easyappointments 16 | - DB_USERNAME=root 17 | - DB_PASSWORD=secret 18 | volumes: 19 | - easyappointments:/var/www/html 20 | networks: 21 | - proxy 22 | 23 | mysql: 24 | container_name: mysql-easyappointments 25 | image: mysql:8.0 26 | restart: always 27 | environment: 28 | - MYSQL_ROOT_PASSWORD=secret 29 | - MYSQL_DATABASE=easyappointments 30 | volumes: 31 | - mysql:/var/lib/mysql 32 | networks: 33 | - proxy 34 | 35 | networks: 36 | proxy: 37 | external: true 38 | 39 | volumes: 40 | easyappointments: 41 | mysql: 42 | -------------------------------------------------------------------------------- /epicgames-freegames-node/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/claabs/epicgames-freegames-node 2 | # Automatically login and find available free games the Epic Games Store. Sends you a prepopulated checkout link so you can complete the checkout after logging in 3 | 4 | name: epicgames-freegames-node 5 | services: 6 | epicgames-freegames-node: 7 | container_name: epicgames-freegames-node 8 | volumes: 9 | - ./config:/usr/app/config:rw 10 | ports: 11 | - 3003:3000 12 | deploy: 13 | resources: 14 | limits: 15 | memory: 2g 16 | image: ghcr.io/claabs/epicgames-freegames-node:latest 17 | networks: 18 | - proxy 19 | 20 | networks: 21 | proxy: 22 | external: true 23 | -------------------------------------------------------------------------------- /epicgames-freegames-node/config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "cronSchedule": "0 0,6,12,18 * * *", 3 | "blacklistedGames": [], 4 | "searchStrategy": "all", 5 | "runOnStartup": false, 6 | "runOnce": false, 7 | "timezone": "UTC", 8 | "intervalTime": 60, 9 | "accountConcurrency": 3, 10 | "logLevel": "info", 11 | "testNotifiers": false, 12 | "skipVersionCheck": false, 13 | "browserLaunchTimeout": 15, 14 | "browserLaunchRetryAttempts": 5, 15 | "browserNavigationTimeout": 30000, 16 | "deviceAuthClientId": "98f7e42c2e3a4f86a74eb43fbb41ed39", 17 | "deviceAuthSecret": "0a2449a2-001a-451e-afec-3e812901c4d7", 18 | "deviceAuthPollRateSeconds": 10, 19 | "errorsDir": "config/errors", 20 | "accounts": [ 21 | { 22 | "email": "example@gmail.com" 23 | } 24 | ] 25 | } -------------------------------------------------------------------------------- /esphome/compose.yml: -------------------------------------------------------------------------------- 1 | # https://esphome.io/ 2 | 3 | # system to control your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems 4 | 5 | name: esphome 6 | 7 | services: 8 | esphome: 9 | container_name: esphome 10 | image: ghcr.io/esphome/esphome 11 | volumes: 12 | - ./config:/config 13 | - /etc/localtime:/etc/localtime:ro 14 | restart: unless-stopped 15 | privileged: true 16 | ports: 17 | - 6052:6052 18 | environment: 19 | - USERNAME=test 20 | - PASSWORD=ChangeMe 21 | - ESPHOME_DASHBOARD_USE_PING=true 22 | networks: 23 | - proxy 24 | 25 | networks: 26 | proxy: 27 | external: true 28 | -------------------------------------------------------------------------------- /filezilla/compose.yml: -------------------------------------------------------------------------------- 1 | # https://filezilla-project.org/ 2 | 3 | # https://github.com/jlesage/docker-filezilla?tab=readme-ov-file#docker-compose-file 4 | 5 | name: filezilla 6 | services: 7 | filezilla: 8 | image: jlesage/filezilla 9 | container_name: filezilla 10 | ports: 11 | - "5800:5800" 12 | volumes: 13 | - "./config:/config:rw" 14 | - "/:/storage:rw" 15 | networks: 16 | - proxy 17 | 18 | networks: 19 | proxy: 20 | external: true 21 | -------------------------------------------------------------------------------- /free-games-claimer/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/vogler/free-games-claimer 2 | 3 | # Claims free games periodically on Epic Games Store Amazon Prime Gaming GOG Unreal Engine (Assets) 4 | 5 | name: free-games-claimer 6 | 7 | services: 8 | free-games-claimer: 9 | container_name: free-games-claimer 10 | stdin_open: true 11 | tty: true 12 | ports: 13 | - 6080:6080 14 | volumes: 15 | - ./data:/fgc/data 16 | pull_policy: always 17 | image: ghcr.io/vogler/free-games-claimer 18 | networks: 19 | - proxy 20 | 21 | volumes: 22 | fgc: 23 | 24 | networks: 25 | proxy: 26 | external: true 27 | -------------------------------------------------------------------------------- /gitea/compose.yml: -------------------------------------------------------------------------------- 1 | # https://about.gitea.com/ 2 | 3 | # Private, Fast, Reliable DevOps Platform 4 | 5 | name: gitea 6 | 7 | services: 8 | gitea: 9 | image: gitea/gitea 10 | container_name: gitea 11 | environment: 12 | - USER_UID=1000 13 | - USER_GID=1000 14 | volumes: 15 | - ./data:/data 16 | #- /etc/timezone:/etc/timezone:ro 17 | #- /etc/localtime:/etc/localtime:ro 18 | ports: 19 | - 3004:3000 20 | - 222:22 21 | networks: 22 | - proxy 23 | 24 | networks: 25 | proxy: 26 | external: true 27 | -------------------------------------------------------------------------------- /glance/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/glanceapp/glance 2 | 3 | # https://github.com/glanceapp/docker-compose-template/blob/main/root/docker-compose.yml 4 | 5 | name: glance 6 | 7 | services: 8 | glance: 9 | container_name: glance 10 | image: glanceapp/glance 11 | volumes: 12 | - ./config:/app/config 13 | - ./assets:/app/assets 14 | # Optionally, also mount docker socket if you want to use the docker containers widget 15 | - /var/run/docker.sock:/var/run/docker.sock:ro 16 | ports: 17 | - 8080:8080 18 | networks: 19 | - proxy 20 | 21 | networks: 22 | proxy: 23 | external: true 24 | -------------------------------------------------------------------------------- /glance/config/glance.yml: -------------------------------------------------------------------------------- 1 | pages: 2 | - name: Home 3 | columns: 4 | - size: small 5 | widgets: 6 | - type: calendar 7 | first-day-of-week: monday 8 | 9 | - type: rss 10 | limit: 10 11 | collapse-after: 3 12 | cache: 12h 13 | feeds: 14 | - url: https://selfh.st/rss/ 15 | title: selfh.st 16 | limit: 4 17 | - url: https://ciechanow.ski/atom.xml 18 | - url: https://www.joshwcomeau.com/rss.xml 19 | title: Josh Comeau 20 | - url: https://samwho.dev/rss.xml 21 | - url: https://ishadeed.com/feed.xml 22 | title: Ahmad Shadeed 23 | 24 | - type: twitch-channels 25 | channels: 26 | - theprimeagen 27 | - j_blow 28 | - piratesoftware 29 | - cohhcarnage 30 | - christitustech 31 | - EJ_SA 32 | 33 | - size: full 34 | widgets: 35 | - type: group 36 | widgets: 37 | - type: hacker-news 38 | - type: lobsters 39 | 40 | - type: videos 41 | channels: 42 | - UCXuqSBlHAE6Xw-yeJA0Tunw # Linus Tech Tips 43 | - UCR-DXc1voovS8nhAvccRZhg # Jeff Geerling 44 | - UCsBjURrPoezykLs9EqgamOA # Fireship 45 | - UCBJycsmduvYEL83R_U4JriQ # Marques Brownlee 46 | - UCHnyfMqiRRG1u-2MsSQLbXA # Veritasium 47 | 48 | - type: group 49 | widgets: 50 | - type: reddit 51 | subreddit: technology 52 | show-thumbnails: true 53 | - type: reddit 54 | subreddit: selfhosted 55 | show-thumbnails: true 56 | 57 | - size: small 58 | widgets: 59 | - type: weather 60 | location: London, United Kingdom 61 | units: metric 62 | hour-format: 12h 63 | 64 | - type: markets 65 | markets: 66 | - symbol: SPY 67 | name: S&P 500 68 | - symbol: BTC-USD 69 | name: Bitcoin 70 | - symbol: NVDA 71 | name: NVIDIA 72 | - symbol: AAPL 73 | name: Apple 74 | - symbol: MSFT 75 | name: Microsoft 76 | 77 | - type: releases 78 | cache: 1d 79 | repositories: 80 | - glanceapp/glance 81 | - go-gitea/gitea 82 | - immich-app/immich 83 | - syncthing/syncthing 84 | -------------------------------------------------------------------------------- /glances/compose.yml: -------------------------------------------------------------------------------- 1 | # https://nicolargo.github.io/glances/ 2 | 3 | # a cross-platform system monitoring tool written in Python 4 | # http://localhost:61208/ 5 | 6 | name: glances 7 | services: 8 | glances: 9 | container_name: glances 10 | image: nicolargo/glances:latest-full 11 | #restart: always 12 | pid: "host" 13 | privileged: true 14 | network_mode: "host" 15 | volumes: 16 | - "/var/run/docker.sock:/var/run/docker.sock:ro" 17 | #- "/run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro" 18 | - ./glances.conf:/etc/glances/glances.conf 19 | environment: 20 | - TZ=Europe/Vienna 21 | - GLANCES_OPT=-w 22 | # Uncomment for GPU compatibility (Nvidia) inside the container 23 | # deploy: 24 | # resources: 25 | # reservations: 26 | # devices: 27 | # - driver: nvidia 28 | # count: 1 29 | # capabilities: [gpu] 30 | -------------------------------------------------------------------------------- /glances/glances.conf: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # Globals Glances parameters 3 | ############################################################################## 4 | 5 | [global] 6 | # Stats refresh rate (default is a minimum of 2 seconds) 7 | # Can be overwrite by the -t option 8 | # It is also possible to overwrite it in each plugin sections 9 | refresh=2 10 | # Does Glances should check if a newer version is available on PyPI ? 11 | check_update=true 12 | # History size (maximum number of values) 13 | # Default is 1200 values (~1h with the default refresh rate) 14 | history_size=1200 15 | # Set the way Glances should display the date (default is %Y-%m-%d %H:%M:%S %Z) 16 | #strftime_format="%Y-%m-%d %H:%M:%S %Z" 17 | # Define external directory for loading additional plugins 18 | # The layout follows the glances standard for plugin definitions 19 | #plugin_dir=/home/user/dev/plugins 20 | 21 | ############################################################################## 22 | # User interface 23 | ############################################################################## 24 | 25 | [outputs] 26 | # Separator in the Curses and WebUI interface (between top and others plugins) 27 | separator=True 28 | # Set the the Curses and WebUI interface left menu plugin list (comma-separated) 29 | #left_menu=network,wifi,connections,ports,diskio,fs,irq,folders,raid,smart,sensors,now 30 | # Limit the number of processes to display (for the WebUI) 31 | max_processes_display=25 32 | # Set the URL prefix (for the WebUI and the API) 33 | # Example: url_prefix=/glances/ => http://localhost/glances/ 34 | # The final / is mandatory 35 | # Default is no prefix (/) 36 | #url_prefix=/glances/ 37 | 38 | ############################################################################## 39 | # plugins 40 | ############################################################################## 41 | 42 | [quicklook] 43 | # Set to true to disable a plugin 44 | # Note: you can also disable it from the command line (see --disable-plugin ) 45 | disable=False 46 | # Stats list (default is cpu,mem,load) 47 | # Available stats are: cpu,mem,load,swap 48 | list=cpu,mem,load 49 | # Graphical bar char used in the terminal user interface (default is |) 50 | bar_char=| 51 | # Define CPU, MEM and SWAP thresholds in % 52 | cpu_careful=50 53 | cpu_warning=70 54 | cpu_critical=90 55 | mem_careful=50 56 | mem_warning=70 57 | mem_critical=90 58 | swap_careful=50 59 | swap_warning=70 60 | swap_critical=90 61 | # Source: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages 62 | # With 1 CPU core, the load should be lower than 1.00 ~ 100% 63 | load_careful=70 64 | load_warning=100 65 | load_critical=500 66 | 67 | [system] 68 | # This plugin display the first line in the Glances UI with: 69 | # Hostname / Operating system name / Architecture information 70 | # Set to true to disable a plugin 71 | disable=False 72 | # Default refresh rate is 60 seconds 73 | #refresh=60 74 | # System information to display (a string where {key} will be replaced by the value) 75 | # Available information are: hostname, os_name, os_version, os_arch, linux_distro, platform 76 | #system_info_msg= | My {os_name} system | 77 | 78 | [cpu] 79 | disable=False 80 | # See https://scoutapm.com/blog/slow_server_flow_chart 81 | # 82 | # I/O wait percentage should be lower than 1/# (# = Logical CPU cores) 83 | # Leave commented to just use the default config: 84 | # Careful=1/#*100-20% / Warning=1/#*100-10% / Critical=1/#*100 85 | #iowait_careful=30 86 | #iowait_warning=40 87 | #iowait_critical=50 88 | # 89 | # Total % is 100 - idle 90 | total_careful=65 91 | total_warning=75 92 | total_critical=85 93 | total_log=True 94 | # 95 | # Default values if not defined: 50/70/90 (except for iowait) 96 | user_careful=50 97 | user_warning=70 98 | user_critical=90 99 | user_log=False 100 | #user_critical_action=echo {{user}} {{value}} {{max}} > /tmp/cpu.alert 101 | # 102 | system_careful=50 103 | system_warning=70 104 | system_critical=90 105 | system_log=False 106 | # 107 | steal_careful=50 108 | steal_warning=70 109 | steal_critical=90 110 | #steal_log=True 111 | # 112 | # Context switch limit (core / second) 113 | # Leave commented to just use the default config (critical is 50000*# (Logical CPU cores) 114 | #ctx_switches_careful=10000 115 | #ctx_switches_warning=12000 116 | #ctx_switches_critical=14000 117 | 118 | [percpu] 119 | disable=False 120 | # Define CPU thresholds in % 121 | # Default values if not defined: 50/70/90 122 | user_careful=50 123 | user_warning=70 124 | user_critical=90 125 | iowait_careful=50 126 | iowait_warning=70 127 | iowait_critical=90 128 | system_careful=50 129 | system_warning=70 130 | system_critical=90 131 | 132 | [gpu] 133 | disable=False 134 | # Default processor values if not defined: 50/70/90 135 | proc_careful=50 136 | proc_warning=70 137 | proc_critical=90 138 | # Default memory values if not defined: 50/70/90 139 | mem_careful=50 140 | mem_warning=70 141 | mem_critical=90 142 | # Temperature 143 | temperature_careful=60 144 | temperature_warning=70 145 | temperature_critical=80 146 | 147 | [mem] 148 | disable=False 149 | # Define RAM thresholds in % 150 | # Default values if not defined: 50/70/90 151 | careful=50 152 | #careful_action_repeat=echo {{percent}} >> /tmp/memory.alert 153 | warning=70 154 | critical=90 155 | 156 | [memswap] 157 | disable=False 158 | # Define SWAP thresholds in % 159 | # Default values if not defined: 50/70/90 160 | careful=50 161 | warning=70 162 | critical=90 163 | 164 | [load] 165 | disable=False 166 | # Define LOAD thresholds 167 | # Value * number of cores 168 | # Default values if not defined: 0.7/1.0/5.0 per number of cores 169 | # Source: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages 170 | # http://www.linuxjournal.com/article/9001 171 | careful=0.7 172 | warning=1.0 173 | critical=5.0 174 | #log=False 175 | 176 | [network] 177 | disable=False 178 | # Default bitrate thresholds in % of the network interface speed 179 | # Default values if not defined: 70/80/90 180 | rx_careful=70 181 | rx_warning=80 182 | rx_critical=90 183 | tx_careful=70 184 | tx_warning=80 185 | tx_critical=90 186 | # Define the list of hidden network interfaces (comma-separated regexp) 187 | hide=docker.*,lo 188 | # Define the list of wireless network interfaces to be show (comma-separated) 189 | #show=docker.* 190 | # It is possible to overwrite the bitrate thresholds per interface 191 | # WLAN 0 Default limits (in bits per second aka bps) for interface bitrate 192 | #wlan0_rx_careful=4000000 193 | #wlan0_rx_warning=5000000 194 | #wlan0_rx_critical=6000000 195 | #wlan0_rx_log=True 196 | #wlan0_tx_careful=700000 197 | #wlan0_tx_warning=900000 198 | #wlan0_tx_critical=1000000 199 | #wlan0_tx_log=True 200 | # Alias for network interface name 201 | #alias=wlp2s0:WIFI 202 | 203 | [ip] 204 | disable=False 205 | public_refresh_interval=300 206 | public_ip_disabled=False 207 | # Configuration for the Censys online service 208 | # Need to create an aacount: https://censys.io/login 209 | censys_url=https://search.censys.io/api 210 | # Get your own credential here: https://search.censys.io/account/api 211 | # Enter your credential and uncomment the following lines 212 | #censys_username= 213 | #censys_password= 214 | # List of fields to be displayed in user interface (comma separated) 215 | censys_fields=location:continent,location:country,autonomous_system:name 216 | 217 | [connections] 218 | # Display additional information about TCP connections 219 | # This plugin is disabled by default 220 | disable=True 221 | # nf_conntrack thresholds in % 222 | nf_conntrack_percent_careful=70 223 | nf_conntrack_percent_warning=80 224 | nf_conntrack_percent_critical=90 225 | 226 | [wifi] 227 | disable=False 228 | # Define SIGNAL thresholds in db (lower is better...) 229 | # Based on: http://serverfault.com/questions/501025/industry-standard-for-minimum-wifi-signal-strength 230 | careful=-65 231 | warning=-75 232 | critical=-85 233 | 234 | [diskio] 235 | disable=False 236 | # Define the list of hidden disks (comma-separated regexp) 237 | #hide=sda2,sda5,loop.* 238 | hide=loop.*,/dev/loop.* 239 | # Define the list of disks to be show (comma-separated) 240 | #show=sda.* 241 | # Alias for sda1 and sdb1 242 | #alias=sda1:SystemDisk,sdb1:DataDisk 243 | 244 | [fs] 245 | disable=False 246 | # Define the list of file system to hide (comma-separated regexp) 247 | hide=/boot.*,/snap.* 248 | # Define the list of file system to show (comma-separated regexp) 249 | #show=/,/srv 250 | # Define filesystem space thresholds in % 251 | # Default values if not defined: 50/70/90 252 | # It is also possible to define per mount point value 253 | # Example: /_careful=40 254 | careful=50 255 | warning=70 256 | critical=90 257 | # Allow additional file system types (comma-separated FS type) 258 | #allow=shm 259 | # Alias for root file system 260 | #alias=/:Root 261 | 262 | [irq] 263 | # Documentation: https://glances.readthedocs.io/en/latest/aoa/irq.html 264 | # This plugin is disabled by default 265 | disable=True 266 | 267 | [folders] 268 | # Documentation: https://glances.readthedocs.io/en/latest/aoa/folders.html 269 | disable=False 270 | # Define a folder list to monitor 271 | # The list is composed of items (list_#nb <= 10) 272 | # An item is defined by: 273 | # * path: absolute path 274 | # * careful: optional careful threshold (in MB) 275 | # * warning: optional warning threshold (in MB) 276 | # * critical: optional critical threshold (in MB) 277 | # * refresh: interval in second between two refreshes 278 | folder_1_path=/rootfs/mnt/disk1 279 | folder_1_careful=1600000 280 | folder_1_warning=1700000 281 | folder_1_critical=1800000 282 | folder_1_refresh=60 283 | folder_2_path=/rootfs/mnt/cache 284 | folder_2_warning=300000 285 | folder_2_critical=400000 286 | 287 | [cloud] 288 | # Documentation: https://glances.readthedocs.io/en/latest/aoa/cloud.html 289 | # This plugin is disabled by default 290 | disable=True 291 | 292 | [raid] 293 | # Documentation: https://glances.readthedocs.io/en/latest/aoa/raid.html 294 | # This plugin is disabled by default 295 | disable=False 296 | 297 | [smart] 298 | # Documentation: https://glances.readthedocs.io/en/latest/aoa/smart.html 299 | # This plugin is disabled by default 300 | disable=True 301 | 302 | [hddtemp] 303 | disable=False 304 | # Define hddtemp server IP and port (default is 127.0.0.1 and 7634 (TCP)) 305 | host=127.0.0.1 306 | port=7634 307 | 308 | [sensors] 309 | # Documentation: https://glances.readthedocs.io/en/latest/aoa/sensors.html 310 | disable=False 311 | # By default refresh every refresh time * 2 312 | #refresh=6 313 | # Hide some sensors 314 | #hide=ambient 315 | # Sensors core thresholds (in Celsius...) 316 | # Default values are grabbed from the system 317 | #temperature_core_careful=45 318 | #temperature_core_warning=65 319 | #temperature_core_critical=80 320 | # Temperatures threshold in °C for hddtemp 321 | # Default values if not defined: 45/52/60 322 | temperature_hdd_careful=45 323 | temperature_hdd_warning=52 324 | temperature_hdd_critical=60 325 | # Battery threshold in % 326 | battery_careful=80 327 | battery_warning=90 328 | battery_critical=95 329 | # Sensors alias 330 | #alias=core 0:CPU Core 0,core 1:CPU Core 1 331 | 332 | [processcount] 333 | disable=False 334 | # If you want to change the refresh rate of the processing list, please uncomment: 335 | #refresh=10 336 | 337 | [processlist] 338 | disable=False 339 | # Sort key: if not defined, the sort is automatically done by Glances (recommended) 340 | # Should be one of the following: 341 | # cpu_percent, memory_percent, io_counters, name, cpu_times, username 342 | #sort_key=memory_percent 343 | # Define CPU/MEM (per process) thresholds in % 344 | # Default values if not defined: 50/70/90 345 | cpu_careful=50 346 | cpu_warning=70 347 | cpu_critical=90 348 | mem_careful=50 349 | mem_warning=70 350 | mem_critical=90 351 | # 352 | # Nice priorities range from -20 to 19. 353 | # Configure nice levels using a comma-separated list. 354 | # 355 | # Nice: Example 1, non-zero is warning (default behavior) 356 | nice_warning=-20,-19,-18,-17,-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 357 | # 358 | # Nice: Example 2, low priority processes escalate from careful to critical 359 | #nice_careful=1,2,3,4,5,6,7,8,9 360 | #nice_warning=10,11,12,13,14 361 | #nice_critical=15,16,17,18,19 362 | # 363 | # Define the list of processes to export using: 364 | # a comma-separated list of Glances filter 365 | #export=.*firefox.*,pid:1234 366 | 367 | [ports] 368 | disable=False 369 | # Interval in second between two scans 370 | # Ports scanner plugin configuration 371 | refresh=30 372 | # Set the default timeout (in second) for a scan (can be overwritten in the scan list) 373 | timeout=3 374 | # If port_default_gateway is True, add the default gateway on top of the scan list 375 | port_default_gateway=True 376 | # 377 | # Define the scan list (1 < x < 255) 378 | # port_x_host (name or IP) is mandatory 379 | # port_x_port (TCP port number) is optional (if not set, use ICMP) 380 | # port_x_description is optional (if not set, define to host:port) 381 | # port_x_timeout is optional and overwrite the default timeout value 382 | # port_x_rtt_warning is optional and defines the warning threshold in ms 383 | # 384 | #port_1_host=192.168.0.1 385 | #port_1_port=80 386 | #port_1_description=Home Box 387 | #port_1_timeout=1 388 | #port_2_host=www.free.fr 389 | #port_2_description=My ISP 390 | #port_3_host=www.google.com 391 | #port_3_description=Internet ICMP 392 | #port_3_rtt_warning=1000 393 | #port_4_description=Internet Web 394 | #port_4_host=www.google.com 395 | #port_4_port=80 396 | #port_4_rtt_warning=1000 397 | # 398 | # Define Web (URL) monitoring list (1 < x < 255) 399 | # web_x_url is the URL to monitor (example: http://my.site.com/folder) 400 | # web_x_description is optional (if not set, define to URL) 401 | # web_x_timeout is optional and overwrite the default timeout value 402 | # web_x_rtt_warning is optional and defines the warning respond time in ms (approximately) 403 | # 404 | #web_1_url=https://blog.nicolargo.com 405 | #web_1_description=My Blog 406 | #web_1_rtt_warning=3000 407 | #web_2_url=https://github.com 408 | #web_3_url=http://www.google.fr 409 | #web_3_description=Google Fr 410 | #web_4_url=https://blog.nicolargo.com/nonexist 411 | #web_4_description=Intranet 412 | 413 | [containers] 414 | disable=False 415 | # Only show specific containers (comma-separated list of container name or regular expression) 416 | # Comment this line to display all containers (default configuration) 417 | ; show=telegraf 418 | # Hide some containers (comma-separated list of container name or regular expression) 419 | # Comment this line to display all containers (default configuration) 420 | ; hide=telegraf 421 | # Define the maximum docker size name (default is 20 chars) 422 | max_name_size=20 423 | ; cpu_careful=50 424 | # Thresholds for CPU and MEM (in %) 425 | ; cpu_warning=70 426 | ; cpu_critical=90 427 | ; mem_careful=20 428 | ; mem_warning=50 429 | ; mem_critical=70 430 | # 431 | # Per container thresholds 432 | ; containername_cpu_careful=10 433 | ; containername_cpu_warning=20 434 | ; containername_cpu_critical=30 435 | # 436 | # By default, Glances only display running containers 437 | # Set the following key to True to display all containers 438 | all=False 439 | # Define Podman sock 440 | ; podman_sock=unix:///run/user/1000/podman/podman.sock 441 | 442 | [amps] 443 | # AMPs configuration are defined in the bottom of this file 444 | disable=False 445 | 446 | [alert] 447 | disable=False 448 | # Maximum number of events to display (default is 10 events) 449 | ;max_events=10 450 | # Minimum duration for an event to be taken into account (default is 6 seconds) 451 | ;min_duration=6 452 | # Minimum time between two events of the same type (default is 6 seconds) 453 | # This is used to avoid too many alerts for the same event 454 | # Events will be merged 455 | ;min_interval=6 456 | 457 | ############################################################################## 458 | # Client/server 459 | ############################################################################## 460 | 461 | [serverlist] 462 | # Define the static servers list 463 | #server_1_name=localhost 464 | #server_1_alias=My local PC 465 | #server_1_port=61209 466 | #server_2_name=localhost 467 | #server_2_port=61235 468 | #server_3_name=192.168.0.17 469 | #server_3_alias=Another PC on my network 470 | #server_3_port=61209 471 | #server_4_name=pasbon 472 | #server_4_port=61237 473 | 474 | [passwords] 475 | # Define the passwords list related to the [serverlist] section 476 | # Syntax: host=password 477 | # Where: host is the hostname 478 | # password is the clear password 479 | # Additionally (and optionally) a default password could be defined 480 | #localhost=abc 481 | #default=defaultpassword 482 | # 483 | # Define the path of the local '.pwd' file (default is system one) 484 | #local_password_path=~/.config/glances 485 | 486 | ############################################################################## 487 | # Exports 488 | ############################################################################## 489 | 490 | [graph] 491 | # Configuration for the --export graph option 492 | # Set the path where the graph (.svg files) will be created 493 | # Can be overwrite by the --graph-path command line option 494 | path=/tmp 495 | # It is possible to generate the graphs automatically by setting the 496 | # generate_every to a non zero value corresponding to the seconds between 497 | # two generation. Set it to 0 to disable graph auto generation. 498 | generate_every=0 499 | # See following configuration keys definitions in the Pygal lib documentation 500 | # http://pygal.org/en/stable/documentation/index.html 501 | width=800 502 | height=600 503 | style=DarkStyle 504 | 505 | [influxdb] 506 | # !!! 507 | # Will be DEPRECATED in future release. 508 | # Please have a look on the new influxdb2 export module (compatible with InfluxDB 1.8.x and 2.x) 509 | # !!! 510 | # Configuration for the --export influxdb option 511 | # https://influxdb.com/ 512 | host=localhost 513 | port=8086 514 | protocol=http 515 | user=root 516 | password=root 517 | db=glances 518 | # Prefix will be added for all measurement name 519 | # Ex: prefix=foo 520 | # => foo.cpu 521 | # => foo.mem 522 | # You can also use dynamic values 523 | #prefix=foo 524 | # Following tags will be added for all measurements 525 | # You can also use dynamic values. 526 | # Note: hostname is always added as a tag 527 | #tags=foo:bar,spam:eggs,domain:`domainname` 528 | 529 | [influxdb2] 530 | # Configuration for the --export influxdb2 option 531 | # https://influxdb.com/ 532 | host=localhost 533 | port=8086 534 | protocol=http 535 | org=nicolargo 536 | bucket=glances 537 | token=EjFUTWe8U-MIseEAkaVIgVnej_TrnbdvEcRkaB1imstW7gapSqy6_6-8XD-yd51V0zUUpDy-kAdVD1purDLuxA== 538 | # Set the interval between two exports (in seconds) 539 | # If the interval is set to 0, the Glances refresh time is used (default behavor) 540 | #interval=0 541 | # Prefix will be added for all measurement name 542 | # Ex: prefix=foo 543 | # => foo.cpu 544 | # => foo.mem 545 | # You can also use dynamic values 546 | #prefix=foo 547 | # Following tags will be added for all measurements 548 | # You can also use dynamic values. 549 | # Note: hostname is always added as a tag 550 | #tags=foo:bar,spam:eggs,domain:`domainname` 551 | 552 | [cassandra] 553 | # Configuration for the --export cassandra option 554 | # Also works for the ScyllaDB 555 | # https://influxdb.com/ or http://www.scylladb.com/ 556 | host=localhost 557 | port=9042 558 | protocol_version=3 559 | keyspace=glances 560 | replication_factor=2 561 | # If not define, table name is set to host key 562 | table=localhost 563 | # If not define, username and password will not be used 564 | #username=cassandra 565 | #password=password 566 | 567 | [opentsdb] 568 | # Configuration for the --export opentsdb option 569 | # http://opentsdb.net/ 570 | host=localhost 571 | port=4242 572 | #prefix=glances 573 | #tags=foo:bar,spam:eggs 574 | 575 | [statsd] 576 | # Configuration for the --export statsd option 577 | # https://github.com/etsy/statsd 578 | host=localhost 579 | port=8125 580 | #prefix=glances 581 | 582 | [elasticsearch] 583 | # Configuration for the --export elasticsearch option 584 | # Data are available via the ES RESTful API. ex: URL//cpu 585 | # https://www.elastic.co 586 | scheme=http 587 | host=localhost 588 | port=9200 589 | index=glances 590 | 591 | [riemann] 592 | # Configuration for the --export riemann option 593 | # http://riemann.io 594 | host=localhost 595 | port=5555 596 | 597 | [rabbitmq] 598 | # Configuration for the --export rabbitmq option 599 | host=localhost 600 | port=5672 601 | user=guest 602 | password=guest 603 | queue=glances_queue 604 | #protocol=amqps 605 | 606 | [mqtt] 607 | # Configuration for the --export mqtt option 608 | host=localhost 609 | # Overwrite device name in the topic 610 | #devicename=localhost 611 | port=8883 612 | tls=false 613 | user=guest 614 | password=guest 615 | topic=glances 616 | topic_structure=per-metric 617 | callback_api_version=2 618 | 619 | [couchdb] 620 | # Configuration for the --export couchdb option 621 | # https://www.couchdb.org 622 | host=localhost 623 | port=5984 624 | db=glances 625 | user=admin 626 | password=admin 627 | 628 | [mongodb] 629 | # Configuration for the --export mongodb option 630 | # https://www.mongodb.com 631 | host=localhost 632 | port=27017 633 | db=glances 634 | user=root 635 | password=example 636 | 637 | [kafka] 638 | # Configuration for the --export kafka option 639 | # http://kafka.apache.org/ 640 | host=localhost 641 | port=9092 642 | topic=glances 643 | #compression=gzip 644 | # Tags will be added for all events 645 | #tags=foo:bar,spam:eggs 646 | # You can also use dynamic values 647 | #tags=hostname:`hostname -f` 648 | 649 | [zeromq] 650 | # Configuration for the --export zeromq option 651 | # http://www.zeromq.org 652 | # Use * to bind on all interfaces 653 | host=* 654 | port=5678 655 | # Glances envelopes the stats in a publish message with two frames: 656 | # - First frame containing the following prefix (STRING) 657 | # - Second frame with the Glances plugin name (STRING) 658 | # - Third frame with the Glances plugin stats (JSON) 659 | prefix=G 660 | 661 | [prometheus] 662 | # Configuration for the --export prometheus option 663 | # https://prometheus.io 664 | # Create a Prometheus exporter listening on localhost:9091 (default configuration) 665 | # Metric are exporter using the following name: 666 | # __{labelkey:labelvalue} 667 | # Note: You should add this exporter to your Prometheus server configuration: 668 | # scrape_configs: 669 | # - job_name: 'glances_exporter' 670 | # scrape_interval: 5s 671 | # static_configs: 672 | # - targets: ['localhost:9091'] 673 | # 674 | # Labels will be added for all measurements (default is src:glances) 675 | # labels=foo:bar,spam:eggs 676 | # You can also use dynamic values 677 | # labels=system:`uname -s` 678 | # 679 | host=localhost 680 | port=9091 681 | #prefix=glances 682 | labels=src:glances 683 | 684 | [restful] 685 | # Configuration for the --export restful option 686 | # Example, export to http://localhost:6789/ 687 | host=localhost 688 | port=6789 689 | protocol=http 690 | path=/ 691 | 692 | [graphite] 693 | # Configuration for the --export graphite option 694 | # https://graphiteapp.org/ 695 | host=localhost 696 | port=2003 697 | # Prefix will be added for all measurement name 698 | prefix=glances 699 | # System name added between the prefix and the stats 700 | # By default, system_name = FQDN 701 | #system_name=mycomputer 702 | 703 | ############################################################################## 704 | # AMPS 705 | # * enable: Enable (true) or disable (false) the AMP 706 | # * regex: Regular expression to filter the process(es) 707 | # * refresh: The AMP is executed every refresh seconds 708 | # * one_line: (optional) Force (if true) the AMP to be displayed in one line 709 | # * command: (optional) command to execute when the process is detected (thk to the regex) 710 | # * countmin: (optional) minimal number of processes 711 | # A warning will be displayed if number of process < count 712 | # * countmax: (optional) maximum number of processes 713 | # A warning will be displayed if number of process > count 714 | # * : Others variables can be defined and used in the AMP script 715 | ############################################################################## 716 | 717 | [amp_dropbox] 718 | # Use the default AMP (no dedicated AMP Python script) 719 | # Check if the Dropbox daemon is running 720 | # Every 3 seconds, display the 'dropbox status' command line 721 | enable=false 722 | regex=.*dropbox.* 723 | refresh=3 724 | one_line=false 725 | command=dropbox status 726 | countmin=1 727 | 728 | [amp_python] 729 | # Use the default AMP (no dedicated AMP Python script) 730 | # Monitor all the Python scripts 731 | # Alert if more than 20 Python scripts are running 732 | enable=false 733 | regex=.*python.* 734 | refresh=3 735 | countmax=20 736 | 737 | [amp_conntrack] 738 | # Use comma separated for multiple commands (no space around the comma) 739 | # If the regex key is not defined, the AMP will be executed every refresh second 740 | # and the process count will not be displayed (countmin and countmax will be ignore) 741 | enable=false 742 | refresh=30 743 | one_line=false 744 | command=sysctl net.netfilter.nf_conntrack_count;sysctl net.netfilter.nf_conntrack_max 745 | 746 | [amp_nginx] 747 | # Use the NGinx AMP 748 | # Nginx status page should be enable (https://easyengine.io/tutorials/nginx/status-page/) 749 | enable=false 750 | regex=\/usr\/sbin\/nginx 751 | refresh=60 752 | one_line=false 753 | status_url=http://localhost/nginx_status 754 | 755 | [amp_systemd] 756 | # Use the Systemd AMP 757 | enable=false 758 | regex=\/lib\/systemd\/systemd 759 | refresh=30 760 | one_line=true 761 | systemctl_cmd=/bin/systemctl --plain 762 | 763 | [amp_systemv] 764 | # Use the Systemv AMP 765 | enable=false 766 | regex=\/sbin\/init 767 | refresh=30 768 | one_line=true 769 | service_cmd=/usr/bin/service --status-all 770 | -------------------------------------------------------------------------------- /grafana-loki/config/loki-config.yaml: -------------------------------------------------------------------------------- 1 | auth_enabled: false 2 | 3 | server: 4 | http_listen_port: 3100 5 | grpc_listen_port: 9096 6 | 7 | common: 8 | instance_addr: 127.0.0.1 9 | path_prefix: /tmp/loki 10 | storage: 11 | filesystem: 12 | chunks_directory: /tmp/loki/chunks 13 | rules_directory: /tmp/loki/rules 14 | replication_factor: 1 15 | ring: 16 | kvstore: 17 | store: inmemory 18 | frontend: 19 | max_outstanding_per_tenant: 2048 20 | pattern_ingester: 21 | enabled: true 22 | limits_config: 23 | max_global_streams_per_user: 0 24 | ingestion_rate_mb: 50000 25 | ingestion_burst_size_mb: 50000 26 | volume_enabled: true 27 | query_range: 28 | results_cache: 29 | cache: 30 | embedded_cache: 31 | enabled: true 32 | max_size_mb: 100 33 | 34 | schema_config: 35 | configs: 36 | - from: 2020-10-24 37 | store: tsdb 38 | object_store: filesystem 39 | schema: v13 40 | index: 41 | prefix: index_ 42 | period: 24h 43 | 44 | ruler: 45 | alertmanager_url: http://localhost:9093 46 | # By default, Loki will send anonymous, but uniquely-identifiable usage and configuration 47 | # analytics to Grafana Labs. These statistics are sent to https://stats.grafana.org/ 48 | # 49 | # Statistics help us better understand how Loki is used, and they show us performance 50 | # levels for most users. This helps us prioritize features and documentation. 51 | # For more information on what's sent, look at 52 | # https://github.com/grafana/loki/blob/main/pkg/analytics/stats.go 53 | # Refer to the buildReport method to see what goes into a report. 54 | # 55 | # If you would like to disable reporting, uncomment the following lines: 56 | #analytics: 57 | # reporting_enabled: false 58 | -------------------------------------------------------------------------------- /grafana-loki/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # https://grafana.com/docs/loki/latest/ 2 | 3 | # Grafana Loki is a set of open source components that can be composed into a fully featured logging stack. A small index and highly compressed chunks simplifies the operation and significantly lowers the cost of Loki. 4 | 5 | name: grafana-loki 6 | 7 | services: 8 | grafana: 9 | container_name: grafana 10 | image: grafana/grafana:11.0.0 11 | environment: 12 | - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin 13 | - GF_AUTH_ANONYMOUS_ENABLED=true 14 | - GF_AUTH_BASIC_ENABLED=false 15 | - GF_FEATURE_TOGGLES_ENABLE=accessControlOnCall lokiLogsDataplane 16 | - GF_INSTALL_PLUGINS=https://storage.googleapis.com/integration-artifacts/grafana-lokiexplore-app/grafana-lokiexplore-app-latest.zip;grafana-lokiexplore-app 17 | ports: 18 | - 3000:3000/tcp 19 | volumes: 20 | - ./provisioning:/etc/grafana/provisioning 21 | extra_hosts: 22 | - 'host.docker.internal:host-gateway' 23 | networks: 24 | - proxy 25 | loki: 26 | container_name: loki 27 | image: grafana/loki:main-e9b6ce9 28 | environment: 29 | LOG_CLUSTER_DEPTH: '8' 30 | LOG_SIM_TH: '0.3' 31 | ports: 32 | - '3100:3100' 33 | volumes: 34 | - ./config/loki-config.yaml:/etc/loki/local-config.yaml 35 | command: -config.file=/etc/loki/local-config.yaml 36 | restart: on-failure 37 | networks: 38 | - proxy 39 | generator: 40 | container_name: generator 41 | image: us-docker.pkg.dev/grafanalabs-global/docker-explore-logs-prod/fake-log-generator:latest 42 | command: -url http://loki:3100/loki/api/v1/push 43 | networks: 44 | - proxy 45 | 46 | networks: 47 | proxy: 48 | external: true 49 | -------------------------------------------------------------------------------- /grafana-loki/provisioning/datasources/default.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: 1 2 | 3 | datasources: 4 | - name: gdev-testdata 5 | isDefault: false 6 | type: testdata 7 | - name: gdev-loki 8 | type: loki 9 | uid: gdev-loki 10 | access: proxy 11 | url: http://host.docker.internal:3100 -------------------------------------------------------------------------------- /grafana-loki/provisioning/plugins/app.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: 1 2 | 3 | apps: 4 | - type: "grafana-lokiexplore-app" 5 | org_id: 1 6 | org_name: "Grafana" 7 | disabled: false 8 | jsonData: 9 | apiUrl: http://default-url.com 10 | isApiKeySet: true 11 | secureJsonData: 12 | apiKey: secret-key 13 | -------------------------------------------------------------------------------- /grafana/compose.yml: -------------------------------------------------------------------------------- 1 | # 2 | # 3 | name: grafana 4 | 5 | services: 6 | grafana: 7 | container_name: grafana 8 | image: grafana/grafana 9 | environment: 10 | - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin 11 | - GF_AUTH_ANONYMOUS_ENABLED=true 12 | - GF_AUTH_BASIC_ENABLED=false 13 | ports: 14 | - 3000:3000/tcp 15 | volumes: 16 | - ./provisioning:/etc/grafana/provisioning 17 | extra_hosts: 18 | - 'host.docker.internal:host-gateway' 19 | networks: 20 | - proxy 21 | 22 | networks: 23 | proxy: 24 | external: true 25 | -------------------------------------------------------------------------------- /gramps-web/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # https://www.grampsweb.org/ 2 | 3 | version: "3.7" 4 | 5 | name: gramps-web 6 | 7 | services: 8 | grampsweb: &grampsweb 9 | container_name: grampsweb 10 | image: ghcr.io/gramps-project/grampsweb:latest 11 | restart: always 12 | ports: 13 | - "81:5000" # host:docker 14 | environment: 15 | GRAMPSWEB_TREE: "Gramps Web" # will create a new tree if not exists 16 | GRAMPSWEB_CELERY_CONFIG__broker_url: "redis://grampsweb_redis:6379/0" 17 | GRAMPSWEB_CELERY_CONFIG__result_backend: "redis://grampsweb_redis:6379/0" 18 | GRAMPSWEB_RATELIMIT_STORAGE_URI: redis://grampsweb_redis:6379/1 19 | depends_on: 20 | - grampsweb_redis 21 | volumes: 22 | - gramps_users:/app/users # persist user database 23 | - gramps_index:/app/indexdir # persist search index 24 | - gramps_thumb_cache:/app/thumbnail_cache # persist thumbnails 25 | - gramps_cache:/app/cache # persist export and report caches 26 | - gramps_secret:/app/secret # persist flask secret 27 | - gramps_db:/root/.gramps/grampsdb # persist Gramps database 28 | - gramps_media:/app/media # persist media files 29 | - gramps_tmp:/tmp 30 | networks: 31 | - proxy 32 | 33 | grampsweb_celery: 34 | <<: *grampsweb # YAML merge key copying the entire grampsweb service config 35 | ports: [] 36 | container_name: grampsweb_celery 37 | depends_on: 38 | - grampsweb_redis 39 | command: celery -A gramps_webapi.celery worker --loglevel=INFO 40 | networks: 41 | - proxy 42 | 43 | grampsweb_redis: 44 | image: redis:7.2.4-alpine 45 | container_name: grampsweb_redis 46 | restart: always 47 | networks: 48 | - proxy 49 | 50 | networks: 51 | proxy: 52 | external: true 53 | 54 | volumes: 55 | gramps_users: 56 | gramps_index: 57 | gramps_thumb_cache: 58 | gramps_cache: 59 | gramps_secret: 60 | gramps_db: 61 | gramps_media: 62 | gramps_tmp: 63 | -------------------------------------------------------------------------------- /guacamole/README.md: -------------------------------------------------------------------------------- 1 | # Guacamole 2 | 3 | Clientlose Screensharing app. Schüler brauchen nur die IP Adresse der Lehrperson in ihrem Browser eingeben um sich den Screen ansehen zu können. 4 | 5 | Basiert auf [jwetzell/docker-guacamole](https://github.com/jwetzell/docker-guacamole) 6 | 7 | ## Verwendung 8 | 9 | VNC Server starten, Docker und Guacamole starten 10 | eigene IP Adresse mit Schülern teilen 11 | 12 | ## Installation 13 | 14 | ### 1. VNC/RDP 15 | #### Windows 16 | VNC Server wird benötigt, zB.: 17 | [UltraVNC](https://uvnc.com/downloads/ultravnc.html) neuste Stabile Version herunterladen und installieren 18 | 19 | ##### UltraVNC konfigurieren 20 | Rechtsklick auf das UltraVNC Tray Icon -> Admin Properties 21 | VNV Passsword setzen -> OK 22 | 23 | #### macOS 24 | `System Settings` -> `General` -> `Sharing` -> `Screen Sharing` activieren (Kann verwendet werden um Screen sharing kurzfristig zu deaktivieren) 25 | Weiters sollten die entsprechenden Screen Sharing Settings gesetzt werden auf `i` 26 | 27 | ### 2. Docker 28 | Download und installiere [Docker Desktop](https://www.docker.com/) 29 | Docker ist korrekt installiert, wenn in der GUI die linke untere Ecke grün ist. 30 | 31 | ### 3. Container 32 | Erstelle in deinem Benutzerverzeichniss einen Ordner `guacamole`. 33 | Erstelle [compose.yml](https://github.com/dominikhoebert/docker-projects/blob/master/guacamole/compose.yml) in diesem Ordner 34 | Öffne das Terminal und führe folgende zwei Befehle aus 35 | ``` 36 | cd guacamole 37 | docker compose up -d 38 | ``` 39 | 40 | ### 4. Config 41 | Die Weboberfläche sollte nun über [http://localhost](http://localhost) erreichbar sein 42 | Standart Login `guacadmin`/`guacadmin` 43 | Settings oben rechts auf `guacadmin` 44 | 45 | #### 1. Password 46 | Das Standartpasswort sollte in Preferences geändert werden (manche 47 | Schüler kennen das Standartpasswort) 48 | #### 2. Connection 49 | `Connections` -> `New Connection` 50 | Beliebieger Name z.B. `Schule` 51 | Protocol: VNC 52 | Maximum number of connections: 60 53 | Maximum number of connections per user: 60 54 | Hostname: `host.docker.internal` 55 | Port: `5900` 56 | Authentication: 57 | Benutzername und Passwort eingeben: 58 | UltraVNC: Username leer, Passwort wie gewählt 59 | macOS: User und Passwort des Geräts 60 | Display: Read-Only aktivieren 61 | Cursor: Remote 62 | Color Depth: 32-Bit 63 | Encoding: UTF-8 64 | u.a. entsprechend anpassen 65 | -> `Save` ganz unten 66 | #### 3. Schueler User 67 | `Users` -> `New User` 68 | Username: `schueler` 69 | Password: `schueler` 70 | Connections: Schule aktivieren 71 | -> `Save` ganz unten 72 | -------------------------------------------------------------------------------- /guacamole/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/jwetzell/docker-guacamole 2 | 3 | # client-less remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH over HTML5. 4 | 5 | name: guacamole 6 | 7 | services: 8 | guacamole: 9 | image: jwetzell/guacamole:1.5.5 10 | container_name: guacamole 11 | restart: always 12 | volumes: 13 | - ./config:/config 14 | ports: 15 | - 80:8080 16 | volumes: 17 | postgres: 18 | driver: local -------------------------------------------------------------------------------- /heimdall/compose.yml: -------------------------------------------------------------------------------- 1 | # https://heimdall.site/ 2 | 3 | # application dashboard 4 | 5 | name: heimdall 6 | 7 | services: 8 | heimdall: 9 | image: lscr.io/linuxserver/heimdall:2.6.1 10 | container_name: heimdall 11 | environment: 12 | - PUID=1000 13 | - PGID=1000 14 | volumes: 15 | - ./config:/config 16 | ports: 17 | - 8097:80 18 | #- 443:443 19 | networks: 20 | - proxy 21 | 22 | networks: 23 | proxy: 24 | external: true 25 | -------------------------------------------------------------------------------- /home-assistant/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.5' 2 | name: homeassistant 3 | services: 4 | homeassistant: 5 | container_name: homeassistant 6 | restart: unless-stopped 7 | image: ghcr.io/home-assistant/home-assistant:stable 8 | ports: 9 | - "8123:8123" 10 | environment: 11 | - TZ=Europe/Vienna 12 | volumes: 13 | - ./homeassistant_config:/config 14 | networks: 15 | - proxy 16 | 17 | networks: 18 | proxy: 19 | external: true 20 | -------------------------------------------------------------------------------- /homepage/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # https://gethomepage.dev 2 | 3 | version: '3.3' 4 | 5 | name: homepage 6 | 7 | services: 8 | homepage: 9 | image: ghcr.io/gethomepage/homepage:latest 10 | container_name: homepage 11 | ports: 12 | - 3045:3000 13 | volumes: 14 | - ./homepage-config:/app/config # Make sure your local config directory exists 15 | - ./images:/app/public/images 16 | - /var/run/docker.sock:/var/run/docker.sock:ro # (optional) For docker integrations 17 | networks: 18 | - proxy 19 | 20 | networks: 21 | proxy: 22 | external: true 23 | -------------------------------------------------------------------------------- /homepage/homepage-config/bookmarks.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # For configuration options and examples, please see: 3 | # https://gethomepage.dev/latest/configs/bookmarks 4 | 5 | - Developer: 6 | - Docker Projects Github: 7 | - abbr: GH 8 | href: https://github.com/dominikhoebert/docker-projects 9 | 10 | 11 | -------------------------------------------------------------------------------- /homepage/homepage-config/custom.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dominikhoebert/docker-projects/05e821294785f45a0f1874c7312fdd3c441a5d66/homepage/homepage-config/custom.css -------------------------------------------------------------------------------- /homepage/homepage-config/custom.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dominikhoebert/docker-projects/05e821294785f45a0f1874c7312fdd3c441a5d66/homepage/homepage-config/custom.js -------------------------------------------------------------------------------- /homepage/homepage-config/docker.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # For configuration options and examples, please see: 3 | # https://gethomepage.dev/latest/configs/docker/ 4 | 5 | # my-docker: 6 | # host: 127.0.0.1 7 | # port: 2375 8 | 9 | my-docker: 10 | socket: /var/run/docker.sock 11 | -------------------------------------------------------------------------------- /homepage/homepage-config/kubernetes.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # sample kubernetes config 3 | -------------------------------------------------------------------------------- /homepage/homepage-config/services.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # For configuration options and examples, please see: 3 | # https://gethomepage.dev/latest/configs/services 4 | 5 | - Media: 6 | - Audiobookshelf: 7 | icon: audiobookshelf.svg 8 | href: http://localhost:8065 9 | description: Audiobook and podcast player 10 | siteMonitor: http://audiobookshelf:8065 11 | server: my-docker 12 | container: audiobookshelf 13 | # widget: 14 | # type: audiobookshelf 15 | # url: 16 | # key: 17 | 18 | - Epic Games Freegames Node: 19 | icon: si-epicgames-#313131 20 | href: http://localhost:3003 21 | description: Epic Games free games claimer 22 | #siteMonitor: http://epicgames-freegames-node:3000 23 | server: my-docker 24 | container: epicgames-freegames-node 25 | 26 | - Free Games Claimer: 27 | icon: si-stackhawk-#00CBC6 28 | href: http://localhost:6080 29 | description: Claims free games periodically on Epic Games Store Amazon Prime Gaming GOG Unreal Engine (Assets) 30 | siteMonitor: http://free-games-claimer:6080 31 | server: my-docker 32 | container: free-games-claimer 33 | 34 | - Heimdall: 35 | icon: heimdall.png 36 | href: http://localhost:8097 37 | description: dashboard for all your web applications 38 | siteMonitor: http://heimdall:80 39 | server: my-docker 40 | container: heimdall 41 | 42 | - Homer: 43 | icon: homer.png 44 | href: http://localhost:8099 45 | description: dashboard for all your web applications 46 | siteMonitor: http://homer:8080 47 | server: my-docker 48 | container: homer 49 | 50 | - Immich: 51 | icon: immich.png 52 | href: http://localhost:2283 53 | description: dashboard for all your web applications 54 | #siteMonitor: http://immich:3001 55 | server: my-docker 56 | container: immich_server 57 | # widget: 58 | # type: immich 59 | # url: http://immich.host.or.ip 60 | # key: adminapikeyadminapikeyadminapikey 61 | 62 | - Kavita: 63 | icon: kavita.png 64 | href: http://localhost:5003 65 | description: rocket fueled self-hosted digital library 66 | siteMonitor: http://kavita:5000 67 | server: my-docker 68 | container: kavita 69 | # widget: 70 | # type: kavita 71 | # url: 72 | # username: 73 | # password: 74 | 75 | - Navidrome: 76 | icon: navidrome.png 77 | href: http://localhost:4533 78 | description: web-based music collection server and streamer 79 | siteMonitor: http://navidrome:4533 80 | server: my-docker 81 | container: navidrome 82 | # widget: 83 | # type: navidrome 84 | # url: http://navidrome.host.or.ip:port 85 | # user: username 86 | # token: token #md5(password + salt) 87 | # salt: randomsalt 88 | 89 | - Organizr: 90 | icon: organizr.png 91 | href: http://localhost:8777 92 | description: HTPC/Homelab Services Organizer 93 | siteMonitor: http://organizr:80 94 | server: my-docker 95 | container: organizr 96 | 97 | - Plex: 98 | icon: plex.png 99 | href: http://localhost:32400 100 | description: organize, stream, and share your personal media and discover new content from various sources 101 | siteMonitor: http://plex:32400 102 | server: my-docker 103 | container: plex 104 | # widget: 105 | # type: plex 106 | # url: 107 | # key: 108 | 109 | - Radarr: 110 | icon: radarr.png 111 | href: http://localhost:7878 112 | description: download movies from various sources and formats 113 | siteMonitor: http://radarr:7878 114 | server: my-docker 115 | container: radarr 116 | # widget: 117 | # type: radarr 118 | # url: 119 | # key: 120 | # enableQueue: true 121 | 122 | - Transmission: 123 | icon: transmission.png 124 | href: http://localhost:9091 125 | description: cross-platform BitTorrent client that integrates with your operating system and behaves like a Mac program 126 | siteMonitor: http://transmission:9091 127 | server: my-docker 128 | container: transmission 129 | widget: 130 | type: transmission 131 | url: http://transmission:9091 132 | rpcUrl: /transmission/ # Optional. Matches the value of "rpc-url" in your Transmission's settings.json file 133 | 134 | - Services: 135 | - Dawarich: 136 | icon: si-mapbox-#000000 137 | href: http://localhost:3007 138 | description: import your location history from Google Maps Timeline and Owntracks, view it on a map and see some statistics, such as the number of countries and cities visited, and distance traveled 139 | siteMonitor: http://dawarich:3000 140 | server: my-docker 141 | container: dawarich 142 | 143 | - ESPHome: 144 | icon: esphome.png 145 | href: http://localhost:6052 146 | description: system to control your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems 147 | siteMonitor: http://esphome:6052 148 | server: my-docker 149 | container: esphome 150 | # widget: 151 | # type: esphome 152 | # url: http://esphome:6052 153 | 154 | - Gitea: 155 | icon: gitea.png 156 | href: http://localhost:3004 157 | description: self-hosted Git service 158 | siteMonitor: http://gitea:3000 159 | server: my-docker 160 | container: gitea 161 | # widget: 162 | # type: gitea 163 | # url: 164 | # key: 165 | 166 | - Gramps-Web: 167 | icon: mdi-family-tree 168 | href: http://localhost:81 169 | description: web app for collaborative genealogy 170 | siteMonitor: http://grampsweb:5000 171 | server: my-docker 172 | container: grampsweb 173 | 174 | - Guacamole: 175 | icon: guacamole.png 176 | href: http://localhost:80 177 | description: client-less remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH over HTML5. 178 | #siteMonitor: http://guacamole:8080 179 | server: my-docker 180 | container: guacamole 181 | 182 | - Home Assistant: 183 | icon: home-assistant.png 184 | href: http://localhost:8123 185 | description: versatile and trustworthy smart home hub that integrates with over 1000 brands and runs on various devices 186 | siteMonitor: http://homeassistant:8123 187 | server: my-docker 188 | container: homeassistant 189 | # widget: 190 | # type: homeassistant 191 | # url: http://homeassistant:8123 192 | # key: 193 | # custom: 194 | # - state: sensor.total_power 195 | # - state: sensor.total_energy_today 196 | # label: energy today 197 | # - template: "{{ states.switch|selectattr('state','equalto','on')|list|length }}" 198 | # label: switches on 199 | # - state: weather.forecast_home 200 | # label: wind speed 201 | # value: "{attributes.wind_speed} {attributes.wind_speed_unit}" 202 | 203 | - Mealie: 204 | icon: mealie.png 205 | href: http://localhost:9925 206 | description: self-hosted recipe manager and meal planner 207 | siteMonitor: http://mealie:9000 208 | server: my-docker 209 | container: mealie 210 | # widget: 211 | # type: mealie 212 | # url: http://mealie-frontend.host.or.ip 213 | # key: mealieapitoken 214 | - Moodle: 215 | icon: moodle.png 216 | href: http://localhost:8089 217 | description: open-source learning platform designed to provide educators, administrators, and learners with a single robust, secure, and integrated system to create personalized learning environments 218 | siteMonitor: http://moodle:8080 219 | server: my-docker 220 | container: moodle 221 | 222 | - Vaultwarden: 223 | icon: vaultwarden.png 224 | href: http://localhost:8093 225 | description: unofficial Bitwarden compatible server written in Rust 226 | siteMonitor: http://vaultwarden:80 227 | server: my-docker 228 | container: vaultwarden 229 | 230 | - Webtrees: 231 | icon: webtrees.png 232 | href: http://localhost:86 233 | description: web-based genealogy application that works from standard GEDCOM files 234 | siteMonitor: http://webtrees:80 235 | server: my-docker 236 | container: webtrees 237 | 238 | - Tools: 239 | - CyberChef: 240 | icon: cyberchef.png 241 | href: http://localhost:8094 242 | description: web app for analyzing and decoding data 243 | siteMonitor: http://cyberchef:80 244 | server: my-docker 245 | container: cyberchef 246 | 247 | - JDownloader: 248 | icon: jdownloader.png 249 | href: http://localhost:5800/ 250 | description: free, open-source download management tool with a huge community that makes downloading as easy and fast as it should be 251 | siteMonitor: http://jdownloader:5800/ 252 | server: my-docker 253 | container: jdownloader 254 | # widget: 255 | # type: jdownloader 256 | # username: "" 257 | # password: "" 258 | # client: 259 | 260 | - Jupyter: 261 | icon: jupyter.png 262 | href: http://localhost:8888 263 | description: open-source web application that allows you to create and share documents that contain live code, equations, visualizations, and narrative text 264 | siteMonitor: http://jupyter:8888 265 | server: my-docker 266 | container: jupyter 267 | 268 | - IT-Tools: 269 | icon: it-tools.png 270 | href: http://localhost:8095 271 | description: collection of IT tools 272 | siteMonitor: http://it-tools:80 273 | server: my-docker 274 | container: it-tools 275 | 276 | - MeTube: 277 | icon: metube.png 278 | href: http://localhost:8088 279 | description: Web GUI for youtube-dl (using the yt-dlp fork) with playlist support 280 | siteMonitor: http://metube:8081 281 | server: my-docker 282 | container: metube 283 | # widget: 284 | # type: metube 285 | # url: 286 | # username: 287 | # password: 288 | 289 | - Nextcloud: 290 | icon: nextcloud.png 291 | href: http://localhost:8080 292 | description: self-hosted cloud storage and collaboration software that offers file access, talk, groupware and office integration 293 | siteMonitor: http://nextcloud:80 294 | server: my-docker 295 | container: nextcloud 296 | # widget: 297 | # type: nextcloud 298 | # url: 299 | # username: 300 | # password: 301 | 302 | - OliveTin: 303 | icon: olivetin.png 304 | href: http://localhost:1337 305 | description: safe and simple access to predefined shell commands from a web interface 306 | siteMonitor: http://olivetin:1337 307 | server: my-docker 308 | container: olivetin 309 | 310 | - Pinchflat: 311 | icon: pinchflat.png 312 | href: http://localhost:8945 313 | description: app for downloading YouTube content built using yt-dlp 314 | siteMonitor: http://pinchflat:8945 315 | server: my-docker 316 | container: pinchflat 317 | 318 | - StirlingPDF: 319 | icon: stirling-pdf.png 320 | href: http://localhost:8092 321 | description: self-hosted PDF tools 322 | siteMonitor: http://stirlingpdf:8080 323 | server: my-docker 324 | container: stirlingpdf 325 | 326 | - Webtop: 327 | icon: webtop.png 328 | href: http://localhost:3008 329 | description: web-based desktop environment 330 | siteMonitor: http://webtop:3000 331 | server: my-docker 332 | container: webtop 333 | 334 | - Databases: 335 | - CockroachDB: 336 | icon: si-cockroachlabs 337 | description: Port 26257 distributed SQL database built on a transactional and strongly-consistent key-value store 338 | server: my-docker 339 | container: cockroachdb 340 | - CouchDB Obsidian LiveSync: 341 | icon: si-obsidian-#7C3AED 342 | href: http://localhost:5984/_utils/ 343 | description: self-hosted LiveSync is a community-implemented synchronization plugin, available on every obsidian-compatible platform and using CouchDB or Object Storage 344 | siteMonitor: http://obsidian-livesync:5984/_utils/ 345 | server: my-docker 346 | container: obsidian-livesync 347 | - Firebird: 348 | icon: si-thunderbird-#0A84FF 349 | description: Port 3050 relational database offering many ANSI SQL standard features that runs on Linux, Windows, and a variety of Unix platforms 350 | server: my-docker 351 | container: firebird 352 | - LibSQL: 353 | icon: si-ardour-#C61C3E 354 | description: Port 5001 SQL Server database that runs on Windows and Linux 355 | server: my-docker 356 | container: libsql 357 | - MariaDB: 358 | icon: mariadb.png 359 | description: Port 3306 relational database management system that runs on Linux, Windows, and a variety of Unix platforms 360 | server: my-docker 361 | container: mariadb 362 | - MySQL 8: 363 | icon: si-mysql-#4479A1 364 | description: Port 3308 relational database management system that runs on Linux, Windows, and a variety of Unix platforms 365 | server: my-docker 366 | container: mysql8 367 | - PostgreSQL 15: 368 | icon: si-postgresql-#336791 369 | description: Port 5432 object-relational database system that runs on Linux, Windows, and a variety of Unix platforms 370 | server: my-docker 371 | container: postgres15 372 | - Redis: 373 | icon: redis.png 374 | description: Port 6379 in-memory data structure store, used as a database, cache, and message broker 375 | server: my-docker 376 | container: redis 377 | 378 | - Database Clients: 379 | - Adminer: 380 | icon: adminer.png 381 | href: http://localhost:8081 382 | description: database management in a single PHP file 383 | #siteMonitor: http://adminer:8081 384 | server: my-docker 385 | container: adminer 386 | 387 | - DBGate: 388 | icon: mdi-database-eye-outline-#2793da 389 | href: http://localhost:8084 390 | description: database manager that supports MySQL, PostgreSQL, SQL Server, SQLite, and MongoDB 391 | #siteMonitor: http://dbgate:8084 392 | server: my-docker 393 | container: dbgate 394 | 395 | - InfluxDB: 396 | icon: influxdb.png 397 | href: http://localhost:8086 398 | description: time-series database designed to handle high write and query loads 399 | siteMonitor: http://influxdb:8086 400 | server: my-docker 401 | container: influxdb 402 | 403 | - PHPmyAdmin: 404 | icon: phpmyadmin.png 405 | href: http://localhost:8083 406 | description: web-based tool for managing MySQL databases 407 | #siteMonitor: http://phpmyadmin:8083 408 | server: my-docker 409 | container: phpmyadmin 410 | 411 | - SQLChat: 412 | icon: mdi-robot-excited-#504be2 413 | href: http://localhost:3005 414 | description: chat with your database 415 | siteMonitor: http://sqlchat:3000 416 | server: my-docker 417 | container: sqlchat 418 | 419 | - WhoDB: 420 | icon: mdi-database-eye-#36c1b1 421 | href: http://localhost:8082 422 | description: web-based database management tool 423 | #siteMonitor: http://whodb:8082 424 | server: my-docker 425 | container: whodb 426 | 427 | - Server Management: 428 | - Alpine: 429 | icon: alpine.png 430 | description: lightweight Linux distribution "docker exec -it alpine /bin/sh" 431 | server: my-docker 432 | container: alpine 433 | 434 | - Authentik: 435 | icon: authentik.png 436 | href: http://localhost:9001 437 | description: secure and flexible solution for managing your identity needs 438 | siteMonitor: http://server:9000 439 | server: my-docker 440 | container: authentik-server 441 | # widget: 442 | # type: authentik 443 | # url: 444 | # key: 445 | 446 | - CloudCMD: 447 | icon: cloudcmd.png 448 | href: http://localhost:8000 449 | description: file manager for the web. It includes a command-line console and a text editor 450 | siteMonitor: http://cloudcmd:8000 451 | server: my-docker 452 | container: cloudcmd 453 | 454 | - Glances: 455 | icon: glances.png 456 | href: http://localhost:61208 457 | description: cross-platform monitoring tool that aims to present a large amount of monitoring information through a curses or Web-based interface 458 | siteMonitor: http://host.docker.internal:61208 459 | server: my-docker 460 | container: glances 461 | widget: 462 | type: glances 463 | url: http://host.docker.internal:61208 464 | version: 4 # required only if running glances v4 or higher, defaults to 3 465 | metric: cpu 466 | diskUnits: bytes # optional, bytes (default) or bbytes. Only applies to disk 467 | pointsLimit: 15 # optional, defaults to 15 468 | 469 | - Grafana-Loki: 470 | icon: grafana.png 471 | href: http://localhost:3000 472 | description: open-source logging system that does not index the contents of the logs, but rather a set of labels for each log stream 473 | siteMonitor: http://grafana:3000 474 | server: my-docker 475 | container: grafana 476 | # widget: 477 | # type: grafana 478 | # url: 479 | # username: 480 | # password: 481 | 482 | - Netdata: 483 | icon: netdata.png 484 | href: http://localhost:19999 485 | description: real-time performance monitoring, done right 486 | siteMonitor: http://host.docker.internal:19999 487 | server: my-docker 488 | container: netdata 489 | widget: 490 | type: netdata 491 | url: http://host.docker.internal:19999 492 | 493 | - Tiny File Manager: 494 | icon: si-files-#4285F4 495 | href: http://localhost:8091 496 | description: web-based file manager that allows you to create, edit, copy, move, download and compress files easily and quickly 497 | siteMonitor: http://tinyfilemanager:80 498 | server: my-docker 499 | 500 | - VS Code: 501 | icon: code.png 502 | href: http://localhost:8443 503 | description: VS Code on any machine and access it in the browser 504 | siteMonitor: http://code-server:8443 505 | server: my-docker 506 | container: code-server 507 | 508 | - Docker Management: 509 | - cAdvisor: 510 | icon: cadvisor.png 511 | href: http://localhost:8096 512 | description: provides container users an understanding of the resource usage and performance characteristics of their running containers 513 | siteMonitor: http://cadvisor:8080 514 | server: my-docker 515 | container: cadvisor 516 | 517 | - Dockge: 518 | icon: dockge.png 519 | href: http://localhost:5002 520 | description: fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager 521 | siteMonitor: http://dockge:5001 522 | server: my-docker 523 | container: dockge 524 | 525 | - Dozzle: 526 | icon: dozzle.png 527 | href: http://localhost:8087 528 | description: web-based application that provides a real-time log viewer for Docker containers 529 | siteMonitor: http://dozzle:8080 530 | server: my-docker 531 | container: dozzle 532 | 533 | - Portainer: 534 | icon: portainer.png 535 | href: http://localhost:9000 536 | description: versatile container management software that simplifies your secure adoption of containers 537 | siteMonitor: http://portainer:9000 538 | server: my-docker 539 | container: portainer 540 | # widget: 541 | # type: portainer 542 | # url: 543 | # env: 544 | # key: 545 | 546 | - Watchtower: 547 | icon: watchtower.png 548 | description: automatically update the running Docker containers 549 | server: my-docker 550 | container: watchtower 551 | 552 | - Network: 553 | - Adguard Home: 554 | icon: adguard-home.png 555 | href: http://localhost:3002 556 | description: network-wide ads & trackers blocking DNS server 557 | siteMonitor: http://adguard-home:3000 558 | server: my-docker 559 | container: adguard-home 560 | # widget: 561 | # type: adguardhome 562 | # url: http://adguard-home:3002 563 | # user: 564 | # password: 565 | 566 | - MySpeed: 567 | icon: mdi-speedometer-#232835 568 | href: http://localhost:5216 569 | description: internet speed test 570 | siteMonitor: http://myspeed:5216 571 | server: my-docker 572 | container: myspeed 573 | widget: 574 | type: myspeed 575 | url: http://myspeed:5216 576 | #password: password # only required if password is set 577 | 578 | - NetAlertX: 579 | icon: netalertx.png 580 | href: http://localhost:20211 581 | description: network monitoring tool 582 | siteMonitor: http://host.docker.internal:20211 583 | server: my-docker 584 | container: netalertx 585 | widget: 586 | type: netalertx 587 | url: http://host.docker.internal:20211 588 | 589 | - nginx: 590 | icon: nginx.png 591 | href: http://localhost:82 592 | description: web server that can also be used as a reverse proxy, load balancer, mail proxy, and HTTP cache 593 | siteMonitor: http://nginx:80 594 | server: my-docker 595 | container: nginx 596 | 597 | - Pi-hole: 598 | icon: pi-hole.png 599 | href: http://localhost:9002/admin 600 | description: network-wide ad blocking 601 | siteMonitor: http://pihole:80 602 | server: my-docker 603 | container: pihole 604 | # widget: 605 | # type: pihole 606 | # url: http://pi.hole.or.ip 607 | # version: 6 # required if running v6 or higher, defaults to 5 608 | # key: yourpiholeapikey # optional 609 | 610 | - Traefik: 611 | icon: traefik.png 612 | href: http://localhost:8085 613 | description: open-source Edge Router that automatically discovers and routes requests to your services 614 | siteMonitor: http://traefik:8080 615 | server: my-docker 616 | container: traefik 617 | widget: 618 | type: traefik 619 | url: http://traefik:8080 620 | 621 | - Uptime Kuma: 622 | icon: uptime-kuma.png 623 | href: http://localhost:3001 624 | description: easy-to-use self-hosted monitoring tool 625 | siteMonitor: http://uptime-kuma:3001 626 | server: my-docker 627 | container: uptime-kuma 628 | # widget: 629 | # type: uptimekuma 630 | # url: 631 | # slug: 632 | 633 | - Whoami: 634 | icon: mdi-hat-fedora-#000000 635 | href: http://localhost:84 636 | description: simple HTTP server that shows its hostname and IP address 637 | siteMonitor: http://whoami:80 638 | server: my-docker 639 | container: whoami 640 | -------------------------------------------------------------------------------- /homepage/homepage-config/settings.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # For configuration options and examples, please see: 3 | # https://gethomepage.dev/latest/configs/settings 4 | 5 | providers: 6 | openweathermap: openweathermapapikey 7 | weatherapi: weatherapiapikey 8 | 9 | background: 10 | image: images/neon-sun.jpg 11 | blur: sm # sm, "", md, xl... see https://tailwindcss.com/docs/backdrop-blur 12 | saturate: 300 # 0, 50, 100... see https://tailwindcss.com/docs/backdrop-saturate 13 | brightness: 1 # 0, 50, 75... see https://tailwindcss.com/docs/backdrop-brightness 14 | opacity: 80 # 0-100 15 | 16 | showStats: true -------------------------------------------------------------------------------- /homepage/homepage-config/widgets.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # For configuration options and examples, please see: 3 | # https://gethomepage.dev/latest/configs/service-widgets 4 | 5 | - resources: 6 | cpu: true 7 | memory: true 8 | disk: / 9 | 10 | - search: 11 | provider: duckduckgo 12 | target: _blank 13 | 14 | 15 | - datetime: 16 | # 4 januari 2023 om 13:51:25 PST 17 | locale: de 18 | text_size: 4xl 19 | format: 20 | dateStyle: long 21 | timeStyle: short 22 | hourCycle: h23 -------------------------------------------------------------------------------- /homepage/images/neon-sun.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dominikhoebert/docker-projects/05e821294785f45a0f1874c7312fdd3c441a5d66/homepage/images/neon-sun.jpg -------------------------------------------------------------------------------- /homepage1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dominikhoebert/docker-projects/05e821294785f45a0f1874c7312fdd3c441a5d66/homepage1.jpg -------------------------------------------------------------------------------- /homepage2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dominikhoebert/docker-projects/05e821294785f45a0f1874c7312fdd3c441a5d66/homepage2.jpg -------------------------------------------------------------------------------- /homer/assets/config.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Homepage configuration 3 | # See https://fontawesome.com/icons for icons options 4 | 5 | title: "Demo dashboard" 6 | subtitle: "Homer" 7 | logo: "logo.png" 8 | # icon: "fas fa-skull-crossbones" # Optional icon 9 | 10 | header: true 11 | footer: '

Created with with bulma, vuejs & font awesome // Fork me on

' # set false if you want to hide it. 12 | 13 | # Optional theme customization 14 | theme: default 15 | colors: 16 | light: 17 | highlight-primary: "#3367d6" 18 | highlight-secondary: "#4285f4" 19 | highlight-hover: "#5a95f5" 20 | background: "#f5f5f5" 21 | card-background: "#ffffff" 22 | text: "#363636" 23 | text-header: "#ffffff" 24 | text-title: "#303030" 25 | text-subtitle: "#424242" 26 | card-shadow: rgba(0, 0, 0, 0.1) 27 | link-hover: "#363636" 28 | dark: 29 | highlight-primary: "#3367d6" 30 | highlight-secondary: "#4285f4" 31 | highlight-hover: "#5a95f5" 32 | background: "#131313" 33 | card-background: "#2b2b2b" 34 | text: "#eaeaea" 35 | text-header: "#ffffff" 36 | text-title: "#fafafa" 37 | text-subtitle: "#f5f5f5" 38 | card-shadow: rgba(0, 0, 0, 0.4) 39 | link-hover: "#ffdd57" 40 | 41 | # Optional message 42 | message: 43 | #url: https://b4bz.io 44 | style: "is-dark" # See https://bulma.io/documentation/components/message/#colors for styling options. 45 | title: "Demo !" 46 | icon: "fa fa-grin" 47 | content: "This is a dummy homepage demo.
Find more information on github.com/bastienwirtz/homer" 48 | 49 | # Optional navbar 50 | # links: [] # Allows for navbar (dark mode, layout, and search) without any links 51 | links: 52 | - name: "Contribute" 53 | icon: "fab fa-github" 54 | url: "https://github.com/bastienwirtz/homer" 55 | target: "_blank" # optional html a tag target attribute 56 | - name: "Wiki" 57 | icon: "fas fa-book" 58 | url: "https://www.wikipedia.org/" 59 | # this will link to a second homer page that will load config from additionnal-page.yml and keep default config values as in config.yml file 60 | # see url field and assets/additionnal-page.yml.dist used in this example: 61 | - name: "another page!" 62 | icon: "fas fa-file-alt" 63 | url: "#additionnal-page" 64 | 65 | # Services 66 | # First level array represent a group. 67 | # Leave only a "items" key if not using group (group name, icon & tagstyle are optional, section separation will not be displayed). 68 | services: 69 | - name: "Applications" 70 | icon: "fas fa-cloud" 71 | items: 72 | - name: "Awesome app" 73 | logo: "assets/tools/sample.png" 74 | subtitle: "Bookmark example" 75 | tag: "app" 76 | url: "https://www.reddit.com/r/selfhosted/" 77 | target: "_blank" # optional html a tag target attribute 78 | - name: "Another one" 79 | logo: "assets/tools/sample2.png" 80 | subtitle: "Another application" 81 | tag: "app" 82 | url: "#" 83 | -------------------------------------------------------------------------------- /homer/assets/example.custom.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /* Custom card colors */ 4 | /* Use with `class:` property of services in config.yml */ 5 | body #app .card.green { 6 | background-color: #006600; 7 | color: #00ff00; 8 | } 9 | -------------------------------------------------------------------------------- /homer/assets/example2.config.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Homepage configuration 3 | # See https://fontawesome.com/icons for icons options 4 | 5 | title: "Hello beautiful!" 6 | subtitle: "App dashboard" 7 | logo: false 8 | # icon: "fas fa-skull-crossbones" Optional icon 9 | 10 | header: true 11 | 12 | # Optional theme customization 13 | theme: sui 14 | colors: 15 | light: 16 | highlight-primary: transparent 17 | highlight-secondary: transparent 18 | highlight-hover: "#4a4a4a" 19 | text-subtitle: "#424242" 20 | dark: 21 | background: "#2B2C56" 22 | highlight-primary: transparent 23 | highlight-secondary: transparent 24 | highlight-hover: "#200b35" 25 | text-subtitle: "#6375e8" 26 | 27 | # Optional navbar 28 | # links: [] # Allows for navbar (dark mode, layout, and search) without any links 29 | links: [] 30 | 31 | # Services 32 | # First level array represent a group. 33 | # Leave only a "items" key if not using group (group name, icon & tagstyle are optional, section separation will not be displayed). 34 | services: 35 | - name: "APPLICATIONS" 36 | items: 37 | - name: "Jenkins" 38 | logo: "assets/tools/jenkins.png" 39 | subtitle: "Continuous integration server" 40 | url: "https://jenkins.io/" 41 | - name: "RabbitMQ Management" 42 | logo: "assets/tools/rabbitmq.png" 43 | subtitle: "Manage & monitor RabbitMQ server" 44 | # Optional tagstyle 45 | # Same styling options as the optional message. 46 | tagstyle: "is-success" 47 | url: "https://www.rabbitmq.com/" 48 | - name: "M/Monit" 49 | logo: "assets/tools/monit.png" 50 | subtitle: "Monitor & manage all monit enabled hosts" 51 | url: "https://mmonit.com/monit/" 52 | - name: "Grafana" 53 | logo: "assets/tools/grafana.png" 54 | subtitle: "Metric analytics & dashboards" 55 | url: "https://grafana.com/" 56 | - name: "Kibana" 57 | logo: "assets/tools/elastic.png" 58 | subtitle: "Explore & visualize logs" 59 | url: "https://www.elastic.co/products/kibana" 60 | - name: "Website monitoring" 61 | logo: "assets/tools/pingdom.png" 62 | subtitle: "Pingdom public reports overview" 63 | tag: "CI" 64 | url: "https://www.pingdom.com/" 65 | -------------------------------------------------------------------------------- /homer/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/bastienwirtz/homer 2 | # https://homer-demo.netlify.app/ 3 | # A dead simple static HOMepage for your servER to keep your services on hand, from a simple yaml configuration file 4 | 5 | name: homer 6 | 7 | services: 8 | homer: 9 | image: docker.io/b4bz/homer:v24.05.1 10 | container_name: homer 11 | ports: 12 | - 8099:8080 13 | volumes: 14 | - ./assets/:/www/assets 15 | networks: 16 | - proxy 17 | 18 | networks: 19 | proxy: 20 | external: true 21 | -------------------------------------------------------------------------------- /immich/.env: -------------------------------------------------------------------------------- 1 | # You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables 2 | 3 | # The location where your uploaded files are stored 4 | UPLOAD_LOCATION=./library 5 | # The location where your database files are stored 6 | DB_DATA_LOCATION=./postgres 7 | 8 | # To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List 9 | TZ=Europe/Vienna 10 | 11 | # The Immich version to use. You can pin this to a specific version like "v1.71.0" 12 | IMMICH_VERSION=release 13 | 14 | # Connection secret for postgres. You should change it to a random password 15 | DB_PASSWORD=postgres 16 | 17 | # The values below this line do not need to be changed 18 | ################################################################################### 19 | DB_USERNAME=postgres 20 | DB_DATABASE_NAME=immich 21 | -------------------------------------------------------------------------------- /immich/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # https://immich.app/ 2 | # Self-hosted photo and video management solution with machine learning capabilities. 3 | # WARNING: Make sure to use the docker-compose.yml of the current release: 4 | # 5 | # https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml 6 | # 7 | # The compose file on main may not be compatible with the latest release. 8 | # 9 | 10 | name: immich 11 | 12 | services: 13 | immich-server: 14 | container_name: immich_server 15 | image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} 16 | # extends: 17 | # file: hwaccel.transcoding.yml 18 | # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding 19 | volumes: 20 | # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file 21 | - ${UPLOAD_LOCATION}:/usr/src/app/upload 22 | - /etc/localtime:/etc/localtime:ro 23 | env_file: 24 | - .env 25 | ports: 26 | - 2283:2283 27 | depends_on: 28 | - redis 29 | - database 30 | restart: always 31 | 32 | immich-machine-learning: 33 | container_name: immich_machine_learning 34 | # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag. 35 | # Example tag: ${IMMICH_VERSION:-release}-cuda 36 | image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} 37 | # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration 38 | # file: hwaccel.ml.yml 39 | # service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable 40 | volumes: 41 | - model-cache:/cache 42 | env_file: 43 | - .env 44 | restart: always 45 | 46 | redis: 47 | container_name: immich_redis 48 | image: docker.io/redis:6.2-alpine@sha256:e3b17ba9479deec4b7d1eeec1548a253acc5374d68d3b27937fcfe4df8d18c7e 49 | healthcheck: 50 | test: redis-cli ping || exit 1 51 | restart: always 52 | 53 | database: 54 | container_name: immich_postgres 55 | image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0 56 | environment: 57 | POSTGRES_PASSWORD: ${DB_PASSWORD} 58 | POSTGRES_USER: ${DB_USERNAME} 59 | POSTGRES_DB: ${DB_DATABASE_NAME} 60 | POSTGRES_INITDB_ARGS: '--data-checksums' 61 | volumes: 62 | # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file 63 | - ${DB_DATA_LOCATION}:/var/lib/postgresql/data 64 | healthcheck: 65 | test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1 66 | interval: 5m 67 | start_interval: 30s 68 | start_period: 5m 69 | command: [ "postgres", "-c", "shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on" ] 70 | restart: always 71 | 72 | volumes: 73 | model-cache: 74 | -------------------------------------------------------------------------------- /it-tools/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/CorentinTh/it-tools 2 | # https://it-tools.tech/ 3 | 4 | # Useful tools for developer and people working in IT 5 | 6 | name: it-tools 7 | 8 | services: 9 | it-tools: 10 | container_name: it-tools 11 | image: corentinth/it-tools:latest 12 | ports: 13 | - 8095:80 14 | networks: 15 | - proxy 16 | 17 | networks: 18 | proxy: 19 | external: true 20 | -------------------------------------------------------------------------------- /jdownloader2/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # https://jdownloader.org/jdownloader2 2 | 3 | version: '3' 4 | name: jdownloader2 5 | services: 6 | jdownloader-2: 7 | container_name: jdownloader 8 | image: jlesage/jdownloader-2 9 | ports: 10 | - "5800:5800" 11 | volumes: 12 | - "./config:/config:rw" 13 | - "./downloads:/output:rw" 14 | networks: 15 | - proxy 16 | 17 | networks: 18 | proxy: 19 | external: true 20 | -------------------------------------------------------------------------------- /jupyter/compose.yml: -------------------------------------------------------------------------------- 1 | # https://jupyter.org/ 2 | # https://jupyter.org/try-jupyter/lab/ 3 | 4 | # web-based interactive development environment for notebooks, code, and data. It supports over 40 programming languages, big data integration, and a multi-user version of the notebook called JupyterHub 5 | 6 | name: jupyter 7 | services: 8 | jupyter: 9 | image: jupyter/datascience-notebook:latest 10 | container_name: jupyter 11 | ports: 12 | - 8888:8888 13 | environment: 14 | JUPYTER_ENABLE_LAB: "yes" 15 | JUPYTER_TOKEN: "changeme" 16 | networks: 17 | - proxy 18 | 19 | networks: 20 | proxy: 21 | external: true 22 | -------------------------------------------------------------------------------- /kavita/compose.yml: -------------------------------------------------------------------------------- 1 | # https://www.kavitareader.com/ 2 | 3 | # Lightning fast with a slick design, Kavita is a rocket fueled self-hosted digital library which supports a vast array of file formats 4 | 5 | # https://demo.kavitareader.com demouser/Demouser64 6 | 7 | name: kavita 8 | 9 | services: 10 | kavita: 11 | container_name: kavita 12 | image: jvmilazz0/kavita:latest 13 | volumes: 14 | - ./manga:/manga 15 | - ./data:/kavita/config 16 | ports: 17 | - "5003:5000" 18 | networks: 19 | - proxy 20 | 21 | networks: 22 | proxy: 23 | external: true 24 | -------------------------------------------------------------------------------- /loki/compose.yml: -------------------------------------------------------------------------------- 1 | name: loki 2 | services: 3 | loki: 4 | container_name: loki 5 | image: docker.io/grafana/loki 6 | command: "-config.file=/etc/loki/config.yaml" 7 | ports: 8 | # --> (Optional) Remove when using traefik... 9 | - "3100:3100" 10 | # <-- 11 | volumes: 12 | - ./config/config.yaml:/etc/loki/config.yaml:ro 13 | - data_loki:/loki:rw 14 | # --> (Optional) When using traefik... 15 | # labels: 16 | # - traefik.enable=true 17 | # # -- Traefik Services 18 | # - traefik.http.services.loki.loadbalancer.server.port=3100 19 | # # -- Traefik Routers 20 | # - traefik.http.routers.loki.entrypoints=websecure 21 | # - traefik.http.routers.loki.rule=Host(`loki-fqdn`) 22 | # - traefik.http.routers.loki.tls=true 23 | # - traefik.http.routers.loki.tls.certresolver=cloudflare 24 | # - traefik.http.routers.loki.service=loki 25 | # # -- (Optional) Authentication 26 | # # - traefik.http.routers.loki.middlewares=authentik-middleware@file 27 | # networks: 28 | # - frontend 29 | # <-- 30 | restart: unless-stopped 31 | networks: 32 | - proxy 33 | 34 | 35 | networks: 36 | proxy: 37 | external: true 38 | 39 | volumes: 40 | data_loki: 41 | driver: local 42 | 43 | # --> (Optional) When using traefik... 44 | # networks: 45 | # frontend: 46 | # external: true 47 | # <-- -------------------------------------------------------------------------------- /loki/config/config.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | auth_enabled: false 3 | 4 | server: 5 | http_listen_port: 3100 6 | 7 | common: 8 | instance_addr: 127.0.0.1 9 | path_prefix: /loki 10 | storage: 11 | filesystem: 12 | chunks_directory: /loki/chunks 13 | rules_directory: /loki/rules 14 | replication_factor: 1 15 | ring: 16 | kvstore: 17 | store: inmemory 18 | 19 | schema_config: 20 | configs: 21 | - from: 2020-10-24 22 | store: tsdb 23 | object_store: filesystem 24 | schema: v13 25 | index: 26 | prefix: index_ 27 | period: 24h 28 | 29 | ruler: 30 | alertmanager_url: http://localhost:9093 31 | -------------------------------------------------------------------------------- /mariadb/compose.yml: -------------------------------------------------------------------------------- 1 | # Use root/example as user/password credentials 2 | 3 | name: mariadb 4 | 5 | services: 6 | 7 | mariadb: 8 | image: mariadb 9 | container_name: mariadb 10 | restart: always 11 | ports: 12 | - 3306:3306 13 | environment: 14 | MARIADB_ROOT_PASSWORD: example 15 | MARIADB_USER: example-user 16 | MARIADB_PASSWORD: my_cool_secret 17 | volumes: 18 | - ./mysql:/var/lib/mysql 19 | 20 | # optionale web DB clients/IDEs 21 | 22 | # https://www.adminer.org/ 23 | # Server: mariadb 24 | adminer: 25 | image: adminer 26 | container_name: adminer 27 | ports: 28 | - 8081:8080 29 | 30 | # https://github.com/clidey/whodb 31 | # Host Name: mariadb 32 | whodb: 33 | image: clidey/whodb 34 | container_name: whodb 35 | # volumes: # (optional for sqlite) 36 | # - ./sample.db:/db/sample.db 37 | ports: 38 | - "8082:8080" 39 | 40 | # https://hub.docker.com/_/phpmyadmin 41 | phpmyadmin: 42 | image: phpmyadmin 43 | container_name: phpmyadmin 44 | ports: 45 | - 8083:80 46 | environment: 47 | - PMA_ARBITRARY=1 48 | - PMA_HOST=mariadb 49 | 50 | # https://dbgate.org/ 51 | dbgate: 52 | image: dbgate/dbgate 53 | container_name: dbgate 54 | ports: 55 | - 8084:3000 56 | volumes: 57 | - ./dbgate-data:/root/.dbgate 58 | environment: 59 | CONNECTIONS: con1 60 | LABEL_con1: MariaDB 61 | SERVER_con1: mariadb 62 | USER_con1: root 63 | PASSWORD_con1: example 64 | PORT_con1: 3306 65 | ENGINE_con1: mysql@dbgate-plugin-mysql 66 | 67 | nocodb: 68 | container_name: nocodb 69 | # environment: 70 | # NC_DB: "mysql://mariadb:3306?u=root&p=example" 71 | image: "nocodb/nocodb:latest" 72 | ports: 73 | - "8070:8080" 74 | restart: unless-stopped 75 | volumes: 76 | - ./nc_data:/usr/app/data 77 | 78 | # https://github.com/sqlchat/sqlchat 79 | # https://github.com/dominikhoebert/docker-projects/blob/master/sqlchat/compose.yml 80 | -------------------------------------------------------------------------------- /mealie/compose.yml: -------------------------------------------------------------------------------- 1 | # https://demo.mealie.io/login 2 | # https://mealie.io/ 3 | # intuitive and easy to use recipe management app 4 | 5 | name: mealie 6 | services: 7 | mealie: 8 | image: ghcr.io/mealie-recipes/mealie:v1.11.0 # 9 | container_name: mealie 10 | restart: always 11 | ports: 12 | - "9925:9000" # 13 | deploy: 14 | resources: 15 | limits: 16 | memory: 1000M # 17 | volumes: 18 | - mealie-data:/app/data/ 19 | environment: 20 | # Set Backend ENV Variables Here 21 | ALLOW_SIGNUP: false 22 | PUID: 1000 23 | PGID: 1000 24 | TZ: Europe/Vienna 25 | MAX_WORKERS: 1 26 | WEB_CONCURRENCY: 1 27 | BASE_URL: https://mealie.yourdomain.com 28 | networks: 29 | - proxy 30 | 31 | volumes: 32 | mealie-data: 33 | 34 | networks: 35 | proxy: 36 | external: true 37 | -------------------------------------------------------------------------------- /metube/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/alexta69/metube 2 | 3 | # Web GUI for youtube-dl (using the yt-dlp fork) with playlist support. Allows you to download videos from YouTube and dozens of other sites. 4 | 5 | name: metube 6 | services: 7 | metube: 8 | networks: 9 | - proxy 10 | image: ghcr.io/alexta69/metube 11 | container_name: metube 12 | ports: 13 | - "8088:8081" 14 | volumes: 15 | - ./downloads:/downloads 16 | 17 | networks: 18 | proxy: 19 | external: true 20 | -------------------------------------------------------------------------------- /monitor/compose.yml: -------------------------------------------------------------------------------- 1 | # https://docs.monitor.dev/ 2 | # https://demo.monitor.dev/ 3 | # Build and deployment system 4 | 5 | name: monitor 6 | 7 | services: 8 | monitor-core: 9 | container_name: monitor 10 | image: ghcr.io/mbecker20/monitor:latest ## use ghcr.io/mbecker20/monitor:latest-aarch64 for arm support 11 | restart: unless-stopped 12 | depends_on: 13 | - monitor-mongo 14 | logging: 15 | driver: local # enable log rotation by default. see `https://docs.docker.com/config/containers/logging/local/` 16 | ports: 17 | - 9120:9120 18 | extra_hosts: 19 | # allows for local periphery connection at "http://host.docker.internal:8120" 20 | - host.docker.internal:host-gateway 21 | environment: 22 | # https://github.com/mbecker20/monitor/blob/main/config_example/core.config.example.toml 23 | MONITOR_HOST: http://localhost:9120 24 | MONITOR_TITLE: Monitor # Change the app title, displayed in the browser tab. 25 | ## MONGO 26 | MONITOR_MONGO_ADDRESS: monitor-mongo:27017 27 | MONITOR_MONGO_USERNAME: admin # match ones below 28 | MONITOR_MONGO_PASSWORD: admin 29 | ## KEYS 30 | MONITOR_PASSKEY: a_random_passkey # used to auth against periphery 31 | MONITOR_WEBHOOK_SECRET: a_random_secret # used to authenticate incoming webhooks 32 | MONITOR_JWT_SECRET: a_random_jwt_secret # Optional. If empty, will have to log in again on restart. 33 | ## AUTH 34 | MONITOR_LOCAL_AUTH: true # the default is false. 35 | # MONITOR_GITHUB_OAUTH_ENABLED: true # also support google oauth 36 | # MONITOR_GITHUB_OAUTH_ID: your_oauth_id 37 | # MONITOR_GITHUB_OAUTH_SECRET: your_oauth_secret 38 | ## AWS 39 | # MONITOR_AWS_ACCESS_KEY_ID: your_aws_key_id 40 | # MONITOR_AWS_SECRET_ACCESS_KEY: your_secret_access_key 41 | ## HETZNER 42 | # MONITOR_HETZNER_TOKEN: your_hetzner_token 43 | networks: 44 | - proxy 45 | 46 | monitor-mongo: 47 | container_name: monitor_db 48 | image: mongo 49 | command: --quiet # suppress mongo logs a bit 50 | restart: unless-stopped 51 | logging: 52 | driver: local 53 | ports: 54 | - 27017:27017 55 | volumes: 56 | - ./db-data:/data/db 57 | environment: 58 | MONGO_INITDB_ROOT_USERNAME: admin # change these 59 | MONGO_INITDB_ROOT_PASSWORD: admin 60 | networks: 61 | - proxy 62 | 63 | networks: 64 | proxy: 65 | external: true 66 | -------------------------------------------------------------------------------- /moodle/compose.yml: -------------------------------------------------------------------------------- 1 | # https://hub.docker.com/r/bitnami/moodle 2 | 3 | # open source online Learning Management System widely used at universities, schools, and corporations. It is modular and highly adaptable to any type of online learning 4 | 5 | # Login: user/bitnami 6 | 7 | name: moodle 8 | services: 9 | mariadb_moodle: 10 | container_name: mariadb_moodle 11 | image: docker.io/bitnami/mariadb:11.4 12 | environment: 13 | # ALLOW_EMPTY_PASSWORD is recommended only for development. 14 | - ALLOW_EMPTY_PASSWORD=yes 15 | - MARIADB_USER=bn_moodle 16 | - MARIADB_DATABASE=bitnami_moodle 17 | - MARIADB_CHARACTER_SET=utf8mb4 18 | - MARIADB_COLLATE=utf8mb4_unicode_ci 19 | volumes: 20 | - 'mariadb_data:/bitnami/mariadb' 21 | networks: 22 | - proxy 23 | moodle: 24 | container_name: moodle 25 | image: docker.io/bitnami/moodle:4.4 26 | ports: 27 | - '8089:8080' 28 | #- '443:8443' 29 | environment: 30 | - MOODLE_DATABASE_HOST=mariadb_moodle 31 | - MOODLE_DATABASE_PORT_NUMBER=3306 32 | - MOODLE_DATABASE_USER=bn_moodle 33 | - MOODLE_DATABASE_NAME=bitnami_moodle 34 | # ALLOW_EMPTY_PASSWORD is recommended only for development. 35 | - ALLOW_EMPTY_PASSWORD=yes 36 | volumes: 37 | - 'moodle_data:/bitnami/moodle' 38 | - 'moodledata_data:/bitnami/moodledata' 39 | depends_on: 40 | - mariadb_moodle 41 | networks: 42 | - proxy 43 | 44 | networks: 45 | proxy: 46 | external: true 47 | 48 | volumes: 49 | mariadb_data: 50 | driver: local 51 | moodle_data: 52 | driver: local 53 | moodledata_data: 54 | driver: local 55 | -------------------------------------------------------------------------------- /myspeed/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/gnmyt/myspeed 2 | 3 | # speed test analysis software that records your internet speed for up to 30 days 4 | 5 | name: myspeed 6 | services: 7 | myspeed: 8 | ports: 9 | - 5216:5216 10 | volumes: 11 | - ./data:/myspeed/data 12 | restart: unless-stopped 13 | container_name: myspeed 14 | image: germannewsmaker/myspeed 15 | networks: 16 | - proxy 17 | 18 | networks: 19 | proxy: 20 | external: true 21 | -------------------------------------------------------------------------------- /navidrome/compose.yml: -------------------------------------------------------------------------------- 1 | # https://www.navidrome.org/ 2 | # https://www.navidrome.org/demo/ 3 | # Navidrome allows you to enjoy your music collection from anywhere, by making it available through a modern Web UI and through a wide range of third-party compatible mobile apps, for both iOS and Android devices 4 | 5 | name: navidrome 6 | 7 | services: 8 | navidrome: 9 | container_name: navidrome 10 | image: deluan/navidrome:latest 11 | user: 1000:1000 # should be owner of volumes 12 | ports: 13 | - 4533:4533 14 | environment: 15 | # Optional: put your config options customization here. Examples: 16 | ND_SCANSCHEDULE: 1h 17 | ND_LOGLEVEL: info 18 | ND_SESSIONTIMEOUT: 24h 19 | ND_BASEURL: "" 20 | volumes: 21 | - ./data:/data 22 | - ./music:/music:ro 23 | networks: 24 | - proxy 25 | 26 | networks: 27 | proxy: 28 | external: true 29 | -------------------------------------------------------------------------------- /netalertx/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/jokob-sk/NetAlertX 2 | 3 | # Get visibility of what's going on on your WIFI/LAN network. Schedule scans for devices, port changes and get alerts if unknown devices or changes are found 4 | 5 | name: netalertx 6 | services: 7 | netalertx: 8 | container_name: netalertx 9 | # use the below line if you want to test the latest dev image 10 | # image: "jokobsk/netalertx-dev:latest" 11 | image: "jokobsk/netalertx:latest" 12 | network_mode: "host" 13 | restart: unless-stopped 14 | volumes: 15 | - ./config:/app/config 16 | - ./db:/app/db 17 | # (optional) useful for debugging if you have issues setting up the container 18 | - ./logs:/app/front/log 19 | environment: 20 | - TZ=Europe/Vienna 21 | #- PORT=20211 22 | -------------------------------------------------------------------------------- /netdata/compose.yml: -------------------------------------------------------------------------------- 1 | # https://www.netdata.cloud/ 2 | # https://app.netdata.cloud/spaces/netdata-demo/rooms/all-nodes 3 | # Netdata provides high-fidelity data, real-time visualizations, reliable alerts, anomaly detection for every metric and a monitoring experience that is affordable and works out of the box 4 | 5 | # Windows Installation: https://www.netdata.cloud/windows-monitoring/ 6 | 7 | name: netdata 8 | services: 9 | netdata: 10 | image: netdata/netdata 11 | container_name: netdata 12 | pid: host 13 | network_mode: host 14 | restart: unless-stopped 15 | cap_add: 16 | - SYS_PTRACE 17 | - SYS_ADMIN 18 | security_opt: 19 | - apparmor:unconfined 20 | volumes: 21 | - netdataconfig:/etc/netdata 22 | - netdatalib:/var/lib/netdata 23 | - netdatacache:/var/cache/netdata 24 | #- /:/host/root:ro,rslave 25 | - /etc/passwd:/host/etc/passwd:ro 26 | - /etc/group:/host/etc/group:ro 27 | - /etc/localtime:/etc/localtime:ro 28 | - /proc:/host/proc:ro 29 | - /sys:/host/sys:ro 30 | - /etc/os-release:/host/etc/os-release:ro 31 | - /var/log:/host/var/log:ro 32 | - /var/run/docker.sock:/var/run/docker.sock:ro 33 | 34 | volumes: 35 | netdataconfig: 36 | netdatalib: 37 | netdatacache: 38 | -------------------------------------------------------------------------------- /nextcloud/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/nextcloud/docker 2 | 3 | name: nextcloud 4 | 5 | version: '2' 6 | 7 | volumes: 8 | nextcloud: 9 | db: 10 | 11 | 12 | services: 13 | db: 14 | image: mariadb:10.6 15 | restart: always 16 | command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW 17 | volumes: 18 | - db:/var/lib/mysql 19 | environment: 20 | - MYSQL_ROOT_PASSWORD=example 21 | - MYSQL_PASSWORD=example 22 | - MYSQL_DATABASE=nextcloud 23 | - MYSQL_USER=nextcloud 24 | networks: 25 | - proxy 26 | 27 | nextcloud: 28 | image: nextcloud 29 | container_name: nextcloud 30 | restart: always 31 | ports: 32 | - 8080:80 33 | links: 34 | - db 35 | volumes: 36 | - nextcloud:/var/www/html 37 | environment: 38 | - MYSQL_PASSWORD=example 39 | - MYSQL_DATABASE=nextcloud 40 | - MYSQL_USER=nextcloud 41 | - MYSQL_HOST=db 42 | networks: 43 | - proxy 44 | 45 | networks: 46 | proxy: 47 | external: true 48 | -------------------------------------------------------------------------------- /nexterm/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/gnmyt/Nexterm?tab=readme-ov-file 2 | 3 | # The open source server management software for SSH, VNC & RDP 4 | 5 | name: nexterm 6 | 7 | services: 8 | nexterm: 9 | container_name: nexterm 10 | ports: 11 | - "6989:6989" 12 | restart: always 13 | volumes: 14 | - ./data:/app/data 15 | image: germannewsmaker/nexterm:1.0.2-OPEN-PREVIEW 16 | networks: 17 | - proxy 18 | 19 | networks: 20 | proxy: 21 | external: true 22 | -------------------------------------------------------------------------------- /nginx-proxy-manager/compose.yml: -------------------------------------------------------------------------------- 1 | # https://nginxproxymanager.com/ 2 | 3 | # easily forward to your websites running at home or otherwise, including free SSL, without having to know too much about Nginx or Letsencrypt 4 | 5 | # first login: admin@example.com/changeme 6 | # Port conflicts possible 7 | 8 | name: nginx-proxy-manager 9 | 10 | services: 11 | proxymanager: 12 | container_name: nginx-proxy-manager 13 | image: 'jc21/nginx-proxy-manager:latest' 14 | restart: unless-stopped 15 | ports: 16 | # These ports are in format : 17 | - '80:80' # Public HTTP Port 18 | - '443:443' # Public HTTPS Port 19 | - '8181:81' # Admin Web Port 20 | # Add any other Stream port you want to expose 21 | # - '21:21' # FTP 22 | 23 | # Uncomment the next line if you uncomment anything in the section 24 | # environment: 25 | # Uncomment this if you want to change the location of 26 | # the SQLite DB file within the container 27 | # DB_SQLITE_FILE: "/data/database.sqlite" 28 | 29 | # Uncomment this if IPv6 is not enabled on your host 30 | # DISABLE_IPV6: 'true' 31 | 32 | volumes: 33 | - ./data:/data 34 | - ./letsencrypt:/etc/letsencrypt 35 | networks: 36 | - proxy 37 | 38 | networks: 39 | proxy: 40 | external: true 41 | -------------------------------------------------------------------------------- /nginx/compose.yml: -------------------------------------------------------------------------------- 1 | # https://hub.docker.com/_/nginx 2 | 3 | # Nginx (pronounced "engine-x") is an open source reverse proxy server for 4 | # HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer, HTTP cache, and a web server (origin server). 5 | 6 | name: nginx 7 | services: 8 | nginx: 9 | image: nginx 10 | container_name: nginx 11 | ports: 12 | - 82:80 13 | # (optional) uncomment the line below to enable HTTPS 14 | # - 443:443 15 | volumes: 16 | - ./config/default.conf:/etc/nginx/conf.d/default.conf:ro 17 | - ./data:/usr/share/nginx/html:ro 18 | environment: 19 | NGINX_HOST: localhost 20 | NGINX_PORT: 80 21 | networks: 22 | - proxy 23 | 24 | networks: 25 | proxy: 26 | external: true 27 | -------------------------------------------------------------------------------- /nginx/config/default.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | server_name _; 4 | location / { 5 | root /usr/share/nginx/html; 6 | index index.html; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /nginx/data/index.html: -------------------------------------------------------------------------------- 1 | this is a test website... 2 | -------------------------------------------------------------------------------- /obsidian-livesync/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/vrtmrz/obsidian-livesync 2 | # Self-hosted LiveSync is a community-implemented synchronization plugin, available on every obsidian-compatible platform and using CouchDB or Object Storage 3 | # http://localhost:5984/_utils/ 4 | 5 | name: obsidian-livesync 6 | services: 7 | couchdb: 8 | image: couchdb:latest 9 | container_name: obsidian-livesync 10 | user: 0:0 11 | environment: 12 | - COUCHDB_USER=user 13 | - COUCHDB_PASSWORD=testitest 14 | volumes: 15 | - ./data:/opt/couchdb/data 16 | - ./config/local.ini:/opt/couchdb/etc/local.ini 17 | # Ports not needed when already passed to Traefik 18 | ports: 19 | - 5984:5984 20 | networks: 21 | - proxy 22 | 23 | networks: 24 | proxy: 25 | external: true 26 | 27 | -------------------------------------------------------------------------------- /obsidian-livesync/config/local.ini: -------------------------------------------------------------------------------- 1 | [couchdb] 2 | single_node=true 3 | max_document_size = 50000000 4 | 5 | [chttpd] 6 | require_valid_user = true 7 | max_http_request_size = 4294967296 8 | 9 | [chttpd_auth] 10 | require_valid_user = true 11 | authentication_redirect = /e=_/_utils/session.html 12 | 13 | [httpd] 14 | WWW-Authenticate = Basic realm="couchdb" 15 | enable_cors = true 16 | 17 | [cors] 18 | origins = app://obsidian.md,capacitor://localhost,http://localhost 19 | credentials = true 20 | headers = accept, authorization, content-type, origin, referer 21 | methods = GET, PUT, POST, HEAD, DELETE 22 | max_age = 3600 23 | -------------------------------------------------------------------------------- /olivetin/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/OliveTin/OliveTin 2 | 3 | # safe and simple access to predefined shell commands from a web interface 4 | 5 | name: olivetin 6 | 7 | services: 8 | olivetin: 9 | container_name: olivetin 10 | image: jamesread/olivetin 11 | volumes: 12 | - ./config:/config 13 | ports: 14 | - 1337:1337 15 | restart: unless-stopped 16 | networks: 17 | - proxy 18 | 19 | networks: 20 | proxy: 21 | external: true 22 | -------------------------------------------------------------------------------- /olivetin/config/config.yaml: -------------------------------------------------------------------------------- 1 | actions: 2 | - title: "Hello world!" 3 | shell: echo 'Hello World!' 4 | -------------------------------------------------------------------------------- /ollama/compose.yml: -------------------------------------------------------------------------------- 1 | # https://www.youtube.com/watch?v=OpmMe0md0tA thanks Wolfgang! 2 | 3 | # Attention! Huge ~8GB! without model! 4 | 5 | name: ollama 6 | 7 | services: 8 | 9 | webui: 10 | image: ghcr.io/open-webui/open-webui:main 11 | container_name: open-webui 12 | ports: 13 | - 8075:8080/tcp 14 | environment: 15 | - OLLAMA_BASE_URL=http://ollama:11434 16 | volumes: 17 | - ./webui:/app/backend/data 18 | depends_on: 19 | - ollama 20 | networks: 21 | - proxy 22 | 23 | ollama: 24 | image: ollama/ollama:rocm 25 | container_name: ollama 26 | ports: 27 | - 11434:11434/tcp 28 | volumes: 29 | - ./ollama:/root/.ollama 30 | 31 | # devices: # Linux AMD GPU 32 | # - /dev/kfd 33 | # - /dev/dri 34 | 35 | # Windows Nvidia GPU 36 | deploy: 37 | resources: 38 | reservations: 39 | devices: 40 | - driver: nvidia 41 | count: all 42 | capabilities: [ gpu ] 43 | networks: 44 | - proxy 45 | 46 | networks: 47 | proxy: 48 | external: true 49 | -------------------------------------------------------------------------------- /organizr/compose.yml: -------------------------------------------------------------------------------- 1 | # https://docs.organizr.app/ 2 | # https://demo.organizr.app/#Organizr 3 | # 4 | 5 | name: organizr 6 | 7 | services: 8 | organizr: 9 | container_name: organizr 10 | hostname: organizr 11 | image: organizr/organizr:latest 12 | restart: unless-stopped 13 | ports: 14 | - 8777:80 15 | volumes: 16 | - ./config:/config 17 | environment: 18 | - PUID=1000 19 | - PGID=1000 20 | - TZ=Europe/Vienna 21 | networks: 22 | - proxy 23 | 24 | networks: 25 | proxy: 26 | external: true 27 | -------------------------------------------------------------------------------- /pihole/compose.yml: -------------------------------------------------------------------------------- 1 | # https://pi-hole.net/ 2 | 3 | # blocks ads and trackers across your entire network 4 | 5 | # should not be run at the same time as adguard! 6 | 7 | name: pihole 8 | 9 | services: 10 | pihole: 11 | container_name: pihole 12 | image: docker.io/pihole/pihole:2024.07.0 13 | ports: 14 | - 53:53/tcp 15 | - 53:53/udp 16 | - 67:67/udp 17 | - 9002:80/tcp 18 | #- 443:443/tcp 19 | environment: 20 | - TZ=Europe/Vienna 21 | - WEBPASSWORD=your-secret-password 22 | volumes: 23 | - dnsmasq:/etc/dnsmasq.d 24 | - etcd:/etc/pihole 25 | networks: 26 | - proxy 27 | 28 | networks: 29 | proxy: 30 | external: true 31 | 32 | volumes: 33 | dnsmasq: 34 | driver: local 35 | etcd: 36 | driver: local 37 | -------------------------------------------------------------------------------- /pinchflat/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/kieraneglin/pinchflat 2 | 3 | # app for downloading YouTube content built using yt-dlp. It's designed to be lightweight, self-contained, and easy to use. You set up rules for how to download content from YouTube channels or playlists and it'll do the rest, periodically checking for new content 4 | 5 | name: pinchflat 6 | 7 | services: 8 | pinchflat: 9 | container_name: pinchflat 10 | image: ghcr.io/kieraneglin/pinchflat:latest 11 | environment: 12 | # Set the timezone to your local timezone 13 | - TZ=Europe/Vienna 14 | ports: 15 | - '8945:8945' 16 | volumes: 17 | - ./config:/config 18 | - ./downloads:/downloads 19 | networks: 20 | - proxy 21 | 22 | networks: 23 | proxy: 24 | external: true 25 | -------------------------------------------------------------------------------- /plex-radarr-transmission/docker-compose.yml: -------------------------------------------------------------------------------- 1 | name: plex-radarr-transmission 2 | 3 | # https://github.com/linuxserver/docker-transmission 4 | services: 5 | transmission: 6 | image: lscr.io/linuxserver/transmission:latest 7 | container_name: transmission 8 | environment: 9 | - PUID=1000 10 | - PGID=1000 11 | - TZ=Etc/UTC 12 | # - TRANSMISSION_WEB_HOME= #optional 13 | # - USER= #optional 14 | # - PASS= #optional 15 | # - WHITELIST= #optional 16 | # - PEERPORT= #optional 17 | # - HOST_WHITELIST= #optional 18 | volumes: 19 | - ./transmission:/config 20 | - ./downloads:/downloads 21 | - ./watch:/watch 22 | ports: 23 | - 9091:9091 24 | - 51413:51413 25 | - 51413:51413/udp 26 | restart: unless-stopped 27 | networks: 28 | - proxy 29 | 30 | # https://github.com/linuxserver/docker-radarr 31 | radarr: 32 | image: lscr.io/linuxserver/radarr:latest 33 | container_name: radarr 34 | environment: 35 | - PUID=1000 36 | - PGID=1000 37 | - TZ=Etc/UTC 38 | volumes: 39 | - ./radarr:/config 40 | - ./movies:/movies #optional 41 | - ./downloads:/downloads #optional 42 | ports: 43 | - 7878:7878 44 | restart: unless-stopped 45 | networks: 46 | - proxy 47 | 48 | # https://github.com/linuxserver/docker-plex 49 | plex: 50 | image: lscr.io/linuxserver/plex:latest 51 | container_name: plex 52 | ports: 53 | - 32400:32400 54 | environment: 55 | - PUID=1000 56 | - PGID=1000 57 | - TZ=Etc/UTC 58 | - VERSION=docker 59 | - PLEX_CLAIM= #FILL ME IN!!! (claim token) https://www.plex.tv/claim/ 60 | volumes: 61 | - ./plex:/config 62 | - ./tv:/tv 63 | - ./movies:/movies 64 | restart: unless-stopped 65 | networks: 66 | - proxy 67 | 68 | networks: 69 | proxy: 70 | external: true 71 | -------------------------------------------------------------------------------- /portainer/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # https://www.portainer.io/ 2 | 3 | version: '3.3' 4 | 5 | name: portainer 6 | 7 | services: 8 | portainer: 9 | container_name: 'portainer' 10 | ports: 11 | - '9000:9000' 12 | volumes: 13 | - '/var/run/docker.sock:/var/run/docker.sock' 14 | - './portainer_data:/data' 15 | image: portainer/portainer-ce:latest 16 | restart: 'unless-stopped' 17 | networks: 18 | - proxy 19 | 20 | networks: 21 | proxy: 22 | external: true 23 | -------------------------------------------------------------------------------- /postgis/compose.yml: -------------------------------------------------------------------------------- 1 | # 2 | 3 | # 4 | 5 | name: postgis 6 | 7 | services: 8 | postgis: 9 | image: postgis/postgis:17-3.5-alpine 10 | container_name: postgis 11 | volumes: 12 | - ./data/:/var/lib/postgresql/data 13 | - ./shared/:/var/shared 14 | environment: 15 | POSTGRES_USER: test 16 | POSTGRES_PASSWORD: changeme 17 | TZ: "Europe/Vienna" 18 | PGTZ: "Europe/Vienna" 19 | restart: unless-stopped 20 | networks: 21 | - proxy 22 | ports: 23 | - 15432:5432 24 | 25 | networks: 26 | proxy: 27 | external: true 28 | -------------------------------------------------------------------------------- /postgres/compose.yml: -------------------------------------------------------------------------------- 1 | name: postgres15 2 | 3 | services: 4 | psql15: 5 | container_name: postgres15 6 | image: postgres:15 7 | environment: 8 | POSTGRES_USER: postgres 9 | POSTGRES_PASSWORD: example 10 | volumes: 11 | - ./data:/var/lib/postgresql/data 12 | - ./dev/docker_psql_init:/docker-entrypoint-initdb.d 13 | ports: 14 | - 5432:5432 15 | networks: 16 | - proxy 17 | 18 | networks: 19 | proxy: 20 | external: true 21 | -------------------------------------------------------------------------------- /prometheus/compose.yml: -------------------------------------------------------------------------------- 1 | 2 | name: prometheus 3 | 4 | services: 5 | prometheus: 6 | image: docker.io/prom/prometheus 7 | container_name: prometheus 8 | ports: 9 | - 9090:9090 10 | command: "--config.file=/etc/prometheus/prometheus.yaml --web.enable-remote-write-receiver" 11 | volumes: 12 | - ./config/prometheus.yaml:/etc/prometheus/prometheus.yaml:ro 13 | - prometheus-data:/prometheus 14 | restart: unless-stopped 15 | networks: 16 | - proxy 17 | 18 | networks: 19 | proxy: 20 | external: true 21 | 22 | volumes: 23 | prometheus-data: 24 | driver: local -------------------------------------------------------------------------------- /prometheus/config/prometheus.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | global: 3 | scrape_interval: 15s # By default, scrape targets every 15 seconds. 4 | 5 | # Attach these labels to any time series or alerts when communicating with 6 | # external systems (federation, remote storage, Alertmanager). 7 | # external_labels: 8 | # monitor: 'codelab-monitor' 9 | 10 | # A scrape configuration containing exactly one endpoint to scrape: 11 | # Here it's Prometheus itself. 12 | scrape_configs: 13 | # The job name is added as a label `job=` to any timeseries scraped from this config. 14 | - job_name: "prometheus" 15 | # Override the global default and scrape targets from this job every 5 seconds. 16 | scrape_interval: 5s 17 | static_configs: 18 | - targets: ["localhost:9090"] 19 | # Example job for node_exporter 20 | # - job_name: 'node_exporter' 21 | # static_configs: 22 | # - targets: ['node_exporter:9100'] 23 | 24 | # Example job for cadvisor 25 | # - job_name: 'cadvisor' 26 | # static_configs: 27 | # - targets: ['cadvisor:8080'] 28 | -------------------------------------------------------------------------------- /puter/compose.yml: -------------------------------------------------------------------------------- 1 | # https://puter.com/ 2 | 3 | # https://github.com/HeyPuter/puter/blob/main/docker-compose.yml 4 | 5 | name: puter 6 | 7 | services: 8 | puter: 9 | container_name: puter 10 | image: ghcr.io/heyputer/puter:latest 11 | pull_policy: always 12 | # build: ./ 13 | restart: unless-stopped 14 | ports: 15 | - "4100:4100" 16 | environment: 17 | # TZ: Europe/Paris 18 | # CONFIG_PATH: /etc/puter 19 | PUID: 1000 20 | PGID: 1000 21 | volumes: 22 | - ./config:/etc/puter 23 | - ./data:/var/puter 24 | healthcheck: 25 | test: wget --no-verbose --tries=1 --spider http://puter.localhost:4100/test || exit 1 26 | interval: 30s 27 | timeout: 3s 28 | retries: 3 29 | start_period: 30s 30 | networks: 31 | - proxy 32 | 33 | networks: 34 | proxy: 35 | external: true 36 | -------------------------------------------------------------------------------- /redis/compose.yml: -------------------------------------------------------------------------------- 1 | # https://redis.io/ 2 | 3 | # fast, open source, in-memory data structure store that can also be used as a document or vector database 4 | 5 | name: redis 6 | 7 | services: 8 | redis: 9 | image: docker.io/library/redis:7.2.5 10 | container_name: redis 11 | command: --save 60 1 --loglevel warning 12 | healthcheck: 13 | test: [ "CMD-SHELL", "redis-cli ping | grep PONG" ] 14 | start_period: 20s 15 | interval: 30s 16 | retries: 5 17 | timeout: 3s 18 | ports: 19 | - 6379:6379 20 | networks: 21 | - proxy 22 | 23 | networks: 24 | proxy: 25 | external: true 26 | -------------------------------------------------------------------------------- /reverse-proxy-exercise/compose.yml: -------------------------------------------------------------------------------- 1 | # 2 | 3 | name: reverse-proxy 4 | 5 | services: 6 | adguardhome: 7 | container_name: adguard-home 8 | volumes: 9 | - ./work:/opt/adguardhome/work 10 | - ./conf:/opt/adguardhome/conf 11 | ports: 12 | - 53:53/tcp 13 | - 53:53/udp 14 | - 67:67/udp 15 | - 68:68/udp 16 | - 3000:3000 17 | - 82:80 18 | image: adguard/adguardhome 19 | restart: unless-stopped 20 | # first login: admin@example.com/changeme 21 | proxymanager: 22 | container_name: nginx-proxy-manager 23 | image: 'jc21/nginx-proxy-manager:latest' 24 | restart: unless-stopped 25 | ports: 26 | - '80:80' # Public HTTP Port 27 | - '443:443' # Public HTTPS Port 28 | - '81:81' 29 | volumes: 30 | - ./data:/data 31 | - ./letsencrypt:/etc/letsencrypt 32 | whoami: 33 | image: traefik/whoami 34 | container_name: whoami 35 | security_opt: 36 | - no-new-privileges:true 37 | environment: 38 | - TZ=Europe/Vienna 39 | ports: 40 | - 83:80 41 | restart: unless-stopped 42 | -------------------------------------------------------------------------------- /rustdesk/compose.yml: -------------------------------------------------------------------------------- 1 | # https://rustdesk.com/de/ 2 | 3 | # https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/docker/ 4 | 5 | name: rustdesk 6 | 7 | services: 8 | hbbs: 9 | container_name: hbbs 10 | image: rustdesk/rustdesk-server:latest 11 | environment: 12 | - ALWAYS_USE_RELAY=Y 13 | command: hbbs 14 | volumes: 15 | - ./data:/root 16 | network_mode: "host" 17 | depends_on: 18 | - hbbr 19 | restart: unless-stopped 20 | 21 | hbbr: 22 | container_name: hbbr 23 | image: rustdesk/rustdesk-server:latest 24 | command: hbbr 25 | volumes: 26 | - ./data:/root 27 | network_mode: "host" 28 | restart: unless-stopped 29 | -------------------------------------------------------------------------------- /semaphore/compose.yml: -------------------------------------------------------------------------------- 1 | # 2 | 3 | # 4 | 5 | name: semaphore 6 | 7 | services: 8 | semaphore: 9 | container_name: semaphore 10 | ports: 11 | - 3000:3000 12 | image: public.ecr.aws/semaphore/pro/server:v2.15.2 13 | environment: 14 | SEMAPHORE_DB_DIALECT: bolt 15 | SEMAPHORE_ADMIN: admin 16 | SEMAPHORE_ADMIN_PASSWORD: changeme 17 | SEMAPHORE_ADMIN_NAME: Admin 18 | SEMAPHORE_ADMIN_EMAIL: admin@localhost 19 | volumes: 20 | - ./semaphore_data:/var/lib/semaphore 21 | - ./semaphore_config:/etc/semaphore 22 | - ./semaphore_tmp:/tmp/semaphore 23 | networks: 24 | - proxy 25 | 26 | networks: 27 | proxy: 28 | external: true 29 | -------------------------------------------------------------------------------- /siyuan/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/siyuan-note/siyuan 2 | 3 | # 4 | 5 | name: siyuan 6 | 7 | services: 8 | siyuan: 9 | container_name: siyuan 10 | image: b3log/siyuan 11 | command: ['--workspace=/siyuan/workspace/', '--accessAuthCode=hello'] 12 | ports: 13 | - 6806:6806 14 | volumes: 15 | - ./workspace:/siyuan/workspace 16 | restart: unless-stopped 17 | environment: 18 | # A list of time zone identifiers can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 19 | - TZ=Europe/Vienna 20 | networks: 21 | - proxy 22 | 23 | networks: 24 | proxy: 25 | external: true 26 | -------------------------------------------------------------------------------- /sqlchat/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/sqlchat/sqlchat 2 | 3 | # chat-based SQL client, which uses natural language to communicate with the database to implement operations such as query, modification, addition, and deletion of the database 4 | 5 | name: sqlchat 6 | services: 7 | sqlchat: 8 | container_name: sqlchat 9 | platform: linux/amd64 10 | environment: 11 | - OPENAI_API_KEY=??? 12 | ports: 13 | - 3005:3000 14 | image: sqlchat/sqlchat 15 | networks: 16 | - proxy 17 | 18 | networks: 19 | proxy: 20 | external: true 21 | -------------------------------------------------------------------------------- /stirlingpdf/compose.yml: -------------------------------------------------------------------------------- 1 | # https://stirlingtools.com/ 2 | # https://stirlingpdf.io/ 3 | # Your locally hosted one-stop-shop for all your PDF needs 4 | 5 | name: stirlingpdf 6 | services: 7 | stirling-pdf: 8 | image: frooodle/s-pdf:latest 9 | container_name: stirlingpdf 10 | ports: 11 | - '8092:8080' 12 | volumes: 13 | - ./trainingData:/usr/share/tessdata #Required for extra OCR languages 14 | - ./configs:/configs 15 | # - /location/of/customFiles:/customFiles/ 16 | # - /location/of/logs:/logs/ 17 | environment: 18 | - DOCKER_ENABLE_SECURITY=false 19 | - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false 20 | - LANGS=de_DE 21 | networks: 22 | - proxy 23 | 24 | networks: 25 | proxy: 26 | external: true 27 | -------------------------------------------------------------------------------- /system-monitoring/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | name: system-monitoring 2 | services: 3 | # https://www.influxdata.com/ 4 | influxdb: 5 | container_name: influxdb 6 | ports: 7 | - 8086:8086 8 | volumes: 9 | - ./influxdb/data:/var/lib/influxdb2 10 | - ./influxdb/config:/etc/influxdb2 11 | restart: unless-stopped 12 | image: influxdb:2.1.1 13 | environment: 14 | - DOCKER_INFLUXDB_INIT_MODE=setup 15 | - DOCKER_INFLUXDB_INIT_USERNAME=schueler 16 | - DOCKER_INFLUXDB_INIT_PASSWORD=example-password 17 | - DOCKER_INFLUXDB_INIT_ORG=telegraf 18 | - DOCKER_INFLUXDB_INIT_BUCKET=telegraf-bucket 19 | - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=t3S9_jBwHAUNwB4J_SD6p_hjBKmtFsrE1pKlx8CIm2vOkIV46-TrtmAncHzg9yHB6xIoqkvJRxWD_UiDjd_wnw== 20 | # networks: 21 | # - proxy 22 | # https://www.influxdata.com/time-series-platform/telegraf/ 23 | telegraf: 24 | container_name: telegraf 25 | image: telegraf:1.25-alpine 26 | depends_on: 27 | - influxdb 28 | volumes: 29 | - ./telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro 30 | - /var/run/docker.sock:/var/run/docker.sock:ro 31 | - /sys:/rootfs/sys:ro 32 | - /proc:/rootfs/proc:ro 33 | - /etc:/rootfs/etc:ro 34 | environment: 35 | HOST_PROC: /rootfs/proc 36 | HOST_SYS: /rootfs/sys 37 | HOST_ETC: /rootfs/etc 38 | # networks: 39 | # - proxy 40 | grafana: 41 | container_name: grafana 42 | image: grafana/grafana:latest 43 | environment: 44 | - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin 45 | - GF_AUTH_ANONYMOUS_ENABLED=true 46 | - GF_AUTH_BASIC_ENABLED=false 47 | - GF_PATHS_PROVISIONING=/etc/grafana/provisioning 48 | - GF_INSTALL_PLUGINS=grafana-simple-json-datasource 49 | ports: 50 | - 3033:3000/tcp 51 | volumes: 52 | - ./grafana/provisioning:/etc/grafana/provisioning 53 | - ./grafana/storage:/var/lib/grafana 54 | # networks: 55 | # - proxy 56 | 57 | # networks: 58 | # proxy: 59 | # external: true 60 | -------------------------------------------------------------------------------- /system-monitoring/grafana/provisioning/datasources/datasources.yml: -------------------------------------------------------------------------------- 1 | apiVersion: 1 2 | 3 | datasources: 4 | - name: InfluxDB 5 | type: influxdb 6 | access: proxy 7 | url: http://influxdb:8086 8 | isDefault: true 9 | jsonData: 10 | version: Flux 11 | organization: telegraf 12 | defaultBucket: telegraf-bucket 13 | tlsSkipVerify: true 14 | secureJsonData: 15 | token: t3S9_jBwHAUNwB4J_SD6p_hjBKmtFsrE1pKlx8CIm2vOkIV46-TrtmAncHzg9yHB6xIoqkvJRxWD_UiDjd_wnw== 16 | -------------------------------------------------------------------------------- /system-monitoring/telegraf/telegraf.conf: -------------------------------------------------------------------------------- 1 | 2 | [global_tags] 3 | 4 | [agent] 5 | interval = "60s" 6 | round_interval = true 7 | metric_batch_size = 1000 8 | metric_buffer_limit = 10000 9 | collection_jitter = "0s" 10 | flush_interval = "10s" 11 | flush_jitter = "0s" 12 | precision = "" 13 | omit_hostname = false 14 | 15 | [[outputs.influxdb_v2]] 16 | urls = ["http://influxdb:8086"] 17 | token = "t3S9_jBwHAUNwB4J_SD6p_hjBKmtFsrE1pKlx8CIm2vOkIV46-TrtmAncHzg9yHB6xIoqkvJRxWD_UiDjd_wnw==" 18 | organization = "telegraf" 19 | bucket = "telegraf-bucket" 20 | 21 | 22 | [[inputs.cpu]] 23 | percpu = true 24 | totalcpu = true 25 | collect_cpu_time = false 26 | report_active = false 27 | 28 | 29 | [[inputs.disk]] 30 | ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"] 31 | 32 | 33 | [[inputs.diskio]] 34 | 35 | [[inputs.kernel]] 36 | 37 | [[inputs.mem]] 38 | 39 | [[inputs.processes]] 40 | 41 | [[inputs.swap]] 42 | 43 | [[inputs.system]] -------------------------------------------------------------------------------- /tinyfilemanager/compose.yml: -------------------------------------------------------------------------------- 1 | # https://tinyfilemanager.github.io/ 2 | # https://tinyfilemanager.github.io/demo/ 3 | 4 | # TinyFileManager is web based PHP file manager and it is a simple, fast and small size in single-file PHP file that can be dropped into any folder on your server, multi-language ready web application for storing, uploading, editing and managing files and folders online via web browser 5 | # Default username/password: admin/admin@123 and user/12345 6 | 7 | name: tinyfilemanager 8 | 9 | services: 10 | tinyfilemanager: 11 | volumes: 12 | - ~:/var/www/html/data 13 | ports: 14 | - 8091:80 15 | restart: always 16 | container_name: tinyfilemanager 17 | image: tinyfilemanager/tinyfilemanager:master 18 | networks: 19 | - proxy 20 | 21 | networks: 22 | proxy: 23 | external: true 24 | -------------------------------------------------------------------------------- /traefik/config/certs/acme.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dominikhoebert/docker-projects/05e821294785f45a0f1874c7312fdd3c441a5d66/traefik/config/certs/acme.json -------------------------------------------------------------------------------- /traefik/config/traefik.yaml: -------------------------------------------------------------------------------- 1 | global: 2 | checkNewVersion: false 3 | sendAnonymousUsage: false 4 | 5 | # -- (Optional) Change Log Level and Format here... 6 | # - loglevels [DEBUG, INFO, WARNING, ERROR, CRITICAL] 7 | # - format [common, json, logfmt] 8 | # log: 9 | # level: ERROR 10 | # format: common 11 | # filePath: /var/log/traefik/traefik.log 12 | 13 | # -- (Optional) Enable Accesslog and change Format here... 14 | # - format [common, json, logfmt] 15 | # accesslog: 16 | # format: common 17 | # filePath: /var/log/traefik/access.log 18 | 19 | # -- (Optional) Enable API and Dashboard here, don't do in production 20 | api: 21 | dashboard: true 22 | insecure: true 23 | 24 | # -- Change EntryPoints here... 25 | entryPoints: 26 | web: 27 | address: :80 28 | # -- (Optional) Redirect all HTTP to HTTPS 29 | # http: 30 | # redirections: 31 | # entryPoint: 32 | # to: websecure 33 | # scheme: https 34 | websecure: 35 | address: :443 36 | # -- (Optional) Add custom Entrypoint 37 | # custom: 38 | # address: :8080 39 | 40 | # -- Configure your CertificateResolver here... 41 | # certificatesResolvers: 42 | # staging: 43 | # acme: 44 | # email: your-email@example.com 45 | # storage: /etc/traefik/certs/acme.json 46 | # caServer: "https://acme-staging-v02.api.letsencrypt.org/directory" 47 | # -- (Optional) Remove this section, when using DNS Challenge 48 | # httpChallenge: 49 | # entryPoint: web 50 | # -- (Optional) Configure DNS Challenge 51 | # dnsChallenge: 52 | # provider: your-resolver (e.g. cloudflare) 53 | # resolvers: 54 | # - "1.1.1.1:53" 55 | # - "8.8.8.8:53" 56 | # production: 57 | # acme: 58 | # email: your-email@example.com 59 | # storage: /etc/traefik/certs/acme.json 60 | # caServer: "https://acme-v02.api.letsencrypt.org/directory" 61 | # -- (Optional) Remove this section, when using DNS Challenge 62 | # httpChallenge: 63 | # entryPoint: web 64 | # -- (Optional) Configure DNS Challenge 65 | # dnsChallenge: 66 | # provider: your-resolver (e.g. cloudflare) 67 | # resolvers: 68 | # - "1.1.1.1:53" 69 | # - "8.8.8.8:53" 70 | certificatesResolvers: 71 | dns-cloudflare: 72 | acme: 73 | email: test@example.com 74 | storage: /etc/traefik/certs/acme.json 75 | dnsChallenge: 76 | provider: cloudflare 77 | delayBeforeCheck: 0 78 | # -- (Optional) Disable TLS Cert verification check 79 | # serversTransport: 80 | # insecureSkipVerify: true 81 | 82 | # -- (Optional) Overwrite Default Certificates 83 | # tls: 84 | # stores: 85 | # default: 86 | # defaultCertificate: 87 | # certFile: /etc/traefik/certs/cert.pem 88 | # keyFile: /etc/traefik/certs/cert-key.pem 89 | # -- (Optional) Disable TLS version 1.0 and 1.1 90 | # options: 91 | # default: 92 | # minVersion: VersionTLS12 93 | 94 | providers: 95 | docker: 96 | # -- (Optional) Enable this, if you want to expose all containers automatically 97 | exposedByDefault: false 98 | file: 99 | directory: /etc/traefik 100 | watch: true -------------------------------------------------------------------------------- /traefik/docker-compose.yml: -------------------------------------------------------------------------------- 1 | name: traefik 2 | # https://doc.traefik.io/traefik/ 3 | services: 4 | traefik: 5 | image: docker.io/library/traefik:2.11.2 6 | container_name: traefik 7 | ports: 8 | - 83:80 9 | - 444:443 10 | # -- (Optional) Enable Dashboard, don't do in production 11 | - 8085:8080 12 | volumes: 13 | - /var/run/docker.sock:/var/run/docker.sock:ro 14 | - ./config:/etc/traefik 15 | # -- (Optional) When using Cloudflare as Cert Resolver 16 | environment: 17 | - CF_API_EMAIL=xxx@example.com 18 | - CF_DNS_API_TOKEN=xxx 19 | # -- (Optional) When using a custom network 20 | networks: 21 | - proxy 22 | 23 | networks: 24 | proxy: 25 | external: true 26 | -------------------------------------------------------------------------------- /uptimekuma/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.3' 2 | #https://github.com/louislam/uptime-kuma 3 | services: 4 | uptime-kuma: 5 | image: louislam/uptime-kuma:latest 6 | container_name: uptime-kuma 7 | volumes: 8 | - ./uptime-kuma-data:/app/data 9 | - /var/run/docker.sock:/var/run/docker.sock 10 | ports: 11 | - 3001:3001 12 | restart: always 13 | networks: 14 | - proxy 15 | 16 | networks: 17 | proxy: 18 | external: true 19 | -------------------------------------------------------------------------------- /vaultwarden/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/dani-garcia/vaultwarden 2 | 3 | # Alternative implementation of the Bitwarden server API written in Rust and compatible with upstream Bitwarden clients*, perfect for self-hosted deployment where running the official resource-heavy service might not be ideal 4 | 5 | name: vaultwarden 6 | 7 | services: 8 | vaultwarden: 9 | image: vaultwarden/server:latest 10 | container_name: vaultwarden 11 | #environment: 12 | # DOMAIN: "https://vault.example.com" # Your domain here! 13 | volumes: 14 | - ./vw-data:/data 15 | ports: 16 | - 8093:80 17 | networks: 18 | - proxy 19 | 20 | networks: 21 | proxy: 22 | external: true 23 | -------------------------------------------------------------------------------- /watchtower/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # https://containrrr.dev/watchtower/ 2 | 3 | # Watchtower is a container that watches for changes in other containers and automatically updates them. 4 | # This is useful for keeping your containers up-to-date with the latest versions of their images. 5 | 6 | name: watchtower 7 | 8 | services: 9 | watchtower: 10 | image: containrrr/watchtower 11 | container_name: watchtower 12 | volumes: 13 | - /var/run/docker.sock:/var/run/docker.sock 14 | command: --schedule "0 4 * * *" 15 | networks: 16 | - proxy 17 | 18 | networks: 19 | proxy: 20 | external: true 21 | -------------------------------------------------------------------------------- /watchyourlan/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/aceberg/WatchYourLAN 2 | 3 | # https://github.com/aceberg/WatchYourLAN/blob/main/docker-compose.yml 4 | 5 | name: watchyourlan 6 | 7 | services: 8 | watchyourlan: 9 | container_name: watchyourlan 10 | image: aceberg/watchyourlan 11 | network_mode: "host" 12 | restart: unless-stopped 13 | volumes: 14 | - ./data:/data/WatchYourLAN 15 | environment: 16 | TZ: Europe/Vienna # required: needs your TZ for correct time 17 | IFACES: "br-ea7a87620e0f" # required: 1 or more interface 18 | HOST: "0.0.0.0" # optional, default: 0.0.0.0 19 | PORT: "8840" # optional, default: 8840 20 | TIMEOUT: "120" # optional, time in seconds, default: 120 21 | THEME: "sand" # optional 22 | COLOR: "dark" # optional 23 | 24 | -------------------------------------------------------------------------------- /webtop/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/linuxserver/docker-webtop 2 | 3 | # Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser 4 | 5 | name: webtop 6 | 7 | services: 8 | webtop: 9 | image: lscr.io/linuxserver/webtop:latest 10 | container_name: webtop 11 | security_opt: 12 | - seccomp:unconfined #optional 13 | environment: 14 | - PUID=1000 15 | - PGID=1000 16 | - TZ=Europe/Vienna 17 | - SUBFOLDER=/ #optional 18 | - TITLE=Webtop #optional 19 | volumes: 20 | - ./data:/config 21 | #- /var/run/docker.sock:/var/run/docker.sock #optional 22 | ports: 23 | - 3008:3000 24 | - 3009:3001 # https 25 | networks: 26 | - proxy 27 | 28 | networks: 29 | proxy: 30 | external: true 31 | -------------------------------------------------------------------------------- /webtrees/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/fisharebest/webtrees 2 | 3 | # webtrees is the web's leading online collaborative genealogy application 4 | 5 | name: webtrees 6 | 7 | services: 8 | webtrees: 9 | container_name: webtrees 10 | image: ghcr.io/nathanvaughn/webtrees:latest 11 | ports: 12 | - 86:80 13 | #- 443:443 14 | environment: 15 | PRETTY_URLS: "0" 16 | HTTPS: "0" 17 | HTTPS_REDIRECT: "0" 18 | LANG: "en-US" 19 | BASE_URL: "http://localhost:86" 20 | DB_TYPE: "sqlite" 21 | DB_NAME: "webtrees" 22 | DB_PREFIX: "wt_" 23 | WT_USER: "username" 24 | WT_NAME: "Full Name" 25 | WT_PASS: "badwtpassword" 26 | WT_EMAIL: "me@example.com" 27 | PUID: "1000" 28 | PGID: "1000" 29 | restart: unless-stopped 30 | volumes: 31 | # - ~/certs:/certs/ 32 | - app_data:/var/www/webtrees/data/ 33 | networks: 34 | - proxy 35 | 36 | networks: 37 | proxy: 38 | external: true 39 | # db: 40 | # environment: 41 | # MARIADB_DATABASE: "webtrees" 42 | # MARIADB_USER: "webtrees" 43 | # MARIADB_ROOT_PASSWORD: "badrootpassword" 44 | # MARIADB_PASSWORD: "baddbpassword" 45 | # # See: https://github.com/NathanVaughn/webtrees-docker/issues/145 46 | # image: docker.io/library/mariadb:10 47 | # restart: unless-stopped 48 | # volumes: 49 | # - db_data:/var/lib/mysql 50 | 51 | volumes: 52 | db_data: 53 | driver: local 54 | app_data: 55 | driver: local 56 | -------------------------------------------------------------------------------- /whoami/compose.yml: -------------------------------------------------------------------------------- 1 | # https://hub.docker.com/r/traefik/whoami 2 | 3 | # Tiny Go webserver that prints OS information and HTTP request to output 4 | 5 | name: whoami 6 | services: 7 | whoami-test: 8 | image: traefik/whoami 9 | container_name: whoami 10 | security_opt: 11 | - no-new-privileges:true 12 | environment: 13 | - TZ=Europe/Vienna 14 | ports: 15 | - 84:80 16 | networks: 17 | - proxy 18 | 19 | networks: 20 | proxy: 21 | external: true 22 | -------------------------------------------------------------------------------- /wud/compose.yml: -------------------------------------------------------------------------------- 1 | # https://getwud.github.io/wud/#/ 2 | 3 | # 4 | 5 | name: wud 6 | 7 | services: 8 | whatsupdocker: 9 | image: getwud/wud 10 | container_name: wud 11 | volumes: 12 | - /var/run/docker.sock:/var/run/docker.sock 13 | ports: 14 | - 3000:3000 15 | networks: 16 | - proxy 17 | 18 | networks: 19 | proxy: 20 | external: true 21 | -------------------------------------------------------------------------------- /wygiwyh/.env: -------------------------------------------------------------------------------- 1 | SERVER_NAME=wygiwyh_server 2 | DB_NAME=wygiwyh_pg 3 | PROCRASTINATE_NAME=wygiwyh_procrastinate 4 | 5 | DEBUG=false 6 | URL = http://localhost:8000 7 | HTTPS_ENABLED=true 8 | SECRET_KEY= 9 | DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1] 10 | OUTBOUND_PORT=9005 11 | 12 | SQL_ENGINE=django.db.backends.postgresql 13 | SQL_DATABASE=wygiwyh 14 | SQL_USER=wygiwyh 15 | SQL_PASSWORD=testitest 16 | SQL_HOST=${DB_NAME} 17 | SQL_PORT=5432 18 | 19 | # Gunicorn 20 | WEB_CONCURRENCY=4 21 | -------------------------------------------------------------------------------- /wygiwyh/compose.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/eitchtee/WYGIWYH 2 | 3 | # 4 | 5 | name: wygiwyh 6 | 7 | services: 8 | web: 9 | image: eitchtee/wygiwyh:latest 10 | container_name: ${SERVER_NAME} 11 | command: /start 12 | ports: 13 | - "${OUTBOUND_PORT}:8000" 14 | env_file: 15 | - .env 16 | depends_on: 17 | - db 18 | restart: unless-stopped 19 | networks: 20 | - proxy 21 | 22 | db: 23 | image: postgres:15 24 | container_name: ${DB_NAME} 25 | restart: unless-stopped 26 | volumes: 27 | - ./postgres_data:/var/lib/postgresql/data/ 28 | environment: 29 | - POSTGRES_USER=${SQL_USER} 30 | - POSTGRES_PASSWORD=${SQL_PASSWORD} 31 | - POSTGRES_DB=${SQL_DATABASE} 32 | networks: 33 | - proxy 34 | 35 | procrastinate: 36 | image: eitchtee/wygiwyh:latest 37 | container_name: ${PROCRASTINATE_NAME} 38 | depends_on: 39 | - db 40 | env_file: 41 | - .env 42 | command: /start-procrastinate 43 | restart: unless-stopped 44 | networks: 45 | - proxy 46 | 47 | networks: 48 | proxy: 49 | external: true 50 | --------------------------------------------------------------------------------