Compare commits

..

29 Commits

Author SHA1 Message Date
e9abcf80e6 Update kimai stack. 2025-11-20 11:26:43 +00:00
a693bca887 Update well known routes. 2025-11-20 11:22:20 +00:00
4d0adf3a00 Update paperless stack. 2025-09-08 13:47:50 +00:00
3768ff4c44 Add new configuration to work with new samba release. 2025-09-08 13:16:52 +00:00
03173938ad Use external domain for semaphore. 2025-05-16 12:00:14 +00:00
84a4fff86f Add pihole header rules to access from homer. 2025-05-16 11:52:09 +00:00
918a70a708 Fix typo in watchtower environment. 2025-05-09 10:14:44 +00:00
707172471c Update cadvisor. 2025-05-09 10:10:25 +00:00
1bbe8228c2 Move duplicati to stable channel use public domain. 2025-05-08 10:29:32 +00:00
cf36d49339 Fine tune samba and document user creation. 2025-05-07 12:45:47 +00:00
734d15407e Reactivate samba in docker. 2025-05-07 14:09:21 +02:00
2d4393a451 Change images for paperless. 2025-05-07 06:42:54 +00:00
e7b6f7245d Change gateway for ipv6. 2025-05-07 06:41:24 +00:00
d7b433609e Reenable ipv6 netzwork and change runner configuration. 2025-05-07 06:40:34 +00:00
020c423707 Remove named volume for consume. 2025-05-07 06:39:25 +00:00
23ff2b80fe Update paperless stack. 2025-05-07 06:37:50 +00:00
8ed1bc894d Adjust watchtower config to new registry url. 2025-05-05 07:52:39 +00:00
b4e20ec389 Change gitea web address. 2025-05-03 14:24:15 +00:00
edc9321abd Use new web address for vaultwarden. 2025-05-03 10:28:48 +00:00
ea5b945211 Remove speedtest from monitoring stack. Remove watchtower notifications. 2025-05-03 10:28:15 +00:00
b2babba054 Change giteas web address. 2025-05-03 10:26:34 +00:00
202c2adfca Use new traefik version. 2025-05-03 10:25:53 +00:00
3b3e5bddd1 Change semaphores web address. 2025-05-03 10:22:23 +00:00
1cb3dbe620 Remove obsolete dvb volume and register new gitea runner. 2025-04-28 13:09:05 +00:00
42e03e31f7 Remove deprecated .gitignore and glances setup. Change watchtower message for minisforum. 2025-04-18 13:38:19 +00:00
13fec90ac3 Change MAC addresses for minisforum. 2025-04-18 13:34:51 +00:00
af4de50a48 Use apache image for kimai for easier updating. 2025-04-18 09:09:43 +00:00
c4101fface Move volkszaehler to docker. 2025-04-18 08:46:42 +00:00
fa58473ac4 Use MAC address for unbound. 2025-04-18 10:33:19 +02:00
20 changed files with 248 additions and 1023 deletions

View File

@@ -38,9 +38,15 @@ services:
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.semaphore.entrypoints=web" - "traefik.http.routers.semaphore.entrypoints=web"
- "traefik.http.routers.semaphore.rule=Host(`semaphore.lan`)" - "traefik.http.routers.semaphore.rule=Host(`ansible.fam-steinle.de`)"
- "traefik.http.routers.semaphore.service=semaphore" - "traefik.http.routers.semaphore.middlewares=semaphore"
- "traefik.http.services.semaphore.loadbalancer.server.port=3000" - "traefik.http.middlewares.semaphore.redirectscheme.scheme=https"
- "traefik.http.routers.semaphore-secure.entrypoints=websecure"
- "traefik.http.routers.semaphore-secure.rule=Host(`ansible.fam-steinle.de`)"
- "traefik.http.routers.semaphore-secure.service=semaphore-secure"
- "traefik.http.routers.semaphore-secure.tls=true"
- "traefik.http.routers.semaphore-secure.tls.certresolver=myresolver"
- "traefik.http.services.semaphore-secure.loadbalancer.server.port=3000"
- "com.centurylinklabs.watchtower.monitor-only=true" - "com.centurylinklabs.watchtower.monitor-only=true"
semaphore-db: semaphore-db:

View File

@@ -7,31 +7,37 @@ volumes:
name: duplicati-conf name: duplicati-conf
nextcloud-data: nextcloud-data:
external: true external: true
gitea:
external: true
services: services:
duplicati: duplicati:
image: duplicati/duplicati:beta image: duplicati/duplicati:stable
restart: unless-stopped restart: unless-stopped
container_name: duplicati container_name: duplicati
hostname: duplicati hostname: duplicati
ports:
- "8200:8200"
volumes: volumes:
- duplicati-conf:/data - duplicati-conf:/data
- nextcloud-data:/nextcloud:ro - nextcloud-data:/nextcloud:ro
- gitea:/gitea:ro
- /media/backup:/backup - /media/backup:/backup
networks:
- proxy
environment: environment:
DUPLICATI__DISABLE_DB_ENCRYPTION: true DUPLICATI__DISABLE_DB_ENCRYPTION: true
deploy: DUPLICATI__WEBSERVICE_ALLOWEDHOSTNAMES: backup.fam-steinle.de
resources: networks:
limits: - proxy
memory: 16g ports:
- "8200:8200"
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.duplicati.entrypoints=web" - "traefik.http.routers.duplicati.entrypoints=web"
- "traefik.http.routers.duplicati.rule=Host(`duplicati.lan`)" - "traefik.http.routers.duplicati.rule=Host(`backup.fam-steinle.de`)"
- "traefik.http.services.duplicati.loadbalancer.server.port=8200" - "traefik.http.routers.duplicati.middlewares=duplicati"
- "traefik.http.middlewares.duplicati.redirectscheme.scheme=https"
- "traefik.http.routers.duplicati-secure.entrypoints=websecure"
- "traefik.http.routers.duplicati-secure.rule=Host(`backup.fam-steinle.de`)"
- "traefik.http.routers.duplicati-secure.service=duplicati-secure"
- "traefik.http.routers.duplicati-secure.tls=true"
- "traefik.http.routers.duplicati-secure.tls.certresolver=myresolver"
- "traefik.http.services.duplicati-secure.loadbalancer.server.port=8200"

View File

@@ -2,6 +2,7 @@ networks:
proxy: proxy:
external: false external: false
name: proxy name: proxy
enable_ipv6: true
volumes: volumes:
letsencrypt: letsencrypt:
@@ -11,7 +12,7 @@ volumes:
services: services:
traefik: traefik:
image: traefik:v2.11 image: traefik:v3
container_name: traefik container_name: traefik
restart: unless-stopped restart: unless-stopped
command: command:
@@ -20,7 +21,6 @@ services:
- --providers.docker=true - --providers.docker=true
- --providers.docker.network=proxy - --providers.docker.network=proxy
- --providers.docker.exposedByDefault=false - --providers.docker.exposedByDefault=false
- --providers.docker.swarmMode=false
- --entryPoints.web.address=:80 - --entryPoints.web.address=:80
- --entryPoints.websecure.address=:443 - --entryPoints.websecure.address=:443
- --entryPoints.ssh.address=:222/tcp - --entryPoints.ssh.address=:222/tcp

