Compare commits
129 Commits
ece09830f9
...
shuttle
| Author | SHA1 | Date | |
|---|---|---|---|
| 0fd6ab9ea6 | |||
| d05b46203d | |||
| a4dd2f9f09 | |||
| a130abc2c6 | |||
| 0044d9d54e | |||
| 617cddf525 | |||
| 464923f0d2 | |||
| 6dffdc8daa | |||
| a5710c5bc4 | |||
| e71907a1a1 | |||
| a2a481247a | |||
| 42104e9499 | |||
| 2dacbb9a3e | |||
| 44d0750dd7 | |||
| 6a027051e0 | |||
| 4202c1123a | |||
| d90f6f8a09 | |||
| f955d7382c | |||
| 2a20cce669 | |||
| ab2f707706 | |||
| 7f45788b3d | |||
| a0e6fed886 | |||
| 57f647615b | |||
| d8a803af4c | |||
| cda9b2af88 | |||
| 4e3bb5a6a8 | |||
| da5c91963d | |||
| a1e9d5034b | |||
| 0b392175c8 | |||
| 40ed0fa5ad | |||
| bc1c1160eb | |||
| a5aa0999ad | |||
| 8e25be9224 | |||
| ebff535602 | |||
| c2d99b9cd6 | |||
| c7c71645e5 | |||
| 43c8008d8b | |||
| f597010efc | |||
| f0687dffe2 | |||
| 8647dc260f | |||
| 66de96f6b2 | |||
| 5b78b94215 | |||
| 3621d80606 | |||
| e81077de96 | |||
| 47cb7a206a | |||
| 0ac80024ae | |||
| 76b19c63f1 | |||
| 52b7fa3a82 | |||
| 470a089ec9 | |||
| 051b48a56f | |||
| d0172e8427 | |||
| 979a411e9d | |||
| 3a2770cb47 | |||
| 1c4ddb48fa | |||
| 26b419b403 | |||
| 5bc95a11d6 | |||
| 2b6eb06592 | |||
| 0819d9422e | |||
| 9c791eed18 | |||
| 26692df490 | |||
| ebe38b5aea | |||
| f6e4deff7c | |||
| 32035edeb1 | |||
| a8be31840d | |||
| 80f4f89f51 | |||
| 92fc145e7b | |||
| a40f45a360 | |||
| 97a8f23d5e | |||
| b07a44543e | |||
| b751fa5c5a | |||
| 6bb24188ce | |||
| 6c8e24126e | |||
| 15373141c4 | |||
| 2b63f8bbbf | |||
| 51cca5e5b2 | |||
| d6c184bc0b | |||
| cdb4d67c41 | |||
| bddc8cdba7 | |||
| 54ed7e07bf | |||
| c3142c4ca9 | |||
| 012c88268c | |||
| c28f3ca075 | |||
| a40b4e8ef1 | |||
| 281af93e60 | |||
| 8ab9e7eed8 | |||
| 8b46c1decd | |||
| 3b0e936efd | |||
| 31745df9ff | |||
| 8c133d81e0 | |||
| 3c30e178bd | |||
| e13906cee8 | |||
| 620dc2929f | |||
| a5ad4db29d | |||
| f36cea42ca | |||
| 550b2e0a9e | |||
| 08c0e70336 | |||
| c70f1ac71d | |||
| 9c4a483a54 | |||
| 16ffd6ab60 | |||
| 33546d7e72 | |||
| d50a8e0c8a | |||
| f671acc95c | |||
| e519e40a99 | |||
| f50627b8d6 | |||
| dae79d9593 | |||
| deb3b4a28a | |||
| b012ea267d | |||
| 7ab7c0bd7c | |||
| 06cc7755d8 | |||
| 48025fae12 | |||
| 817b8ad1c6 | |||
| e18c28c37a | |||
| 63d9fa4873 | |||
| 6cc9d7d6ee | |||
| 0041b7755f | |||
| ef25e9c599 | |||
| 421752a333 | |||
| 47fdc040cf | |||
| e1b02c2c84 | |||
| 6e9d282b29 | |||
| 669d21b9b7 | |||
| e2f70a1d1f | |||
| 52b5a1676d | |||
| 82577aa597 | |||
| 7011b1a192 | |||
| ad75523e7b | |||
| 1f3e802fad | |||
| b05dc6b57e | |||
| b197fb987b |
80
.gitignore
vendored
80
.gitignore
vendored
@@ -9,84 +9,18 @@
|
|||||||
.idea/
|
.idea/
|
||||||
.ipynb_checkpoints/
|
.ipynb_checkpoints/
|
||||||
.ruff_cache/
|
.ruff_cache/
|
||||||
|
beszel/
|
||||||
|
goodwe/
|
||||||
log/
|
log/
|
||||||
logs/
|
logs/
|
||||||
authentik/database/PG_VERSION
|
dagster/
|
||||||
authentik/database/base/
|
gitea/
|
||||||
authentik/database/global/
|
|
||||||
authentik/database/pg_*/
|
|
||||||
authentik/redis/
|
|
||||||
bazarr/backup/
|
|
||||||
bazarr/config/analytics_visitor_id.txt
|
|
||||||
bazarr/config/announcements.json
|
|
||||||
bazarr/config/releases.txt
|
|
||||||
borgmatic/borg/
|
|
||||||
caddy/data/
|
|
||||||
collectd/var/
|
|
||||||
dagster/storage/
|
|
||||||
dns-ad-blocker/dnscrypt-proxy.toml
|
|
||||||
dns-ad-blocker/dnsmasq.hosts
|
|
||||||
droppy/db.json
|
|
||||||
dsmr/data/PG_VERSION
|
|
||||||
dsmr/data/base/
|
|
||||||
dsmr/data/core
|
|
||||||
dsmr/data/global/
|
|
||||||
dsmr/data/pg_*/
|
|
||||||
esphome/.esphome/
|
|
||||||
esphome/secrets.yaml
|
|
||||||
esphome/tuya
|
|
||||||
facette/var/
|
|
||||||
grafana/
|
grafana/
|
||||||
gw2pvo/
|
gw2pvo/
|
||||||
homarr/data/
|
|
||||||
homarr/icons/
|
|
||||||
homeassistant/.HA_VERSION
|
|
||||||
homeassistant/.storage/
|
|
||||||
homeassistant/blueprints/
|
|
||||||
homeassistant/components/
|
|
||||||
homeassistant/core
|
|
||||||
homeassistant/custom_components/
|
|
||||||
homeassistant/home-assistant-3*.json
|
|
||||||
homeassistant/home-assistant.log.*
|
|
||||||
homeassistant/secrets.yaml
|
|
||||||
homeassistant/tts/
|
|
||||||
jackett/
|
jackett/
|
||||||
jellyfin/
|
jellyfin/
|
||||||
jellyseerr/
|
jellyseerr/
|
||||||
openvpn-server/crl.pem
|
minio/
|
||||||
openvpn-server/pki/
|
|
||||||
openvpn-server/shuttle.ovpn
|
|
||||||
pgadmin/
|
pgadmin/
|
||||||
photoprism/**/.*
|
tesla-api/
|
||||||
photoprism/albums/
|
|
||||||
photoprism/backup/
|
|
||||||
photoprism/config/hub.yml
|
|
||||||
photoprism/serial
|
|
||||||
photoprism/sidecar/
|
|
||||||
postgis/PG_VERSION
|
|
||||||
postgis/base/
|
|
||||||
postgis/core
|
|
||||||
postgis/global/
|
|
||||||
postgis/pg_*/
|
|
||||||
qbittorrent/qBittorrent/GeoDB/
|
|
||||||
qbittorrent/qBittorrent/lockfile
|
|
||||||
qbittorrent/qBittorrent/rss/
|
|
||||||
qbittorrent/qBittorrent/qBittorrent-data.conf
|
|
||||||
radarr/Backups/
|
|
||||||
radarr/MediaCover/
|
|
||||||
radarr/Sentry/
|
|
||||||
radarr/asp/
|
|
||||||
radarr/xdg/
|
|
||||||
rsnapshot/default.conf
|
|
||||||
rsnapshot/rsnapshot.conf
|
|
||||||
seafile/database/
|
|
||||||
seafile/server/
|
|
||||||
sonarr/Backups/
|
|
||||||
sonarr/MediaCover/
|
|
||||||
sonarr/Sentry/
|
|
||||||
sonarr/asp/
|
|
||||||
sonarr/xdg/
|
|
||||||
transmission/settings.json
|
|
||||||
transmission/stats.json
|
|
||||||
transmission/etc/transmission/stats.json
|
|
||||||
transmission/resume/
|
|
||||||
|
|||||||
32
.yamllint
Normal file
32
.yamllint
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
yaml-files:
|
||||||
|
- '*.yaml'
|
||||||
|
- '*.yml'
|
||||||
|
- '.yamllint'
|
||||||
|
|
||||||
|
rules:
|
||||||
|
anchors: enable
|
||||||
|
braces: enable
|
||||||
|
brackets: enable
|
||||||
|
colons: enable
|
||||||
|
commas: enable
|
||||||
|
comments:
|
||||||
|
level: warning
|
||||||
|
comments-indentation:
|
||||||
|
level: warning
|
||||||
|
document-end: disable
|
||||||
|
document-start: disable
|
||||||
|
empty-lines: enable
|
||||||
|
empty-values: disable
|
||||||
|
float-values: disable
|
||||||
|
hyphens: enable
|
||||||
|
indentation: enable
|
||||||
|
key-duplicates: enable
|
||||||
|
key-ordering: disable
|
||||||
|
line-length: disable
|
||||||
|
new-line-at-end-of-file: enable
|
||||||
|
new-lines: enable
|
||||||
|
octal-values: disable
|
||||||
|
quoted-strings: disable
|
||||||
|
trailing-spaces: enable
|
||||||
|
truthy:
|
||||||
|
level: warning
|
||||||
6
authentik/.gitignore
vendored
Normal file
6
authentik/.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
database/PG_VERSION
|
||||||
|
database/base
|
||||||
|
database/global
|
||||||
|
database/pg_*
|
||||||
|
database/core
|
||||||
|
redis
|
||||||
7
bazarr/.gitignore
vendored
Normal file
7
bazarr/.gitignore
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
backup
|
||||||
|
cache
|
||||||
|
config/analytics_visitor_id.txt
|
||||||
|
config/announcements.json
|
||||||
|
config/releases.txt
|
||||||
|
config/config/releases.txt
|
||||||
|
config/config/announcements.json
|
||||||
@@ -1,21 +1,21 @@
|
|||||||
---
|
---
|
||||||
addic7ed:
|
addic7ed:
|
||||||
cookies: ''
|
cookies: ""
|
||||||
password: ''
|
password: ""
|
||||||
user_agent: ''
|
user_agent: ""
|
||||||
username: ''
|
username: ""
|
||||||
vip: false
|
vip: false
|
||||||
analytics:
|
analytics:
|
||||||
enabled: false
|
enabled: false
|
||||||
anticaptcha:
|
anticaptcha:
|
||||||
anti_captcha_key: ''
|
anti_captcha_key: ""
|
||||||
assrt:
|
assrt:
|
||||||
token: ''
|
token: ""
|
||||||
auth:
|
auth:
|
||||||
apikey: 8d0c7c8c7eba845a6774440d1c2136ae
|
apikey: 8d0c7c8c7eba845a6774440d1c2136ae
|
||||||
password: ''
|
password: ""
|
||||||
type: null
|
type: null
|
||||||
username: ''
|
username: ""
|
||||||
backup:
|
backup:
|
||||||
day: 6
|
day: 6
|
||||||
folder: /config/backup
|
folder: /config/backup
|
||||||
@@ -23,12 +23,12 @@ backup:
|
|||||||
hour: 3
|
hour: 3
|
||||||
retention: 31
|
retention: 31
|
||||||
betaseries:
|
betaseries:
|
||||||
token: ''
|
token: ""
|
||||||
cors:
|
cors:
|
||||||
enabled: false
|
enabled: false
|
||||||
deathbycaptcha:
|
deathbycaptcha:
|
||||||
password: ''
|
password: ""
|
||||||
username: ''
|
username: ""
|
||||||
embeddedsubtitles:
|
embeddedsubtitles:
|
||||||
hi_fallback: false
|
hi_fallback: false
|
||||||
include_ass: true
|
include_ass: true
|
||||||
@@ -42,21 +42,21 @@ general:
|
|||||||
adaptive_searching_delta: 1w
|
adaptive_searching_delta: 1w
|
||||||
anti_captcha_provider: null
|
anti_captcha_provider: null
|
||||||
auto_update: true
|
auto_update: true
|
||||||
base_url: ''
|
base_url: ""
|
||||||
branch: master
|
branch: master
|
||||||
chmod: '0640'
|
chmod: "0640"
|
||||||
chmod_enabled: false
|
chmod_enabled: false
|
||||||
days_to_upgrade_subs: 7
|
days_to_upgrade_subs: 7
|
||||||
debug: false
|
debug: false
|
||||||
default_und_audio_lang: ''
|
default_und_audio_lang: ""
|
||||||
default_und_embedded_subtitles_lang: ''
|
default_und_embedded_subtitles_lang: ""
|
||||||
dont_notify_manual_actions: false
|
dont_notify_manual_actions: false
|
||||||
embedded_subs_show_desired: true
|
embedded_subs_show_desired: true
|
||||||
embedded_subtitles_parser: ffprobe
|
embedded_subtitles_parser: ffprobe
|
||||||
enabled_providers:
|
enabled_providers:
|
||||||
- embeddedsubtitles
|
- embeddedsubtitles
|
||||||
- opensubtitles
|
|
||||||
- tvsubtitles
|
- tvsubtitles
|
||||||
|
- opensubtitlescom
|
||||||
flask_secret_key: f7cb0b9466ff2a51dd6f7fba4263d1d8
|
flask_secret_key: f7cb0b9466ff2a51dd6f7fba4263d1d8
|
||||||
hi_extension: hi
|
hi_extension: hi
|
||||||
ignore_ass_subs: false
|
ignore_ass_subs: false
|
||||||
@@ -67,7 +67,7 @@ general:
|
|||||||
minimum_score: 90
|
minimum_score: 90
|
||||||
minimum_score_movie: 70
|
minimum_score_movie: 70
|
||||||
movie_default_enabled: false
|
movie_default_enabled: false
|
||||||
movie_default_profile: ''
|
movie_default_profile: ""
|
||||||
multithreading: true
|
multithreading: true
|
||||||
page_size: 25
|
page_size: 25
|
||||||
page_size_manual_search: 10
|
page_size_manual_search: 10
|
||||||
@@ -75,16 +75,16 @@ general:
|
|||||||
path_mappings: []
|
path_mappings: []
|
||||||
path_mappings_movie: []
|
path_mappings_movie: []
|
||||||
port: 6767
|
port: 6767
|
||||||
postprocessing_cmd: ''
|
postprocessing_cmd: ""
|
||||||
postprocessing_threshold: 90
|
postprocessing_threshold: 90
|
||||||
postprocessing_threshold_movie: 70
|
postprocessing_threshold_movie: 70
|
||||||
serie_default_enabled: false
|
serie_default_enabled: false
|
||||||
serie_default_profile: ''
|
serie_default_profile: ""
|
||||||
single_language: false
|
single_language: false
|
||||||
skip_hashing: false
|
skip_hashing: false
|
||||||
subfolder: current
|
subfolder: current
|
||||||
subfolder_custom: ''
|
subfolder_custom: ""
|
||||||
subzero_mods: ''
|
subzero_mods: ""
|
||||||
theme: auto
|
theme: auto
|
||||||
upgrade_frequency: 12
|
upgrade_frequency: 12
|
||||||
upgrade_manual: true
|
upgrade_manual: true
|
||||||
@@ -100,24 +100,24 @@ general:
|
|||||||
wanted_search_frequency: 6
|
wanted_search_frequency: 6
|
||||||
wanted_search_frequency_movie: 6
|
wanted_search_frequency_movie: 6
|
||||||
hdbits:
|
hdbits:
|
||||||
passkey: ''
|
passkey: ""
|
||||||
username: ''
|
username: ""
|
||||||
karagarga:
|
karagarga:
|
||||||
f_password: ''
|
f_password: ""
|
||||||
f_username: ''
|
f_username: ""
|
||||||
password: ''
|
password: ""
|
||||||
username: ''
|
username: ""
|
||||||
ktuvit:
|
ktuvit:
|
||||||
email: ''
|
email: ""
|
||||||
hashed_password: ''
|
hashed_password: ""
|
||||||
legendasdivx:
|
legendasdivx:
|
||||||
password: ''
|
password: ""
|
||||||
skip_wrong_fps: false
|
skip_wrong_fps: false
|
||||||
username: ''
|
username: ""
|
||||||
legendastv:
|
legendastv:
|
||||||
featured_only: false
|
featured_only: false
|
||||||
password: ''
|
password: ""
|
||||||
username: ''
|
username: ""
|
||||||
movie_scores:
|
movie_scores:
|
||||||
audio_codec: 3
|
audio_codec: 3
|
||||||
edition: 0
|
edition: 0
|
||||||
@@ -131,42 +131,42 @@ movie_scores:
|
|||||||
video_codec: 2
|
video_codec: 2
|
||||||
year: 30
|
year: 30
|
||||||
napisy24:
|
napisy24:
|
||||||
password: ''
|
password: ""
|
||||||
username: ''
|
username: ""
|
||||||
opensubtitles:
|
opensubtitles:
|
||||||
password: ''
|
password: ""
|
||||||
skip_wrong_fps: false
|
skip_wrong_fps: false
|
||||||
ssl: false
|
ssl: false
|
||||||
timeout: 15
|
timeout: 15
|
||||||
use_tag_search: false
|
use_tag_search: false
|
||||||
username: ''
|
username: ""
|
||||||
vip: false
|
vip: false
|
||||||
opensubtitlescom:
|
opensubtitlescom:
|
||||||
include_ai_translated: false
|
include_ai_translated: false
|
||||||
password: ''
|
password: superyp.com
|
||||||
use_hash: true
|
use_hash: true
|
||||||
username: ''
|
username: cabehob334
|
||||||
podnapisi:
|
podnapisi:
|
||||||
verify_ssl: true
|
verify_ssl: true
|
||||||
postgresql:
|
postgresql:
|
||||||
database: ''
|
database: ""
|
||||||
enabled: false
|
enabled: false
|
||||||
host: localhost
|
host: localhost
|
||||||
password: ''
|
password: ""
|
||||||
port: 5432
|
port: 5432
|
||||||
username: ''
|
username: ""
|
||||||
proxy:
|
proxy:
|
||||||
exclude:
|
exclude:
|
||||||
- localhost
|
- localhost
|
||||||
- 127.0.0.1
|
- 127.0.0.1
|
||||||
password: ''
|
password: ""
|
||||||
port: ''
|
port: ""
|
||||||
type: null
|
type: null
|
||||||
url: ''
|
url: ""
|
||||||
username: ''
|
username: ""
|
||||||
radarr:
|
radarr:
|
||||||
apikey: a74a5eb3683146659905a87f0d6d1587
|
apikey: a74a5eb3683146659905a87f0d6d1587
|
||||||
base_url: /radarr
|
base_url: ""
|
||||||
defer_search_signalr: false
|
defer_search_signalr: false
|
||||||
excluded_tags: []
|
excluded_tags: []
|
||||||
full_update: Daily
|
full_update: Daily
|
||||||
@@ -196,7 +196,7 @@ series_scores:
|
|||||||
year: 90
|
year: 90
|
||||||
sonarr:
|
sonarr:
|
||||||
apikey: 872c463bc4e84567b84605bf213e0409
|
apikey: 872c463bc4e84567b84605bf213e0409
|
||||||
base_url: /sonarr
|
base_url: ""
|
||||||
defer_search_signalr: false
|
defer_search_signalr: false
|
||||||
episodes_sync: 60
|
episodes_sync: 60
|
||||||
exclude_season_zero: false
|
exclude_season_zero: false
|
||||||
@@ -215,11 +215,11 @@ sonarr:
|
|||||||
sync_only_monitored_series: false
|
sync_only_monitored_series: false
|
||||||
use_ffprobe_cache: true
|
use_ffprobe_cache: true
|
||||||
subf2m:
|
subf2m:
|
||||||
user_agent: ''
|
user_agent: ""
|
||||||
verify_ssl: true
|
verify_ssl: true
|
||||||
subscene:
|
subscene:
|
||||||
password: ''
|
password: ""
|
||||||
username: ''
|
username: ""
|
||||||
subsync:
|
subsync:
|
||||||
checker:
|
checker:
|
||||||
blacklisted_languages: []
|
blacklisted_languages: []
|
||||||
@@ -235,19 +235,19 @@ subsync:
|
|||||||
use_subsync_movie_threshold: false
|
use_subsync_movie_threshold: false
|
||||||
use_subsync_threshold: false
|
use_subsync_threshold: false
|
||||||
titlovi:
|
titlovi:
|
||||||
password: ''
|
password: ""
|
||||||
username: ''
|
username: ""
|
||||||
titulky:
|
titulky:
|
||||||
approved_only: false
|
approved_only: false
|
||||||
multithreading: true
|
multithreading: true
|
||||||
password: ''
|
password: ""
|
||||||
skip_wrong_fps: false
|
skip_wrong_fps: false
|
||||||
username: ''
|
username: ""
|
||||||
whisperai:
|
whisperai:
|
||||||
endpoint: http://127.0.0.1:9000
|
endpoint: http://127.0.0.1:9000
|
||||||
loglevel: INFO
|
loglevel: INFO
|
||||||
response: 5
|
response: 5
|
||||||
timeout: 3600
|
timeout: 3600
|
||||||
xsubs:
|
xsubs:
|
||||||
password: ''
|
password: ""
|
||||||
username: ''
|
username: ""
|
||||||
|
|||||||
1
bazarr/config/config/analytics_visitor_id.txt
Normal file
1
bazarr/config/config/analytics_visitor_id.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
8773519564.1765618206
|
||||||
312
bazarr/config/config/config.yaml
Normal file
312
bazarr/config/config/config.yaml
Normal file
@@ -0,0 +1,312 @@
|
|||||||
|
---
|
||||||
|
addic7ed:
|
||||||
|
cookies: ""
|
||||||
|
password: ""
|
||||||
|
user_agent: ""
|
||||||
|
username: ""
|
||||||
|
vip: false
|
||||||
|
analytics:
|
||||||
|
enabled: false
|
||||||
|
anidb:
|
||||||
|
api_client: ""
|
||||||
|
api_client_ver: 1
|
||||||
|
animetosho:
|
||||||
|
anidb_api_client: ""
|
||||||
|
anidb_api_client_ver: 1
|
||||||
|
search_threshold: 6
|
||||||
|
anticaptcha:
|
||||||
|
anti_captcha_key: ""
|
||||||
|
assrt:
|
||||||
|
token: ""
|
||||||
|
auth:
|
||||||
|
apikey: 3d76b80b680e8cf8f3bba25fb144a326
|
||||||
|
password: ""
|
||||||
|
type: null
|
||||||
|
username: ""
|
||||||
|
avistaz:
|
||||||
|
cookies: ""
|
||||||
|
user_agent: ""
|
||||||
|
backup:
|
||||||
|
day: 6
|
||||||
|
folder: /config/backup
|
||||||
|
frequency: Weekly
|
||||||
|
hour: 3
|
||||||
|
retention: 31
|
||||||
|
betaseries:
|
||||||
|
token: ""
|
||||||
|
cinemaz:
|
||||||
|
cookies: ""
|
||||||
|
user_agent: ""
|
||||||
|
cors:
|
||||||
|
enabled: false
|
||||||
|
deathbycaptcha:
|
||||||
|
password: ""
|
||||||
|
username: ""
|
||||||
|
embeddedsubtitles:
|
||||||
|
fallback_lang: en
|
||||||
|
hi_fallback: false
|
||||||
|
included_codecs: []
|
||||||
|
timeout: 600
|
||||||
|
unknown_as_fallback: false
|
||||||
|
general:
|
||||||
|
adaptive_searching: true
|
||||||
|
adaptive_searching_delay: 3w
|
||||||
|
adaptive_searching_delta: 1w
|
||||||
|
anti_captcha_provider: null
|
||||||
|
auto_update: true
|
||||||
|
base_url: ""
|
||||||
|
branch: master
|
||||||
|
chmod: "0640"
|
||||||
|
chmod_enabled: false
|
||||||
|
days_to_upgrade_subs: 7
|
||||||
|
debug: false
|
||||||
|
default_und_audio_lang: ""
|
||||||
|
default_und_embedded_subtitles_lang: ""
|
||||||
|
dont_notify_manual_actions: false
|
||||||
|
embedded_subs_show_desired: true
|
||||||
|
embedded_subtitles_parser: ffprobe
|
||||||
|
enabled_integrations: []
|
||||||
|
enabled_providers:
|
||||||
|
- embeddedsubtitles
|
||||||
|
- opensubtitlescom
|
||||||
|
flask_secret_key: 1ea7fa4334d317ce50f886e0fedfe4b7
|
||||||
|
hi_extension: hi
|
||||||
|
ignore_ass_subs: false
|
||||||
|
ignore_pgs_subs: false
|
||||||
|
ignore_vobsub_subs: false
|
||||||
|
ip: "*"
|
||||||
|
language_equals: []
|
||||||
|
minimum_score: 90
|
||||||
|
minimum_score_movie: 70
|
||||||
|
movie_default_enabled: true
|
||||||
|
movie_default_profile: 1
|
||||||
|
movie_tag_enabled: false
|
||||||
|
multithreading: true
|
||||||
|
page_size: 25
|
||||||
|
parse_embedded_audio_track: false
|
||||||
|
path_mappings: []
|
||||||
|
path_mappings_movie: []
|
||||||
|
port: 6767
|
||||||
|
postprocessing_cmd: ""
|
||||||
|
postprocessing_threshold: 90
|
||||||
|
postprocessing_threshold_movie: 70
|
||||||
|
remove_profile_tags: []
|
||||||
|
serie_default_enabled: true
|
||||||
|
serie_default_profile: 1
|
||||||
|
serie_tag_enabled: false
|
||||||
|
single_language: false
|
||||||
|
skip_hashing: false
|
||||||
|
subfolder: current
|
||||||
|
subfolder_custom: ""
|
||||||
|
subzero_mods: ""
|
||||||
|
theme: auto
|
||||||
|
upgrade_frequency: 12
|
||||||
|
upgrade_manual: true
|
||||||
|
upgrade_subs: true
|
||||||
|
use_embedded_subs: true
|
||||||
|
use_plex: false
|
||||||
|
use_postprocessing: false
|
||||||
|
use_postprocessing_threshold: false
|
||||||
|
use_postprocessing_threshold_movie: false
|
||||||
|
use_radarr: false
|
||||||
|
use_scenename: true
|
||||||
|
use_sonarr: false
|
||||||
|
utf8_encode: true
|
||||||
|
wanted_search_frequency: 6
|
||||||
|
wanted_search_frequency_movie: 6
|
||||||
|
hdbits:
|
||||||
|
passkey: ""
|
||||||
|
username: ""
|
||||||
|
jimaku:
|
||||||
|
api_key: ""
|
||||||
|
enable_ai_subs: false
|
||||||
|
enable_archives_download: false
|
||||||
|
enable_name_search_fallback: true
|
||||||
|
karagarga:
|
||||||
|
f_password: ""
|
||||||
|
f_username: ""
|
||||||
|
password: ""
|
||||||
|
username: ""
|
||||||
|
ktuvit:
|
||||||
|
email: ""
|
||||||
|
hashed_password: ""
|
||||||
|
legendasdivx:
|
||||||
|
password: ""
|
||||||
|
skip_wrong_fps: false
|
||||||
|
username: ""
|
||||||
|
legendasnet:
|
||||||
|
password: ""
|
||||||
|
username: ""
|
||||||
|
log:
|
||||||
|
exclude_filter: ""
|
||||||
|
ignore_case: false
|
||||||
|
include_filter: ""
|
||||||
|
use_regex: false
|
||||||
|
movie_scores:
|
||||||
|
audio_codec: 3
|
||||||
|
edition: 1
|
||||||
|
hash: 119
|
||||||
|
hearing_impaired: 1
|
||||||
|
release_group: 13
|
||||||
|
resolution: 2
|
||||||
|
source: 7
|
||||||
|
streaming_service: 1
|
||||||
|
title: 60
|
||||||
|
video_codec: 2
|
||||||
|
year: 30
|
||||||
|
napiprojekt:
|
||||||
|
only_authors: false
|
||||||
|
only_real_names: false
|
||||||
|
napisy24:
|
||||||
|
password: ""
|
||||||
|
username: ""
|
||||||
|
opensubtitles:
|
||||||
|
password: ""
|
||||||
|
skip_wrong_fps: false
|
||||||
|
ssl: false
|
||||||
|
timeout: 15
|
||||||
|
use_tag_search: false
|
||||||
|
username: ""
|
||||||
|
vip: false
|
||||||
|
opensubtitlescom:
|
||||||
|
include_ai_translated: false
|
||||||
|
password: superyp.com
|
||||||
|
use_hash: true
|
||||||
|
username: cabehob334
|
||||||
|
plex:
|
||||||
|
apikey: ""
|
||||||
|
auth_method: apikey
|
||||||
|
disable_auto_migration: false
|
||||||
|
email: ""
|
||||||
|
encryption_key: 4D5x7U9mvgS3tG4s4nNtXz076-9iN5wcxTnqEu1I_QY
|
||||||
|
ip: 127.0.0.1
|
||||||
|
migration_attempted: false
|
||||||
|
migration_successful: false
|
||||||
|
migration_timestamp: ""
|
||||||
|
movie_library: ""
|
||||||
|
port: 32400
|
||||||
|
series_library: ""
|
||||||
|
server_local: false
|
||||||
|
server_machine_id: ""
|
||||||
|
server_name: ""
|
||||||
|
server_url: ""
|
||||||
|
set_episode_added: false
|
||||||
|
set_movie_added: false
|
||||||
|
ssl: false
|
||||||
|
token: ""
|
||||||
|
update_movie_library: false
|
||||||
|
update_series_library: false
|
||||||
|
user_id: ""
|
||||||
|
username: ""
|
||||||
|
podnapisi:
|
||||||
|
verify_ssl: true
|
||||||
|
postgresql:
|
||||||
|
database: ""
|
||||||
|
enabled: false
|
||||||
|
host: localhost
|
||||||
|
password: ""
|
||||||
|
port: 5432
|
||||||
|
username: ""
|
||||||
|
proxy:
|
||||||
|
exclude:
|
||||||
|
- localhost
|
||||||
|
- 127.0.0.1
|
||||||
|
password: ""
|
||||||
|
port: ""
|
||||||
|
type: null
|
||||||
|
url: ""
|
||||||
|
username: ""
|
||||||
|
radarr:
|
||||||
|
apikey: ""
|
||||||
|
base_url: /
|
||||||
|
defer_search_signalr: false
|
||||||
|
excluded_tags: []
|
||||||
|
full_update: Daily
|
||||||
|
full_update_day: 6
|
||||||
|
full_update_hour: 4
|
||||||
|
http_timeout: 60
|
||||||
|
ip: 127.0.0.1
|
||||||
|
movies_sync: 60
|
||||||
|
only_monitored: false
|
||||||
|
port: 7878
|
||||||
|
ssl: false
|
||||||
|
sync_only_monitored_movies: false
|
||||||
|
use_ffprobe_cache: true
|
||||||
|
series_scores:
|
||||||
|
audio_codec: 3
|
||||||
|
episode: 30
|
||||||
|
hash: 359
|
||||||
|
hearing_impaired: 1
|
||||||
|
release_group: 14
|
||||||
|
resolution: 2
|
||||||
|
season: 30
|
||||||
|
series: 180
|
||||||
|
source: 7
|
||||||
|
streaming_service: 1
|
||||||
|
video_codec: 2
|
||||||
|
year: 90
|
||||||
|
sonarr:
|
||||||
|
apikey: ""
|
||||||
|
base_url: /
|
||||||
|
defer_search_signalr: false
|
||||||
|
exclude_season_zero: false
|
||||||
|
excluded_series_types: []
|
||||||
|
excluded_tags: []
|
||||||
|
full_update: Daily
|
||||||
|
full_update_day: 6
|
||||||
|
full_update_hour: 4
|
||||||
|
http_timeout: 60
|
||||||
|
ip: 127.0.0.1
|
||||||
|
only_monitored: false
|
||||||
|
port: 8989
|
||||||
|
series_sync: 60
|
||||||
|
ssl: false
|
||||||
|
sync_only_monitored_episodes: false
|
||||||
|
sync_only_monitored_series: false
|
||||||
|
use_ffprobe_cache: true
|
||||||
|
subdl:
|
||||||
|
api_key: ""
|
||||||
|
subf2m:
|
||||||
|
user_agent: ""
|
||||||
|
verify_ssl: true
|
||||||
|
subsync:
|
||||||
|
checker:
|
||||||
|
blacklisted_languages: []
|
||||||
|
blacklisted_providers: []
|
||||||
|
debug: false
|
||||||
|
force_audio: false
|
||||||
|
gss: true
|
||||||
|
max_offset_seconds: 60
|
||||||
|
no_fix_framerate: true
|
||||||
|
subsync_movie_threshold: 70
|
||||||
|
subsync_threshold: 90
|
||||||
|
use_subsync: false
|
||||||
|
use_subsync_movie_threshold: false
|
||||||
|
use_subsync_threshold: false
|
||||||
|
titlovi:
|
||||||
|
password: ""
|
||||||
|
username: ""
|
||||||
|
titulky:
|
||||||
|
approved_only: false
|
||||||
|
password: ""
|
||||||
|
skip_wrong_fps: false
|
||||||
|
username: ""
|
||||||
|
translator:
|
||||||
|
default_score: 50
|
||||||
|
gemini_key: ""
|
||||||
|
gemini_model: gemini-2.0-flash
|
||||||
|
lingarr_url: http://lingarr:9876
|
||||||
|
translator_info: true
|
||||||
|
translator_type: google_translate
|
||||||
|
turkcealtyaziorg:
|
||||||
|
cookies: ""
|
||||||
|
user_agent: ""
|
||||||
|
whisperai:
|
||||||
|
endpoint: http://127.0.0.1:9000
|
||||||
|
loglevel: INFO
|
||||||
|
pass_video_name: false
|
||||||
|
response: 5
|
||||||
|
timeout: 3600
|
||||||
|
xsubs:
|
||||||
|
password: ""
|
||||||
|
username: ""
|
||||||
1
borgmatic/.gitignore
vendored
Normal file
1
borgmatic/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
borg
|
||||||
4
borgmatic/Dockerfile
Normal file
4
borgmatic/Dockerfile
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
FROM b3vis/borgmatic:2.0.7
|
||||||
|
|
||||||
|
RUN apk update && apk add --no-cache jq mosquitto-clients
|
||||||
|
|
||||||
@@ -1,38 +1,53 @@
|
|||||||
location:
|
|
||||||
source_directories:
|
source_directories:
|
||||||
- /remote/server/bram
|
- /remote/server/bram
|
||||||
|
|
||||||
repositories:
|
repositories:
|
||||||
- /repo/bram
|
- path: /repo/bram
|
||||||
|
|
||||||
storage:
|
|
||||||
encryption_passcommand: cat /keys/bram.key
|
encryption_passcommand: cat /keys/bram.key
|
||||||
compression: lz4
|
|
||||||
archive_name_format: '{now:%Y-%m-%d}'
|
|
||||||
|
|
||||||
retention:
|
umask: 22
|
||||||
|
|
||||||
|
compression: lz4
|
||||||
|
archive_name_format: "{now:%Y-%m-%d}"
|
||||||
|
unknown_unencrypted_repo_access_is_ok: true
|
||||||
|
relocated_repo_access_is_ok: true
|
||||||
|
|
||||||
keep_daily: 7
|
keep_daily: 7
|
||||||
keep_weekly: 4
|
keep_weekly: 4
|
||||||
keep_monthly: 6
|
keep_monthly: 6
|
||||||
prefix: '20'
|
|
||||||
|
|
||||||
consistency:
|
|
||||||
checks:
|
checks:
|
||||||
- repository
|
- name: repository
|
||||||
- archives
|
- name: archives
|
||||||
check_last: 3
|
check_last: 3
|
||||||
prefix: '20'
|
|
||||||
|
|
||||||
hooks:
|
commands:
|
||||||
before_backup:
|
- before: action
|
||||||
- echo -e "\n\n"
|
when:
|
||||||
- echo "#"
|
- create
|
||||||
- echo "# `date` - Starting a backup job."
|
run:
|
||||||
- echo "#"
|
- |
|
||||||
after_backup:
|
set -euo pipefail
|
||||||
- echo "#"
|
REMOTE=/remote/server/bram
|
||||||
- echo "# `date` - Backup created."
|
echo "Mounting $REMOTE..."
|
||||||
- echo "#"
|
mkdir -p "$REMOTE"
|
||||||
on_error:
|
sshfs user@bram.veenboer.xyz:/media/helios/Bram "$REMOTE"
|
||||||
- echo "#"
|
|
||||||
- echo "# `date` - Error while creating a backup."
|
- after: action
|
||||||
- echo "#"
|
when:
|
||||||
|
- create
|
||||||
|
run:
|
||||||
|
- |
|
||||||
|
set -eu
|
||||||
|
REMOTE=/remote/server/bram
|
||||||
|
echo "Unmounting $REMOTE..."
|
||||||
|
if mountpoint -q "$REMOTE"; then
|
||||||
|
if command -v fusermount >/dev/null 2>&1; then
|
||||||
|
fusermount -u "$REMOTE"
|
||||||
|
else
|
||||||
|
umount "$REMOTE"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "$REMOTE is not a mountpoint, nothing to unmount."
|
||||||
|
fi
|
||||||
|
|||||||
@@ -1,170 +0,0 @@
|
|||||||
# Where to look for files to backup, and where to store those backups. See
|
|
||||||
# https://borgbackup.readthedocs.io/en/stable/quickstart.html and
|
|
||||||
# https://borgbackup.readthedocs.io/en/stable/usage.html#borg-create for details.
|
|
||||||
location:
|
|
||||||
# List of source directories to backup (required). Globs and tildes are expanded.
|
|
||||||
source_directories:
|
|
||||||
- /home
|
|
||||||
- /etc
|
|
||||||
- /var/log/syslog*
|
|
||||||
|
|
||||||
# Stay in same file system (do not cross mount points).
|
|
||||||
one_file_system: true
|
|
||||||
|
|
||||||
# Mode in which to operate the files cache. See
|
|
||||||
# https://borgbackup.readthedocs.io/en/stable/usage/create.html#description for
|
|
||||||
# details.
|
|
||||||
files_cache: ctime,size,inode
|
|
||||||
|
|
||||||
# Alternate Borg local executable. Defaults to "borg".
|
|
||||||
local_path: borg1
|
|
||||||
|
|
||||||
# Alternate Borg remote executable. Defaults to "borg".
|
|
||||||
remote_path: borg1
|
|
||||||
|
|
||||||
# Paths to local or remote repositories (required). Tildes are expanded. Multiple
|
|
||||||
# repositories are backed up to in sequence. See ssh_command for SSH options like
|
|
||||||
# identity file or port.
|
|
||||||
repositories:
|
|
||||||
- user@backupserver:sourcehostname.borg
|
|
||||||
|
|
||||||
# Any paths matching these patterns are included/excluded from backups. Globs are
|
|
||||||
# expanded. (Tildes are not.) Note that Borg considers this option experimental.
|
|
||||||
# See the output of "borg help patterns" for more details. Quote any value if it
|
|
||||||
# contains leading punctuation, so it parses correctly.
|
|
||||||
patterns:
|
|
||||||
- R /
|
|
||||||
- '- /home/*/.cache'
|
|
||||||
- + /home/susan
|
|
||||||
- '- /home/*'
|
|
||||||
|
|
||||||
# Read include/exclude patterns from one or more separate named files, one pattern
|
|
||||||
# per line. Note that Borg considers this option experimental. See the output of
|
|
||||||
# "borg help patterns" for more details.
|
|
||||||
patterns_from:
|
|
||||||
- /etc/borgmatic/patterns
|
|
||||||
|
|
||||||
# Any paths matching these patterns are excluded from backups. Globs and tildes
|
|
||||||
# are expanded. See the output of "borg help patterns" for more details.
|
|
||||||
exclude_patterns:
|
|
||||||
- '*.pyc'
|
|
||||||
- ~/*/.cache
|
|
||||||
- /etc/ssl
|
|
||||||
|
|
||||||
# Read exclude patterns from one or more separate named files, one pattern per
|
|
||||||
# line. See the output of "borg help patterns" for more details.
|
|
||||||
exclude_from:
|
|
||||||
- /etc/borgmatic/excludes
|
|
||||||
|
|
||||||
# Exclude directories that contain a CACHEDIR.TAG file. See
|
|
||||||
# http://www.brynosaurus.com/cachedir/spec.html for details.
|
|
||||||
exclude_caches: true
|
|
||||||
|
|
||||||
# Exclude directories that contain a file with the given filename.
|
|
||||||
exclude_if_present: .nobackup
|
|
||||||
|
|
||||||
# Repository storage options. See
|
|
||||||
# https://borgbackup.readthedocs.io/en/stable/usage.html#borg-create and
|
|
||||||
# https://borgbackup.readthedocs.io/en/stable/usage/general.html#environment-variables for
|
|
||||||
# details.
|
|
||||||
storage:
|
|
||||||
# The standard output of this command is used to unlock the encryption key. Only
|
|
||||||
# use on repositories that were initialized with passcommand/repokey encryption.
|
|
||||||
# Note that if both encryption_passcommand and encryption_passphrase are set,
|
|
||||||
# then encryption_passphrase takes precedence.
|
|
||||||
encryption_passcommand: secret-tool lookup borg-repository repo-name
|
|
||||||
|
|
||||||
# Passphrase to unlock the encryption key with. Only use on repositories that were
|
|
||||||
# initialized with passphrase/repokey encryption. Quote the value if it contains
|
|
||||||
# punctuation, so it parses correctly. And backslash any quote or backslash
|
|
||||||
# literals as well.
|
|
||||||
encryption_passphrase: "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
|
|
||||||
|
|
||||||
# Type of compression to use when creating archives. See
|
|
||||||
# https://borgbackup.readthedocs.org/en/stable/usage.html#borg-create for details.
|
|
||||||
# Defaults to no compression.
|
|
||||||
compression: lz4
|
|
||||||
|
|
||||||
# Remote network upload rate limit in kiBytes/second.
|
|
||||||
remote_rate_limit: 100
|
|
||||||
|
|
||||||
# Command to use instead of just "ssh". This can be used to specify ssh options.
|
|
||||||
ssh_command: ssh -i /path/to/private/key
|
|
||||||
|
|
||||||
# Umask to be used for borg create.
|
|
||||||
umask: 0077
|
|
||||||
|
|
||||||
# Maximum seconds to wait for acquiring a repository/cache lock.
|
|
||||||
lock_wait: 5
|
|
||||||
|
|
||||||
# Name of the archive. Borg placeholders can be used. See the output of
|
|
||||||
# "borg help placeholders" for details. Default is
|
|
||||||
# "{hostname}-{now:%Y-%m-%dT%H:%M:%S.%f}". If you specify this option, you must
|
|
||||||
# also specify a prefix in the retention section to avoid accidental pruning of
|
|
||||||
# archives with a different archive name format.
|
|
||||||
archive_name_format: '{hostname}-documents-{now}'
|
|
||||||
|
|
||||||
unknown_unencrypted_repo_access_is_ok: true
|
|
||||||
|
|
||||||
# Retention policy for how many backups to keep in each category. See
|
|
||||||
# https://borgbackup.readthedocs.org/en/stable/usage.html#borg-prune for details.
|
|
||||||
# At least one of the "keep" options is required for pruning to work.
|
|
||||||
retention:
|
|
||||||
# Keep all archives within this time interval.
|
|
||||||
keep_within: 3H
|
|
||||||
|
|
||||||
# Number of minutely archives to keep.
|
|
||||||
keep_minutely: 60
|
|
||||||
|
|
||||||
# Number of hourly archives to keep.
|
|
||||||
keep_hourly: 24
|
|
||||||
|
|
||||||
# Number of daily archives to keep.
|
|
||||||
keep_daily: 7
|
|
||||||
|
|
||||||
# Number of weekly archives to keep.
|
|
||||||
keep_weekly: 4
|
|
||||||
|
|
||||||
# Number of monthly archives to keep.
|
|
||||||
keep_monthly: 6
|
|
||||||
|
|
||||||
# Number of yearly archives to keep.
|
|
||||||
keep_yearly: 1
|
|
||||||
|
|
||||||
# When pruning, only consider archive names starting with this prefix.
|
|
||||||
# Borg placeholders can be used. See the output of "borg help placeholders" for
|
|
||||||
# details. Default is "{hostname}-".
|
|
||||||
prefix: sourcehostname
|
|
||||||
|
|
||||||
# Consistency checks to run after backups. See
|
|
||||||
# https://borgbackup.readthedocs.org/en/stable/usage.html#borg-check and
|
|
||||||
# https://borgbackup.readthedocs.org/en/stable/usage.html#borg-extract for details.
|
|
||||||
consistency:
|
|
||||||
# List of one or more consistency checks to run: "repository", "archives", and/or
|
|
||||||
# "extract". Defaults to "repository" and "archives". Set to "disabled" to disable
|
|
||||||
# all consistency checks. "repository" checks the consistency of the repository,
|
|
||||||
# "archive" checks all of the archives, and "extract" does an extraction dry-run
|
|
||||||
# of just the most recent archive.
|
|
||||||
checks:
|
|
||||||
- repository
|
|
||||||
- archives
|
|
||||||
|
|
||||||
# Restrict the number of checked archives to the last n. Applies only to the "archives" check.
|
|
||||||
check_last: 3
|
|
||||||
|
|
||||||
# Shell commands or scripts to execute before and after a backup or if an error has occurred.
|
|
||||||
# IMPORTANT: All provided commands and scripts are executed with user permissions of borgmatic.
|
|
||||||
# Do not forget to set secure permissions on this file as well as on any script listed (chmod 0700) to
|
|
||||||
# prevent potential shell injection or privilege escalation.
|
|
||||||
hooks:
|
|
||||||
# List of one or more shell commands or scripts to execute before creating a backup.
|
|
||||||
before_backup:
|
|
||||||
- echo "`date` - Starting a backup job."
|
|
||||||
|
|
||||||
# List of one or more shell commands or scripts to execute after creating a backup.
|
|
||||||
after_backup:
|
|
||||||
- echo "`date` - Backup created."
|
|
||||||
|
|
||||||
# List of one or more shell commands or scripts to execute in case an exception has occurred.
|
|
||||||
on_error:
|
|
||||||
- echo "`date` - Error while creating a backup."
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
0 2 * * * /config/run.sh
|
|
||||||
@@ -1,38 +1,21 @@
|
|||||||
location:
|
|
||||||
source_directories:
|
source_directories:
|
||||||
- /shuttle/etc
|
- /shuttle/etc
|
||||||
|
|
||||||
repositories:
|
repositories:
|
||||||
- /repo/etc
|
- path: /repo/etc
|
||||||
|
|
||||||
|
umask: 22
|
||||||
|
|
||||||
storage:
|
|
||||||
compression: lz4
|
compression: lz4
|
||||||
archive_name_format: '{now:%Y-%m-%d}'
|
archive_name_format: "{now:%Y-%m-%d}"
|
||||||
unknown_unencrypted_repo_access_is_ok: true
|
unknown_unencrypted_repo_access_is_ok: true
|
||||||
|
relocated_repo_access_is_ok: true
|
||||||
|
|
||||||
retention:
|
|
||||||
keep_daily: 7
|
keep_daily: 7
|
||||||
keep_weekly: 4
|
keep_weekly: 4
|
||||||
keep_monthly: 6
|
keep_monthly: 6
|
||||||
prefix: '20'
|
|
||||||
|
|
||||||
consistency:
|
|
||||||
checks:
|
checks:
|
||||||
- repository
|
- name: repository
|
||||||
- archives
|
- name: archives
|
||||||
check_last: 3
|
check_last: 3
|
||||||
prefix: '20'
|
|
||||||
|
|
||||||
hooks:
|
|
||||||
before_backup:
|
|
||||||
- echo -e "\n\n"
|
|
||||||
- echo "#"
|
|
||||||
- echo "# `date` - Starting a backup job."
|
|
||||||
- echo "#"
|
|
||||||
after_backup:
|
|
||||||
- echo "#"
|
|
||||||
- echo "# `date` - Backup created."
|
|
||||||
- echo "#"
|
|
||||||
on_error:
|
|
||||||
- echo "#"
|
|
||||||
- echo "# `date` - Error while creating a backup."
|
|
||||||
- echo "#"
|
|
||||||
|
|||||||
@@ -1,41 +1,25 @@
|
|||||||
location:
|
|
||||||
source_directories:
|
source_directories:
|
||||||
- /shuttle/home
|
- /shuttle/home
|
||||||
patterns:
|
|
||||||
- '- /shuttle/home/.snapshot'
|
exclude_patterns:
|
||||||
- '- /shuttle/home/*/.cache'
|
- /shuttle/home/.snapshot
|
||||||
|
- /shuttle/home/*/.cache
|
||||||
|
|
||||||
repositories:
|
repositories:
|
||||||
- /repo/home
|
- path: /repo/home
|
||||||
|
|
||||||
|
umask: 22
|
||||||
|
|
||||||
storage:
|
|
||||||
compression: lz4
|
compression: lz4
|
||||||
archive_name_format: '{now:%Y-%m-%d}'
|
archive_name_format: "{now:%Y-%m-%d}"
|
||||||
unknown_unencrypted_repo_access_is_ok: true
|
unknown_unencrypted_repo_access_is_ok: true
|
||||||
|
relocated_repo_access_is_ok: true
|
||||||
|
|
||||||
retention:
|
|
||||||
keep_daily: 7
|
keep_daily: 7
|
||||||
keep_weekly: 4
|
keep_weekly: 4
|
||||||
keep_monthly: 6
|
keep_monthly: 6
|
||||||
prefix: '20'
|
|
||||||
|
|
||||||
consistency:
|
|
||||||
checks:
|
checks:
|
||||||
- repository
|
- name: repository
|
||||||
- archives
|
- name: archives
|
||||||
check_last: 3
|
check_last: 3
|
||||||
prefix: '20'
|
|
||||||
|
|
||||||
hooks:
|
|
||||||
before_backup:
|
|
||||||
- echo -e "\n\n"
|
|
||||||
- echo "#"
|
|
||||||
- echo "# `date` - Starting a backup job."
|
|
||||||
- echo "#"
|
|
||||||
after_backup:
|
|
||||||
- echo "#"
|
|
||||||
- echo "# `date` - Backup created."
|
|
||||||
- echo "#"
|
|
||||||
on_error:
|
|
||||||
- echo "#"
|
|
||||||
- echo "# `date` - Error while creating a backup."
|
|
||||||
- echo "#"
|
|
||||||
|
|||||||
@@ -1,44 +1,28 @@
|
|||||||
location:
|
|
||||||
source_directories:
|
source_directories:
|
||||||
- /shuttle/opt
|
- /shuttle/opt
|
||||||
patterns:
|
|
||||||
- '- /shuttle/opt/.snapshot'
|
exclude_patterns:
|
||||||
- '- /shuttle/opt/jupyter/conda'
|
- /shuttle/opt/.snapshot
|
||||||
- '- /shuttle/opt/emby/metadata'
|
- /shuttle/opt/jupyter/conda
|
||||||
- '- /shuttle/opt/btsync/var/*.journal*'
|
- /shuttle/opt/emby/metadata
|
||||||
- '- /shuttle/opt/openvpn-server/*.log'
|
- /shuttle/opt/btsync/var/*.journal*
|
||||||
|
- /shuttle/opt/openvpn-server/*.log
|
||||||
|
|
||||||
repositories:
|
repositories:
|
||||||
- /repo/opt
|
- path: /repo/opt
|
||||||
|
|
||||||
|
umask: 22
|
||||||
|
|
||||||
storage:
|
|
||||||
compression: lz4
|
compression: lz4
|
||||||
archive_name_format: '{now:%Y-%m-%d}'
|
archive_name_format: "{now:%Y-%m-%d}"
|
||||||
unknown_unencrypted_repo_access_is_ok: true
|
unknown_unencrypted_repo_access_is_ok: true
|
||||||
|
relocated_repo_access_is_ok: true
|
||||||
|
|
||||||
retention:
|
|
||||||
keep_daily: 7
|
keep_daily: 7
|
||||||
keep_weekly: 4
|
keep_weekly: 4
|
||||||
keep_monthly: 6
|
keep_monthly: 6
|
||||||
prefix: '20'
|
|
||||||
|
|
||||||
consistency:
|
|
||||||
checks:
|
checks:
|
||||||
- repository
|
- name: repository
|
||||||
- archives
|
- name: archives
|
||||||
check_last: 3
|
check_last: 3
|
||||||
prefix: '20'
|
|
||||||
|
|
||||||
hooks:
|
|
||||||
before_backup:
|
|
||||||
- echo -e "\n\n"
|
|
||||||
- echo "#"
|
|
||||||
- echo "# `date` - Starting a backup job."
|
|
||||||
- echo "#"
|
|
||||||
after_backup:
|
|
||||||
- echo "#"
|
|
||||||
- echo "# `date` - Backup created."
|
|
||||||
- echo "#"
|
|
||||||
on_error:
|
|
||||||
- echo "#"
|
|
||||||
- echo "# `date` - Error while creating a backup."
|
|
||||||
- echo "#"
|
|
||||||
|
|||||||
@@ -1,40 +1,24 @@
|
|||||||
location:
|
|
||||||
source_directories:
|
source_directories:
|
||||||
- /shuttle/root
|
- /shuttle/root
|
||||||
patterns:
|
|
||||||
- '- /shuttle/root/.cache'
|
exclude_patterns:
|
||||||
|
- /shuttle/root/.cache
|
||||||
|
|
||||||
repositories:
|
repositories:
|
||||||
- /repo/root
|
- path: /repo/root
|
||||||
|
|
||||||
|
umask: 22
|
||||||
|
|
||||||
storage:
|
|
||||||
compression: lz4
|
compression: lz4
|
||||||
archive_name_format: '{now:%Y-%m-%d}'
|
archive_name_format: "{now:%Y-%m-%d}"
|
||||||
unknown_unencrypted_repo_access_is_ok: true
|
unknown_unencrypted_repo_access_is_ok: true
|
||||||
|
relocated_repo_access_is_ok: true
|
||||||
|
|
||||||
retention:
|
|
||||||
keep_daily: 7
|
keep_daily: 7
|
||||||
keep_weekly: 4
|
keep_weekly: 4
|
||||||
keep_monthly: 6
|
keep_monthly: 6
|
||||||
prefix: '20'
|
|
||||||
|
|
||||||
consistency:
|
|
||||||
checks:
|
checks:
|
||||||
- repository
|
- name: repository
|
||||||
- archives
|
- name: archives
|
||||||
check_last: 3
|
check_last: 3
|
||||||
prefix: '20'
|
|
||||||
|
|
||||||
hooks:
|
|
||||||
before_backup:
|
|
||||||
- echo -e "\n\n"
|
|
||||||
- echo "#"
|
|
||||||
- echo "# `date` - Starting a backup job."
|
|
||||||
- echo "#"
|
|
||||||
after_backup:
|
|
||||||
- echo "#"
|
|
||||||
- echo "# `date` - Backup created."
|
|
||||||
- echo "#"
|
|
||||||
on_error:
|
|
||||||
- echo "#"
|
|
||||||
- echo "# `date` - Error while creating a backup."
|
|
||||||
- echo "#"
|
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
/usr/bin/borgmatic --stats -v 0 -c /config/home.yaml >> /log/home.log 2>&1
|
|
||||||
/usr/bin/borgmatic --stats -v 0 -c /config/root.yaml >> /log/root.log 2>&1
|
|
||||||
/usr/bin/borgmatic --stats -v 0 -c /config/opt.yaml >> /log/opt.log 2>&1
|
|
||||||
/usr/bin/borgmatic --stats -v 0 -c /config/etc.yaml >> /log/etc.log 2>&1
|
|
||||||
|
|
||||||
export REMOTE=/remote/server/bram
|
|
||||||
mkdir -p ${REMOTE}
|
|
||||||
sshfs user@bram.veenboer.xyz:/media/helios/Bram ${REMOTE}
|
|
||||||
/usr/bin/borgmatic --stats -v 0 -c /config/bram.yaml >> /log/bram.log 2>&1
|
|
||||||
umount ${REMOTE}
|
|
||||||
18
borgmatic/config/test.yaml
Normal file
18
borgmatic/config/test.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
source_directories:
|
||||||
|
- /tmp/
|
||||||
|
|
||||||
|
repositories:
|
||||||
|
- path: /repo/test
|
||||||
|
|
||||||
|
umask: 22
|
||||||
|
|
||||||
|
compression: lz4
|
||||||
|
archive_name_format: "{now:%Y-%m-%d_%H%M%S}"
|
||||||
|
|
||||||
|
unknown_unencrypted_repo_access_is_ok: true
|
||||||
|
relocated_repo_access_is_ok: true
|
||||||
|
|
||||||
|
keep_hourly: 24
|
||||||
|
keep_daily: 7
|
||||||
|
keep_weekly: 4
|
||||||
|
keep_monthly: 6
|
||||||
1
borgmatic/crontab.txt
Normal file
1
borgmatic/crontab.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
0 2 * * * /scripts/run_all.sh
|
||||||
5
borgmatic/scripts/run_all.sh
Executable file
5
borgmatic/scripts/run_all.sh
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
for name in home root opt etc bram; do
|
||||||
|
echo $name
|
||||||
|
/scripts/run_one.sh "$name" >> "/log/$name.log" 2>&1
|
||||||
|
done
|
||||||
56
borgmatic/scripts/run_one.sh
Executable file
56
borgmatic/scripts/run_one.sh
Executable file
@@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
CONFIG_FILE="$1"
|
||||||
|
|
||||||
|
LOKI_HOST=host
|
||||||
|
|
||||||
|
MQTT_BROKER=host
|
||||||
|
MQTT_TOPIC="borgmatic/stats/$CONFIG_FILE"
|
||||||
|
MQTT_USER="borgmatic"
|
||||||
|
MQTT_PASSWORD="eH2dAiG7siCIFdB7qX0MHwEFzcr9aqUi"
|
||||||
|
|
||||||
|
# Run Borgmatic and extract archive stats as JSON
|
||||||
|
ARCHIVE_JSON=$(borgmatic \
|
||||||
|
--stats \
|
||||||
|
-v 0 \
|
||||||
|
-c "/config/$CONFIG_FILE.yaml" \
|
||||||
|
--log-json \
|
||||||
|
--no-color \
|
||||||
|
--json \
|
||||||
|
| tail -n1 \
|
||||||
|
| jq '.[0].archive'
|
||||||
|
)
|
||||||
|
echo $ARCHIVE_JSON
|
||||||
|
|
||||||
|
echo "----- ARCHIVE_JSON"
|
||||||
|
echo $ARCHIVE_JSON
|
||||||
|
echo "-----"
|
||||||
|
|
||||||
|
# Publish to MQTT
|
||||||
|
mosquitto_pub -h "$MQTT_BROKER" \
|
||||||
|
-t "$MQTT_TOPIC" \
|
||||||
|
-u "$MQTT_USER" \
|
||||||
|
-P "$MQTT_PASSWORD" \
|
||||||
|
-m "$ARCHIVE_JSON"
|
||||||
|
|
||||||
|
# Build Loki payload
|
||||||
|
LOKI_PAYLOAD=$(jq -n \
|
||||||
|
--arg config "$CONFIG_FILE" \
|
||||||
|
--argjson archive "$ARCHIVE_JSON" \
|
||||||
|
--arg now "$(date +%s%N)" \
|
||||||
|
'{streams: [
|
||||||
|
{
|
||||||
|
stream: {job: "borgmatic", config: $config},
|
||||||
|
values: [[$now, ($archive | tostring)]]
|
||||||
|
}
|
||||||
|
]}')
|
||||||
|
|
||||||
|
echo "----- LOKI_PAYLOAD"
|
||||||
|
echo $LOKI_PAYLOAD
|
||||||
|
echo "-----"
|
||||||
|
|
||||||
|
# Send to Loki
|
||||||
|
curl -s -X POST "http://$LOKI_HOST:3100/loki/api/v1/push" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "$LOKI_PAYLOAD"
|
||||||
1
caddy/.gitignore
vendored
Normal file
1
caddy/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
data
|
||||||
@@ -17,6 +17,9 @@
|
|||||||
(protected) {
|
(protected) {
|
||||||
{args[0]}.{$SUBDOMAIN}.{$DOMAIN} {
|
{args[0]}.{$SUBDOMAIN}.{$DOMAIN} {
|
||||||
import conf/authentik.caddy
|
import conf/authentik.caddy
|
||||||
|
log {
|
||||||
|
output file /var/log/{args[0]}.log
|
||||||
|
}
|
||||||
reverse_proxy {args[1]}
|
reverse_proxy {args[1]}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -24,16 +27,20 @@
|
|||||||
import unprotected authentik host:19000
|
import unprotected authentik host:19000
|
||||||
import unprotected vouch host:9090
|
import unprotected vouch host:9090
|
||||||
import unprotected jellyfin host:8097
|
import unprotected jellyfin host:8097
|
||||||
import unprotected seafile host:8082
|
|
||||||
import unprotected grafana host:3333
|
|
||||||
import unprotected pgadmin host:5050
|
import unprotected pgadmin host:5050
|
||||||
import unprotected homarr host:17575
|
import unprotected homarr host:17575
|
||||||
import unprotected jellyseerr host:15055
|
import unprotected jellyseerr host:15055
|
||||||
|
import unprotected minio host:9000
|
||||||
|
import unprotected gitea host:3003
|
||||||
|
import unprotected minio-admin host:9001
|
||||||
|
import unprotected loki host:3100
|
||||||
|
import unprotected ha host:8123
|
||||||
|
|
||||||
import protected sonarr host:18989
|
import protected grafana host:3333
|
||||||
import protected radarr host:17878
|
import protected radarr host:17878
|
||||||
import protected bazarr host:16767
|
import protected bazarr host:16767
|
||||||
import protected jackett host:9117
|
import protected jackett host:9117
|
||||||
|
import protected prowlarr host:9696
|
||||||
import protected dagster host:3000
|
import protected dagster host:3000
|
||||||
import protected photoprism host:2342
|
import protected photoprism host:2342
|
||||||
import protected qbittorrent host:9092
|
import protected qbittorrent host:9092
|
||||||
@@ -43,10 +50,23 @@ import protected transmission host:9091
|
|||||||
import protected droppy host:8989
|
import protected droppy host:8989
|
||||||
import protected filebrowser host:8002
|
import protected filebrowser host:8002
|
||||||
import protected jupyter host:9999
|
import protected jupyter host:9999
|
||||||
|
import protected nodered host:1880
|
||||||
|
import protected teslamate host:4000
|
||||||
|
import protected beszel host:8090
|
||||||
|
import protected car host:8000
|
||||||
|
|
||||||
import sites/root.caddy
|
import sites/root.caddy
|
||||||
import sites/authentik.caddy
|
import sites/authentik.caddy
|
||||||
import sites/ha.caddy
|
# import sites/ha.caddy
|
||||||
|
import sites/tesla.caddy
|
||||||
import sites/geo.caddy
|
import sites/geo.caddy
|
||||||
import sites/auth.caddy
|
import sites/auth.caddy
|
||||||
import sites/test.caddy
|
import sites/test.caddy
|
||||||
|
import sites/seafile.caddy
|
||||||
|
import sites/fallback.caddy
|
||||||
|
import sites/uptime.caddy
|
||||||
|
|
||||||
|
# Proxy to authentik
|
||||||
|
readarr.{$SUBDOMAIN}.{$DOMAIN}, sonarr.{$SUBDOMAIN}.{$DOMAIN} {
|
||||||
|
reverse_proxy http://host:19000
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
FROM caddy:2.9-builder AS builder
|
FROM caddy:2.10-builder AS builder
|
||||||
|
|
||||||
RUN xcaddy build \
|
RUN xcaddy build \
|
||||||
--with github.com/caddy-dns/route53 \
|
--with github.com/caddy-dns/route53@v1.6.0 \
|
||||||
--with github.com/mholt/caddy-dynamicdns \
|
--with github.com/mholt/caddy-dynamicdns@b846b9e \
|
||||||
--with github.com/zhangjiayin/caddy-geoip2 \
|
--with github.com/zhangjiayin/caddy-geoip2@0de3173 \
|
||||||
--with github.com/mholt/caddy-l4 \
|
--with github.com/mholt/caddy-l4@4a517a9 \
|
||||||
--with github.com/greenpau/caddy-security
|
--with github.com/greenpau/caddy-security@v1.1.31
|
||||||
|
|
||||||
FROM caddy:2.9-alpine
|
FROM caddy:2.10-alpine
|
||||||
|
|
||||||
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
|
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
|
||||||
|
|||||||
9
caddy/sites/fallback.caddy
Normal file
9
caddy/sites/fallback.caddy
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
fallback.{$SUBDOMAIN}.{$DOMAIN} {
|
||||||
|
log {
|
||||||
|
output file /var/log/fallback.log
|
||||||
|
}
|
||||||
|
basic_auth {
|
||||||
|
fallback $2a$14$wkLw6p3maDq3NmN2Xauf/.Kbxkn6O4DHaLbFechcSC0tAPtyTIEAq
|
||||||
|
}
|
||||||
|
reverse_proxy host:8000
|
||||||
|
}
|
||||||
@@ -2,9 +2,21 @@
|
|||||||
handle_path /test/* {
|
handle_path /test/* {
|
||||||
reverse_proxy host:12345
|
reverse_proxy host:12345
|
||||||
}
|
}
|
||||||
|
|
||||||
handle_path /jellyfin/* {
|
handle_path /jellyfin/* {
|
||||||
reverse_proxy host:8097
|
reverse_proxy host:8097
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handle /.well-known/appspecific/com.tesla.3p.public-key.pem {
|
||||||
|
header Content-Type text/x-pem-file
|
||||||
|
respond <<TXT
|
||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhS5sHVP4YaWgVKAS0e/B/ObkA9lQ
|
||||||
|
6Whx4Z+VYHhZtP3hQQLtVDGG3e/2ncGTpyStQgLSi9Js3wr1GgoT/DNAsQ==
|
||||||
|
-----END PUBLIC KEY-----
|
||||||
|
TXT 200
|
||||||
|
}
|
||||||
|
|
||||||
log {
|
log {
|
||||||
output file /var/log/root.log
|
output file /var/log/root.log
|
||||||
}
|
}
|
||||||
|
|||||||
20
caddy/sites/seafile.caddy
Normal file
20
caddy/sites/seafile.caddy
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
seafile.{$SUBDOMAIN}.{$DOMAIN} {
|
||||||
|
log {
|
||||||
|
output file /var/log/seafile.log
|
||||||
|
}
|
||||||
|
|
||||||
|
rewrite /socket.io /socket.io/
|
||||||
|
|
||||||
|
handle_path /socket.io/* {
|
||||||
|
rewrite * /socket.io{path}
|
||||||
|
reverse_proxy host:7070
|
||||||
|
}
|
||||||
|
|
||||||
|
handle_path /sdoc-server/* {
|
||||||
|
reverse_proxy host:7070
|
||||||
|
}
|
||||||
|
|
||||||
|
route {
|
||||||
|
reverse_proxy host:8082
|
||||||
|
}
|
||||||
|
}
|
||||||
24
caddy/sites/tesla.caddy
Normal file
24
caddy/sites/tesla.caddy
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
tesla.{$SUBDOMAIN}.{$DOMAIN} {
|
||||||
|
log {
|
||||||
|
output file /var/log/tesla.log
|
||||||
|
}
|
||||||
|
|
||||||
|
import ../conf/authentik.caddy
|
||||||
|
reverse_proxy host:3004
|
||||||
|
|
||||||
|
handle /assets/* {
|
||||||
|
reverse_proxy http://host:4000
|
||||||
|
}
|
||||||
|
|
||||||
|
handle /live/* {
|
||||||
|
reverse_proxy http://host:4000
|
||||||
|
}
|
||||||
|
|
||||||
|
handle /settings {
|
||||||
|
reverse_proxy http://host:4000
|
||||||
|
}
|
||||||
|
|
||||||
|
handle_path /mate* {
|
||||||
|
reverse_proxy http://host:4000
|
||||||
|
}
|
||||||
|
}
|
||||||
14
caddy/sites/uptime.caddy
Normal file
14
caddy/sites/uptime.caddy
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
uptime.{$SUBDOMAIN}.{$DOMAIN} {
|
||||||
|
log {
|
||||||
|
output file /var/log/uptime.log
|
||||||
|
}
|
||||||
|
|
||||||
|
handle /api/push/* {
|
||||||
|
reverse_proxy host:3001
|
||||||
|
}
|
||||||
|
|
||||||
|
handle {
|
||||||
|
import ../conf/authentik.caddy
|
||||||
|
reverse_proxy host:3001
|
||||||
|
}
|
||||||
|
}
|
||||||
1
collectd/.gitignore
vendored
Normal file
1
collectd/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
var
|
||||||
@@ -84,6 +84,7 @@ LoadPlugin uptime
|
|||||||
LoadPlugin users
|
LoadPlugin users
|
||||||
LoadPlugin smart
|
LoadPlugin smart
|
||||||
LoadPlugin pg_collectd
|
LoadPlugin pg_collectd
|
||||||
|
LoadPlugin mqtt
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# Plugin configuration #
|
# Plugin configuration #
|
||||||
@@ -112,6 +113,7 @@ LoadPlugin pg_collectd
|
|||||||
<Plugin disk>
|
<Plugin disk>
|
||||||
Disk "sda"
|
Disk "sda"
|
||||||
Disk "sdb"
|
Disk "sdb"
|
||||||
|
Disk "sdc"
|
||||||
Disk "nvme0n1"
|
Disk "nvme0n1"
|
||||||
IgnoreSelected false
|
IgnoreSelected false
|
||||||
</Plugin>
|
</Plugin>
|
||||||
@@ -128,13 +130,29 @@ LoadPlugin pg_collectd
|
|||||||
IgnoreSelected false
|
IgnoreSelected false
|
||||||
</Plugin>
|
</Plugin>
|
||||||
|
|
||||||
<Plugin pg_collectd>
|
#<Plugin pg_collectd>
|
||||||
BatchSize 1000
|
# BatchSize 1000
|
||||||
Connection "postgresql://collectd:collectd@host:6543/collectd"
|
# Connection "postgresql://collectd:collectd@host:6543/collectd"
|
||||||
StoreRates true
|
# StoreRates true
|
||||||
LogTimings INFO
|
# LogTimings INFO
|
||||||
</Plugin>
|
#</Plugin>
|
||||||
|
|
||||||
<Include "/etc/collectd/collectd.conf.d">
|
<Include "/etc/collectd/collectd.conf.d">
|
||||||
Filter "*.conf"
|
Filter "*.conf"
|
||||||
</Include>
|
</Include>
|
||||||
|
|
||||||
|
<Plugin "network">
|
||||||
|
Server "host" "24224"
|
||||||
|
</Plugin>
|
||||||
|
|
||||||
|
<Plugin "mqtt">
|
||||||
|
<Publish "broker">
|
||||||
|
Host "host"
|
||||||
|
Port 1883
|
||||||
|
User "collectd"
|
||||||
|
Password "p5TJbEbeqaJU0Z4g63EvwX0hWG4VLZXg"
|
||||||
|
ClientId "collectd-shuttle"
|
||||||
|
Prefix "collectd"
|
||||||
|
Retain false
|
||||||
|
</Publish>
|
||||||
|
</Plugin>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
authentik-postgresql:
|
authentik-postgres:
|
||||||
image: docker.io/library/postgres:16-alpine
|
image: docker.io/library/postgres:16-alpine
|
||||||
container_name: authentik-postgresql
|
container_name: authentik-postgres
|
||||||
ports:
|
ports:
|
||||||
- "15432:5432"
|
- "15432:5432"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -33,14 +33,14 @@ services:
|
|||||||
- /opt/authentik/redis:/data
|
- /opt/authentik/redis:/data
|
||||||
|
|
||||||
authentik-server:
|
authentik-server:
|
||||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.10.1}
|
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.12.4}
|
||||||
container_name: authentik-server
|
container_name: authentik-server
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
command: server
|
command: server
|
||||||
environment:
|
environment:
|
||||||
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
|
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
|
||||||
AUTHENTIK_REDIS__HOST: authentik-redis
|
AUTHENTIK_REDIS__HOST: authentik-redis
|
||||||
AUTHENTIK_POSTGRESQL__HOST: authentik-postgresql
|
AUTHENTIK_POSTGRESQL__HOST: authentik-postgres
|
||||||
AUTHENTIK_POSTGRESQL__USER: ${AUTHENTIK_PG_USER:-authentik}
|
AUTHENTIK_POSTGRESQL__USER: ${AUTHENTIK_PG_USER:-authentik}
|
||||||
AUTHENTIK_POSTGRESQL__NAME: ${AUTHENTIK_PG_DB:-authentik}
|
AUTHENTIK_POSTGRESQL__NAME: ${AUTHENTIK_PG_DB:-authentik}
|
||||||
AUTHENTIK_POSTGRESQL__PASSWORD: ${AUTHENTIK_PG_PASSWORD}
|
AUTHENTIK_POSTGRESQL__PASSWORD: ${AUTHENTIK_PG_PASSWORD}
|
||||||
@@ -51,20 +51,26 @@ services:
|
|||||||
- "19000:9000"
|
- "19000:9000"
|
||||||
- "19443:9443"
|
- "19443:9443"
|
||||||
depends_on:
|
depends_on:
|
||||||
- authentik-postgresql
|
- authentik-postgres
|
||||||
- authentik-redis
|
- authentik-redis
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- host:192.168.2.200
|
- "host:${HOST_IP}"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:9000/-/health/live/"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 60s
|
||||||
|
|
||||||
authentik-worker:
|
authentik-worker:
|
||||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.10.1}
|
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.12.4}
|
||||||
container_name: authentik-worker
|
container_name: authentik-worker
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
command: worker
|
command: worker
|
||||||
environment:
|
environment:
|
||||||
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
|
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
|
||||||
AUTHENTIK_REDIS__HOST: authentik-redis
|
AUTHENTIK_REDIS__HOST: authentik-redis
|
||||||
AUTHENTIK_POSTGRESQL__HOST: authentik-postgresql
|
AUTHENTIK_POSTGRESQL__HOST: authentik-postgres
|
||||||
AUTHENTIK_POSTGRESQL__USER: ${AUTHENTIK_PG_USER:-authentik}
|
AUTHENTIK_POSTGRESQL__USER: ${AUTHENTIK_PG_USER:-authentik}
|
||||||
AUTHENTIK_POSTGRESQL__NAME: ${AUTHENTIK_PG_DB:-authentik}
|
AUTHENTIK_POSTGRESQL__NAME: ${AUTHENTIK_PG_DB:-authentik}
|
||||||
AUTHENTIK_POSTGRESQL__PASSWORD: ${AUTHENTIK_PG_PASSWORD}
|
AUTHENTIK_POSTGRESQL__PASSWORD: ${AUTHENTIK_PG_PASSWORD}
|
||||||
@@ -73,18 +79,5 @@ services:
|
|||||||
- /opt/authentik/certs:/certs
|
- /opt/authentik/certs:/certs
|
||||||
- /opt/authentik/templates:/templates
|
- /opt/authentik/templates:/templates
|
||||||
depends_on:
|
depends_on:
|
||||||
- authentik-postgresql
|
- authentik-postgres
|
||||||
- authentik-redis
|
- authentik-redis
|
||||||
|
|
||||||
# authentik-proxy:
|
|
||||||
# image: authentik-proxy
|
|
||||||
# container_name: authentik-proxy
|
|
||||||
# ports:
|
|
||||||
# - "15000:5000"
|
|
||||||
# environment:
|
|
||||||
# INTERNAL: http://host:19000
|
|
||||||
# EXTERNAL: https://authentik.rik.veenboer.xyz
|
|
||||||
# build:
|
|
||||||
# context: /opt/authentik/proxy
|
|
||||||
# extra_hosts:
|
|
||||||
# - host:192.168.2.200
|
|
||||||
13
compose.autoheal.yaml
Normal file
13
compose.autoheal.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
services:
|
||||||
|
autoheal:
|
||||||
|
image: willfarrell/autoheal:1.2.0
|
||||||
|
container_name: autoheal
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
environment:
|
||||||
|
- AUTOHEAL_CONTAINER_LABEL=all
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pgrep -f autoheal || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
20
compose.bazarr.yaml
Normal file
20
compose.bazarr.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
services:
|
||||||
|
bazarr:
|
||||||
|
container_name: bazarr
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
image: linuxserver/bazarr:v1.5.3-ls327
|
||||||
|
ports:
|
||||||
|
- 16767:6767
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/bazarr/config:/config
|
||||||
|
- /media/neptune/Video/Movies:/movies
|
||||||
|
- /media/neptune/Video/Shows:/tv
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:6767/ping"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
28
compose.beszel.yaml
Normal file
28
compose.beszel.yaml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
beszel:
|
||||||
|
image: henrygd/beszel:0.12.6
|
||||||
|
container_name: beszel
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 8090:8090
|
||||||
|
volumes:
|
||||||
|
- /opt/beszel/data:/beszel_data
|
||||||
|
- /opt/beszel/socket:/beszel_socket
|
||||||
|
environment:
|
||||||
|
USER_CREATION: true
|
||||||
|
DISABLE_PASSWORD_AUTH: false
|
||||||
|
|
||||||
|
beszel-agent:
|
||||||
|
image: henrygd/beszel-agent:0.12.6
|
||||||
|
container_name: beszel-agent
|
||||||
|
restart: unless-stopped
|
||||||
|
network_mode: host
|
||||||
|
volumes:
|
||||||
|
- /opt/beszel/agent:/var/lib/beszel-agent
|
||||||
|
- /opt/beszel/socket:/beszel_socket
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
environment:
|
||||||
|
LISTEN: /beszel_socket/beszel.sock
|
||||||
|
HUB_URL: http://localhost:8090
|
||||||
|
TOKEN: ${BESZEL_TOKEN:?}
|
||||||
|
KEY: ${BESZEL_KEY:?}
|
||||||
27
compose.borgmatic.yaml
Normal file
27
compose.borgmatic.yaml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
services:
|
||||||
|
borgmatic:
|
||||||
|
container_name: borgmatic
|
||||||
|
build:
|
||||||
|
context: /opt/borgmatic/
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "pgrep", "crond"]
|
||||||
|
interval: 20s
|
||||||
|
start_period: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
privileged: true
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/borgmatic/crontab.txt:/etc/borgmatic.d/crontab.txt
|
||||||
|
- /opt/borgmatic/config:/config
|
||||||
|
- /opt/borgmatic/scripts:/scripts
|
||||||
|
- /opt/borgmatic/keys:/keys
|
||||||
|
- /opt/borgmatic/log:/log
|
||||||
|
- /root/.ssh:/root/.ssh:ro
|
||||||
|
- /mnt/yotta/xenon/borg:/repo
|
||||||
|
- /:/shuttle:ro
|
||||||
|
- /dev/fuse:/dev/fuse
|
||||||
32
compose.caddy.yaml
Normal file
32
compose.caddy.yaml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
services:
|
||||||
|
caddy:
|
||||||
|
build:
|
||||||
|
context: /opt/caddy/
|
||||||
|
container_name: caddy
|
||||||
|
environment:
|
||||||
|
- DOMAIN=veenboer.xyz
|
||||||
|
- SUBDOMAIN=rik
|
||||||
|
- AWS_REGION=eu-west-1
|
||||||
|
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:?}
|
||||||
|
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:?}
|
||||||
|
- GEO_ACCOUNT_ID=${MAXMIND_ACCOUNT_ID:?}
|
||||||
|
- GEO_API_KEY=${MAXMIND_API_KEY:?}
|
||||||
|
- OAUTH_CLIENT_ID=${OAUTH_CLIENT_ID:?}
|
||||||
|
- OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET:?}
|
||||||
|
image: caddy
|
||||||
|
ports:
|
||||||
|
- 443:443
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/caddy/Caddyfile:/etc/caddy/Caddyfile
|
||||||
|
- /opt/caddy/conf:/etc/caddy/conf
|
||||||
|
- /opt/caddy/sites:/etc/caddy/sites
|
||||||
|
- /opt/caddy/data:/data/caddy
|
||||||
|
- /opt/caddy/logs:/var/log
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "ps aux | grep 'caddy' || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
24
compose.collectd.yaml
Normal file
24
compose.collectd.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
services:
|
||||||
|
collectd:
|
||||||
|
build:
|
||||||
|
context: /home/user/src
|
||||||
|
dockerfile: /opt/collectd/Dockerfile
|
||||||
|
container_name: collectd
|
||||||
|
image: collectd:bookworm
|
||||||
|
privileged: true
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/collectd/etc:/etc/collectd
|
||||||
|
- /opt/collectd/var:/var/lib/collectd
|
||||||
|
- /opt/collectd/usr:/host/usr
|
||||||
|
- /:/host/root:ro
|
||||||
|
- /media/data:/media/data:ro
|
||||||
|
- /var/lib/docker:/media/docker:ro
|
||||||
|
- /dev/mapper:/dev/mapper
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pidof collectd || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
25
compose.dns-ad-blocker.yaml
Normal file
25
compose.dns-ad-blocker.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
services:
|
||||||
|
dns-ad-blocker:
|
||||||
|
image: oznu/dns-ad-blocker:latest
|
||||||
|
container_name: dns-ad-blocker
|
||||||
|
environment:
|
||||||
|
- AUTO_UPDATE=1
|
||||||
|
- BRANCH=master
|
||||||
|
- DNSCRYPT=1
|
||||||
|
- DNSCRYPT_PROVIDER_NAME=2.dnscrypt-cert.ns0.dnscrypt.nl
|
||||||
|
- DNSCRYPT_RESOLVER_ADDR=45.76.35.212
|
||||||
|
- DNSCRYPT_PROVIDER_KEY=4C84:FB8C:0511:5DFA:5F97:C5ED:0329:1370:C78A:BCD6:4E15:DD53:AB08:DE72:FB84:4ACA
|
||||||
|
- WHITELIST=api.segment.io,www.googleapis.com,analytics.google.com
|
||||||
|
ports:
|
||||||
|
- 192.168.2.201:53:53/udp
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/dns-ad-blocker/config:/config
|
||||||
|
- /opt/dns-ad-blocker/run:/etc/services.d/dnsmasq/run
|
||||||
|
- /opt/dns-ad-blocker/var/log:/var/log
|
||||||
|
- /opt/dns-ad-blocker/dnsmasq.hosts:/etc/dnsmasq.hosts
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "nc -z -u localhost 53 || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
19
compose.droppy.yaml
Normal file
19
compose.droppy.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
services:
|
||||||
|
droppy:
|
||||||
|
container_name: droppy
|
||||||
|
image: silverwind/droppy:12.2.0
|
||||||
|
ports:
|
||||||
|
- 8989:8989
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/droppy:/config
|
||||||
|
- /media/scratch/droppy:/files
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"wget --no-verbose --spider http://127.0.0.1:8989/ || exit 1",
|
||||||
|
]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
40
compose.dsmr.yaml
Normal file
40
compose.dsmr.yaml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
services:
|
||||||
|
dsmr:
|
||||||
|
image: xirixiz/dsmr-reader-docker:5.12.0-2026.01.02
|
||||||
|
container_name: dsmr
|
||||||
|
depends_on:
|
||||||
|
- dsmrdb
|
||||||
|
- influxdb
|
||||||
|
environment:
|
||||||
|
- DSMRREADER_ADMIN_USER=${DSMRREADER_USER:?}
|
||||||
|
- DSMRREADER_ADMIN_PASSWORD=${DSMRREADER_PASSWORD:?}
|
||||||
|
ports:
|
||||||
|
- 8888:80
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/dsmr/backups:/home/dsmr/app/backups
|
||||||
|
healthcheck:
|
||||||
|
# Checks if the dashboard login page loads successfully
|
||||||
|
test: ["CMD-SHELL", "curl -f http://localhost:80 || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 60s
|
||||||
|
|
||||||
|
dsmrdb:
|
||||||
|
container_name: dsmrdb
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=${DSMRDB_DATABASE:?}
|
||||||
|
- POSTGRES_USER=${DSMRDB_USER:?}
|
||||||
|
- POSTGRES_PASSWORD=${DSMRDB_PASSWORD:?}
|
||||||
|
image: postgres:13.7
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/dsmr/data:/var/lib/postgresql/data
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
15
compose.esphome.yaml
Normal file
15
compose.esphome.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
services:
|
||||||
|
esphome:
|
||||||
|
container_name: esphome
|
||||||
|
image: esphome/esphome:2022.12.8
|
||||||
|
network_mode: host
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/esphome:/config:rw
|
||||||
|
- /opt/esphome/log:/log:rw
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:6052"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
20
compose.filebrowser.yaml
Normal file
20
compose.filebrowser.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
services:
|
||||||
|
filebrowser:
|
||||||
|
container_name: filebrowser
|
||||||
|
image: filebrowser/filebrowser:v2.31.2
|
||||||
|
# command: ["config", "set", "--auth.method=noauth"]
|
||||||
|
ports:
|
||||||
|
- 8002:80
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/filebrowser/.filebrowser.json:/.filebrowser.json
|
||||||
|
- /opt/filebrowser/database.db:/database.db
|
||||||
|
- /mnt/yotta/helium/personal:/host/media/Personal
|
||||||
|
- /mnt/yotta/helium/shared:/host/media/Shared
|
||||||
|
- /mnt/yotta/neon:/host/media/Other
|
||||||
|
- /mnt/yotta/krypton:/host/media/Video
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "wget", "--no-verbose", "--spider", "http://localhost:80/"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
18
compose.flaresolverr.yaml
Normal file
18
compose.flaresolverr.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
services:
|
||||||
|
flaresolverr:
|
||||||
|
image: ghcr.io/flaresolverr/flaresolverr:v3.4.6
|
||||||
|
container_name: flaresolverr
|
||||||
|
environment:
|
||||||
|
- LOG_LEVEL=${LOG_LEVEL:-info}
|
||||||
|
- LOG_HTML=${LOG_HTML:-false}
|
||||||
|
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
ports:
|
||||||
|
- "8191:8191"
|
||||||
|
restart: unless-stopped
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "curl -f http://localhost:8191/ || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 15s
|
||||||
23
compose.fluentbit.yaml
Normal file
23
compose.fluentbit.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
services:
|
||||||
|
fluentbit:
|
||||||
|
image: fluent/fluent-bit:4.2.2-amd64
|
||||||
|
container_name: fluentbit
|
||||||
|
restart: unless-stopped
|
||||||
|
command: fluent-bit --config /fluent-bit.yaml
|
||||||
|
ports:
|
||||||
|
- "21883:1883"
|
||||||
|
- "24224:24224"
|
||||||
|
- "24224:24224/udp"
|
||||||
|
volumes:
|
||||||
|
- /opt/fluentbit/config.yaml:/fluent-bit.yaml
|
||||||
|
- /opt/collectd/usr/collectd/types.db:/usr/share/collectd/types.db
|
||||||
|
environment:
|
||||||
|
- MQTT_USER=${FLUENTBIT_MQTT_USER}
|
||||||
|
- MQTT_PASS=${FLUENTBIT_MQTT_PASS}
|
||||||
|
- DATABASE_HOST=${FLUENTBIT_DATABASE_HOST}
|
||||||
|
- DATABASE_PORT=${FLUENTBIT_DATABASE_PORT}
|
||||||
|
- DATABASE_USER=${FLUENTBIT_DATABASE_USER}
|
||||||
|
- DATABASE_PASS=${FLUENTBIT_DATABASE_PASS}
|
||||||
|
- DATABASE_NAME=${FLUENTBIT_DATABASE_NAME}
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
34
compose.gitea.yaml
Normal file
34
compose.gitea.yaml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
services:
|
||||||
|
gitea:
|
||||||
|
image: docker.gitea.com/gitea:1.24.3
|
||||||
|
container_name: gitea
|
||||||
|
environment:
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
- GITEA__database__DB_TYPE=postgres
|
||||||
|
- GITEA__database__HOST=host:11111
|
||||||
|
- GITEA__database__NAME=gitea
|
||||||
|
- GITEA__database__USER=gitea
|
||||||
|
- GITEA__database__PASSWD=gitea
|
||||||
|
- GITEA__mailer__ENABLED=true
|
||||||
|
- GITEA__mailer__SMTP_ADDR=email-smtp.eu-west-1.amazonaws.com
|
||||||
|
- GITEA__mailer__SMTP_PORT=587
|
||||||
|
- GITEA__mailer__FROM=gitea@veenboer.xyz
|
||||||
|
- GITEA__mailer__USER=${SMTP_USER:?}
|
||||||
|
- GITEA__mailer__PASSWD=${SMTP_PASSWORD:?}
|
||||||
|
- GITEA__mailer__PROTOCOL=smtp+starttls
|
||||||
|
restart: unless-stopped
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
|
volumes:
|
||||||
|
- /opt/gitea:/data
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- "3003:3000"
|
||||||
|
- "222:22"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:3000/api/v1/version"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
21
compose.gluetun.yaml
Normal file
21
compose.gluetun.yaml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
services:
|
||||||
|
gluetun:
|
||||||
|
image: qmcgaw/gluetun:v3.41.1
|
||||||
|
container_name: gluetun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
environment:
|
||||||
|
- VPN_SERVICE_PROVIDER=surfshark
|
||||||
|
- VPN_TYPE=openvpn
|
||||||
|
- OPENVPN_USER=${SURFSHARK_USER:?}
|
||||||
|
- OPENVPN_PASSWORD=${SURFSHARK_PASSWORD:?}
|
||||||
|
- REGION=Europe
|
||||||
|
- SERVER_COUNTRIES=Netherlands
|
||||||
|
- LOCAL_NETWORK=192.168.2.0/24
|
||||||
|
- HTTPPROXY=on
|
||||||
|
ports:
|
||||||
|
- "18888:8888/tcp" # HTTP proxy
|
||||||
|
- "9091:9091/tcp" # Transmission Web UI
|
||||||
|
- "9092:9092/tcp" # Transmission optional RPC port
|
||||||
|
- "6881:6881/tcp" # BitTorrent TCP
|
||||||
|
- "6881:6881/udp" # BitTorrent UDP
|
||||||
21
compose.grafana.yaml
Normal file
21
compose.grafana.yaml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
services:
|
||||||
|
grafana:
|
||||||
|
container_name: grafana
|
||||||
|
image: grafana/grafana:11.4.0
|
||||||
|
ports:
|
||||||
|
- 3333:3000
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- GF_AUTH_ANONYMOUS_ENABLED=true
|
||||||
|
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
|
||||||
|
volumes:
|
||||||
|
- /opt/grafana:/var/lib/grafana
|
||||||
|
# - /opt/grafana/grafana.ini:/etc/grafana/grafana.ini
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "wget", "-qO-", "http://localhost:3000"]
|
||||||
|
interval: 20s
|
||||||
|
start_period: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
24
compose.homarr.yaml
Normal file
24
compose.homarr.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
services:
|
||||||
|
homarr:
|
||||||
|
container_name: homarr
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
image: ghcr.io/ajnart/homarr:0.15.2
|
||||||
|
ports:
|
||||||
|
- 17575:7575
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/homarr/data:/data
|
||||||
|
- /opt/homarr/configs:/app/data/configs
|
||||||
|
- /opt/homarr/icons:/app/public/icons
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"wget --no-verbose --spider http://localhost:7575 || exit 1",
|
||||||
|
]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 60s
|
||||||
17
compose.homeassistant.yaml
Normal file
17
compose.homeassistant.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
services:
|
||||||
|
homeassistant:
|
||||||
|
container_name: homeassistant
|
||||||
|
image: homeassistant/home-assistant:2026.2.0
|
||||||
|
network_mode: host
|
||||||
|
privileged: true
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/homeassistant:/config
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8123"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
15
compose.influxdb.yaml
Normal file
15
compose.influxdb.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
services:
|
||||||
|
influxdb:
|
||||||
|
container_name: influxdb
|
||||||
|
image: influxdb:2.3.0
|
||||||
|
ports:
|
||||||
|
- 8086:8086
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /mnt/mezzo/scratch/influxdb:/var/lib/influxdb2
|
||||||
|
- /opt/gw2pvo:/opt/gw2pvo
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8086/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
20
compose.jackett.yaml
Normal file
20
compose.jackett.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
services:
|
||||||
|
jackett:
|
||||||
|
container_name: jackett
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
image: linuxserver/jackett:0.24.339
|
||||||
|
ports:
|
||||||
|
- 9117:9117
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/jackett:/config
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:9117/UI/Dashboard"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
extra_hosts:
|
||||||
|
- "flaresolverr:${HOST_IP}"
|
||||||
24
compose.jellyfin.yaml
Normal file
24
compose.jellyfin.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
services:
|
||||||
|
jellyfin:
|
||||||
|
container_name: jellyfin
|
||||||
|
devices:
|
||||||
|
- /dev/dri/renderD128:/dev/dri/renderD128
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
image: linuxserver/jellyfin:10.11.5
|
||||||
|
ports:
|
||||||
|
- 8097:8097
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/jellyfin/config:/config
|
||||||
|
- /opt/cache:/cache
|
||||||
|
- /mnt/yotta/krypton/Movies:/host/srv/movies
|
||||||
|
- /mnt/yotta/krypton/Shows:/host/srv/shows
|
||||||
|
- /mnt/yotta/neon/Music/Albums:/host/srv/music
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8097/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
23
compose.jellyseerr.yaml
Normal file
23
compose.jellyseerr.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
services:
|
||||||
|
jellyseerr:
|
||||||
|
container_name: jellyseerr
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
image: fallenbagel/jellyseerr:1.5.0
|
||||||
|
ports:
|
||||||
|
- 15055:5055
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/jellyseerr:/app/config
|
||||||
|
extra_hosts:
|
||||||
|
- "sonarr:${HOST_IP}"
|
||||||
|
- "radarr:${HOST_IP}"
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"wget --no-verbose --spider http://localhost:5055/status || exit 1",
|
||||||
|
]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
26
compose.loki.yaml
Normal file
26
compose.loki.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
services:
|
||||||
|
loki:
|
||||||
|
image: grafana/loki:3.5.3
|
||||||
|
container_name: loki
|
||||||
|
restart: unless-stopped
|
||||||
|
user: root
|
||||||
|
ports:
|
||||||
|
- "3100:3100"
|
||||||
|
command: -config.file=/etc/loki/local-config.yaml
|
||||||
|
volumes:
|
||||||
|
- /opt/loki/local-config.yaml:/etc/loki/local-config.yaml:ro
|
||||||
|
- /opt/loki/data:/loki
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD",
|
||||||
|
"wget",
|
||||||
|
"--no-verbose",
|
||||||
|
"--spider",
|
||||||
|
"http://localhost:3100/ready",
|
||||||
|
]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
31
compose.mediamtx.yaml
Normal file
31
compose.mediamtx.yaml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
services:
|
||||||
|
mediamtx:
|
||||||
|
image: bluenviron/mediamtx:1.14.0-ffmpeg
|
||||||
|
container_name: mediamtx
|
||||||
|
environment:
|
||||||
|
MTX_API: yes
|
||||||
|
MTX_RTSPTRANSPORTS: tcp
|
||||||
|
MTX_WEBRTCADDITIONALHOSTS: :${HOST_IP}
|
||||||
|
ports:
|
||||||
|
- "8554:8554"
|
||||||
|
- "1935:1935"
|
||||||
|
- "9888:8888"
|
||||||
|
- "9889:8889"
|
||||||
|
- "8890:8890/udp"
|
||||||
|
- "8189:8189/udp"
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
||||||
|
volumes:
|
||||||
|
- /opt/mediamtx/mediamtx.yml:/mediamtx.yml:ro
|
||||||
|
- /mnt/yotta/radon/mediamtx:/recordings
|
||||||
|
restart: unless-stopped
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"wget -q -O - http://localhost:9997/v3/paths/list || exit 1",
|
||||||
|
]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
# vlc --network-caching=50 rtsp://192.168.2.200:8554/mystream
|
||||||
20
compose.minio.yaml
Normal file
20
compose.minio.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
services:
|
||||||
|
minio:
|
||||||
|
image: minio/minio:RELEASE.2025-04-03T14-56-28Z
|
||||||
|
container_name: minio
|
||||||
|
ports:
|
||||||
|
- "9000:9000"
|
||||||
|
- "9001:9001"
|
||||||
|
environment:
|
||||||
|
MINIO_ROOT_USER: ${MINIO_ROOT_USER:?}
|
||||||
|
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:?}
|
||||||
|
# MINIO_ROOT_USER: user
|
||||||
|
# MINIO_ROOT_PASSWORD: password
|
||||||
|
volumes:
|
||||||
|
- /opt/minio:/data
|
||||||
|
command: server /data --console-address ":9001"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
19
compose.mosquitto.yaml
Normal file
19
compose.mosquitto.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
services:
|
||||||
|
mosquitto:
|
||||||
|
container_name: mosquitto
|
||||||
|
image: eclipse-mosquitto:2.0.15
|
||||||
|
ports:
|
||||||
|
- 1883:1883
|
||||||
|
- 1884:1884
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/mosquitto/config:/mosquitto/config
|
||||||
|
- /opt/mosquitto/data:/mosquitto/data
|
||||||
|
- /opt/mosquitto/log:/mosquitto/log
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "nc -z -w 5 localhost 1883 || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
18
compose.nodered.yaml
Normal file
18
compose.nodered.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
services:
|
||||||
|
nodered:
|
||||||
|
image: nodered/node-red:4.1.0-22
|
||||||
|
container_name: nodered
|
||||||
|
ports:
|
||||||
|
- 1880:1880
|
||||||
|
volumes:
|
||||||
|
- /opt/nodered:/data
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
|
- "mqtt:${HOST_IP}"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:1880/"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
166
compose.override.yaml
Normal file
166
compose.override.yaml
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
services:
|
||||||
|
seafile-mysql:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
seadoc-server:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
timescaledb:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
beszel:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
dsmrdb:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
nodered:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
flaresolverr:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
gluetun:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
qbittorrent:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
teslamate-grafana:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
authentik-postgres:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
authentik-redis:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
authentik-worker:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
pgadmin:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
photoprism:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
prowlarr:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
transmission:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
borgmatic:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
influxdb:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
dsmr:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
filebrowser:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
gitea:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
seafile-redis:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
seafile-server:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
sonarr:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
telegraf:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
uptime:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
dns-ad-blocker:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
esphome:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
postgis:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
rsnapshot:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
tesla-api:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
teslamate:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
goodwe:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
grafana:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
homarr:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
homeassistant:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
minio:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
postgres:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
readarr:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
droppy:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
authentik-server:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
beszel-agent:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
collectd:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
jellyseerr:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
mediamtx:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
mosquitto:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
radarr:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
caddy:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
loki:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
autoheal:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
bazarr:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
fluentbit:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
jackett:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
|
jellyfin:
|
||||||
|
labels:
|
||||||
|
- autoheal=true
|
||||||
25
compose.pgadmin.yaml
Normal file
25
compose.pgadmin.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
services:
|
||||||
|
pgadmin:
|
||||||
|
container_name: pgadmin
|
||||||
|
environment:
|
||||||
|
- PGADMIN_DEFAULT_EMAIL="${PGADMIN_EMAIL:?}"
|
||||||
|
- PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD:?}"
|
||||||
|
image: dpage/pgadmin4:7.5
|
||||||
|
ports:
|
||||||
|
- 5050:80
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/pgadmin/var:/var/lib/pgadmin
|
||||||
|
- /opt/pgadmin/log:/var/log/pgadmin
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD",
|
||||||
|
"wget",
|
||||||
|
"--no-verbose",
|
||||||
|
"--spider",
|
||||||
|
"http://localhost/misc/ping",
|
||||||
|
]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
64
compose.photoprism.yaml
Normal file
64
compose.photoprism.yaml
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
services:
|
||||||
|
photoprism:
|
||||||
|
container_name: photoprism
|
||||||
|
devices:
|
||||||
|
- /dev/dri:/dev/dri
|
||||||
|
environment:
|
||||||
|
- PHOTOPRISM_ADMIN_PASSWORD="${PHOTOPRISM_ADMIN_PASSWORD:?}"
|
||||||
|
- PHOTOPRISM_AUTH_MODE=public
|
||||||
|
- PHOTOPRISM_SITE_URL=http://localhost:2342/
|
||||||
|
- PHOTOPRISM_ORIGINALS_LIMIT=5000
|
||||||
|
- PHOTOPRISM_HTTP_COMPRESSION=gzip
|
||||||
|
- PHOTOPRISM_LOG_LEVEL=info
|
||||||
|
- PHOTOPRISM_READONLY=true
|
||||||
|
- PHOTOPRISM_EXPERIMENTAL=false
|
||||||
|
- PHOTOPRISM_DISABLE_CHOWN=true
|
||||||
|
- PHOTOPRISM_DISABLE_WEBDAV=true
|
||||||
|
- PHOTOPRISM_DISABLE_SETTINGS=false
|
||||||
|
- PHOTOPRISM_DISABLE_TENSORFLOW=false
|
||||||
|
- PHOTOPRISM_DISABLE_FACES=false
|
||||||
|
- PHOTOPRISM_DISABLE_CLASSIFICATION=false
|
||||||
|
- PHOTOPRISM_DISABLE_RAW=true
|
||||||
|
- PHOTOPRISM_RAW_PRESETS=false
|
||||||
|
- PHOTOPRISM_JPEG_QUALITY=85
|
||||||
|
- PHOTOPRISM_DETECT_NSFW=false
|
||||||
|
- PHOTOPRISM_UPLOAD_NSFW=true
|
||||||
|
- PHOTOPRISM_DATABASE_DRIVER=sqlite
|
||||||
|
- PHOTOPRISM_UID=1000
|
||||||
|
- PHOTOPRISM_GID=1000
|
||||||
|
image: photoprism/photoprism:240915
|
||||||
|
ports:
|
||||||
|
- 2342:2342
|
||||||
|
restart: unless-stopped
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
- apparmor:unconfined
|
||||||
|
volumes:
|
||||||
|
- /opt/photoprism:/photoprism/storage
|
||||||
|
- /opt/photoprism/originals:/photoprism/originals/
|
||||||
|
- /mnt/yotta/radon/photoprism:/photoprism/storage/cache
|
||||||
|
- /mnt/yotta/helium/shared/Photographs/Vakantie/Peter + Monique + Rik + Bram/Denemarken
|
||||||
|
2022:/photoprism/originals/Shared/Vakantie/Peter + Monique + Rik + Bram/Denemarken
|
||||||
|
2022
|
||||||
|
- /mnt/yotta/helium/shared/Photographs/Vakantie/Familie/Ierland 2022:/photoprism/originals/Shared/Vakantie/Familie/Ierland
|
||||||
|
2022
|
||||||
|
- /mnt/yotta/helium/shared/Photographs/Vakantie/Peter + Monique + Rik + Bram/Schotland
|
||||||
|
2022:/photoprism/originals/Shared/Vakantie/Peter + Monique + Rik + Bram/Schotland
|
||||||
|
2022
|
||||||
|
- /mnt/yotta/helium/shared/Photographs/Vakantie/Bram + Rik + Sanne/Kroatie
|
||||||
|
2023:/photoprism/originals/Shared/Vakantie/Bram + Rik + Sanne/Kroatie
|
||||||
|
2023
|
||||||
|
- /mnt/yotta/helium/shared/Photographs/Vakantie/Peter + Monique + Rik + Bram/Zweden
|
||||||
|
2023:/photoprism/originals/Vakantie/Peter + Monique + Rik + Bram/Zweden
|
||||||
|
2023
|
||||||
|
- /mnt/yotta/helium/shared/Photographs/Vakantie/Bram + Rik/Athene 2023:/photoprism/originals/Vakantie/Bram
|
||||||
|
+ Rik/Athene 2023
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"wget -qO- http://localhost:2342/api/v1/status | grep operational || exit 1",
|
||||||
|
]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
18
compose.postgis.yaml
Normal file
18
compose.postgis.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
services:
|
||||||
|
postgis:
|
||||||
|
container_name: postgis
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB="${POSTGIS_DATABASE:?}"
|
||||||
|
- POSTGRES_USER="${POSTGIS_USER:?}"
|
||||||
|
- POSTGRES_PASSWORD="${POSTGIS_PASSWORD:?}"
|
||||||
|
image: postgis/postgis:14-3.2
|
||||||
|
ports:
|
||||||
|
- 7654:5432
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/postgis:/var/lib/postgresql/data
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
27
compose.postgres.yaml
Normal file
27
compose.postgres.yaml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
container_name: postgres
|
||||||
|
image: postgres:17.5-alpine3.22
|
||||||
|
user: postgres
|
||||||
|
ports:
|
||||||
|
- 11111:5432
|
||||||
|
environment:
|
||||||
|
- POSTGRES_PASSWORD=postgres
|
||||||
|
- POSTGRES_USER=postgres
|
||||||
|
- POSTGRES_DB=postgres
|
||||||
|
volumes:
|
||||||
|
- /opt/postgres/entrypoint.sh:/entrypoint.sh
|
||||||
|
- /opt/postgres/postgresql.conf:/etc/postgresql/postgresql.conf
|
||||||
|
- /opt/postgres/data:/var/lib/postgresql/data
|
||||||
|
- /opt/postgres/cert.pem:/cert.pem
|
||||||
|
- /opt/postgres/key.pem:/key.pem
|
||||||
|
entrypoint: ["/bin/bash", "/entrypoint.sh"]
|
||||||
|
command:
|
||||||
|
- postgres
|
||||||
|
- -c
|
||||||
|
- config_file=/etc/postgresql/postgresql.conf
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
28
compose.prowlarr.yaml
Normal file
28
compose.prowlarr.yaml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
prowlarr:
|
||||||
|
image: linuxserver/prowlarr:2.3.0
|
||||||
|
container_name: prowlarr
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Etc/UTC
|
||||||
|
volumes:
|
||||||
|
- /opt/prowlarr:/config/prowlarr
|
||||||
|
ports:
|
||||||
|
- 9696:9696
|
||||||
|
restart: unless-stopped
|
||||||
|
extra_hosts:
|
||||||
|
- "flaresolverr:${HOST_IP}"
|
||||||
|
- "transmission:${HOST_IP}"
|
||||||
|
- "qbittorrent:${HOST_IP}"
|
||||||
|
- "jackett:${HOST_IP}"
|
||||||
|
- "prowlarr:${HOST_IP}"
|
||||||
|
- "radarr:${HOST_IP}"
|
||||||
|
- "sonarr:${HOST_IP}"
|
||||||
|
- "lidarr:${HOST_IP}"
|
||||||
|
- "readarr:${HOST_IP}"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:9696/ping"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
21
compose.qbittorrent.yaml
Normal file
21
compose.qbittorrent.yaml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
services:
|
||||||
|
qbittorrent:
|
||||||
|
container_name: qbittorrent
|
||||||
|
image: linuxserver/qbittorrent:5.0.1
|
||||||
|
depends_on:
|
||||||
|
- gluetun
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
- WEBUI_PORT=9092
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/qbittorrent:/config
|
||||||
|
- /media/scratch/qbittorrent:/downloads/qbittorrent
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:9092/"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
network_mode: "service:gluetun"
|
||||||
26
compose.radarr.yaml
Normal file
26
compose.radarr.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
services:
|
||||||
|
radarr:
|
||||||
|
container_name: radarr
|
||||||
|
image: linuxserver/radarr:6.0.4
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
extra_hosts:
|
||||||
|
- "transmission:${HOST_IP}"
|
||||||
|
- "qbittorrent:${HOST_IP}"
|
||||||
|
- "jackett:${HOST_IP}"
|
||||||
|
- "prowlarr:${HOST_IP}"
|
||||||
|
ports:
|
||||||
|
- 17878:7878
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/radarr:/config
|
||||||
|
- /media/scratch/transmission:/downloads/transmission
|
||||||
|
- /media/scratch/qbittorrent:/downloads/qbittorrent
|
||||||
|
- /mnt/yotta/krypton/Movies:/movies
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:7878/ping"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
27
compose.readarr.yaml
Normal file
27
compose.readarr.yaml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
services:
|
||||||
|
readarr:
|
||||||
|
container_name: readarr
|
||||||
|
# The 'hardcover' tag is the 2026 standard.
|
||||||
|
# Use 'softcover' only if you need backward compatibility with old Readarr databases.
|
||||||
|
image: ghcr.io/pennydreadful/bookshelf:hardcover
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
extra_hosts:
|
||||||
|
- "transmission:${HOST_IP}"
|
||||||
|
- "qbittorrent:${HOST_IP}"
|
||||||
|
- "jackett:${HOST_IP}"
|
||||||
|
ports:
|
||||||
|
- 18787:8787
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/readarr:/config
|
||||||
|
- /mnt/yotta/neon/Books/Epub/Bookshelf:/books
|
||||||
|
- /media/scratch/transmission:/downloads/transmission
|
||||||
|
- /media/scratch/qbittorrent:/downloads/qbittorrent
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8787/ping"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
16
compose.rsnapshot.yaml
Normal file
16
compose.rsnapshot.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
services:
|
||||||
|
rsnapshot:
|
||||||
|
container_name: rsnapshot
|
||||||
|
image: linuxserver/rsnapshot:1.4.5
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
volumes:
|
||||||
|
- /opt/rsnapshot:/config
|
||||||
|
- /mnt/yotta/xenon/rsnapshot:/host/scratch
|
||||||
|
- /root/.ssh:/root/.ssh:ro
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "ps aux | grep '[c]ron' || exit 1"]
|
||||||
|
interval: 60s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
105
compose.seafile.yaml
Normal file
105
compose.seafile.yaml
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
services:
|
||||||
|
seafile-mysql:
|
||||||
|
image: mariadb:11.8.5
|
||||||
|
container_name: seafile-mysql
|
||||||
|
ports:
|
||||||
|
- "13306:3306"
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=ROOT_PASSWORD
|
||||||
|
- MYSQL_LOG_CONSOLE=true
|
||||||
|
- MARIADB_AUTO_UPGRADE=1
|
||||||
|
volumes:
|
||||||
|
- /opt/seafile/database:/var/lib/mysql
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD",
|
||||||
|
"/usr/local/bin/healthcheck.sh",
|
||||||
|
"--connect",
|
||||||
|
"--mariadbupgrade",
|
||||||
|
"--innodb_initialized",
|
||||||
|
]
|
||||||
|
interval: 20s
|
||||||
|
start_period: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
seafile-redis:
|
||||||
|
image: redis:8.4.0
|
||||||
|
container_name: seafile-redis
|
||||||
|
ports:
|
||||||
|
- "6379:6379"
|
||||||
|
restart: unless-stopped
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- redis-server --requirepass "$$REDIS_PASSWORD"
|
||||||
|
environment:
|
||||||
|
- REDIS_PASSWORD=redis
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "redis-cli", "ping"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
seafile-server:
|
||||||
|
image: seafileltd/seafile-mc:13.0-latest
|
||||||
|
container_name: seafile-server
|
||||||
|
ports:
|
||||||
|
- "8082:80"
|
||||||
|
volumes:
|
||||||
|
- /opt/seafile/server:/shared/seafile
|
||||||
|
- /media/sync/seafile:/shared/seafile/seafile-data
|
||||||
|
environment:
|
||||||
|
- TIME_ZONE=Europe/Amsterdam
|
||||||
|
- JWT_PRIVATE_KEY=8LzWzeuQ41z1i8fc1cr1L7Kw80VpTgmT
|
||||||
|
- SEAFILE_SERVER_HOSTNAME=seafile.rik.veenboer.xyz
|
||||||
|
- SEAFILE_SERVER_PROTOCOL=https
|
||||||
|
- SEAFILE_MYSQL_DB_PORT=3306
|
||||||
|
- SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
|
||||||
|
- SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db
|
||||||
|
- SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
|
||||||
|
- SEAFILE_MYSQL_DB_HOST=seafile-mysql
|
||||||
|
- SEAFILE_MYSQL_DB_USER=seafile
|
||||||
|
- SEAFILE_MYSQL_DB_PASSWORD=PASSWORD
|
||||||
|
- REDIS_HOST=seafile-redis
|
||||||
|
- REDIS_PORT=6379
|
||||||
|
- REDIS_PASSWORD=redis
|
||||||
|
- ENABLE_SEADOC=true
|
||||||
|
- SEADOC_SERVER_URL=https://seafile.rik.veenboer.xyz/sdoc-server/
|
||||||
|
depends_on:
|
||||||
|
- seafile-mysql
|
||||||
|
- seafile-redis
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "curl -f http://localhost:80 || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 60s
|
||||||
|
|
||||||
|
seadoc-server:
|
||||||
|
restart: unless-stopped
|
||||||
|
image: seafileltd/sdoc-server:2.0.9
|
||||||
|
container_name: seadoc-server
|
||||||
|
volumes:
|
||||||
|
- /opt/seafile/seadoc:/shared
|
||||||
|
environment:
|
||||||
|
- DB_HOST=seafile-mysql
|
||||||
|
- DB_PORT=3306
|
||||||
|
- DB_USER=seadoc
|
||||||
|
- DB_PASSWORD=PASSWORD
|
||||||
|
- DB_NAME=seadoc_db
|
||||||
|
- TIME_ZONE=Europe/Amsterdam
|
||||||
|
- JWT_PRIVATE_KEY=8LzWzeuQ41z1i8fc1cr1L7Kw80VpTgmT
|
||||||
|
- SDOC_SERVER_LETSENCRYPT=false
|
||||||
|
- SEAHUB_SERVICE_URL=https://seafile.rik.veenboer.xyz/
|
||||||
|
ports:
|
||||||
|
- 7070:80
|
||||||
|
depends_on:
|
||||||
|
- seafile-mysql
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "curl -f http://localhost:80 || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 30s
|
||||||
26
compose.sonarr.yaml
Normal file
26
compose.sonarr.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
services:
|
||||||
|
sonarr:
|
||||||
|
image: linuxserver/sonarr:4.0.16
|
||||||
|
container_name: sonarr
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
extra_hosts:
|
||||||
|
- "transmission:${HOST_IP}"
|
||||||
|
- "qbittorrent:${HOST_IP}"
|
||||||
|
- "jackett:${HOST_IP}"
|
||||||
|
- "prowlarr:${HOST_IP}"
|
||||||
|
ports:
|
||||||
|
- 18989:8989
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/sonarr:/config
|
||||||
|
- /media/scratch/transmission:/downloads/transmission
|
||||||
|
- /media/scratch/qbittorrent:/downloads/qbittorrent
|
||||||
|
- /mnt/yotta/krypton/Shows:/tv
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8989/ping"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
23
compose.telegraf.yaml
Normal file
23
compose.telegraf.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
services:
|
||||||
|
telegraf:
|
||||||
|
container_name: telegraf
|
||||||
|
image: telegraf:1.36.2
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- TELEGRAF_DEBUG=true
|
||||||
|
- MQTT_USER=${TELEGRAF_MQTT_USER}
|
||||||
|
- MQTT_PASS=${TELEGRAF_MQTT_PASS}
|
||||||
|
- DATABASE_HOST=${TELEGRAF_DATABASE_HOST}
|
||||||
|
- DATABASE_PORT=${TELEGRAF_DATABASE_PORT}
|
||||||
|
- DATABASE_USER=${TELEGRAF_DATABASE_USER}
|
||||||
|
- DATABASE_PASS=${TELEGRAF_DATABASE_PASS}
|
||||||
|
- DATABASE_NAME=${TELEGRAF_DATABASE_NAME}
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
|
volumes:
|
||||||
|
- /opt/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pidof telegraf || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
55
compose.teslamate.yaml
Normal file
55
compose.teslamate.yaml
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
services:
|
||||||
|
teslamate:
|
||||||
|
image: teslamate/teslamate:2.1.0
|
||||||
|
container_name: teslamate
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- ENCRYPTION_KEY=${TESLAMATE_ENCRYPTION_KEY}
|
||||||
|
- DATABASE_HOST=${TESLAMATE_DATABASE_HOST}
|
||||||
|
- DATABASE_PORT=${TESLAMATE_DATABASE_PORT}
|
||||||
|
- DATABASE_USER=${TESLAMATE_DATABASE_USER}
|
||||||
|
- DATABASE_PASS=${TESLAMATE_DATABASE_PASS}
|
||||||
|
- DATABASE_NAME=${TESLAMATE_DATABASE_NAME}
|
||||||
|
- MQTT_HOST=${TESLAMATE_MQTT_HOST}
|
||||||
|
- MQTT_PORT=${TESLAMATE_MQTT_PORT}
|
||||||
|
- MQTT_USERNAME=${TESLAMATE_MQTT_USERNAME}
|
||||||
|
- MQTT_PASSWORD=${TESLAMATE_MQTT_PASSWORD}
|
||||||
|
ports:
|
||||||
|
- 4000:4000
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
|
volumes:
|
||||||
|
- /opt/teslamate/import:/opt/app/import
|
||||||
|
cap_drop:
|
||||||
|
- all
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "nc -z -w 1 localhost 4000 || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
teslamate-grafana:
|
||||||
|
image: teslamate/grafana:2.1.0
|
||||||
|
container_name: teslamate-grafana
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- DATABASE_HOST=${TESLAMATE_DATABASE_HOST}
|
||||||
|
- DATABASE_PORT=${TESLAMATE_DATABASE_PORT}
|
||||||
|
- DATABASE_USER=${TESLAMATE_DATABASE_USER}
|
||||||
|
- DATABASE_PASS=${TESLAMATE_DATABASE_PASS}
|
||||||
|
- DATABASE_NAME=${TESLAMATE_DATABASE_NAME}
|
||||||
|
- GF_AUTH_ANONYMOUS_ENABLED=true
|
||||||
|
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
|
||||||
|
ports:
|
||||||
|
- 3004:3000
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
|
volumes:
|
||||||
|
- /opt/teslamate/grafana:/var/lib/grafana
|
||||||
|
- /opt/teslamate/achievements/dashboard.yml:/etc/grafana/provisioning/dashboards/dashboard.yml
|
||||||
|
- /opt/teslamate/achievements/dashboards:/TeslaMateAchievements
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
17
compose.timescaledb.yaml
Normal file
17
compose.timescaledb.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
services:
|
||||||
|
timescaledb:
|
||||||
|
container_name: timescaledb
|
||||||
|
image: timescale/timescaledb:2.17.2-pg17
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=${TIMESCALEDB_USER:?}
|
||||||
|
- POSTGRES_PASSWORD=${TIMESCALEDB_PASSWORD:?}
|
||||||
|
ports:
|
||||||
|
- 6543:5432
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /mnt/mezzo/scratch/timescaledb:/var/lib/postgresql/data
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
21
compose.transmission.yaml
Normal file
21
compose.transmission.yaml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
services:
|
||||||
|
transmission:
|
||||||
|
container_name: transmission
|
||||||
|
image: linuxserver/transmission:4.0.6
|
||||||
|
depends_on:
|
||||||
|
- gluetun
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/transmission:/config
|
||||||
|
- /media/scratch/torrents:/watch
|
||||||
|
- /media/scratch/transmission:/downloads/transmission
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:9091/transmission/web/"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
network_mode: "service:gluetun"
|
||||||
18
compose.uptime.yaml
Normal file
18
compose.uptime.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
services:
|
||||||
|
uptime:
|
||||||
|
image: louislam/uptime-kuma:2
|
||||||
|
container_name: uptime
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/uptime:/app/data
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
ports:
|
||||||
|
- "3001:3001"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "curl -f http://localhost:3001 || exit 1"]
|
||||||
|
interval: 60s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 30s
|
||||||
|
extra_hosts:
|
||||||
|
- "host:${HOST_IP}"
|
||||||
70
compose.yaml
Normal file
70
compose.yaml
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
include:
|
||||||
|
# Ingress
|
||||||
|
- compose.caddy.yaml
|
||||||
|
- compose.authentik.yaml
|
||||||
|
|
||||||
|
# Dashboard
|
||||||
|
- compose.homarr.yaml
|
||||||
|
|
||||||
|
# Monitor
|
||||||
|
- compose.grafana.yaml
|
||||||
|
- compose.uptime.yaml
|
||||||
|
- compose.beszel.yaml
|
||||||
|
- compose.loki.yaml
|
||||||
|
- compose.fluentbit.yaml
|
||||||
|
- compose.telegraf.yaml
|
||||||
|
- compose.collectd.yaml
|
||||||
|
- compose.autoheal.yaml
|
||||||
|
|
||||||
|
# IoT
|
||||||
|
- compose.homeassistant.yaml
|
||||||
|
- compose.nodered.yaml
|
||||||
|
- compose.mosquitto.yaml
|
||||||
|
- compose.esphome.yaml
|
||||||
|
- compose.dsmr.yaml
|
||||||
|
- compose.teslamate.yaml
|
||||||
|
|
||||||
|
# Media
|
||||||
|
- compose.jellyfin.yaml
|
||||||
|
- compose.photoprism.yaml
|
||||||
|
- compose.mediamtx.yaml
|
||||||
|
|
||||||
|
# Library
|
||||||
|
- compose.jellyseerr.yaml
|
||||||
|
- compose.sonarr.yaml
|
||||||
|
- compose.radarr.yaml
|
||||||
|
- compose.readarr.yaml
|
||||||
|
- compose.bazarr.yaml
|
||||||
|
|
||||||
|
# Downloads
|
||||||
|
- compose.flaresolverr.yaml
|
||||||
|
- compose.prowlarr.yaml
|
||||||
|
- compose.jackett.yaml
|
||||||
|
- compose.qbittorrent.yaml
|
||||||
|
- compose.transmission.yaml
|
||||||
|
|
||||||
|
# Storage
|
||||||
|
- compose.minio.yaml
|
||||||
|
- compose.seafile.yaml
|
||||||
|
- compose.filebrowser.yaml
|
||||||
|
- compose.droppy.yaml
|
||||||
|
|
||||||
|
# Database
|
||||||
|
- compose.postgres.yaml
|
||||||
|
- compose.postgis.yaml
|
||||||
|
- compose.timescaledb.yaml
|
||||||
|
- compose.influxdb.yaml
|
||||||
|
- compose.pgadmin.yaml
|
||||||
|
|
||||||
|
# Network
|
||||||
|
- compose.dns-ad-blocker.yaml
|
||||||
|
- compose.gluetun.yaml
|
||||||
|
|
||||||
|
# Backup
|
||||||
|
- compose.rsnapshot.yaml
|
||||||
|
- compose.borgmatic.yaml
|
||||||
|
|
||||||
|
# Dev
|
||||||
|
- compose.gitea.yaml
|
||||||
|
- tesla-api/compose.yaml
|
||||||
|
- goodwe/compose.yaml
|
||||||
2
dns-ad-blocker/.gitignore
vendored
Normal file
2
dns-ad-blocker/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
dnscrypt-proxy.toml
|
||||||
|
dnsmasq.hosts
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
services:
|
|
||||||
autoheal:
|
|
||||||
image: willfarrell/autoheal:1.2.0
|
|
||||||
container_name: autoheal
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
environment:
|
|
||||||
- AUTOHEAL_CONTAINER_LABEL=all
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
services:
|
|
||||||
bazarr:
|
|
||||||
container_name: bazarr
|
|
||||||
environment:
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=Europe/Amsterdam
|
|
||||||
extra_hosts:
|
|
||||||
- host:192.168.2.200
|
|
||||||
image: linuxserver/bazarr:1.4.2
|
|
||||||
ports:
|
|
||||||
- 16767:6767
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/bazarr:/config
|
|
||||||
- /mnt/yotta/krypton/Movies:/movies
|
|
||||||
- /mnt/yotta/krypton/Shows:/tv
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
services:
|
|
||||||
borgmatic:
|
|
||||||
container_name: borgmatic
|
|
||||||
environment:
|
|
||||||
- TZ=Europe/Amsterdam
|
|
||||||
image: b3vis/borgmatic:v1.1.10-1.4.21
|
|
||||||
healthcheck:
|
|
||||||
test: [ "CMD", "pgrep", "crond" ]
|
|
||||||
interval: 20s
|
|
||||||
start_period: 30s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 10
|
|
||||||
privileged: true
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/borgmatic/config/crontab.txt:/etc/borgmatic.d/crontab.txt
|
|
||||||
- /opt/borgmatic/config:/config
|
|
||||||
- /opt/borgmatic/keys:/keys
|
|
||||||
- /opt/borgmatic/cache:/cache
|
|
||||||
- /opt/borgmatic/log:/log
|
|
||||||
- /root/.ssh:/root/.ssh:ro
|
|
||||||
- /mnt/yotta/xenon/borg:/repo
|
|
||||||
- /:/shuttle:ro
|
|
||||||
- /dev/fuse:/dev/fuse
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
services:
|
|
||||||
caddy:
|
|
||||||
build:
|
|
||||||
context: /opt/caddy/
|
|
||||||
container_name: caddy
|
|
||||||
environment:
|
|
||||||
- DOMAIN=veenboer.xyz
|
|
||||||
- SUBDOMAIN=rik
|
|
||||||
- AWS_REGION=eu-west-1
|
|
||||||
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:?}
|
|
||||||
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:?}
|
|
||||||
- GEO_ACCOUNT_ID=${MAXMIND_ACCOUNT_ID:?}
|
|
||||||
- GEO_API_KEY=${MAXMIND_API_KEY:?}
|
|
||||||
- OAUTH_CLIENT_ID=${OAUTH_CLIENT_ID:?}
|
|
||||||
- OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET:?}
|
|
||||||
image: caddy
|
|
||||||
ports:
|
|
||||||
- 443:443
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/caddy/Caddyfile:/etc/caddy/Caddyfile
|
|
||||||
- /opt/caddy/conf:/etc/caddy/conf
|
|
||||||
- /opt/caddy/sites:/etc/caddy/sites
|
|
||||||
- /opt/caddy/data:/data/caddy
|
|
||||||
- /opt/caddy/logs:/var/log
|
|
||||||
extra_hosts:
|
|
||||||
- host:192.168.2.200
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
services:
|
|
||||||
collectd:
|
|
||||||
build:
|
|
||||||
context: /home/user/src
|
|
||||||
dockerfile: /opt/collectd/Dockerfile
|
|
||||||
container_name: collectd
|
|
||||||
image: collectd:bookworm
|
|
||||||
privileged: true
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/collectd/etc:/etc/collectd
|
|
||||||
- /opt/collectd/var:/var/lib/collectd
|
|
||||||
- /opt/collectd/usr:/host/usr
|
|
||||||
- /:/host/root:ro
|
|
||||||
- /media/data:/media/data:ro
|
|
||||||
- /var/lib/docker:/media/docker:ro
|
|
||||||
- /dev/mapper:/dev/mapper
|
|
||||||
extra_hosts:
|
|
||||||
- host:192.168.2.200
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
services:
|
|
||||||
dns-ad-blocker:
|
|
||||||
container_name: dns-ad-blocker
|
|
||||||
environment:
|
|
||||||
- AUTO_UPDATE=1
|
|
||||||
- BRANCH=master
|
|
||||||
- DNSCRYPT=1
|
|
||||||
- DNSCRYPT_PROVIDER_NAME=2.dnscrypt-cert.ns0.dnscrypt.nl
|
|
||||||
- DNSCRYPT_RESOLVER_ADDR=45.76.35.212
|
|
||||||
- DNSCRYPT_PROVIDER_KEY=4C84:FB8C:0511:5DFA:5F97:C5ED:0329:1370:C78A:BCD6:4E15:DD53:AB08:DE72:FB84:4ACA
|
|
||||||
- WHITELIST=api.segment.io,www.googleapis.com,analytics.google.com
|
|
||||||
image: oznu/dns-ad-blocker:latest
|
|
||||||
ports:
|
|
||||||
- 192.168.2.201:53:53/udp
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/dns-ad-blocker/config:/config
|
|
||||||
- /opt/dns-ad-blocker/run:/etc/services.d/dnsmasq/run
|
|
||||||
- /opt/dns-ad-blocker/var/log:/var/log
|
|
||||||
- /opt/dns-ad-blocker/dnsmasq.hosts:/etc/dnsmasq.hosts
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
services:
|
|
||||||
droppy:
|
|
||||||
container_name: droppy
|
|
||||||
image: silverwind/droppy:12.2.0
|
|
||||||
ports:
|
|
||||||
- 8989:8989
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/droppy:/config
|
|
||||||
- /media/scratch/droppy:/files
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
services:
|
|
||||||
dsmr:
|
|
||||||
container_name: dsmr
|
|
||||||
depends_on:
|
|
||||||
- dsmrdb
|
|
||||||
- influxdb
|
|
||||||
environment:
|
|
||||||
- DSMRREADER_ADMIN_USER=${DSMRREADER_USER:?}
|
|
||||||
- DSMRREADER_ADMIN_PASSWORD=${DSMRREADER_PASSWORD:?}
|
|
||||||
image: xirixiz/dsmr-reader-docker:5.10.3-2023.04.02
|
|
||||||
links:
|
|
||||||
- dsmrdb:dsmrreader
|
|
||||||
ports:
|
|
||||||
- 8888:80
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/dsmr/backups:/home/dsmr/app/backups
|
|
||||||
dsmrdb:
|
|
||||||
container_name: dsmrdb
|
|
||||||
environment:
|
|
||||||
- POSTGRES_DB=${DSMRDB_DATABASE:?}
|
|
||||||
- POSTGRES_USER=${DSMRDB_USER:?}
|
|
||||||
- POSTGRES_PASSWORD=${DSMRDB_PASSWORD:?}
|
|
||||||
image: postgres:13.7
|
|
||||||
ports:
|
|
||||||
- 5432:5432
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/dsmr/data:/var/lib/postgresql/data
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
services:
|
|
||||||
esphome:
|
|
||||||
container_name: esphome
|
|
||||||
image: esphome/esphome:2022.12.8
|
|
||||||
network_mode: host
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/esphome:/config:rw
|
|
||||||
- /opt/esphome/log:/log:rw
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
services:
|
|
||||||
filebrowser:
|
|
||||||
container_name: filebrowser
|
|
||||||
image: filebrowser/filebrowser:v2.31.2
|
|
||||||
# command: ["config", "set", "--auth.method=noauth"]
|
|
||||||
ports:
|
|
||||||
- 8002:80
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/filebrowser/.filebrowser.json:/.filebrowser.json
|
|
||||||
- /opt/filebrowser/database.db:/database.db
|
|
||||||
- /mnt/yotta/helium/personal:/host/media/Personal
|
|
||||||
- /mnt/yotta/helium/shared:/host/media/Shared
|
|
||||||
- /mnt/yotta/neon:/host/media/Other
|
|
||||||
- /mnt/yotta/krypton:/host/media/Video
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
services:
|
|
||||||
grafana:
|
|
||||||
container_name: grafana
|
|
||||||
image: grafana/grafana:11.4.0
|
|
||||||
healthcheck:
|
|
||||||
test: [ "CMD", "wget", "-qO-", "http://localhost:3000" ]
|
|
||||||
interval: 20s
|
|
||||||
start_period: 30s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 10
|
|
||||||
ports:
|
|
||||||
- 3333:3000
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/grafana:/var/lib/grafana
|
|
||||||
- /opt/grafana/grafana.ini:/etc/grafana/grafana.ini
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
services:
|
|
||||||
homarr:
|
|
||||||
container_name: homarr
|
|
||||||
environment:
|
|
||||||
- TZ=Europe/Amsterdam
|
|
||||||
image: ghcr.io/ajnart/homarr:0.15.2
|
|
||||||
ports:
|
|
||||||
- 17575:7575
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/homarr/data:/data
|
|
||||||
- /opt/homarr/configs:/app/data/configs
|
|
||||||
- /opt/homarr/icons:/app/public/icons
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
services:
|
|
||||||
homeassistant:
|
|
||||||
container_name: homeassistant
|
|
||||||
image: homeassistant/home-assistant:2025.1.2
|
|
||||||
network_mode: host
|
|
||||||
privileged: true
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/homeassistant:/config
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
services:
|
|
||||||
influxdb:
|
|
||||||
container_name: influxdb
|
|
||||||
image: influxdb:2.3.0
|
|
||||||
ports:
|
|
||||||
- 8086:8086
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /mnt/mezzo/scratch/influxdb:/var/lib/influxdb2
|
|
||||||
- /opt/gw2pvo:/opt/gw2pvo
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
services:
|
|
||||||
jackett:
|
|
||||||
container_name: jackett
|
|
||||||
environment:
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=Europe/Amsterdam
|
|
||||||
external_links:
|
|
||||||
- transmission
|
|
||||||
- qbittorrent
|
|
||||||
image: linuxserver/jackett:0.22.1003
|
|
||||||
ports:
|
|
||||||
- 9117:9117
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/jackett:/config
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
services:
|
|
||||||
jellyfin:
|
|
||||||
container_name: jellyfin
|
|
||||||
devices:
|
|
||||||
- /dev/dri/renderD128:/dev/dri/renderD128
|
|
||||||
environment:
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=Europe/Amsterdam
|
|
||||||
image: linuxserver/jellyfin:10.10.1
|
|
||||||
ports:
|
|
||||||
- 8097:8097
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/jellyfin/config:/config
|
|
||||||
- /opt/cache:/cache
|
|
||||||
- /mnt/yotta/krypton/Movies:/host/srv/movies
|
|
||||||
- /mnt/yotta/krypton/Shows:/host/srv/shows
|
|
||||||
- /mnt/yotta/neon/Music/Albums:/host/srv/music
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
services:
|
|
||||||
jellyseerr:
|
|
||||||
container_name: jellyseerr
|
|
||||||
environment:
|
|
||||||
- TZ=Europe/Amsterdam
|
|
||||||
image: fallenbagel/jellyseerr:1.5.0
|
|
||||||
ports:
|
|
||||||
- 15055:5055
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/jellyseerr:/app/config
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
services:
|
|
||||||
mosquitto:
|
|
||||||
container_name: mosquitto
|
|
||||||
image: eclipse-mosquitto:2.0.15
|
|
||||||
ports:
|
|
||||||
- 1883:1883
|
|
||||||
- 1884:1884
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/mosquitto/config:/mosquitto/config
|
|
||||||
- /opt/mosquitto/data:/mosquitto/data
|
|
||||||
- /opt/mosquitto/log:/mosquitto/log
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
services:
|
|
||||||
openvpn-server:
|
|
||||||
cap_add:
|
|
||||||
- NET_ADMIN
|
|
||||||
container_name: openvpn-server
|
|
||||||
extra_hosts:
|
|
||||||
- host:192.168.2.200
|
|
||||||
image: kylemanna/openvpn:2.4
|
|
||||||
ports:
|
|
||||||
- 444:443
|
|
||||||
privileged: true
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/openvpn-server:/etc/openvpn
|
|
||||||
- /opt/openvpn-server/logrotate.d/openvpn:/etc/logrotate.d/openvpn
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
services:
|
|
||||||
pgadmin:
|
|
||||||
container_name: pgadmin
|
|
||||||
environment:
|
|
||||||
- PGADMIN_DEFAULT_EMAIL="${PGADMIN_EMAIL:?}"
|
|
||||||
- PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD:?}"
|
|
||||||
image: dpage/pgadmin4:7.5
|
|
||||||
ports:
|
|
||||||
- 5050:80
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/pgadmin/var:/var/lib/pgadmin
|
|
||||||
- /opt/pgadmin/log:/var/log/pgadmin
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
services:
|
|
||||||
photoprism:
|
|
||||||
container_name: photoprism
|
|
||||||
devices:
|
|
||||||
- /dev/dri:/dev/dri
|
|
||||||
environment:
|
|
||||||
- PHOTOPRISM_ADMIN_PASSWORD="${PHOTOPRISM_ADMIN_PASSWORD:?}"
|
|
||||||
- PHOTOPRISM_AUTH_MODE=public
|
|
||||||
- PHOTOPRISM_SITE_URL=http://localhost:2342/
|
|
||||||
- PHOTOPRISM_ORIGINALS_LIMIT=5000
|
|
||||||
- PHOTOPRISM_HTTP_COMPRESSION=gzip
|
|
||||||
- PHOTOPRISM_LOG_LEVEL=info
|
|
||||||
- PHOTOPRISM_READONLY=true
|
|
||||||
- PHOTOPRISM_EXPERIMENTAL=false
|
|
||||||
- PHOTOPRISM_DISABLE_CHOWN=true
|
|
||||||
- PHOTOPRISM_DISABLE_WEBDAV=true
|
|
||||||
- PHOTOPRISM_DISABLE_SETTINGS=false
|
|
||||||
- PHOTOPRISM_DISABLE_TENSORFLOW=false
|
|
||||||
- PHOTOPRISM_DISABLE_FACES=false
|
|
||||||
- PHOTOPRISM_DISABLE_CLASSIFICATION=false
|
|
||||||
- PHOTOPRISM_DISABLE_RAW=true
|
|
||||||
- PHOTOPRISM_RAW_PRESETS=false
|
|
||||||
- PHOTOPRISM_JPEG_QUALITY=85
|
|
||||||
- PHOTOPRISM_DETECT_NSFW=false
|
|
||||||
- PHOTOPRISM_UPLOAD_NSFW=true
|
|
||||||
- PHOTOPRISM_DATABASE_DRIVER=sqlite
|
|
||||||
- PHOTOPRISM_UID=1000
|
|
||||||
- PHOTOPRISM_GID=1000
|
|
||||||
image: photoprism/photoprism:240915
|
|
||||||
ports:
|
|
||||||
- 2342:2342
|
|
||||||
restart: unless-stopped
|
|
||||||
security_opt:
|
|
||||||
- seccomp:unconfined
|
|
||||||
- apparmor:unconfined
|
|
||||||
volumes:
|
|
||||||
- /opt/photoprism:/photoprism/storage
|
|
||||||
- /opt/photoprism/originals:/photoprism/originals/
|
|
||||||
- /mnt/yotta/radon/photoprism:/photoprism/storage/cache
|
|
||||||
- /mnt/yotta/helium/shared/Photographs/Vakantie/Peter + Monique + Rik + Bram/Denemarken
|
|
||||||
2022:/photoprism/originals/Shared/Vakantie/Peter + Monique + Rik + Bram/Denemarken
|
|
||||||
2022
|
|
||||||
- /mnt/yotta/helium/shared/Photographs/Vakantie/Familie/Ierland 2022:/photoprism/originals/Shared/Vakantie/Familie/Ierland
|
|
||||||
2022
|
|
||||||
- /mnt/yotta/helium/shared/Photographs/Vakantie/Peter + Monique + Rik + Bram/Schotland
|
|
||||||
2022:/photoprism/originals/Shared/Vakantie/Peter + Monique + Rik + Bram/Schotland
|
|
||||||
2022
|
|
||||||
- /mnt/yotta/helium/shared/Photographs/Vakantie/Bram + Rik + Sanne/Kroatie
|
|
||||||
2023:/photoprism/originals/Shared/Vakantie/Bram + Rik + Sanne/Kroatie
|
|
||||||
2023
|
|
||||||
- /mnt/yotta/helium/shared/Photographs/Vakantie/Peter + Monique + Rik + Bram/Zweden
|
|
||||||
2023:/photoprism/originals/Vakantie/Peter + Monique + Rik + Bram/Zweden
|
|
||||||
2023
|
|
||||||
- /mnt/yotta/helium/shared/Photographs/Vakantie/Bram + Rik/Athene 2023:/photoprism/originals/Vakantie/Bram
|
|
||||||
+ Rik/Athene 2023
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
services:
|
|
||||||
postgis:
|
|
||||||
container_name: postgis
|
|
||||||
environment:
|
|
||||||
- POSTGRES_DB="${POSTGIS_DATABASE:?}"
|
|
||||||
- POSTGRES_USER="${POSTGIS_USER:?}"
|
|
||||||
- POSTGRES_PASSWORD="${POSTGIS_PASSWORD:?}"
|
|
||||||
image: postgis/postgis:14-3.2
|
|
||||||
ports:
|
|
||||||
- 7654:5432
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/postgis:/var/lib/postgresql/data
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user