Compare commits

..

24 Commits

Author SHA1 Message Date
ace326c0ba Updated docker-compose files 2025-07-27 10:30:08 +02:00
493d5dde42 updated docker compose files 2024-11-05 13:48:34 +01:00
72d4b93fdf updated nextcloud 2024-11-04 11:44:40 +01:00
39f4231c09 gitea update 2024-11-04 10:42:13 +01:00
f5270aa908 port 2024-11-04 10:33:06 +01:00
8531665064 changed back to old port 2024-11-04 10:30:25 +01:00
d44bd646b8 updated gitea to latest version 2024-11-04 10:28:06 +01:00
ca619489ec Added Immich config 2024-11-02 19:37:50 +01:00
0aa1c1f999 Added paperless set up 2024-05-19 13:27:42 +02:00
53ea440d49 Added plex 2024-02-18 18:52:26 +01:00
c273decbc1 Added restart to docker files 2024-02-16 08:52:48 +01:00
2a7fbe790d update docker compose for traefik set-up 2024-02-14 20:44:20 +01:00
25db3542eb created volume for letsencrypt 2024-02-13 19:14:28 +01:00
1b4cfc5291 Move to Traefik 2024-02-13 19:10:53 +01:00
3fdd3e43f8 Updated compose files 2024-02-11 11:48:54 +01:00
dd279b13ea new things-board docker file 2023-08-22 13:15:48 +02:00
8da06841cf Added config files 2023-08-16 11:37:33 +02:00
ff7902f1c7 Merge branch 'master' of https://montana2000.ddns.net/gitea/nils/docker-compose 2023-08-16 11:15:03 +02:00
0e7ed68cec add new files for monitoring 2023-08-16 11:15:02 +02:00
99aa576b15 smaller updates 2022-11-06 17:55:17 +01:00
641928adbf set fhem to network mode host + added firewall rules 2022-11-06 08:49:58 +01:00
345d9a340c added node red restart and host network mode 2022-11-05 17:00:50 +01:00
d4fe5cf645 some first n5100 server set-ups added 2022-10-22 16:32:45 +02:00
74497faa6a Updated versions for docker files 2022-07-19 20:31:42 +02:00
30 changed files with 10157 additions and 54 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/pihole/etc-pihole

View File

@@ -5,7 +5,7 @@ services:
# To build from source, replace 'image: lissy93/dashy' with 'build: .'
# build: .
image: lissy93/dashy
container_name: Dashy
container_name: dashy
# Pass in your config file below, by specifying the path on your host machine
# volumes:
# - /root/my-config.yml:/app/public/conf.yml
@@ -25,4 +25,10 @@ services:
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s
start_period: 40s
networks:
- nginx_network
networks:
nginx_network:
driver: bridge

View File

@@ -2,8 +2,8 @@ version: "2.1"
services:
swag:
image: linuxserver/swag
container_name: swag_update
image: linuxserver/swag:1.31.0
container_name: swag
cap_add:
- NET_ADMIN
environment:
@@ -17,8 +17,8 @@ services:
volumes:
- swag_conf_update:/config
ports:
- 443:443
- 80:80
- 444:443
- 81:80
restart: unless-stopped
networks:
- nginx_network

View File

@@ -1,25 +1,24 @@
version: '2.2'
volumes:
fhem_opt:
fhem_opt:
services:
fhem:
image: fhem/fhem:latest
container_name: fhem
restart: always
ports:
- "8083:8083"
- "7072:7072"
- "8090:8090"
restart: unless-stopped
volumes:
- fhem_opt:/opt/fhem/
environment:
TELNETPORT: 7072
TZ: Europe/Berlin
networks:
- nginx_network
networks:
nginx_network:
driver: bridge
network_mode: host
labels:
- "traefik.enable=true"
- "traefik.http.routers.fhem.rule=Host(`fhem.montana2000.freeddns.org`)"
- "traefik.http.routers.fhem.middlewares=fhem-auth"
- "traefik.http.middlewares.fhem-auth.basicauth.users=nils:$$apr1$$JDBG7p8k$$LB8y6/aKcNQ/ybLz7LXjY."
- "traefik.http.services.fhem-service.loadbalancer.server.port=8083"

View File