View File

@@ -1,8 +1,6 @@
volumes: volumes:
tv-data: tv-data:
name: tv-data name: tv-data
tv-recordings:
name: tv-recordings
jellyfin-config: jellyfin-config:
name: jellyfin-config name: jellyfin-config
jellyfin-cache: jellyfin-cache:

View File

@@ -4,6 +4,7 @@ networks:
gitea: gitea:
name: gitea name: gitea
external: false external: false
enable_ipv6: true
volumes: volumes:
gitea: gitea:
@@ -42,15 +43,14 @@ services:
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.git.entrypoints=web" - "traefik.http.routers.git.entrypoints=web"
- "traefik.http.routers.git.rule=Host(`cs-git.ddnss.de`)" - "traefik.http.routers.git.rule=Host(`gitea.fam-steinle.de`)"
- "traefik.http.routers.git.middlewares=git" - "traefik.http.routers.git.middlewares=git"
- "traefik.http.middlewares.git.redirectscheme.scheme=https" - "traefik.http.middlewares.git.redirectscheme.scheme=https"
- "traefik.http.routers.git-secure.entrypoints=websecure" - "traefik.http.routers.git-secure.entrypoints=websecure"
- "traefik.http.routers.git-secure.rule=Host(`cs-git.ddnss.de`)" - "traefik.http.routers.git-secure.rule=Host(`gitea.fam-steinle.de`)"
- "traefik.http.routers.git-secure.service=git-secure" - "traefik.http.routers.git-secure.service=git-secure"
- "traefik.http.routers.git-secure.tls=true" - "traefik.http.routers.git-secure.tls=true"
- "traefik.http.routers.git-secure.tls.certresolver=myresolver" - "traefik.http.routers.git-secure.tls.certresolver=myresolver"
- "traefik.http.routers.git-secure.tls.domains[0].main=cs-git.ddnss.de"
- "traefik.http.services.git-secure.loadbalancer.server.port=3000" - "traefik.http.services.git-secure.loadbalancer.server.port=3000"
- "traefik.tcp.routers.git-ssh.entrypoints=ssh" - "traefik.tcp.routers.git-ssh.entrypoints=ssh"
- "traefik.tcp.routers.git-ssh.rule=HostSNI(`*`)" - "traefik.tcp.routers.git-ssh.rule=HostSNI(`*`)"
@@ -76,13 +76,14 @@ services:
runner: runner:
image: gitea/act_runner image: gitea/act_runner
restart: always restart: always
privileged: true
depends_on: depends_on:
- gitea - gitea
volumes: volumes:
- gitea-runner:/data - gitea-runner:/data
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
environment:
- GITEA_INSTANCE_URL=https://cs-git.ddnss.de
- GITEA_RUNNER_REGISTRATION_TOKEN=flpCcwO0Dw6u4jtWT2wMBrBWuFZ8HDdS4qV277tH
networks: networks:
- gitea - gitea
environment:
- GITEA_INSTANCE_URL=https://gitea.fam-steinle.de
- GITEA_RUNNER_REGISTRATION_TOKEN=FQDt05qG37BLO0OBl6eX94aNNVE9Ni5nFdeVFoKm

View File

@@ -6,14 +6,16 @@ networks:
external: false external: false
volumes: volumes:
kimai:
name: kimai
kimai-db: kimai-db:
name: kimai-db name: kimai-db
kimai-data:
name: kimai-data
kimai-plugins:
name: kimai-plugins
services: services:
kimai: kimai:
image: kimai/kimai2:fpm image: kimai/kimai2:apache
container_name: kimai container_name: kimai
hostname: kimai hostname: kimai
restart: unless-stopped restart: unless-stopped
@@ -21,33 +23,20 @@ services:
ADMINMAIL: ${ADMIN_USER} ADMINMAIL: ${ADMIN_USER}
ADMINPASS: ${ADMIN_PASS} ADMINPASS: ${ADMIN_PASS}
DATABASE_URL: mysql://${DB_USER}:${DB_PASS}@kimai-db/${DB_NAME}?charset=utf8&serverVersion=8.1.0 DATABASE_URL: mysql://${DB_USER}:${DB_PASS}@kimai-db/${DB_NAME}?charset=utf8&serverVersion=8.1.0
TRUSTED_HOSTS: kimai.lan,kimai-web,localhost,127.0.0.1
APP_SECRET: ${APP_SECRET} APP_SECRET: ${APP_SECRET}
depends_on: depends_on:
- kimai-db - kimai-db
networks: networks:
- proxy
- kimai - kimai
volumes: volumes:
- kimai:/opt/kimai/public - kimai-data:/opt/kimai/var/data
- kimai-plugins:/opt/kimai/var/plugins
kimai-web:
image: nginx:alpine
container_name: kimai-web
hostname: kimai-web
restart: unless-stopped
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.kimai.entrypoints=web" - "traefik.http.routers.kimai.entrypoints=web"
- "traefik.http.routers.kimai.rule=Host(`kimai.lan`)" - "traefik.http.routers.kimai.rule=Host(`kimai.lan`)"
- "traefik.http.services.kimai.loadbalancer.server.port=80" - "traefik.http.services.kimai.loadbalancer.server.port=8001"
depends_on:
- kimai
networks:
- proxy
- kimai
volumes:
- kimai:/opt/kimai/public:ro
- ${PWD}/kimai.conf:/etc/nginx/conf.d/default.conf
kimai-db: kimai-db:
image: mysql:8 image: mysql:8

View File

@@ -1,25 +0,0 @@
server {
listen 80;
index index.php;
server_name kimai.lan;
root /opt/kimai/public;
# cache static asset files
location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
expires max;
log_not_found off;
}
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass kimai:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
}

View File

@@ -1 +0,0 @@
speedtest.csv

View File

