Compare commits
48 Commits
935e745439
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
747a35e172 | ||
| abdf5f660a | |||
|
|
9dde4b5a25 | ||
|
|
1a004a8490 | ||
|
|
72f4eb56f9 | ||
|
|
f412d0889c | ||
|
|
4f0d9f10a4 | ||
|
|
e830b0983b | ||
|
|
f552e62ada | ||
|
|
bff16494fa | ||
|
|
96fb419f7d | ||
|
|
70896a9c83 | ||
|
|
ab7fced15f | ||
|
|
fd74551bc2 | ||
|
|
a6dfd7c820 | ||
|
|
30c22ce093 | ||
|
|
c85101b221 | ||
|
|
00128f9b55 | ||
|
|
ce78560129 | ||
|
|
e91cec5420 | ||
|
|
8b73baa31d | ||
|
|
2bd7e71378 | ||
|
|
003a4ccfef | ||
|
|
3221d41d93 | ||
|
|
97c6848dab | ||
|
|
7085b45442 | ||
|
|
b2b7a0eec0 | ||
|
|
b923f5bb10 | ||
|
|
78609fbc13 | ||
|
|
9fb4fbc8d3 | ||
|
|
df2ed521c9 | ||
|
|
a92189f5a1 | ||
|
|
f2d5f3008d | ||
|
|
1ae807cc67 | ||
|
|
cd3fe20478 | ||
|
|
07d1218d72 | ||
|
|
0a7c2633b1 | ||
|
|
78f66e8491 | ||
|
|
b34ba31747 | ||
|
|
07a7e94edf | ||
|
|
80dcec9d92 | ||
|
|
475420360d | ||
|
|
4c22177292 | ||
|
|
728b2dbc8d | ||
|
|
5721b4514f | ||
|
|
0b822f745e | ||
|
|
cd79daf119 | ||
|
|
e6d07e9963 |
19
README.md
19
README.md
@@ -1,14 +1,17 @@
|
|||||||
## Docker-Compose Files Borgals HomeLab
|
<H1>Docker-Compose Files Borgals HomeLab</H1>
|
||||||
|
<p></p>
|
||||||
|
<p></p>
|
||||||
|
<img src="https://tcude.net/content/images/size/w2000/2022/01/MainImage-2.jpeg" alt="Docker-Compose" width="400" />
|
||||||
|
<p></p>
|
||||||
|
<p></p>
|
||||||
|
|
||||||
|
<H2>Environment Variablen</H2>
|
||||||
|
|
||||||
### Environment Variablen
|
- **Benutzernamen** und **Passwörter**, sowie weitere Variablen sind in einer .env Datei ausgelagert
|
||||||
|
- die **.env.sample** muss jeweils in **.env** umbenannt werden und die Variablen darin auf deine Bedürfnisse angepasst werden
|
||||||
- Benutzernamen und Passwörter, sowie weitere Variablen sind in einer .env Datei ausgelagert
|
|
||||||
- die .env.sample muss jeweils in .env umbenannt werden und die Variablen darin auf deine Bedürfnisse angepasst werden
|
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
### Reverse Proxy
|
<H2>Reverse Proxy</H2>
|
||||||
|
|
||||||
- als Reverse Proxy setze ich den Nginx Proxy Manager ein, daher sind keine Labels für Träfik vorhanden
|
|
||||||
|
|
||||||
|
- als **Reverse Proxy** setze ich den Nginx Proxy Manager ein, daher sind keine Labels für Träfik vorhanden
|
||||||
8
bitwarden/.env.sample
Normal file
8
bitwarden/.env.sample
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Admin-Token für die Anmeldung der Admin-Page
|
||||||
|
# Anmeldung über https: bitwarden.MyDomain.de/admin
|
||||||
|
# Hier ist das Passwort anzugeben, womit der Token erzeugt wurde
|
||||||
|
# Den Token kann man z.B. über docker exec -it bitwarden ./vaultwarden hash erzeugen
|
||||||
|
# WICHTIG - Wird die Admin Page nicht benötigt, dann sollte man die Zeile ADMIN_TOKEN in der docker-compose Datei mit einem # auskommentieren
|
||||||
|
|
||||||
|
|
||||||
|
ADMIN_TOKEN='ChangeMe'
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
services:
|
services:
|
||||||
bitwarden:
|
bitwarden:
|
||||||
image: vaultwarden/server:latest
|
image: vaultwarden/server:latest-alpine
|
||||||
container_name: bitwarden
|
container_name: bitwarden
|
||||||
environment:
|
environment:
|
||||||
- TZ=Europe/Berlin
|
- TZ=Europe/Berlin
|
||||||
|
# - ADMIN_TOKEN=${ADMIN_TOKEN} # Wird die Admin-Page nicht gebraucht, bitte auskommentieren
|
||||||
volumes:
|
volumes:
|
||||||
- /opt/bitwarden/bwdata/:/data/
|
- /opt/bitwarden/bwdata/:/data/
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
|
PASS=ChangeMe
|
||||||
NFS_SERVER=192.168.0.xxx # oder hostname oder Domain
|
NFS_SERVER=192.168.0.xxx # oder hostname oder Domain
|
||||||
PFAD=/Pfad/zum/Ordner
|
PFAD=/Pfad/zum/Ordner
|
||||||
@@ -6,7 +6,7 @@ services:
|
|||||||
- PUID=0
|
- PUID=0
|
||||||
- PGID=0
|
- PGID=0
|
||||||
- TZ=Europe/Berlin
|
- TZ=Europe/Berlin
|
||||||
- CLI_ARGS= #optional
|
- DUPLICATI__WEBSERVICE_PASSWORD=${PASS}
|
||||||
volumes:
|
volumes:
|
||||||
- ./config:/config
|
- ./config:/config
|
||||||
- backup:/backups
|
- backup:/backups
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
#MySQL Datenbank
|
|
||||||
MYSQL_USER=changeMe
|
|
||||||
MYSQL_PASSWORD=changeMe
|
|
||||||
MYSQL_ROOT_PASSWORD=changeMe
|
|
||||||
|
|
||||||
NFS_SERVER=192.168.0.xxx # oder hostname oder Domain
|
|
||||||
PFAD_1=/Pfad/zum/Ordner/www
|
|
||||||
PFAD_2=/Pfad/zum/Ordner/energie
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
<h2>Filerun</H2>
|
|
||||||
<p></p>
|
|
||||||
<p></p>
|
|
||||||
<img src="https://filerun.com/images/long-logo.png?v=2022" alt="Filerun" width="200" />
|
|
||||||
<p></p>
|
|
||||||
<p></p>
|
|
||||||
<b>Filerun</b> ist eine selbst gehostete Cloud-Alternative. Synchronisieren, teilen und bearbeiten Sie Dateien ganz einfach von Ihrem eigenen Server aus, während Sie Ihre Daten unter Ihrer Kontrolle behalten.
|
|
||||||
<p></p>
|
|
||||||
<a href="https://filerun.com/" target="_blank">Filerun</a>
|
|
||||||
<p></p>
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
services:
|
|
||||||
|
|
||||||
db:
|
|
||||||
image: mariadb:10.1
|
|
||||||
container_name: filerun_db
|
|
||||||
environment:
|
|
||||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
|
||||||
MYSQL_USER: ${MYSQL_USER}
|
|
||||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
|
||||||
MYSQL_DATABASE: filerun
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- ./db:/var/lib/mysql
|
|
||||||
|
|
||||||
filerun:
|
|
||||||
image: filerun/filerun
|
|
||||||
container_name: filerun_app
|
|
||||||
environment:
|
|
||||||
FR_DB_HOST: db
|
|
||||||
FR_DB_PORT: 3306
|
|
||||||
FR_DB_NAME: filerun
|
|
||||||
FR_DB_USER: ${MYSQL_USER}
|
|
||||||
FR_DB_PASS: ${MYSQL_PASSWORD}
|
|
||||||
depends_on:
|
|
||||||
- db
|
|
||||||
links:
|
|
||||||
- db:db
|
|
||||||
ports:
|
|
||||||
- "8013:80"
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- ./html:/var/www/html
|
|
||||||
- ./user-files:/user-files
|
|
||||||
- Dokumente:/user-files/Dokumente
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
Dokumente:
|
|
||||||
name: Dokumente
|
|
||||||
driver: local
|
|
||||||
driver_opts:
|
|
||||||
type: nfs4
|
|
||||||
o: addr=${NFS_SERVER},rw
|
|
||||||
device: ":${PFAD_Dokumente}"
|
|
||||||
@@ -5,7 +5,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- USER_UID=1000
|
- USER_UID=1000
|
||||||
- USER_GID=1000
|
- USER_GID=1000
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- ./gitea:/data
|
- ./gitea:/data
|
||||||
- /etc/timezone:/etc/timezone:ro
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
services:
|
services:
|
||||||
influxdb:
|
influxdb:
|
||||||
|
#image: influxdb
|
||||||
image: influxdb:1.6.4
|
image: influxdb:1.6.4
|
||||||
container_name: influxdb
|
container_name: influxdb
|
||||||
ports:
|
ports:
|
||||||
- 8096:8086
|
- 8096:8086
|
||||||
#- 8098:8088
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./influxdb:/var/lib/influxdb
|
- ./influxdb:/var/lib/influxdb
|
||||||
environment:
|
environment:
|
||||||
@@ -14,10 +14,23 @@ services:
|
|||||||
- INFLUXDB_REPORTING_DISABLED=true
|
- INFLUXDB_REPORTING_DISABLED=true
|
||||||
#Determines which level of logs will be emitted. The available levels are error, warn, info, and debug.
|
#Determines which level of logs will be emitted. The available levels are error, warn, info, and debug.
|
||||||
- INFLUXDB_LOGGING_LEVEL=warn
|
- INFLUXDB_LOGGING_LEVEL=warn
|
||||||
#networks:
|
|
||||||
# - external_network
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
chronograf:
|
||||||
|
image: chronograf:1.6
|
||||||
|
container_name: chronograf
|
||||||
|
volumes:
|
||||||
|
- ./chronograf_data:/var/lib/chronograf
|
||||||
|
ports:
|
||||||
|
- 8088:8888
|
||||||
|
depends_on:
|
||||||
|
- influxdb
|
||||||
|
environment:
|
||||||
|
- INFLUXDB_URL=http://influxdb:8086
|
||||||
|
- INFLUXDB_USERNAME=${INFLUXDB_USERNAME}
|
||||||
|
- INFLUXDB_PASSWORD=${INFLUXDB_PASSWORD}
|
||||||
|
restart: always
|
||||||
|
|
||||||
grafana:
|
grafana:
|
||||||
image: grafana/grafana:latest
|
image: grafana/grafana:latest
|
||||||
container_name: grafana
|
container_name: grafana
|
||||||
@@ -31,10 +44,4 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- GF_SECURITY_ADMIN_USER=${GRAFANA_USERNAME}
|
- GF_SECURITY_ADMIN_USER=${GRAFANA_USERNAME}
|
||||||
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
|
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
|
||||||
#networks:
|
|
||||||
# - external_network
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
#networks:
|
|
||||||
# external_network:
|
|
||||||
# external: true
|
|
||||||
|
|||||||
16
homeassistant/config/automations.yaml
Normal file
16
homeassistant/config/automations.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
- id: '1734541261890'
|
||||||
|
alias: Batteriewarnung X5
|
||||||
|
description: ''
|
||||||
|
triggers:
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id:
|
||||||
|
- sensor.max_watch_battery_max
|
||||||
|
below: 29.9
|
||||||
|
conditions: []
|
||||||
|
actions:
|
||||||
|
- action: notify.mobile_app_s20_lars
|
||||||
|
metadata: {}
|
||||||
|
data:
|
||||||
|
message: Batterie X5 unter 30%
|
||||||
|
title: Warnung
|
||||||
|
mode: single
|
||||||
37
homeassistant/config/configuration.yaml
Normal file
37
homeassistant/config/configuration.yaml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# Configure a default setup of Home Assistant (frontend, api, etc)
|
||||||
|
default_config:
|
||||||
|
|
||||||
|
# Text to speech
|
||||||
|
tts:
|
||||||
|
- platform: google_translate
|
||||||
|
|
||||||
|
group: !include groups.yaml
|
||||||
|
automation: !include automations.yaml
|
||||||
|
script: !include scripts.yaml
|
||||||
|
scene: !include scenes.yaml
|
||||||
|
|
||||||
|
# Localhost als erlaubter zugang zulassen
|
||||||
|
|
||||||
|
homeassistant:
|
||||||
|
external_url: "https://ha.borgal.de"
|
||||||
|
internal_url: "https://docker:8123"
|
||||||
|
|
||||||
|
customize:
|
||||||
|
sensor.bitshake_smartmeterreader_aktuelle_wirkleistung:
|
||||||
|
unit_of_measurement: "W"
|
||||||
|
device_class: energy
|
||||||
|
|
||||||
|
sensor.bitshake_smartmeterreader_total_in:
|
||||||
|
unit_of_measurement: "kWh"
|
||||||
|
device_class: energy
|
||||||
|
|
||||||
|
sensor.bitshake_smartmeterreader_total_out:
|
||||||
|
unit_of_measurement: "kWh"
|
||||||
|
device_class: energy
|
||||||
|
|
||||||
|
http:
|
||||||
|
use_x_forwarded_for: true
|
||||||
|
trusted_proxies:
|
||||||
|
#- 0.0.0.0
|
||||||
|
- 192.168.0.111 # IP Docker
|
||||||
|
- 10.1.0.0/16 # IP Range Docker Container
|
||||||
@@ -7,11 +7,15 @@ services:
|
|||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
- /dev/serial/by-id:/dev/serial/by-id
|
- /dev/serial/by-id:/dev/serial/by-id
|
||||||
devices:
|
devices:
|
||||||
- /dev/ttyACM0:/dev/ttyACM0
|
# - /dev/ttyACM0:/dev/ttyACM0
|
||||||
|
- /dev/ttyUSB0:/dev/ttyUSB0
|
||||||
ports:
|
ports:
|
||||||
- 8123:8123
|
- 8123:8123
|
||||||
privileged: true
|
privileged: true
|
||||||
environment:
|
environment:
|
||||||
- TZ=Europe/Berlin
|
- TZ=Europe/Berlin
|
||||||
|
labels:
|
||||||
|
- com.centurylinklabs.watchtower.enable=true
|
||||||
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
network_mode: host
|
network_mode: host
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ IMMICH_VERSION=release
|
|||||||
# Connection secrets for postgres and typesense. You should change these to random passwords
|
# Connection secrets for postgres and typesense. You should change these to random passwords
|
||||||
TYPESENSE_API_KEY=some-random-text
|
TYPESENSE_API_KEY=some-random-text
|
||||||
DB_PASSWORD=ChangeMe
|
DB_PASSWORD=ChangeMe
|
||||||
|
IMMICH_HOST=0.0.0.0
|
||||||
|
PUBLIC_URL=https://immich.domain.de
|
||||||
|
|
||||||
# The values below this line do not need to be changed
|
# The values below this line do not need to be changed
|
||||||
###################################################################################
|
###################################################################################
|
||||||
|
|||||||
@@ -2,30 +2,13 @@ services:
|
|||||||
immich-server:
|
immich-server:
|
||||||
container_name: immich_server
|
container_name: immich_server
|
||||||
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
||||||
command: [ "start.sh", "immich" ]
|
|
||||||
volumes:
|
volumes:
|
||||||
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
ports:
|
ports:
|
||||||
- 8015:3001
|
- 2283:2283
|
||||||
depends_on:
|
|
||||||
- redis
|
|
||||||
- database
|
|
||||||
labels:
|
|
||||||
- "com.centurylinklabs.watchtower.monitor-only=true"
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
immich-microservices:
|
|
||||||
container_name: immich_microservices
|
|
||||||
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
|
||||||
command: [ "start.sh", "microservices" ]
|
|
||||||
volumes:
|
|
||||||
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
- database
|
- database
|
||||||
@@ -47,6 +30,8 @@ services:
|
|||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: redis:6.2-alpine
|
image: redis:6.2-alpine
|
||||||
|
volumes:
|
||||||
|
- ./redis:/data
|
||||||
labels:
|
labels:
|
||||||
- "com.centurylinklabs.watchtower.monitor-only=true"
|
- "com.centurylinklabs.watchtower.monitor-only=true"
|
||||||
restart: always
|
restart: always
|
||||||
@@ -60,10 +45,12 @@ services:
|
|||||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||||
POSTGRES_USER: ${DB_USERNAME}
|
POSTGRES_USER: ${DB_USERNAME}
|
||||||
POSTGRES_DB: ${DB_DATABASE_NAME}
|
POSTGRES_DB: ${DB_DATABASE_NAME}
|
||||||
|
POSTGRES_INITDB_ARGS: '--data-checksums'
|
||||||
volumes:
|
volumes:
|
||||||
- ./DB-data:/var/lib/postgresql/data
|
- ./DB-data:/var/lib/postgresql/data
|
||||||
labels:
|
labels:
|
||||||
- "com.centurylinklabs.watchtower.monitor-only=true"
|
- "com.centurylinklabs.watchtower.monitor-only=true"
|
||||||
|
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
|
restart: always
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
5
jellyfin/.env.sample
Normal file
5
jellyfin/.env.sample
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
NFS_SERVER=192.168.0.xxx
|
||||||
|
PFAD=/Pfad/zu/den/Videos
|
||||||
|
#
|
||||||
|
# Auf Rechte achten
|
||||||
|
#
|
||||||
28
jellyfin/docker-compose.yml
Normal file
28
jellyfin/docker-compose.yml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
jellyfin:
|
||||||
|
image: lscr.io/linuxserver/jellyfin:latest
|
||||||
|
container_name: jellyfin
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1001
|
||||||
|
- TZ=Europe/Berlin
|
||||||
|
#- JELLYFIN_PublishedServerUrl=http://192.168.0.5 #optional
|
||||||
|
volumes:
|
||||||
|
- ./config:/config
|
||||||
|
#- /path/to/tvseries:/data/tvshows
|
||||||
|
- video:/data/movies
|
||||||
|
ports:
|
||||||
|
- 8097:8096
|
||||||
|
#- 8920:8920 #optional
|
||||||
|
#- 7359:7359/udp #optional
|
||||||
|
#- 1900:1900/udp #optional
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
video:
|
||||||
|
name: video
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: nfs4
|
||||||
|
o: addr=${NFS_SERVER},rw
|
||||||
|
device: ":${PFAD}"
|
||||||
22
kasm/docker-compose.yml
Normal file
22
kasm/docker-compose.yml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
services:
|
||||||
|
kasm:
|
||||||
|
image: lscr.io/linuxserver/kasm:latest
|
||||||
|
container_name: kasm
|
||||||
|
privileged: true
|
||||||
|
security_opt:
|
||||||
|
- apparmor:rootlesskit #optional
|
||||||
|
environment:
|
||||||
|
- KASM_PORT=8443
|
||||||
|
- TZ=Europe/Berlin
|
||||||
|
- PGID=1000
|
||||||
|
- PUID=1001
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- ./data:/opt
|
||||||
|
- ./profiles:/profiles
|
||||||
|
- ./dev/input:/dev/input
|
||||||
|
- ./run/udev/data:/run/udev/data
|
||||||
|
ports:
|
||||||
|
- 3001:3000
|
||||||
|
- 8443:8443
|
||||||
|
restart: unless-stopped
|
||||||
@@ -2,7 +2,7 @@ services:
|
|||||||
mealie:
|
mealie:
|
||||||
container_name: mealie
|
container_name: mealie
|
||||||
image: hkotel/mealie:latest
|
image: hkotel/mealie:latest
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/app/data
|
- ./data:/app/data
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@@ -21,11 +21,11 @@ services:
|
|||||||
- OWNCLOUD_MYSQL_UTF8MB4=true
|
- OWNCLOUD_MYSQL_UTF8MB4=true
|
||||||
- OWNCLOUD_REDIS_ENABLED=true
|
- OWNCLOUD_REDIS_ENABLED=true
|
||||||
- OWNCLOUD_REDIS_HOST=redis
|
- OWNCLOUD_REDIS_HOST=redis
|
||||||
healthcheck:
|
# healthcheck:
|
||||||
test: ["CMD", "/usr/bin/healthcheck"]
|
# test: ["CMD", "/usr/bin/healthcheck"]
|
||||||
interval: 30s
|
# interval: 30s
|
||||||
timeout: 10s
|
# timeout: 10s
|
||||||
retries: 5
|
# retries: 5
|
||||||
volumes:
|
volumes:
|
||||||
- ./files:/mnt/data
|
- ./files:/mnt/data
|
||||||
|
|
||||||
|
|||||||
@@ -9,12 +9,152 @@
|
|||||||
<p></p>
|
<p></p>
|
||||||
<a href="https://docs.paperless-ngx.com/" target="_blank">Paperless ngx</a>
|
<a href="https://docs.paperless-ngx.com/" target="_blank">Paperless ngx</a>
|
||||||
<p></p>
|
<p></p>
|
||||||
<h3>HowTo</h3>
|
<h2>HowTo</h2>
|
||||||
<hr>
|
<hr>
|
||||||
<p></p>
|
<p></p>
|
||||||
<h2>/etc/fstab Mount zu Scanner Verzeichniss</h2>
|
<h4>/etc/fstab Mount zu Scanner Verzeichniss</h4>
|
||||||
<p></p>
|
<p></p>
|
||||||
<pre>192.168.0.102:/mnt/pool1/scanner /opt/paperless/consume nfs4 auto,mountvers=4.0 0 0</pre>
|
<pre>192.168.0.102:/mnt/pool1/scanner /opt/paperless/consume nfs auto 0 0</pre>
|
||||||
<p></p>
|
<p></p>
|
||||||
<h5>gegebenfalls noch die NFS Tools installieren</h5>
|
<h5>gegebenfalls noch die NFS Tools installieren</h5>
|
||||||
<pre>apt install nfs-common</pre>
|
<pre>apt install nfs-common</pre>
|
||||||
|
<p></p>
|
||||||
|
|
||||||
|
|
||||||
|
# Update Paperless-ngx mit DB-upgrade !
|
||||||
|
|
||||||
|
### Schritt 1: Datenbank sichern und vorbereiten
|
||||||
|
|
||||||
|
1. **Stoppen Sie den `webserver`-Dienst**, um zu verhindern, dass die Anwendung während des Backups Daten in die Datenbank schreibt. Der `db`-Dienst muss dabei **laufen**.
|
||||||
|
|
||||||
|
```
|
||||||
|
docker compose stop webserver
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Überprüfen Sie, ob der `db`-Dienst läuft**.
|
||||||
|
|
||||||
|
```
|
||||||
|
docker compose ps
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Der Status von `paperless_db` sollte `Up` sein. Wenn er nicht läuft, müssen Sie die Logs mit `docker compose logs db` überprüfen, um das Problem zu beheben, bevor Sie fortfahren.
|
||||||
|
|
||||||
|
3. **Führen Sie den Backup-Befehl aus**. Dieser Befehl startet `pg_dump` innerhalb des laufenden `db`-Containers und speichert die Ausgabe in eine Datei auf Ihrem Host.
|
||||||
|
|
||||||
|
```
|
||||||
|
docker compose exec db pg_dump -U paperless -Fc paperless > paperless_db_backup.dump
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Eine komprimierte Backup-Datei namens `paperless_db_backup.dump` wird im selben Verzeichnis wie Ihre `docker-compose.yml` erstellt.
|
||||||
|
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
### Schritt 2: `docker-compose.yml` aktualisieren
|
||||||
|
|
||||||
|
1. **Stoppen Sie alle Dienste**, um eine saubere Ausgangsbasis zu schaffen.
|
||||||
|
|
||||||
|
```
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Bearbeiten Sie Ihre `docker-compose.yml`-Datei.**
|
||||||
|
|
||||||
|
- Ändern Sie das `image` für den `db`-Dienst von `postgres:13` auf `postgres:17`.
|
||||||
|
|
||||||
|
- **Wichtig:** Ändern Sie den `volumes`-Pfad für die neuen Datenbankdaten, um zu verhindern, dass die alten Daten überschrieben werden. PostgreSQL-Versionen sind nicht direkt kompatibel.
|
||||||
|
|
||||||
|
|
||||||
|
YAML
|
||||||
|
|
||||||
|
```
|
||||||
|
# ...
|
||||||
|
services:
|
||||||
|
# ...
|
||||||
|
db:
|
||||||
|
image: docker.io/library/postgres:17 # Version geändert
|
||||||
|
container_name: paperless_db
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ./db_v17_data:/var/lib/postgresql/data # WICHTIG: Pfad geändert
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: paperless
|
||||||
|
POSTGRES_USER: paperless
|
||||||
|
POSTGRES_PASSWORD: paperless
|
||||||
|
labels:
|
||||||
|
- "com.centurylinklabs.watchtower.monitor-only=true"
|
||||||
|
# ...
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Starten Sie nur den neuen Datenbank-Container**.
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
docker compose up -d db
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Dadurch wird ein neuer, leerer PostgreSQL 17-Container erstellt.
|
||||||
|
|
||||||
|
|
||||||
|
4. **Importieren über einen temporären Ordner**.
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
docker compose cp paperless_db_backup.dump db:/tmp/paperless_db_backup.dump
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Dieser Befehl kopiert Ihre lokale Backup-Datei in das `/tmp`-Verzeichnis des laufenden `db`-Containers.
|
||||||
|
|
||||||
|
2. **Stellen Sie das Backup im Container wieder her:**
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
docker compose exec db sh -c "pg_restore -U paperless -d paperless /tmp/paperless_db_backup.dump"
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Hierbei übergeben Sie den Pfad der Datei direkt an den `pg_restore`-Befehl, anstatt die Eingabe umzuleiten.
|
||||||
|
|
||||||
|
### Letzter Schritt: Dienste starten und bereinigen
|
||||||
|
|
||||||
|
1. **Starten Sie die Paperless-ngx-Dienste:** Führen Sie den folgenden Befehl aus, um alle Dienste, einschließlich des `webserver`s, zu starten.
|
||||||
|
|
||||||
|
Bash
|
||||||
|
|
||||||
|
```
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Überprüfen Sie die Funktionalität:** Öffnen Sie die Paperless-ngx-Weboberfläche in Ihrem Browser. Melden Sie sich an und überprüfen Sie, ob Ihre Dokumente korrekt angezeigt werden und die Anwendung wie erwartet funktioniert.
|
||||||
|
|
||||||
|
3. **Bereinigen Sie die temporären Dateien:** Wenn alles einwandfrei läuft, können Sie die erstellten Sicherungsdateien löschen.
|
||||||
|
|
||||||
|
Bash
|
||||||
|
|
||||||
|
```
|
||||||
|
rm paperless_db_backup.dump
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Sie können auch das alte Datenbank-Volume löschen, um Speicherplatz freizugeben.
|
||||||
|
|
||||||
|
4. **Löschen Sie die alte Datenbank (optional):** Falls Sie das alte Datenbank-Volume nicht mehr benötigen, können Sie es ebenfalls entfernen. **Seien Sie hier vorsichtig, um keine wichtigen Daten zu verlieren.**
|
||||||
|
|
||||||
|
Bash
|
||||||
|
|
||||||
|
```
|
||||||
|
docker volume ls # find the old volume name
|
||||||
|
docker volume rm <old_volume_name>
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Herzlichen Glückwunsch, Ihre PostgreSQL-Datenbank wurde erfolgreich von Version 13 auf 17 migriert!
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
# The UID and GID of the user used to run paperless in the container. Set this
|
# 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
|
# to your UID and GID on the host so that you have write access to the
|
||||||
# consumption directory.
|
# consumption directory.
|
||||||
# USERMAP_UID=1000
|
USERMAP_UID=1000
|
||||||
# USERMAP_GID=1001
|
USERMAP_GID=1001
|
||||||
|
|
||||||
# Additional languages to install for text recognition, separated by a
|
# Additional languages to install for text recognition, separated by a
|
||||||
# whitespace. Note that this is
|
# whitespace. Note that this is
|
||||||
@@ -32,7 +32,17 @@ PAPERLESS_TIME_ZONE=Europe/Berlin
|
|||||||
# The default language to use for OCR. Set this to the language most of your
|
# The default language to use for OCR. Set this to the language most of your
|
||||||
# documents are written in.
|
# documents are written in.
|
||||||
PAPERLESS_OCR_LANGUAGE=deu
|
PAPERLESS_OCR_LANGUAGE=deu
|
||||||
|
PAPERLESS_OCR_LANGUAGES=deu
|
||||||
|
|
||||||
|
# Eigene Einstellungen
|
||||||
|
#
|
||||||
|
# PAPERLESS_FILENAME_FORMAT_REMOVE_NONE=True
|
||||||
PAPERLESS_FILENAME_FORMAT={document_type}/{correspondent}/{created_year}/{title}
|
PAPERLESS_FILENAME_FORMAT={document_type}/{correspondent}/{created_year}/{title}
|
||||||
PAPERLESS_CONSUMER_POLLING=30
|
PAPERLESS_CONSUMER_POLLING=10
|
||||||
PAPERLESS_URL=https://dms.borgal.de
|
PAPERLESS_URL=https://dms.borgal.de
|
||||||
|
PAPERLESS_PRE_CONSUME_SCRIPT=/usr/src/paperless/scripts/pre-consume.sh
|
||||||
|
|
||||||
|
# QR Code Scanner
|
||||||
|
PAPERLESS_CONSUMER_ENABLE_BARCODES=true
|
||||||
|
PAPERLESS_CONSUMER_ENABLE_ASN_BARCODE=true
|
||||||
|
PAPERLESS_CONSUMER_BARCODE_SCANNER=ZXING
|
||||||
|
|||||||
@@ -48,28 +48,46 @@ services:
|
|||||||
- "com.centurylinklabs.watchtower.monitor-only=true"
|
- "com.centurylinklabs.watchtower.monitor-only=true"
|
||||||
|
|
||||||
webserver:
|
webserver:
|
||||||
image: ghcr.io/paperless-ngx/paperless-ngx
|
image: ghcr.io/paperless-ngx/paperless-ngx:latest
|
||||||
container_name: paperless_app
|
container_name: paperless_app
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
- broker
|
- broker
|
||||||
|
- gotenberg
|
||||||
|
- tika
|
||||||
ports:
|
ports:
|
||||||
- 8009:8000
|
- 8009:8000/tcp
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "curl", "-f", "http://localhost:8000"]
|
|
||||||
interval: 30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 5
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/usr/src/paperless/data
|
- ./data:/usr/src/paperless/data
|
||||||
- media:/usr/src/paperless/media
|
|
||||||
- ./export:/usr/src/paperless/export
|
- ./export:/usr/src/paperless/export
|
||||||
- ./consume:/usr/src/paperless/consume
|
- ./consume:/usr/src/paperless/consume
|
||||||
|
- ./scripts:/usr/src/paperless/scripts
|
||||||
|
- media:/usr/src/paperless/media
|
||||||
env_file: docker-compose.env
|
env_file: docker-compose.env
|
||||||
environment:
|
environment:
|
||||||
PAPERLESS_REDIS: redis://broker:6379
|
PAPERLESS_REDIS: redis://broker:6379
|
||||||
PAPERLESS_DBHOST: db
|
PAPERLESS_DBHOST: db
|
||||||
|
PAPERLESS_BIND_ADDR: 0.0.0.0
|
||||||
|
PAPERLESS_TIKA_ENABLED: 1
|
||||||
|
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
|
||||||
|
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
|
||||||
|
|
||||||
|
gotenberg:
|
||||||
|
image: docker.io/gotenberg/gotenberg:8.7
|
||||||
|
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/.*"
|
||||||
|
- "--api-timeout=60"
|
||||||
|
|
||||||
|
tika:
|
||||||
|
image: docker.io/apache/tika:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
media:
|
media:
|
||||||
|
|||||||
5
paperless/scripts/pre-consume.sh
Executable file
5
paperless/scripts/pre-consume.sh
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# Remove blank pages
|
||||||
|
/usr/src/paperless/scripts/remove-blank-pages.sh
|
||||||
49
paperless/scripts/remove-blank-pages.sh
Executable file
49
paperless/scripts/remove-blank-pages.sh
Executable file
@@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#set -x -e -o pipefail
|
||||||
|
set -e -o pipefail
|
||||||
|
export LC_ALL=C
|
||||||
|
|
||||||
|
#IN="$1"
|
||||||
|
IN="$DOCUMENT_WORKING_PATH"
|
||||||
|
|
||||||
|
# Check for PDF format
|
||||||
|
TYPE=$(file -b "$IN")
|
||||||
|
|
||||||
|
if [ "${TYPE%%,*}" != "PDF document" ]; then
|
||||||
|
>&2 echo "Skipping $IN - non PDF [$TYPE]."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# PDF file - proceed
|
||||||
|
|
||||||
|
#PAGES=$(pdfinfo "$IN" | grep ^Pages: | tr -dc '0-9')
|
||||||
|
PAGES=$(pdfinfo "$IN" | awk '/Pages:/ {print $2}')
|
||||||
|
|
||||||
|
>&2 echo Total pages $PAGES
|
||||||
|
|
||||||
|
|
||||||
|
# Threshold for HP scanners
|
||||||
|
# THRESHOLD=1
|
||||||
|
# Threshold for Lexmar MC2425
|
||||||
|
THRESHOLD=0.8
|
||||||
|
|
||||||
|
|
||||||
|
non_blank() {
|
||||||
|
for i in $(seq 1 $PAGES) ; do
|
||||||
|
PERCENT=$(gs -o - -dFirstPage=${i} -dLastPage=${i} -sDEVICE=ink_cov "${IN}" | grep CMYK | nawk 'BEGIN { sum=0; } {sum += $1 + $2 + $3 + $4;} END { printf "%.5f\n", sum } ')
|
||||||
|
>&2 echo -n "Color-sum in page $i is $PERCENT: "
|
||||||
|
if awk "BEGIN { exit !($PERCENT > $THRESHOLD) }"; then
|
||||||
|
echo $i
|
||||||
|
>&2 echo "Page added to document"
|
||||||
|
else
|
||||||
|
>&2 echo "Page removed from document"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
NON_BLANK=$(non_blank)
|
||||||
|
|
||||||
|
if [ -n "$NON_BLANK" ]; then
|
||||||
|
NON_BLANK=$(echo $NON_BLANK | tr ' ' ",")
|
||||||
|
qpdf "$IN" --warning-exit-0 --replace-input --pages . $NON_BLANK --
|
||||||
|
fi
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
app:
|
app:
|
||||||
#image: 'jc21/nginx-proxy-manager:latest'
|
image: 'jc21/nginx-proxy-manager:latest'
|
||||||
image: 'jc21/nginx-proxy-manager:2.10.4'
|
|
||||||
container_name: reverse-proxy
|
container_name: reverse-proxy
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -10,10 +10,15 @@
|
|||||||
<a href="https://github.com/linuxserver/docker-unifi-network-application/" target="_blank">UniFi Network Application</a>
|
<a href="https://github.com/linuxserver/docker-unifi-network-application/" target="_blank">UniFi Network Application</a>
|
||||||
<p></p>
|
<p></p>
|
||||||
<h3>HowTo</h3>
|
<h3>HowTo</h3>
|
||||||
|
<p></p>
|
||||||
|
<p><b>* * * A C H T U N G * * *</b></p>
|
||||||
|
<p>init-mongo.js muss <b>vor dem ersten Start</b> in den Hauptordner kopiert werden. Das Passwort in der Datei muss ebenfalls angepasst werden.</p>
|
||||||
|
<p></p>
|
||||||
<hr>
|
<hr>
|
||||||
<p></p>
|
<p></p>
|
||||||
<p>Die Geräte müssen per SSH angepasst werden </p>
|
<p>Falls die AP sich nicht automatisch verbinden, müssen die AP manuell per SSH angepasst werden </p>
|
||||||
<pre>ssh
|
<pre>>ssh
|
||||||
|
<p></p>
|
||||||
IP des Gerätes oder Hostname (AP-OG, AP-EG,..)
|
IP des Gerätes oder Hostname (AP-OG, AP-EG,..)
|
||||||
Username: Borgal
|
Username: Borgal
|
||||||
Passwort: *******
|
Passwort: *******
|
||||||
|
|||||||
@@ -4,13 +4,14 @@ services:
|
|||||||
container_name: unifi-db
|
container_name: unifi-db
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/data/db
|
- ./data:/data/db
|
||||||
|
- ./data/configdb:/data/configdb
|
||||||
- ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
|
- ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
|
||||||
healthcheck:
|
# healthcheck:
|
||||||
test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
|
# test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
|
||||||
interval: 10s
|
# interval: 10s
|
||||||
timeout: 10s
|
# timeout: 10s
|
||||||
retries: 5
|
# retries: 5
|
||||||
start_period: 20s
|
# start_period: 20s
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
unifi-network-application:
|
unifi-network-application:
|
||||||
@@ -30,8 +31,8 @@ services:
|
|||||||
#- MONGO_TLS= #optional
|
#- MONGO_TLS= #optional
|
||||||
#- MONGO_AUTHSOURCE= #optional
|
#- MONGO_AUTHSOURCE= #optional
|
||||||
depends_on:
|
depends_on:
|
||||||
unifi-db:
|
- unifi-db
|
||||||
condition: service_healthy
|
# condition: service_healthy
|
||||||
volumes:
|
volumes:
|
||||||
- ./config:/config
|
- ./config:/config
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@@ -1,39 +1,13 @@
|
|||||||
2:Ich bin ein Star:1:2000:0015:1:S19.2E-1-1057-61200:0:0:1:0:0:0:::1:0:0:1::50:99:2:30:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
6:Germany's next Topmodel:1:2000:2200:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
6:Germany's next Topmodel:1:2000:2200:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
||||||
7:Daniela Katzenberger:1:2000:2300:1:S19.2E-1-1057-61205:0:0:1:1:1:0:::0:0:0:0:Daniela Katzenberger:50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
15:Modern Family:1:2200:0000:1:S19.2E-1-1057-61200:0:0:1:1:1:0:::1:1:-16:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
16:Goodbye Deutschland!:1:2000:2230:1:S19.2E-1-1057-61201:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
17:Der Bachelor:1:2000:2200:1:S19.2E-1-1057-61200:0:0:1:1:1:0:::0:1:-8:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
18:Die Bachelorette:1:2000:2200:1:S19.2E-1-1057-61200:0:0:1:1:1:0:::0:1:-8:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
21:The Taste:1:2000:2200:1:S19.2E-1-1017-61300:0:0:1:1:1:0:::0:1:-8:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
26:The Mick:0:::1:S19.2E-1-1017-61301:0:0:1:0:0:0:::1:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
27:Get the F*ck out of my House:1:2000:2200:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::1:1:-16:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
27:Get the F*ck out of my House:1:2000:2200:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::1:1:-16:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
||||||
28:Sekretärinnen:0:::1:S19.2E-1-1057-61200:0:0:1:1:1:0:::1:1:-16:1::50:99:2:10:0:0:0::1:0:0:1:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
33:Akte X:1:2000:2300:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::1:0:0:0:1:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
||||||
33:Akte X:1:2000:2300:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::1:0:0:0:1:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
34:The Orville:1:2000:2359:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::1:0:0:0:1:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
34:The Orville:1:2000:2359:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::1:0:0:0:1:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
||||||
35:Einstein:1:2000:2300:1:S19.2E-1-1017-61300:0:0:1:1:1:0:::1:1:-4:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
41:Promi Big Brother:1:2000:0200:1:S19.2E-1-1017-61300:0:0:1:1:1:0:::0:0:0:1::50:99:2:20:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
||||||
37:Jenny - echt gerecht!:1:2000:2300:1:S19.2E-1-1057-61200:0:0:1:1:1:0:::1:1:-4:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
38:jerks.:1:2000:0000:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::1:1:-4:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
39:The Masked Singer:1:2000:2200:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
40:Das Sommerhaus der Stars:1:2000:2300:1:S19.2E-1-1057-61200:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
41:Promi Big Brother:1:2000:0200:1:S19.2E-1-1017-61300:0:0:1:1:1:0:::1:0:0:1::50:99:2:20:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
42:the voice:1:2000:2200:1:S19.2E-1-1017-61300|S19.2E-1-1017-61301:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
46:bachelor in Paradise:1:2000:2200:1:S19.2E-1-1057-61200:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
51:Promis unter Palmen:1:2000:2200:1:S19.2E-1-1017-61300:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
51:Promis unter Palmen:1:2000:2200:1:S19.2E-1-1017-61300:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
||||||
52:ancient aliens:1:2000:2300:1:S19.2E-1-1017-61305:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::1:0:1:1:1:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
52:ancient aliens:1:2000:2300:1:S19.2E-1-1017-61305:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::1:0:1:1:1:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
||||||
55:Kampf der Realitystars:1:2000:2200:1:S19.2E-1-1057-61205:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
56:Love Island:1:2000:2300:1:S19.2E-1-1057-61205:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
57:Das perfekte Dinner:1:1800:2000:1:S19.2E-1-1057-61201:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
57:Das perfekte Dinner:1:1800:2000:1:S19.2E-1-1057-61201:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
||||||
58:Temptation Island:0:::1:S19.2E-1-1057-61200:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
59:Ninja Warrior Germany Kids:0:::1:S19.2E-1-1041-11931:0:0:1:1:1:0:::1:1:-32:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
61:Die Geissens:1:2000:2330:1:S19.2E-1-1057-61205:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::1:0:1:1:1:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
62:Are you the one:1:2000:2300:1:S19.2E-1-1057-61200:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::1:0:1:1:1:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
65:5 Senses for Love:1:2000:2359:1:S19.2E-1-1017-61300:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::1:0:1:1:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
66:Beauty & The Nerd:1:2000:2300:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
66:Beauty & The Nerd:1:2000:2300:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
||||||
68:Lego Masters:1:2000:2300:1:S19.2E-1-1057-61200:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
70:Hochzeit auf den ersten Blick:1:2000:2300:1:S19.2E-1-1017-61300:0:0:1:1:1:0:::1:0:0:0:Hochzeit auf den ersten Blick:50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
70:Hochzeit auf den ersten Blick:1:2000:2300:1:S19.2E-1-1017-61300:0:0:1:1:1:0:::1:0:0:0:Hochzeit auf den ersten Blick:50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
||||||
71:8 Zeugen:1:2000:0000:1:S19.2E-1-1019-10301|S19.2E-1-1041-11931:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
72:Das große Promi-Büßen:1:2000:2300:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
72:Das große Promi-Büßen:1:2000:2300:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
||||||
73:Frau Jordan stellt gleich:1:2000:2359:1:S19.2E-1-1017-61301:0:0:1:1:1:0:::1:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
|
||||||
76:Wer stiehlt die Show:1:2000:2300:1:S19.2E-1-1017-61301:0:1:1:1:1:0:::1:0:0:1:Wer stiehlt mir die Show?:50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
76:Wer stiehlt die Show:1:2000:2300:1:S19.2E-1-1017-61301:0:1:1:1:1:0:::1:0:0:1:Wer stiehlt mir die Show?:50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
||||||
78:Deutschland sucht den Superstar:1:2000:2200:1:S19.2E-1-1057-61200:0:0:1:1:1:0:::0:0:0:1::50:99:2:10:0:0:0::0:0:0:0:0:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
77:Schlag den Star:1:2000:2200:1:S19.2E-1-1017-61301:0:0:1:0:0:0:::1:0:0:1:Schlag den Star:50:99:2:10:0:0:0::1:0:0:1:1:0:0:0:0:0:0:0::1:0:0:0:0:0:0:0:0:0:90::0
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ services:
|
|||||||
- TZ=Europe/Berlin
|
- TZ=Europe/Berlin
|
||||||
- LANG=de_DE.UTF-8
|
- LANG=de_DE.UTF-8
|
||||||
- LOG2FILE=false
|
- LOG2FILE=false
|
||||||
- PLUGINS=epgsearch live ddci2 svdrpservice streamdev-server femon markad #vnsiserver robotv
|
- PLUGINS=epgsearch live ddci2 svdrpservice streamdev-server femon #markad vnsiserver robotv
|
||||||
volumes:
|
volumes:
|
||||||
- ./system:/vdr/system
|
- ./system:/vdr/system
|
||||||
- ./config:/vdr/config
|
- ./config:/vdr/config
|
||||||
|
|||||||
@@ -1,14 +1,20 @@
|
|||||||
services:
|
services:
|
||||||
wg-easy:
|
wg-easy:
|
||||||
image: weejewel/wg-easy
|
image: ghcr.io/wg-easy/wg-easy
|
||||||
container_name: wg-easy
|
container_name: wg-easy
|
||||||
environment:
|
environment:
|
||||||
- WG_HOST=${HOST}
|
- WG_HOST=${HOST}
|
||||||
- PASSWORD=${PASSWORD}
|
#
|
||||||
- WG_DEFAULT_DNS=192.168.0.1, fritz.box
|
# Probier mal diese Zeile ohne dem #
|
||||||
- WG_ALLOWED_IPS=10.8.0.0/24, 192.168.0.0/24
|
#- WG_DEFAULT_DNS=192.168.0.1
|
||||||
|
#
|
||||||
|
#- WG_DEFAULT_DNS=192.168.0.111, 10.1.6.2, localdomain
|
||||||
|
#- WG_ALLOWED_IPS=10.8.0.0/24, 192.168.0.0/24
|
||||||
|
- PASSWORD_HASH=${HASH}
|
||||||
|
- UI_TRAFFIC_STATS=true
|
||||||
|
- UI_CHART_TYPE=3
|
||||||
volumes:
|
volumes:
|
||||||
- .:/etc/wireguard
|
- ./wg-easy:/etc/wireguard
|
||||||
ports:
|
ports:
|
||||||
- "51820:51820/udp"
|
- "51820:51820/udp"
|
||||||
- "51821:51821/tcp"
|
- "51821:51821/tcp"
|
||||||
@@ -19,3 +25,6 @@ services:
|
|||||||
sysctls:
|
sysctls:
|
||||||
- net.ipv4.ip_forward=1
|
- net.ipv4.ip_forward=1
|
||||||
- net.ipv4.conf.all.src_valid_mark=1
|
- net.ipv4.conf.all.src_valid_mark=1
|
||||||
|
labels:
|
||||||
|
- com.centurylinklabs.watchtower.enable=true
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ services:
|
|||||||
- WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN=AlsHK7YQ17in5Ns
|
- WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN=AlsHK7YQ17in5Ns
|
||||||
- WATCHTOWER_WARN_ON_HEAD_FAILURE=auto #always, auto, never, stand auf never
|
- WATCHTOWER_WARN_ON_HEAD_FAILURE=auto #always, auto, never, stand auf never
|
||||||
- WATCHTOWER_CLEANUP=true
|
- WATCHTOWER_CLEANUP=true
|
||||||
- WATCHTOWER_SCHEDULE=0 15 19 * * *
|
- WATCHTOWER_SCHEDULE=0 0 19 * * *
|
||||||
|
#- WATCHTOWER_MONITOR_ONLY=true
|
||||||
- WATCHTOWER_INCLUDE_RESTARTING=true
|
- WATCHTOWER_INCLUDE_RESTARTING=true
|
||||||
- WATCHTOWER_ROLLING_RESTART=true
|
- WATCHTOWER_ROLLING_RESTART=true
|
||||||
- WATCHTOWER_INCLUDE_STOPPED=true
|
- WATCHTOWER_INCLUDE_STOPPED=true
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
webserver:
|
webserver:
|
||||||
build: .
|
image: php:8.3-apache
|
||||||
container_name: webserver-app
|
container_name: webserver-app
|
||||||
ports:
|
ports:
|
||||||
- "8180:80"
|
- "8180:80"
|
||||||
@@ -10,33 +10,47 @@ services:
|
|||||||
- www:/var/www/html
|
- www:/var/www/html
|
||||||
- energie:/var/www/html/knx/archiv
|
- energie:/var/www/html/knx/archiv
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
links:
|
depends_on:
|
||||||
- database
|
- database
|
||||||
|
# Befehl, um mysqli und rewrite zu aktivieren
|
||||||
|
command: |
|
||||||
|
sh -c "
|
||||||
|
docker-php-ext-install mysqli pdo pdo_mysql &&
|
||||||
|
a2enmod rewrite &&
|
||||||
|
apache2-foreground
|
||||||
|
"
|
||||||
labels:
|
labels:
|
||||||
com.centurylinklabs.watchtower.enable: "false"
|
com.centurylinklabs.watchtower.enable: 'false'
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
database:
|
database:
|
||||||
image: mariadb:latest
|
image: mariadb:10.11
|
||||||
container_name: webserver_db
|
container_name: webserver_db
|
||||||
environment:
|
environment:
|
||||||
- MYSQL_USER=${MYSQL_USER}
|
- MYSQL_USER=${MYSQL_USER}
|
||||||
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
||||||
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
||||||
|
- MYSQL_DATABASE=${MYSQL_DATABASE:-appdb}
|
||||||
- TZ=Europe/Berlin
|
- TZ=Europe/Berlin
|
||||||
volumes:
|
volumes:
|
||||||
- ./dbdata:/var/lib/mysql
|
- ./dbdata:/var/lib/mysql
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
command: --default-authentication-plugin=mysql_native_password
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
phpmyadmin:
|
phpmyadmin:
|
||||||
image: phpmyadmin/phpmyadmin
|
image: phpmyadmin/phpmyadmin:latest
|
||||||
container_name: web_phpmyadmin
|
container_name: web_phpmyadmin
|
||||||
links:
|
depends_on:
|
||||||
- database:db
|
- database
|
||||||
ports:
|
ports:
|
||||||
- 8087:80
|
- "8087:80"
|
||||||
environment:
|
environment:
|
||||||
|
- PMA_HOST=database
|
||||||
|
- PMA_PORT=3306
|
||||||
|
- PMA_USER=${MYSQL_USER}
|
||||||
|
- PMA_PASSWORD=${MYSQL_PASSWORD}
|
||||||
|
- PMA_ARBITRARY=0
|
||||||
- TZ=Europe/Berlin
|
- TZ=Europe/Berlin
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "8014:80"
|
- "8014:80"
|
||||||
volumes:
|
volumes:
|
||||||
# data
|
|
||||||
- ./data:/data
|
- ./data:/data
|
||||||
#- Photos:/data/Photos
|
|
||||||
- Backup:/data/Backup
|
- Backup:/data/Backup
|
||||||
# user and password
|
# user and password
|
||||||
- ./user/htpasswd:/opt/nginx/conf/htpasswd:ro
|
- ./user/htpasswd:/opt/nginx/conf/htpasswd:ro
|
||||||
|
|||||||
Reference in New Issue
Block a user