@@ -1,35 +1,49 @@
version: '2'
version: "3"
networks:
traefik_web:
external: true
services:
web:
image: gitea/gitea:latest
server:
image: gitea/gitea:1.22.3
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=db:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- traefik_web
volumes:
- gitea_data:/data
ports:
- "3000:3000"
- "22:22"
- "222:22"
depends_on:
- db
restart: always
networks:
- nginx_network
- db
labels:
- "traefik.enable=true"
- "traefik.http.routers.gitea.rule=Host(`gitea.montana2000.freeddns.org`)"
- "traefik.http.services.gitea-service.loadbalancer.server.port=3000"
db:
image: mariadb:10
volumes:
- gitea_mariadb:/var/lib/mysql
image: mysql:8
restart: always
environment:
- MYSQL_ROOT_PASSWORD=inginf95
- MYSQL_DATABASE=gitea
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=inginf95
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- nginx_network
- traefik_web
volumes:
- gitea_mysql:/var/lib/mysql
volumes:
gitea_data:
gitea_mariadb:
networks:
nginx_network:
driver: bridge
gitea_mysql:

View File

@@ -0,0 +1,11 @@
version: '3'
services:
homeassistant:
container_name: homeassistant
image: "ghcr.io/home-assistant/home-assistant:stable"
volumes:
- /PATH_TO_YOUR_CONFIG:/config
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
privileged: true
network_mode: host

21
immich/.env Normal file
View File

@@ -0,0 +1,21 @@
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
# The location where your uploaded files are stored
UPLOAD_LOCATION=/media/immich/library
# The location where your database files are stored
DB_DATA_LOCATION=/media/immich/postgres
# 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
# TZ=Etc/UTC
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release
# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=nueiwnednecncuwdhewiudhewiduhewiduh
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

109
immich/docker-compose.yml Normal file
View File

@@ -0,0 +1,109 @@
#
# WARNING: Make sure to use the docker-compose.yml of the current release:
#
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
#
# The compose file on main may not be compatible with the latest release.
#
name: immich
networks:
traefik_web:
external: true
immich:
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
# 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
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- '2283:2283'
networks:
- traefik_web
- immich
labels:
- "traefik.enable=true"
- "traefik.http.routers.immich.rule=Host(`immich.montana2000.freeddns.org`)"
- "traefik.http.services.immich-service.loadbalancer.server.port=2283"
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
immich-machine-learning:
container_name: immich_machine_learning
# For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
# Example tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
# extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
# file: hwaccel.ml.yml
# service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
volumes:
- model-cache:/cache
networks:
- immich
env_file:
- .env
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/redis:6.2-alpine@sha256:2ba50e1ac3a0ea17b736ce9db2b0a9f6f8b85d4c27d5f5accc6a416d8f42c6d5
healthcheck:
test: redis-cli ping || exit 1
restart: always
networks:
- immich
database:
container_name: immich_postgres
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
# 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
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
healthcheck:
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
interval: 5m
#start_interval: 30s
start_period: 5m
networks:
- immich
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',
]
restart: always
volumes:
model-cache:

View File

@@ -1,8 +1,8 @@
version: '2'
services:
mosquitto:
image: eclipse-mosquitto
image: eclipse-mosquitto:2.0
expose:
- "1884"
- "9001"
@@ -10,13 +10,16 @@ services:
- "1884:1884"
- "9001:9001"
volumes:
- D:\dev\docker\docker-compose\mosquitto\mosquitto.conf:/mosquitto/config/mosquitto.conf
- mosquitto_data:/mosquitto/data
- ./mosquitto.conf:/mosquitto/config/mosquitto.conf
- mosquitto_data:/mosquitto/data
- mosquitto_log:/mosquitto/log
restart: always
restart: unless-stopped
volumes:
mosquitto_data:
mosquitto_log:

View File

@@ -6,7 +6,7 @@ volumes:
services:
nextcloud_db:
image: mariadb:10.5
image: mariadb:10.6
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
@@ -17,14 +17,15 @@ services:
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
networks:
- nginx_network
- traefik_web
app:
image: nextcloud:22
image: nextcloud:30.0.1
container_name: nextcloud
restart: always
ports:
- 8080:80
- 8082:80
links:
- nextcloud_db
volumes:
@@ -35,8 +36,11 @@ services:
- MYSQL_USER=nextcloud
- MYSQL_HOST=nextcloud_db
networks:
- nginx_network
- traefik_web
labels:
- "traefik.enable=true"
- "traefik.http.routers.nextcloud.rule=Host(`nextcloud.montana2000.freeddns.org`)"
networks:
nginx_network:
driver: bridge
traefik_web:
external: true