@@ -13,7 +13,7 @@ volumes:
services: services:
prometheus: prometheus:
image: cs-git.ddnss.de/home/prometheus image: gitea.fam-steinle.de/home/prometheus
container_name: prometheus container_name: prometheus
hostname: prometheus hostname: prometheus
restart: unless-stopped restart: unless-stopped
@@ -28,49 +28,8 @@ services:
- "traefik.http.routers.prometheus.service=prometheus" - "traefik.http.routers.prometheus.service=prometheus"
- "traefik.http.services.prometheus.loadbalancer.server.port=9090" - "traefik.http.services.prometheus.loadbalancer.server.port=9090"
glances:
image: nicolargo/glances:latest-full
container_name: glances
restart: unless-stopped
pid: host
# network_mode: host
# ports:
# - "61208:61208"
# - "9091:9091"
environment:
GLANCES_OPT: "--export prometheus -C /glances/conf/glances.conf"
networks:
- proxy
#- monitoring
# - host
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /etc/os-release:/etc/os-release:ro
- ./glances.conf:/glances/conf/glances.conf
labels:
- "traefik.enable=true"
- "traefik.http.routers.glances.rule=Host(`glances.fam-steinle.de`)"
- "traefik.http.routers.glances.entrypoints=web"
- "traefik.http.routers.glances.service=glances"
- "traefik.http.services.glances.loadbalancer.server.port=9091"
speedtest:
image: cs-git.ddnss.de/home/speedtest-web
container_name: speedtest-web
restart: unless-stopped
volumes:
- /media/backup/speedtest.csv:/var/www/html/speedtest.csv
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.speedtest.rule=Host(`speedtest.fam-steinle.de`)"
- "traefik.http.routers.speedtest.entrypoints=web"
- "traefik.http.routers.speedtest.service=speedtest"
- "traefik.http.services.speedtest.loadbalancer.server.port=8080"
cadvisor: cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.51.0 image: gcr.io/cadvisor/cadvisor:v0.52.1
container_name: cadvisor container_name: cadvisor
hostname: cadvisor hostname: cadvisor
restart: unless-stopped restart: unless-stopped
@@ -139,11 +98,8 @@ services:
environment: environment:
WATCHTOWER_INCLUDE_STOPPED: true WATCHTOWER_INCLUDE_STOPPED: true
WATCHTOWER_MONITOR_ONLY: false WATCHTOWER_MONITOR_ONLY: false
WATCHWOWER_CLEANUP: true WATCHTOWER_CLEANUP: true
WATCHTOWER_REMOVE_VOLUMES: true WATCHTOWER_REMOVE_VOLUMES: true
WATCHTOWER_WARN_ON_HEAD_FAILURE: "never" WATCHTOWER_WARN_ON_HEAD_FAILURE: "never"
WATCHTOWER_SCHEDULE: "0 20 4 * * *" WATCHTOWER_SCHEDULE: "0 20 4 * * *"
WATCHTOWER_NOTIFICATIONS: "shoutrrr"
WATCHTOWER_NOTIFICATION_URL: "mattermost://watchtower@cs-mm.ddnss.de/og4ckuqet7fafb8kjuaigzuh7c"
WATCHTOWER_NOTIFICATION_TEMPLATE: "{{range .}} Homeserver - {{.Time.Format \"2006-01-02 15:04:05\"}} ({{.Level}}): {{.Message}}{{println}}{{end}}"

View File