22
nginx/docker-compose.yml Normal file
View File

@@ -0,0 +1,22 @@
services:
nginx:
image: nginx:1.27
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx.rule=Host(`montana2000.freeddns.org`)"
- "traefik.http.routers.nginx.middlewares=nginx-auth"
- "traefik.http.middlewares.nginx-auth.basicauth.users=nils:$$apr1$$JDBG7p8k$$LB8y6/aKcNQ/ybLz7LXjY."
networks:
- traefik_web
volumes:
- www-data:/usr/share/nginx/html/
restart: always
volumes:
www-data:
networks:
traefik_web:
external: true

View File

@@ -0,0 +1,30 @@
################################################################################
# Node-RED Stack or Compose
################################################################################
# docker stack deploy node-red --compose-file docker-compose-node-red.yml
# docker-compose -f docker-compose-node-red.yml -p myNoderedProject up
################################################################################
version: "3.7"
services:
node-red:
image: nodered/node-red:latest
environment:
- TZ=Europe/Amsterdam
volumes:
- node-red-data:/data
restart: unless-stopped
ports:
- "8080:8080"
- "1880:1880"
network_mode: host
labels:
- "traefik.enable=true"
- "traefik.http.routers.nodered.rule=Host(`nodered.montana2000.freeddns.org`)"
- "traefik.http.routers.nodered.middlewares=nodered-auth"
- "traefik.http.middlewares.nodered-auth.basicauth.users=nils:$$apr1$$JDBG7p8k$$LB8y6/aKcNQ/ybLz7LXjY."
- "traefik.http.services.nodered-service.loadbalancer.server.port=1880"
volumes:
node-red-data:

View File

@@ -0,0 +1,40 @@
version: '2.4'
services:
octoprint:
image: octoprint/octoprint:latest
restart: unless-stopped
ports:
- 8088:80
# devices:
# use `python -m serial.tools.miniterm` to see what the name is of the printer, this requires pyserial
# - /dev/ttyACM0:/dev/ttyACM0
# - /dev/video0:/dev/video0
volumes:
- octoprint:/octoprint
# uncomment the lines below to ensure camera streaming is enabled when
# you add a video device
#environment:
# - ENABLE_MJPG_STREAMER=true
####
# uncomment if you wish to edit the configuration files of octoprint
# refer to docs on configuration editing for more information
####
#config-editor:
# image: linuxserver/code-server
# ports:
# - 8443:8443
# depends_on:
# - octoprint
# restart: unless-stopped
# environment:
# - PUID=0
# - GUID=0
# - TZ=America/Chicago
# volumes:
# - octoprint:/octoprint
volumes:
octoprint:

1
paperless/.env Normal file
View File

@@ -0,0 +1 @@
COMPOSE_PROJECT_NAME=paperless

View File

@@ -0,0 +1,47 @@
# The UID and GID of the user used to run paperless in the container. Set this
# to your UID and GID on the host so that you have write access to the
# consumption directory.
USERMAP_UID=1003
USERMAP_GID=1003
# Additional languages to install for text recognition, separated by a
# whitespace. Note that this is
# different from PAPERLESS_OCR_LANGUAGE (default=eng), which defines the
# language used for OCR.
# The container installs English, German, Italian, Spanish and French by
# default.
# See https://packages.debian.org/search?keywords=tesseract-ocr-&searchon=names&suite=buster
# for available languages.
PAPERLESS_OCR_LANGUAGES=deu
###############################################################################
# Paperless-specific settings #
###############################################################################
# All settings defined in the paperless.conf.example can be used here. The
# Docker setup does not use the configuration file.
# A few commonly adjusted settings are provided below.
# This is required if you will be exposing Paperless-ngx on a public domain
# (if doing so please consider security measures such as reverse proxy)
PAPERLESS_URL=https://paperless.montana2000.freeddns.org
# Adjust this key if you plan to make paperless available publicly. It should
# be a very long sequence of random characters. You don't need to remember it.
PAPERLESS_SECRET_KEY=JustSomeNonesenseSecretKeyIPutInHereForBeingSafe
# Use this variable to set a timezone for the Paperless Docker containers. If not specified, defaults to UTC.
PAPERLESS_TIME_ZONE=Europe/Berlin
# The default language to use for OCR. Set this to the language most of your
# documents are written in.
PAPERLESS_OCR_LANGUAGE=deu
# Set if accessing paperless via a domain subpath e.g. https://domain.com/PATHPREFIX and using a reverse-proxy like traefik or nginx
#PAPERLESS_FORCE_SCRIPT_NAME=/PATHPREFIX
#PAPERLESS_STATIC_URL=/PATHPREFIX/static/ # trailing slash required
PAPERLESS_CONSUMER_ASN_BARCODE_PREFIX=ASN
PAPERLESS_CONSUMER_ENABLE_ASN_BARCODE=true
PAPERLESS_CONSUMER_ENABLE_BARCODES=true
PAPERLESS_CONSUMER_BARCODE_SCANNER=ZXING

View File

@@ -0,0 +1,111 @@
# Docker Compose file for running paperless from the docker container registry.
# This file contains everything paperless needs to run.
# Paperless supports amd64, arm and arm64 hardware.
#
# All compose files of paperless configure paperless in the following way:
#
# - Paperless is (re)started on system boot, if it was running before shutdown.
# - Docker volumes for storing data are managed by Docker.
# - Folders for importing and exporting files are created in the same directory
# as this file and mounted to the correct folders inside the container.
# - Paperless listens on port 8000.
#
# In addition to that, this Docker Compose file adds the following optional
# configurations:
#
# - Instead of SQLite (default), PostgreSQL is used as the database server.
# - Apache Tika and Gotenberg servers are started with paperless and paperless
# is configured to use these services. These provide support for consuming
# Office documents (Word, Excel, Power Point and their LibreOffice counter-
# parts.
#
# To install and update paperless with this file, do the following:
#
# - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env'
# and '.env' into a folder.
# - Run 'docker compose pull'.
# - Run 'docker compose run --rm webserver createsuperuser' to create a user.
# - Run 'docker compose up -d'.
#
# For more extensive installation and update instructions, refer to the
# documentation.
version: "3.4"
services:
broker:
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- redisdata:/data
networks:
- traefik_web
db:
image: docker.io/library/postgres:16
restart: unless-stopped
volumes:
- pgdata:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless
networks:
- traefik_web
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- db
- broker
- gotenberg
- tika
ports:
- "8010:8000"
volumes:
- data:/usr/src/paperless/data
- media:/usr/src/paperless/media
- /home/nils/paperless/export:/usr/src/paperless/export
- /home/nils/paperless/consume:/usr/src/paperless/consume
env_file: docker-compose.env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
labels:
- "traefik.enable=true"
- "traefik.http.routers.paperless.rule=Host(`paperless.montana2000.freeddns.org`)"
- "traefik.docker.network=proxy"
networks:
- traefik_web
gotenberg:
image: docker.io/gotenberg/gotenberg:7.10
restart: unless-stopped
# The gotenberg chromium route is used to convert .eml files. We do not
# want to allow external content like tracking pixels or even javascript.
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/.*"
networks:
- traefik_web
tika:
image: ghcr.io/paperless-ngx/tika:latest
restart: unless-stopped
networks:
- traefik_web
volumes:
data:
media:
pgdata:
redisdata:
networks:
traefik_web:
external: true

24
pihole/docker-compose.yml Normal file
View File

@@ -0,0 +1,24 @@
# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
pihole:
container_name: pihole
hostname: Pihole
image: pihole/pihole:latest
network_mode: vlanPihole
environment:
# Set the appropriate timezone for your location (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), e.g:
TZ: 'Europe/Berlin'
# Set a password to access the web interface. Not setting one will result in a random password being assigned
FTLCONF_webserver_api_password: 'inginf95'
WEB_PORT: '9090'
# Volumes store your data between container upgrades
volumes:
# For persisting Pi-hole's databases and common configuration file
- './etc-pihole:/etc/pihole'
# Uncomment the below if you have custom dnsmasq config files that you want to persist. Not needed for most starting fresh with Pi-hole v6. If you're upgrading from v5 you and have used this directory before, you should keep it enabled for the first v6 container start to allow for a complete migration. It can be removed afterwards
#- './etc-dnsmasq.d:/etc/dnsmasq.d'
#cap_add:
# See https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
# Required if you are using Pi-hole as your DHCP server, else not needed
#- NET_ADMIN
restart: unless-stopped

View File