@@ -1,882 +0,0 @@
##############################################################################
# Globals Glances parameters
##############################################################################
[global]
# Stats refresh rate (default is a minimum of 2 seconds)
# Can be overwrite by the -t <sec> option
# It is also possible to overwrite it in each plugin sections
refresh=2
# Does Glances should check if a newer version is available on PyPI ?
check_update=False
# History size (maximum number of values)
# Default is 1200 values (~1h with the default refresh rate)
history_size=1200
# Set the way Glances should display the date (default is %Y-%m-%d %H:%M:%S %Z)
# strftime_format=%Y-%m-%d %H:%M:%S %Z
# Define external directory for loading additional plugins
# The layout follows the glances standard for plugin definitions
#plugin_dir=/home/user/dev/plugins
##############################################################################
# User interface
##############################################################################
[outputs]
# Options for all UIs
#--------------------
# Separator in the Curses and WebUI interface (between top and others plugins)
#separator=True
# Set the the Curses and WebUI interface left menu plugin list (comma-separated)
#left_menu=network,wifi,connections,ports,diskio,fs,irq,folders,raid,smart,sensors,now
# Limit the number of processes to display (in the WebUI)
max_processes_display=25
#
# Specifics options for TUI
#--------------------------
# Disable background color
#disable_bg=True
#
# Specifics options for WebUI
#----------------------------
# Set URL prefix for the WebUI and the API
# Example: url_prefix=/glances/ => http://localhost/glances/
# Note: The final / is mandatory
# Default is no prefix (/)
#url_prefix=/glances/
# Set root path for WebUI statics files
# Why ? On Debian system, WebUI statics files are not provided.
# You can download it in a specific folder
# thanks to https://github.com/nicolargo/glances/issues/2021
# then configure this folder with the webui_root_path key
# Default is folder where glances_restfull_api.py is hosted
#webui_root_path=
# CORS options
# Comma separated list of origins that should be permitted to make cross-origin requests.
# Default is *
#cors_origins=*
# Indicate that cookies should be supported for cross-origin requests.
# Default is True
#cors_credentials=True
# Comma separated list of HTTP methods that should be allowed for cross-origin requests.
# Default is *
#cors_methods=*
# Comma separated list of HTTP request headers that should be supported for cross-origin requests.
# Default is *
#cors_headers=*
##############################################################################
# Plugins
##############################################################################
[quicklook]
# Set to true to disable a plugin
# Note: you can also disable it from the command line (see --disable-plugin <plugin_name>)
disable=False
# Stats list (default is cpu,mem,load)
# Available stats are: cpu,mem,load,swap
list=cpu,mem,load
# Graphical bar char used in the terminal user interface (default is |)
bar_char=|
# Define CPU, MEM and SWAP thresholds in %
cpu_careful=50
cpu_warning=70
cpu_critical=90
mem_careful=50
mem_warning=70
mem_critical=90
swap_careful=50
swap_warning=70
swap_critical=90
# Source: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
# With 1 CPU core, the load should be lower than 1.00 ~ 100%
load_careful=70
load_warning=100
load_critical=500
[system]
# This plugin display the first line in the Glances UI with:
# Hostname / Operating system name / Architecture information
# Set to true to disable a plugin
disable=False
# Default refresh rate is 60 seconds
#refresh=60
# System information to display (a string where {key} will be replaced by the value)
# Available information are: hostname, os_name, os_version, os_arch, linux_distro, platform
#system_info_msg= | My {os_name} system |
[cpu]
disable=False
# See https://scoutapm.com/blog/slow_server_flow_chart
#
# I/O wait percentage should be lower than 1/# (# = Logical CPU cores)
# Leave commented to just use the default config:
# Careful=1/#*100-20% / Warning=1/#*100-10% / Critical=1/#*100
#iowait_careful=30
#iowait_warning=40
#iowait_critical=50
#
# Total % is 100 - idle
total_careful=65
total_warning=75
total_critical=85
total_log=True
#
# Default values if not defined: 50/70/90 (except for iowait)
user_careful=50
user_warning=70
user_critical=90
user_log=False
#user_critical_action=echo {{user}} {{value}} {{max}} > /tmp/cpu.alert
#
system_careful=50
system_warning=70
system_critical=90
system_log=False
#
steal_careful=50
steal_warning=70
steal_critical=90
#steal_log=True
#
# Context switch limit (core / second)
# Leave commented to just use the default config critical is 50000*(Logical CPU cores)
#ctx_switches_careful=10000
#ctx_switches_warning=12000
#ctx_switches_critical=14000
[percpu]
disable=False
# Define the maximum number of CPU displayed at a time
# If the number of CPU is higher than the one configured in max_cpu_display then:
# - display top 'max_cpu_display' (sorted by CPU consumption)
# - a last line will be added with the mean of all other CPUs
max_cpu_display=4
# Define CPU thresholds in %
# Default values if not defined: 50/70/90
user_careful=50
user_warning=70
user_critical=90
iowait_careful=50
iowait_warning=70
iowait_critical=90
system_careful=50
system_warning=70
system_critical=90
[gpu]
disable=False
# Default processor values if not defined: 50/70/90
proc_careful=50
proc_warning=70
proc_critical=90
# Default memory values if not defined: 50/70/90
mem_careful=50
mem_warning=70
mem_critical=90
# Temperature
temperature_careful=60
temperature_warning=70
temperature_critical=80
[mem]
disable=False
# Define RAM thresholds in %
# Default values if not defined: 50/70/90
careful=50
#careful_action_repeat=echo {{percent}} >> /tmp/memory.alert
warning=70
critical=90
[memswap]
disable=False
# Define SWAP thresholds in %
# Default values if not defined: 50/70/90
careful=50
warning=70
critical=90
[load]
disable=False
# Define LOAD thresholds
# Value * number of cores
# Default values if not defined: 0.7/1.0/5.0 per number of cores
# Source: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
# http://www.linuxjournal.com/article/9001
careful=0.7
warning=1.0
critical=5.0
#log=False
[network]
disable=False
# Default bitrate thresholds in % of the network interface speed
# Default values if not defined: 70/80/90
rx_careful=70
rx_warning=80
rx_critical=90
tx_careful=70
tx_warning=80
tx_critical=90
# Define the list of hidden network interfaces (comma-separated regexp)
#hide=docker.*,lo
# Define the list of wireless network interfaces to be show (comma-separated)
#show=docker.*
# Automatically hide interface not up (default is False)
hide_no_up=True
# Automatically hide interface with no IP address (default is False)
hide_no_ip=True
# Set hide_zero to True to automatically hide interface with no traffic
hide_zero=False
# Set hide_threshold_bytes to an integer value to automatically hide
# interface with traffic less or equal than this value
#hide_threshold_bytes=0
# It is possible to overwrite the bitrate thresholds per interface
# WLAN 0 Default limits (in bits per second aka bps) for interface bitrate
#wlan0_rx_careful=4000000
#wlan0_rx_warning=5000000
#wlan0_rx_critical=6000000
#wlan0_rx_log=True
#wlan0_tx_careful=700000
#wlan0_tx_warning=900000
#wlan0_tx_critical=1000000
#wlan0_tx_log=True
# Alias for network interface name
#alias=wlp2s0:WIFI
[ip]
# Disable display of private IP address
disable=False
# Configure the online service where public IP address information will be downloaded
# - public_disabled: Disable public IP address information (set to True for offline platform)
# - public_refresh_interval: Refresh interval between to calls to the online service
# - public_api: URL of the API (the API should return an JSON object)
# - public_username: Login for the online service (if needed)
# - public_password: Password for the online service (if needed)
# - public_field: Field name of the public IP address in onlibe service JSON message
# - public_template: Template to build the public message
#
# Example for IPLeak service:
# public_api=https://ipv4.ipleak.net/json/
# public_field=ip
# public_template={ip} {continent_name}/{country_name}/{city_name}
#
public_disabled=False
public_refresh_interval=300
public_api=https://ipv4.ipleak.net/json/
#public_username=<myname>
#public_password=<mysecret>
public_field=ip
public_template={continent_name}/{country_name}/{city_name}
[connections]
# Display additional information about TCP connections
# This plugin is disabled by default because it consumes lots of CPU
disable=True
# nf_conntrack thresholds in %
nf_conntrack_percent_careful=70
nf_conntrack_percent_warning=80
nf_conntrack_percent_critical=90
[wifi]
disable=False
# Define SIGNAL thresholds in dBm (lower is better...)
# Based on: http://serverfault.com/questions/501025/industry-standard-for-minimum-wifi-signal-strength
careful=-65
warning=-75
critical=-85
[diskio]
disable=False
# Define the list of hidden disks (comma-separated regexp)
#hide=sda2,sda5,loop.*
hide=loop.*,/dev/loop.*
# Set hide_zero to True to automatically hide disk with no read/write
hide_zero=False
# Set hide_threshold_bytes to an integer value to automatically hide
# interface with traffic less or equal than this value
#hide_threshold_bytes=0
# Define the list of disks to be show (comma-separated)
#show=sda.*
# Alias for sda1 and sdb1
#alias=sda1:SystemDisk,sdb1:DataDisk
# Set thresholds (in bytes per second) for a given disk name (rx = read / tx = write)
#dm-0_rx_careful=4000000000
#dm-0_rx_warning=5000000000
#dm-0_rx_critical=6000000000
#dm-0_rx_log=True
#dm-0_tx_careful=700000000
#dm-0_tx_warning=900000000
#dm-0_tx_critical=1000000000
#dm-0_tx_log=True
[fs]
disable=False
# Define the list of file system to hide (comma-separated regexp)
hide=/boot.*,.*/snap.*
# Define the list of file system to show (comma-separated regexp)
#show=/,/srv
# Define filesystem space thresholds in %
# Default values if not defined: 50/70/90
# It is also possible to define per mount point value
# Example: /_careful=40
careful=50
warning=70
critical=90
# Allow additional file system types (comma-separated FS type)
#allow=shm
# Alias for root file system
#alias=/:Root,/zsfpool:ZSF
[irq]
# Documentation: https://glances.readthedocs.io/en/latest/aoa/irq.html
# This plugin is disabled by default
disable=True
[folders]
# Documentation: https://glances.readthedocs.io/en/latest/aoa/folders.html
disable=False
# Define a folder list to monitor
# The list is composed of items (list_#nb <= 10)
# An item is defined by:
# * path: absolute path
# * careful: optional careful threshold (in MB)
# * warning: optional warning threshold (in MB)
# * critical: optional critical threshold (in MB)
# * refresh: interval in second between two refreshes
#folder_1_path=/tmp
#folder_1_careful=2500
#folder_1_warning=3000
#folder_1_critical=3500
#folder_1_refresh=60
#folder_2_path=/home/nicolargo/Videos
#folder_2_warning=17000
#folder_2_critical=20000
#folder_3_path=/nonexisting
#folder_4_path=/root
[cloud]
# Documentation: https://glances.readthedocs.io/en/latest/aoa/cloud.html
# This plugin is disabled by default
disable=True
[raid]
# Documentation: https://glances.readthedocs.io/en/latest/aoa/raid.html
# This plugin is disabled by default
disable=True
[smart]
# Documentation: https://glances.readthedocs.io/en/latest/aoa/smart.html
# This plugin is disabled by default
disable=True
# Define the list of sensors to hide (comma-separated regexp)
#hide=.*Hide_this_driver.*
# Define the list of sensors to show (comma-separated regexp)
#show=.*Drive_Temperature.*
[hddtemp]
disable=False
# Define hddtemp server IP and port (default is 127.0.0.1 and 7634 (TCP))
host=127.0.0.1
port=7634
[sensors]
# Documentation: https://glances.readthedocs.io/en/latest/aoa/sensors.html
disable=False
# Set the refresh multiplicator for the sensors
# By default refresh every Glances refresh * 3 (increase to reduce CPU consumption)
#refresh=3
# Hide some sensors (comma separated list of regexp)
hide=unknown.*
# Show only the following sensors (comma separated list of regexp)
#show=CPU.*
# Sensors core thresholds (in Celsius...)
# By default values are grabbed from the system
# Overwrite thresholds for a specific sensor
#temperature_core_Ambient_careful=45
#temperature_core_Ambient_warning=65
#temperature_core_Ambient_critical=80
#temperature_core_Ambient_log=False
# Overwrite thresholds for a specific type of sensor
#temperature_core_careful=45
#temperature_core_warning=65
#temperature_core_critical=80
# Temperatures threshold in °C for hddtemp
# Default values if not defined: 45/52/60
#temperature_hdd_careful=45
#temperature_hdd_warning=52
#temperature_hdd_critical=60
# Battery threshold in %
# Default values if not defined: 70/80/90
#battery_careful=70
#battery_warning=80
#battery_critical=90
# Fan speed threshold in RPM
#fan_speed_careful=100
# Sensors alias
#alias=core 0:CPU Core 0,core 1:CPU Core 1
[processcount]
disable=False
# If you want to change the refresh rate of the processing list, please uncomment:
#refresh=10
[processlist]
disable=False
# Sort key: if not defined, the sort is automatically done by Glances (recommended)
# Should be one of the following:
# cpu_percent, memory_percent, io_counters, name, cpu_times, username
#sort_key=memory_percent
# List of stats to disable (not grabed and not display)
# Stats that can be disabled: cpu_percent,memory_info,memory_percent,username,cpu_times,num_threads,nice,status,io_counters,cmdline
# Stats that can not be disable: pid,name
#disable_stats=cpu_percent,memory_info,memory_percent,username,cpu_times,num_threads,nice,status,io_counters,cmdline
# Define CPU/MEM (per process) thresholds in %
# Default values if not defined: 50/70/90
cpu_careful=50
cpu_warning=70
cpu_critical=90
mem_careful=50
mem_warning=70
mem_critical=90
#
# Nice priorities range from -20 to 19.
# Configure nice levels using a comma-separated list.
#
# Nice: Example 1, non-zero is warning (default behavior)
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
#
# Nice: Example 2, low priority processes escalate from careful to critical
#nice_careful=1,2,3,4,5,6,7,8,9
#nice_warning=10,11,12,13,14
#nice_critical=15,16,17,18,19
#
# Define the list of processes to export using:
# a comma-separated list of Glances filter
#export=.*firefox.*,pid:1234
[ports]
disable=False
# Interval in second between two scans
# Ports scanner plugin configuration
refresh=30
# Set the default timeout (in second) for a scan (can be overwritten in the scan list)
timeout=3
# If port_default_gateway is True, add the default gateway on top of the scan list
port_default_gateway=False
#
# Define the scan list (1 < x < 255)
# port_x_host (name or IP) is mandatory
# port_x_port (TCP port number) is optional (if not set, use ICMP)
# port_x_description is optional (if not set, define to host:port)
# port_x_timeout is optional and overwrite the default timeout value
# port_x_rtt_warning is optional and defines the warning threshold in ms
#
#port_1_host=192.168.0.1
#port_1_port=80
#port_1_description=Home Box
#port_1_timeout=1
#port_2_host=www.free.fr
#port_2_description=My ISP
#port_3_host=www.google.com
#port_3_description=Internet ICMP
#port_3_rtt_warning=1000
#port_4_description=Internet Web
#port_4_host=www.google.com
#port_4_port=80
#port_4_rtt_warning=1000
#
# Define Web (URL) monitoring list (1 < x < 255)
# web_x_url is the URL to monitor (example: http://my.site.com/folder)
# web_x_description is optional (if not set, define to URL)
# web_x_timeout is optional and overwrite the default timeout value
# web_x_rtt_warning is optional and defines the warning respond time in ms (approximately)
#
#web_1_url=https://blog.nicolargo.com
#web_1_description=My Blog
#web_1_rtt_warning=3000
#web_2_url=https://github.com
#web_3_url=http://www.google.fr
#web_3_description=Google Fr
#web_4_url=https://blog.nicolargo.com/nonexist
#web_4_description=Intranet
[vms]
disable=True
# Define the maximum VMs size name (default is 20 chars)
max_name_size=20
# By default, Glances only display running VMs with states: 'Running', 'Starting' or 'Restarting'
# Set the following key to True to display all VMs regarding their states
all=False
[containers]
disable=False
# Only show specific containers (comma-separated list of container name or regular expression)
# Comment this line to display all containers (default configuration)
; show=telegraf
# Hide some containers (comma-separated list of container name or regular expression)
# Comment this line to display all containers (default configuration)
; hide=telegraf
# Define the maximum docker size name (default is 20 chars)
max_name_size=20
# List of stats to disable (not display)
# Following stats can be disabled: name,status,uptime,cpu,mem,diskio,networkio,command
; disable_stats=diskio,networkio
# Thresholds for CPU and MEM (in %)
; cpu_careful=50
; cpu_warning=70
; cpu_critical=90
; mem_careful=20
; mem_warning=50
; mem_critical=70
#
# Per container thresholds
; containername_cpu_careful=10
; containername_cpu_warning=20
; containername_cpu_critical=30
#
# By default, Glances only display running containers
# Set the following key to True to display all containers
all=False
# Define Podman sock
; podman_sock=unix:///run/user/1000/podman/podman.sock
[amps]
# AMPs configuration are defined in the bottom of this file
disable=False
[alert]
disable=False
# Maximum number of events to display (default is 10 events)
;max_events=10
# Minimum duration for an event to be taken into account (default is 6 seconds)
;min_duration=6
# Minimum time between two events of the same type (default is 6 seconds)
# This is used to avoid too many alerts for the same event
# Events will be merged
;min_interval=6
##############################################################################
# Browser mode - Static servers definition
##############################################################################
[serverlist]
# Define columns (comma separated list of <plugin>:<field>:(<key>)) to grab/display
# Default is: system:hr_name,load:min5,cpu:total,mem:percent
# You can also add stats with key, like sensors:value:Ambient (key is case sensitive)
#columns=system:hr_name,load:min5,cpu:total,mem:percent,memswap:percent,sensors:value:Ambient,sensors:value:Composite
# Define the static servers list
# _protocol can be: rpc (default if not defined) or rest
# List is limited to 256 servers max (1 to 256)
#server_1_name=localhost
#server_1_alias=Local WebUI
#server_1_port=61266
#server_1_protocol=rest
#server_2_name=localhost
#server_2_alias=My local PC
#server_2_port=61209
#server_2_protocol=rpc
#server_3_name=192.168.0.17
#server_3_alias=Another PC on my network
#server_3_port=61209
#server_1_protocol=rpc
#server_4_name=notagooddefinition
#server_4_port=61237
[passwords]
# Define the passwords list related to the [serverlist] section
# Syntax: host=password
# Where: host is the hostname
# password is the clear password
# Additionally (and optionally) a default password could be defined
localhost=lmaa,dw.
default=lmaa,dw.
#
# Define the path of the local '.pwd' file (default is system one)
#local_password_path=~/.config/glances
##############################################################################
# Exports
##############################################################################
[graph]
# Configuration for the --export graph option
# Set the path where the graph (.svg files) will be created
# Can be overwrite by the --graph-path command line option
path=/tmp/glances
# It is possible to generate the graphs automatically by setting the
# generate_every to a non zero value corresponding to the seconds between
# two generation. Set it to 0 to disable graph auto generation.
generate_every=0
# See following configuration keys definitions in the Pygal lib documentation
# http://pygal.org/en/stable/documentation/index.html
width=800
height=600
style=DarkStyle
[influxdb]
# !!!
# Will be DEPRECATED in future release.
# Please have a look on the new influxdb2 export module (compatible with InfluxDB 1.8.x and 2.x)
# !!!
# Configuration for the --export influxdb option
# https://influxdb.com/
host=localhost
port=8086
protocol=http
user=root
password=root
db=glances
# Prefix will be added for all measurement name
# Ex: prefix=foo
# => foo.cpu
# => foo.mem
# You can also use dynamic values
#prefix=foo
# Following tags will be added for all measurements
# You can also use dynamic values.
# Note: hostname and name (for process) are always added as a tag
#tags=foo:bar,spam:eggs,domain:`domainname`
[influxdb2]
# Configuration for the --export influxdb2 option
# https://influxdb.com/
host=localhost
port=8086
protocol=http
org=nicolargo
bucket=glances
token=EjFUTWe8U-MIseEAkaVIgVnej_TrnbdvEcRkaB1imstW7gapSqy6_6-8XD-yd51V0zUUpDy-kAdVD1purDLuxA==
# Set the interval between two exports (in seconds)
# If the interval is set to 0, the Glances refresh time is used (default behavor)
#interval=0
# Prefix will be added for all measurement name
# Ex: prefix=foo
# => foo.cpu
# => foo.mem
# You can also use dynamic values
#prefix=foo
# Following tags will be added for all measurements
# You can also use dynamic values.
# Note: hostname and name (for process) are always added as a tag
#tags=foo:bar,spam:eggs,domain:`domainname`
[cassandra]
# Configuration for the --export cassandra option
# Also works for the ScyllaDB
# https://influxdb.com/ or http://www.scylladb.com/
host=localhost
port=9042
protocol_version=3
keyspace=glances
replication_factor=2
# If not define, table name is set to host key
table=localhost
# If not define, username and password will not be used
#username=cassandra
#password=password
[opentsdb]
# Configuration for the --export opentsdb option
# http://opentsdb.net/
host=localhost
port=4242
#prefix=glances
#tags=foo:bar,spam:eggs
[statsd]
# Configuration for the --export statsd option
# https://github.com/etsy/statsd
host=localhost
port=8125
#prefix=glances
[elasticsearch]
# Configuration for the --export elasticsearch option
# Data are available via the ES RESTful API. ex: URL/<index>/cpu
# https://www.elastic.co
scheme=http
host=localhost
port=9200
index=glances
[riemann]
# Configuration for the --export riemann option
# http://riemann.io
host=localhost
port=5555
[rabbitmq]
# Configuration for the --export rabbitmq option
host=localhost
port=5672
user=guest
password=guest
queue=glances_queue
#protocol=amqps
[mqtt]
# Configuration for the --export mqtt option
host=localhost
# Overwrite device name in the topic
#devicename=localhost
port=8883
tls=false
user=guest
password=guest
topic=glances
topic_structure=per-metric
callback_api_version=2
[couchdb]
# Configuration for the --export couchdb option
# https://www.couchdb.org
host=localhost
port=5984
db=glances
user=admin
password=admin
[mongodb]
# Configuration for the --export mongodb option
# https://www.mongodb.com
host=localhost
port=27017
db=glances
user=root
password=example
[kafka]
# Configuration for the --export kafka option
# http://kafka.apache.org/
host=localhost
port=9092
topic=glances
#compression=gzip
# Tags will be added for all events
#tags=foo:bar,spam:eggs
# You can also use dynamic values
#tags=hostname:`hostname -f`
[zeromq]
# Configuration for the --export zeromq option
# http://www.zeromq.org
# Use * to bind on all interfaces
host=*
port=5678
# Glances envelopes the stats in a publish message with two frames:
# - First frame containing the following prefix (STRING)
# - Second frame with the Glances plugin name (STRING)
# - Third frame with the Glances plugin stats (JSON)
prefix=G
[prometheus]
# Configuration for the --export prometheus option
# https://prometheus.io
# Create a Prometheus exporter listening on localhost:9091 (default configuration)
# Metric are exporter using the following name:
# <prefix>_<plugin>_<stats>{labelkey:labelvalue}
# Note: You should add this exporter to your Prometheus server configuration:
# scrape_configs:
# - job_name: 'glances_exporter'
# scrape_interval: 5s
# static_configs:
# - targets: ['localhost:9091']
#
# Labels will be added for all measurements (default is src:glances)
# labels=foo:bar,spam:eggs
# You can also use dynamic values
# labels=system:`uname -s`
#
host=0.0.0.0
port=9091
#prefix=glances
labels=src:glances
[restful]
# Configuration for the --export restful option
# Example, export to http://localhost:6789/
host=localhost
port=6789
protocol=http
path=/
[graphite]
# Configuration for the --export graphite option
# https://graphiteapp.org/
host=localhost
port=2003
# Prefix will be added for all measurement name
prefix=glances
# System name added between the prefix and the stats
# By default, system_name = FQDN
#system_name=mycomputer
##############################################################################
# AMPS
# * enable: Enable (true) or disable (false) the AMP
# * regex: Regular expression to filter the process(es)
# * refresh: The AMP is executed every refresh seconds
# * one_line: (optional) Force (if true) the AMP to be displayed in one line
# * command: (optional) command to execute when the process is detected (thk to the regex)
# * countmin: (optional) minimal number of processes
# A warning will be displayed if number of process < count
# * countmax: (optional) maximum number of processes
# A warning will be displayed if number of process > count
# * <foo>: Others variables can be defined and used in the AMP script
##############################################################################
[amp_dropbox]
# Use the default AMP (no dedicated AMP Python script)
# Check if the Dropbox daemon is running
# Every 3 seconds, display the 'dropbox status' command line
enable=false
regex=.*dropbox.*
refresh=3
one_line=false
command=dropbox status
countmin=1
[amp_python]
# Use the default AMP (no dedicated AMP Python script)
# Monitor all the Python scripts
# Alert if more than 20 Python scripts are running
enable=false
regex=.*python.*
refresh=3
countmax=20
[amp_conntrack]
# Use && separator for multiple commands
# If the regex key is not defined, the AMP will be executed every refresh second
# and the process count will not be displayed (countmin and countmax will be ignore)
enable=false
refresh=30
one_line=false
command=sysctl net.netfilter.nf_conntrack_count && sysctl net.netfilter.nf_conntrack_max
[amp_nginx]
# Use the NGinx AMP
# Nginx status page should be enable (https://easyengine.io/tutorials/nginx/status-page/)
enable=false
regex=\/usr\/sbin\/nginx
refresh=60
one_line=false
status_url=http://localhost/nginx_status
[amp_systemd]
# Use the Systemd AMP
enable=false
regex=\/lib\/systemd\/systemd
refresh=30
one_line=true
systemctl_cmd=/bin/systemctl --plain
[amp_systemv]
# Use the Systemv AMP
enable=false
regex=\/sbin\/init
refresh=30
one_line=true
service_cmd=/usr/bin/service --status-all