@@ -0,0 +1,37 @@
# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
# DNS Ports
- "53:53/tcp"
- "53:53/udp"
# Default HTTP Port
- "9090:80/tcp"
# Default HTTPs Port. FTL will generate a self-signed certificate
#- "9043:443/tcp"
# Uncomment the below if using Pi-hole as your DHCP Server
#- "67:67/udp"
networks:
- pihole_network
environment:
# Set the appropriate timezone for your location (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), e.g:
TZ: 'Europe/Berlin'
# Set a password to access the web interface. Not setting one will result in a random password being assigned
FTLCONF_webserver_api_password: 'inginf95'
# Volumes store your data between container upgrades
volumes:
# For persisting Pi-hole's databases and common configuration file
- './etc-pihole:/etc/pihole'
# Uncomment the below if you have custom dnsmasq config files that you want to persist. Not needed for most starting fresh with Pi-hole v6. If you're upgrading from v5 you and have used this directory before, you should keep it enabled for the first v6 container start to allow for a complete migration. It can be removed afterwards
#- './etc-dnsmasq.d:/etc/dnsmasq.d'
#cap_add:
# See https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
# Required if you are using Pi-hole as your DHCP server, else not needed
#- NET_ADMIN
restart: unless-stopped
networks:
pihole_network:
driver: bridge

38
plex/docker-compose.yaml Normal file
View File

@@ -0,0 +1,38 @@
version: "2.1"
services:
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex
environment:
- PUID=1000
- PGID=1000
- TZ=EUROPE/BERLIN
- VERSION=docker
- PLEX_CLAIM=claim-J9FARYcKeGSzVPU7y5Fh
volumes:
- plex_config:/config
- /media/plex/tv-shows:/tv-shows
- /media/plex/movies:/movies
- /media/plex/music:/music
- /media/plex/cartoons:/cartoons
- /media/plex/comedy:/comedy
restart: unless-stopped
ports:
# Plex DLNA Server
- 1901:1900/udp
# GDM network discovery
- 32410:32410/udp
- 32412:32412/udp
- 32413:32413/udp
- 32414:32414/udp
labels:
- "traefik.enable=true"
- "traefik.http.routers.plex.rule=Host(`plex.montana2000.freeddns.org`)"
- "traefik.http.routers.plex.service=plex"
- "traefik.http.services.plex.loadbalancer.server.port=32400"
- "traefik.docker.network=proxy"
network_mode: host
volumes:
plex_config:

View File

@@ -0,0 +1,89 @@
version: '3'
volumes:
prometheus-data:
driver: local
prometheus-config:
driver: local
monitoring-grafana-data:
driver: local
loki_config:
driver: local
loki_data:
driver: local
promtail_config:
driver: local
services:
promtail:
image: grafana/promtail:latest
container_name: monitoring-promtail
volumes:
- /var/log:/var/log
- /var/lib/docker/containers:/var/lib/docker/containers
- promtail_config:/etc/promtail-config
command: -config.file=/etc/promtail-config/promtail.yml
restart: unless-stopped
loki:
image: grafana/loki:latest
container_name: monitoring-loki
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
volumes:
- loki_config:/etc/loki
- loki_data:/data/loki
restart: unless-stopped
node-exporter:
image: prom/node-exporter
container_name: monitoring-node-exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- --collector.filesystem.ignored-mount-points
- "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)"
ports:
- 9100:9100
restart: unless-stopped
cadvisor:
image: google/cadvisor:latest
container_name: monitoring-cadvisor
ports:
- "8099:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
restart: unless-stopped
devices:
- /dev/kmsg
prometheus:
image: prom/prometheus:latest
container_name: monitoring-prometheus
ports:
- "9090:9090"
volumes:
- prometheus-config:/etc/prometheus
- prometheus-data:/prometheus
restart: unless-stopped
command:
- "--config.file=/etc/prometheus/prometheus.yml"
grafana:
image: grafana/grafana-oss:latest
container_name: monitoring-grafana
ports:
- "3090:3000"
volumes:
- monitoring-grafana-data:/var/lib/grafana
restart: unless-stopped

View File

@@ -0,0 +1,29 @@
auth_enabled: false
server:
http_listen_port: 3100
common:
path_prefix: /loki
storage:
filesystem:
chunks_directory: /loki/chunks
rules_directory: /loki/rules
replication_factor: 1
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
ruler:
alertmanager_url: http://localhost:9093

View File

@@ -0,0 +1,27 @@
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
# external_labels:
# monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
# Example job for node_exporter
- job_name: 'node_exporter'
static_configs:
- targets: ['monitoring-node-exporter:9100']
# Example job for cadvisor
- job_name: 'cadvisor'
static_configs:
- targets: ['monitoring-cadvisor:8080']

View File