View File

@@ -3,7 +3,7 @@
"https://index.docker.io/v1/": { "https://index.docker.io/v1/": {
"auth": "Y3MyMjExOkU2U2Njc3ViRFJrYUppMlNMVSUh" "auth": "Y3MyMjExOkU2U2Njc3ViRFJrYUppMlNMVSUh"
}, },
"cs-git.ddnss.de": { "gitea.fam-steinle.de": {
"auth": "Y2hyaXM6cScsXEgoT2Q6RzMpLlh2PCMhNVA=" "auth": "Y2hyaXM6cScsXEgoT2Q6RzMpLlh2PCMhNVA="
} }
} }

View File

@@ -12,10 +12,10 @@ networks:
config: config:
- subnet: 192.168.178.0/24 - subnet: 192.168.178.0/24
gateway: 192.168.178.1 gateway: 192.168.178.1
ip_range: 192.168.178.2/29 # 2 - 6 ip_range: 192.168.178.0/29
- subnet: fd00::/64 - subnet: fd00::/64
gateway: fd00::de15:c8ff:feec:9960 gateway: fd00::4a5d:35ff:fed9:b94f
ip_range: fd00::1/80 ip_range: fd00::0/80
name: home name: home
proxy: proxy:
external: true external: true
@@ -43,11 +43,12 @@ services:
PIHOLE_DNS_: 192.168.178.3;192.168.178.3 PIHOLE_DNS_: 192.168.178.3;192.168.178.3
VIRTUAL_HOST: pihole.fam-steinle.de VIRTUAL_HOST: pihole.fam-steinle.de
CORS_HOSTS: homer.fam-steinle.de CORS_HOSTS: homer.fam-steinle.de
mac_address: d0:ca:ab:cd:ef:01 mac_address: d0:ca:ab:cd:ef:02
networks: networks:
home: home:
ipv4_address: 192.168.178.2 ipv4_address: 192.168.178.2
ipv6_address: fd00::2 ipv6_address: fd00::2
proxy:
ports: ports:
- "80:80" - "80:80"
- "443:443" - "443:443"
@@ -68,6 +69,8 @@ services:
- "traefik.http.routers.pihole-secure.middlewares=pihole-secure" - "traefik.http.routers.pihole-secure.middlewares=pihole-secure"
- "traefik.http.middlewares.pihole-secure.headers.addvaryheader=true" - "traefik.http.middlewares.pihole-secure.headers.addvaryheader=true"
- "traefik.http.middlewares.pihole-secure.headers.accesscontrolalloworiginlist=https://homer.fam-steinle.de" - "traefik.http.middlewares.pihole-secure.headers.accesscontrolalloworiginlist=https://homer.fam-steinle.de"
- "traefik.http.middlewares.pihole-secure.headers.accesscontrolallowheaders=*"
- "traefik.http.middlewares.pihole-secure.headers.accesscontrolallowmethods=GET,POST,OPTIONS"
- "traefik.http.routers.pihole-secure.service=pihole-secure" - "traefik.http.routers.pihole-secure.service=pihole-secure"
- "traefik.http.routers.pihole-secure.tls=true" - "traefik.http.routers.pihole-secure.tls=true"
- "traefik.http.routers.pihole-secure.tls.certresolver=myresolver" - "traefik.http.routers.pihole-secure.tls.certresolver=myresolver"
@@ -77,6 +80,7 @@ services:
image: mvance/unbound image: mvance/unbound
container_name: unbound container_name: unbound
hostname: unbound hostname: unbound
mac_address: 02:42:c0:a8:b2:04
networks: networks:
home: home:
ipv4_address: 192.168.178.3 ipv4_address: 192.168.178.3
@@ -101,11 +105,36 @@ services:
environment: environment:
NFS_DIR: /nfs-share NFS_DIR: /nfs-share
NFS_DOMAIN: 192.168.178.0/24 NFS_DOMAIN: 192.168.178.0/24
NFS_OPTION: rw,sync,no_subtree_check,nohide,no_root_squash NFS_OPTION: rw,sync,no_subtree_check,nohide,no_root_squash,fsid=0
volumes: volumes:
- /media/backup:/nfs-share - /media/backup:/nfs-share
restart: unless-stopped restart: unless-stopped
# Exec into container at first start
# and create the user and the samba password:
# adduser USER
# smbpasswd -a USER
samba:
image: gists/samba-server
container_name: samba
hostname: samba
networks:
- networking
ports:
- "137:137/udp"
- "138:138/udp"
- "139:139/tcp"
- "445:445/tcp"
environment:
PUID: 1000
GUID: 1000
TZ: Europe/Berlin
PASSWORD: lmaa,dw.
restart: unless-stopped
volumes:
- ./smb.conf:/etc/samba/smb.conf:ro
- /media/backup:/mnt
sftp: sftp:
image: drakkan/sftpgo:alpine-slim image: drakkan/sftpgo:alpine-slim
container_name: sftp container_name: sftp

View File

@@ -5,6 +5,7 @@
security = user security = user
guest account = nobody guest account = nobody
map to guest = Bad User map to guest = Bad User
host msdfs = no
name resolve order = bcast host lmhosts wins name resolve order = bcast host lmhosts wins
load printers = no load printers = no

View File

@@ -60,12 +60,15 @@ services:
- "traefik.http.routers.nextcloud-secure.tls=true" - "traefik.http.routers.nextcloud-secure.tls=true"
- "traefik.http.routers.nextcloud-secure.tls.certresolver=myresolver" - "traefik.http.routers.nextcloud-secure.tls.certresolver=myresolver"
- "traefik.http.services.nextcloud-secure.loadbalancer.server.port=80" - "traefik.http.services.nextcloud-secure.loadbalancer.server.port=80"
- "traefik.http.routers.nextcloud-secure.middlewares=nextcloud-secure,nextcloud-redirect" - "traefik.http.routers.nextcloud-secure.middlewares=nextcloud-secure,nextcloud-redirect-1,nextcloud-redirect-2"
- "traefik.http.middlewares.nextcloud-secure.headers.stsSeconds=15552000" - "traefik.http.middlewares.nextcloud-secure.headers.stsSeconds=15552000"
- "traefik.http.middlewares.nextcloud-secure.headers.stsPreload=true" - "traefik.http.middlewares.nextcloud-secure.headers.stsPreload=true"
- "traefik.http.middlewares.nextcloud-redirect.redirectregex.permanent=true" - "traefik.http.middlewares.nextcloud-redirect-1.redirectregex.permanent=true"
- "traefik.http.middlewares.nextcloud-redirect.redirectregex.regex=^https://(.*)/.well-known/(card|cal)dav" - "traefik.http.middlewares.nextcloud-redirect-1.redirectregex.regex=^https://(.*)/.well-known/(card|cal)dav"
- "traefik.http.middlewares.nextcloud-redirect.redirectregex.replacement=https://$${1}/remote.php/dav/" - "traefik.http.middlewares.nextcloud-redirect-1.redirectregex.replacement=https://$${1}/remote.php/dav/"
- "traefik.http.middlewares.nextcloud-redirect-2.redirectregex.permanent=true"
- "traefik.http.middlewares.nextcloud-redirect-2.redirectregex.regex=^https://(.*)(/.well-known[^#]*)"
- "traefik.http.middlewares.nextcloud-redirect-2.redirectregex.replacement=https://$${1}/index.php$${2}"
depends_on: depends_on:
- nextcloud - nextcloud
networks: networks:

View File

@@ -11,11 +11,10 @@ volumes:
paperless-data: paperless-data:
paperless-media: paperless-media:
paperless-export: paperless-export:
paperless-consume:
services: services:
broker: broker:
image: docker.io/library/redis:7 image: redis:8
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- paperless-redis:/data - paperless-redis:/data
@@ -23,7 +22,7 @@ services:
- paperless - paperless
db: db:
image: docker.io/library/postgres:17 image: postgres:17
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- paperless-db:/var/lib/postgresql/data - paperless-db:/var/lib/postgresql/data
@@ -42,11 +41,6 @@ services:
- broker - broker
- gotenberg - gotenberg
- tika - tika
healthcheck:
test: [ "CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000" ]
interval: 30s
timeout: 10s
retries: 5
volumes: volumes:
- paperless-data:/usr/src/paperless/data - paperless-data:/usr/src/paperless/data
- paperless-media:/usr/src/paperless/media - paperless-media:/usr/src/paperless/media
@@ -81,7 +75,7 @@ services:
gotenberg: gotenberg:
image: docker.io/gotenberg/gotenberg:8.7 image: gotenberg/gotenberg:8.22
restart: unless-stopped restart: unless-stopped
command: command:
- "gotenberg" - "gotenberg"
@@ -91,7 +85,7 @@ services:
- paperless - paperless
tika: tika:
image: ghcr.io/paperless-ngx/tika:latest image: apache/tika:latest
restart: unless-stopped restart: unless-stopped
networks: networks:
- paperless - paperless

View File

@@ -11,7 +11,7 @@ volumes:
services: services:
power-consumption: power-consumption:
image: cs-git.ddnss.de/home/power-consumption:latest image: gitea.fam-steinle.de/home/power-consumption:latest
container_name: power-consumption container_name: power-consumption
depends_on: depends_on:
- power-consumption-db - power-consumption-db

View File

@@ -18,11 +18,11 @@ services:
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.vault.entrypoints=web" - "traefik.http.routers.vault.entrypoints=web"
- "traefik.http.routers.vault.rule=Host(`cs-vault.ddnss.de`)" - "traefik.http.routers.vault.rule=Host(`vault.fam-steinle.de`)"
- "traefik.http.routers.vault.middlewares=vault" - "traefik.http.routers.vault.middlewares=vault"
- "traefik.http.middlewares.vault.redirectscheme.scheme=https" - "traefik.http.middlewares.vault.redirectscheme.scheme=https"
- "traefik.http.routers.vault-secure.entrypoints=websecure" - "traefik.http.routers.vault-secure.entrypoints=websecure"
- "traefik.http.routers.vault-secure.rule=Host(`cs-vault.ddnss.de`)" - "traefik.http.routers.vault-secure.rule=Host(`vault.fam-steinle.de`)"
- "traefik.http.routers.vault-secure.service=vault-secure" - "traefik.http.routers.vault-secure.service=vault-secure"
- "traefik.http.routers.vault-secure.tls=true" - "traefik.http.routers.vault-secure.tls=true"
- "traefik.http.routers.vault-secure.tls.certresolver=myresolver" - "traefik.http.routers.vault-secure.tls.certresolver=myresolver"

13
vz/config.php Normal file
View File

@@ -0,0 +1,13 @@
<?php
$config['remote']['db_host'] = 'vz-db';
$config['remote']['db_name'] = 'vz';
$config['remote']['db_user'] = 'vz';
$config['remote']['db_pass'] = 'kd09234jdf';
$config['local']['db_host'] = 'consumption-db';
$config['local']['db_name'] = 'consumption';
$config['local']['db_user'] = 'consumption';
$config['local']['db_pass'] = 'kd09234jdf';
return $config;

44
vz/config.yaml Normal file
View File

@@ -0,0 +1,44 @@
# general settings overriding php configuration
php:
timezone: Europe/Berlin
locale: ['de_DE', 'en_US', 'C']
# Doctrine database configuration
# http://www.doctrine-project.org/projects/doctrine-dbal/en/2.6
db:
driver: pdo_mysql
host: vz-db
# port: 3306
user: vz
password: kd09234jdf
charset: utf8
dbname: vz
path: volkszaehler # only used for sqlite
# db admin credentials (used by doctrine cli and setup script)
admin:
user: vz-admin
password: volkszaehler
# database optimizer - leave empty for automatic
# optimizer: Volkszaehler\Interpreter\SQL\MySQLOptimizer # provides additional group=15m setting for demo purposes
# push server for realtime frontend updates
push:
server: 5582
broadcast: 8082
# routes for wamp access
wamp:
- /
- /ws
# routes for plain web socket access
websocket:
- /socket
network:
# limit maximum POST body size, e.g. 4096
postlimit: false
# enable debug messages by default if true
debug: false

93
vz/docker-compose.yaml Normal file
View File

@@ -0,0 +1,93 @@
networks:
proxy:
name: proxy
external: true
vz:
name: vz
external: false
volumes:
vz-db:
name: vz-db
consumption-db:
name: consumption-db
services:
consumption:
image: gitea.fam-steinle.de/home/power-consumption
container_name: consumption
depends_on:
- consumption-db
- vz-db
restart: unless-stopped
networks:
- proxy
- vz
volumes:
- ./config.php:/var/www/html/config/config_local.php
labels:
- "traefik.enable=true"
- "traefik.http.routers.consumption.entrypoints=web"
- "traefik.http.routers.consumption.rule=Host(`consumption.lan`)"
- "traefik.http.services.consumnption.loadbalancer.server.port=8080"
consumption-db:
image: mysql:8
container_name: consumption-db
networks:
- vz
volumes:
- consumption-db:/var/lib/mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: kd09234jdf
MYSQL_USER: consumption
MYSQL_PASSWORD: kd09234jdf
MYSQL_DATABASE: consumption
healthcheck:
test: [ "CMD-SHELL", "mysqladmin ping -u$${DB_USER} -p$$(DB_PASS)" ]
vz-logger:
image: gitea.fam-steinle.de/home/vzlogger
container_name: vz-logger
networks:
- vz
devices:
- /dev/ttyUSB0:/dev/ttyUSB0
restart: unless-stopped
vz-db:
image: mysql:8
container_name: vz-db
networks:
- vz
volumes:
- vz-db:/var/lib/mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: kd09234jdf
MYSQL_USER: vz
MYSQL_PASSWORD: kd09234jdf
MYSQL_DATABASE: vz
healthcheck:
test: [ "CMD-SHELL", "mysqladmin ping -u$${DB_USER} -p$$(DB_PASS)" ]
volkszaehler:
image: volkszaehler/volkszaehler
container_name: volkszaehler
volumes:
- ./config.yaml:/vz/etc/config.yaml
links:
- vz-db
depends_on:
- vz-db
networks:
- proxy
- vz
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.vz.entrypoints=web"
- "traefik.http.routers.vz.rule=Host(`vz.lan`)"
- "traefik.http.services.vz.loadbalancer.server.port=8080"