@@ -0,0 +1,17 @@
server:
disable: true
positions:
filename: /tmp/positions.yaml
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: system
pipeline_stages:
- docker: {}
static_configs:
- labels:
job: docker
__path__: /var/lib/docker/containers/*/*-json.log

View File

@@ -0,0 +1,75 @@
version: '3.7'
volumes:
smarthome-monitoring-influxdb-data:
driver: local
smarthome-monitoring-influxdb-config:
driver: local
#smarthome-monitoring-chronograf-data:
# driver: local
smarthome-monitoring-telegraf-data:
driver: local
smarthome-monitoring-grafana-data:
driver: local
services:
influxdb:
image: influxdb:latest
container_name: smarthome-monitoring-influxdb
volumes:
- smarthome-monitoring-influxdb-data:/var/lib/influxdb2
- smarthome-monitoring-influxdb-config:/etc/influxdb2
restart: unless-stopped
environment:
INFLUXDB_REPORTING_DISABLED: "true"
INFLUXDB_ADMIN_ENABLED: "true"
INFLUXDB_DB: "mydb"
ports:
- "8086:8086"
- "8082:8082"
- "8089:8089"
#kapacitor:
# image: kapacitor:latest
# container_name: smarthome-monitoring-kapacitor
# environment:
# KAPACITOR_HOSTNAME: smarthome-monitoring-kapacitor
# KAPACITOR_INFLUXDB_0_URLS_0: http://smarthome-monitoring-influxdb:8086
# ports:
# - "9092:9092"
#chronograf:
# image: chronograf:latest
# container_name: smarthome-monitoring-chronograf
# volumes:
# - smarthome-monitoring-chronograf-data:/var/lib/chronograf
# ports:
# - "8888:8888"
# environment:
# INFLUXDB_URL: http://smarthome-monitoring-influxdb:8086
# KAPACITOR_URL: http://smarthome-monitoring-kapacitor:9092
# REPORTING_DISABLED: "true"
# depends_on:
# - influxdb
# - kapacitor
telegraf:
image: telegraf:latest
container_name: smarthome-monitoring-telegraf
volumes:
- smarthome-monitoring-telegraf-data:/etc/telegraf
- "/var/run/docker.sock:/var/run/docker.sock:ro"
restart: unless-stopped
environment:
HOSTNAME: smarthome-monitoring-telegraf
grafana:
image: grafana/grafana-oss:latest
container_name: smarthome-monitoring-grafana
ports:
- "3091:3000"
volumes:
- smarthome-monitoring-grafana-data:/var/lib/grafana
restart: unless-stopped

File diff suppressed because it is too large Load Diff

View File

@@ -22,6 +22,7 @@ services:
nginx_recipes:
image: nginx:mainline-alpine
container_name: tandoor-recipes
restart: always
ports:
- 8095:80

View File

@@ -0,0 +1,19 @@
version: '3.0'
services:
mytb:
restart: unless-stopped
image: "thingsboard/tb-postgres:latest"
ports:
- "9090:9090"
- "1883:1883"
- "7070:7070"
- "5683-5688:5683-5688/udp"
environment:
TB_QUEUE_TYPE: in-memory
volumes:
- things_board_data:/data
- things_board_log:/var/log/thingsboard
volumes:
things_board_data:
things_board_log:

View File

@@ -3,6 +3,7 @@ version: '3'
services:
traccar:
image: traccar/traccar:latest
container_name: traccar
restart: always
ports:
- "8096:8082"

View File

@@ -0,0 +1,36 @@
version: "3.3"
services:
traefik:
image: "traefik:v3.2"
container_name: "traefik"
command:
#- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.network=traefik_web"
- "--entrypoints.https.address=:443"
- "--entrypoints.https.http.tls.certResolver=le"
- "--certificatesresolvers.le.acme.tlschallenge=true"
- "--certificatesresolvers.le.acme.email=nils.grunwald@msn.com"
- "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
ports:
- "444:443"
- "9080:8080"
volumes:
- letsencrypt:/letsencrypt
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
- web
extra_hosts:
- host.docker.internal:172.17.0.1
restart: always
volumes:
letsencrypt:
networks:
web:
name: traefik_web

View File

@@ -0,0 +1,18 @@
# Simple docker-compose.yml
# You can change your port or volume location
version: '3.3'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
- uptime-kuma-data:/app/data
ports:
- 3001:3001 # <Host Port>:<Container Port>
restart: always
volumes:
uptime-kuma-data: