Compare commits
79 Commits
ece09830f9
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 |
79
.gitignore
vendored
79
.gitignore
vendored
@@ -9,84 +9,17 @@
|
||||
.idea/
|
||||
.ipynb_checkpoints/
|
||||
.ruff_cache/
|
||||
beszel/
|
||||
log/
|
||||
logs/
|
||||
authentik/database/PG_VERSION
|
||||
authentik/database/base/
|
||||
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/
|
||||
dagster/
|
||||
gitea/
|
||||
grafana/
|
||||
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/
|
||||
jellyfin/
|
||||
jellyseerr/
|
||||
openvpn-server/crl.pem
|
||||
openvpn-server/pki/
|
||||
openvpn-server/shuttle.ovpn
|
||||
minio/
|
||||
pgadmin/
|
||||
photoprism/**/.*
|
||||
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/
|
||||
tesla-api/
|
||||
|
||||
|
||||
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
|
||||
6
bazarr/.gitignore
vendored
Normal file
6
bazarr/.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
backup
|
||||
cache
|
||||
config/analytics_visitor_id.txt
|
||||
config/announcements.json
|
||||
config/releases.txt
|
||||
config/config/releases.txt
|
||||
@@ -55,8 +55,8 @@ general:
|
||||
embedded_subtitles_parser: ffprobe
|
||||
enabled_providers:
|
||||
- embeddedsubtitles
|
||||
- opensubtitles
|
||||
- tvsubtitles
|
||||
- opensubtitlescom
|
||||
flask_secret_key: f7cb0b9466ff2a51dd6f7fba4263d1d8
|
||||
hi_extension: hi
|
||||
ignore_ass_subs: false
|
||||
@@ -143,9 +143,9 @@ opensubtitles:
|
||||
vip: false
|
||||
opensubtitlescom:
|
||||
include_ai_translated: false
|
||||
password: ''
|
||||
password: superyp.com
|
||||
use_hash: true
|
||||
username: ''
|
||||
username: cabehob334
|
||||
podnapisi:
|
||||
verify_ssl: true
|
||||
postgresql:
|
||||
@@ -166,7 +166,7 @@ proxy:
|
||||
username: ''
|
||||
radarr:
|
||||
apikey: a74a5eb3683146659905a87f0d6d1587
|
||||
base_url: /radarr
|
||||
base_url: ''
|
||||
defer_search_signalr: false
|
||||
excluded_tags: []
|
||||
full_update: Daily
|
||||
@@ -196,7 +196,7 @@ series_scores:
|
||||
year: 90
|
||||
sonarr:
|
||||
apikey: 872c463bc4e84567b84605bf213e0409
|
||||
base_url: /sonarr
|
||||
base_url: ''
|
||||
defer_search_signalr: false
|
||||
episodes_sync: 60
|
||||
exclude_season_zero: false
|
||||
|
||||
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
|
||||
28
bazarr/config/config/announcements.json
Normal file
28
bazarr/config/config/announcements.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"text": "Welcome to the new announcement section. It will keep you up-to-date with important news. You can dismiss this announcement by clicking on the button at the end of this line.",
|
||||
"link": "",
|
||||
"hash": "",
|
||||
"dismissible": true,
|
||||
"timestamp": 1676235999,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"text": "Opensubtitles.org is now only accessible to VIP users. If you're still using it and do not plan to get a VIP subscription, you should consider disabling it and move to opensubtitles.com.",
|
||||
"link": "",
|
||||
"hash": "",
|
||||
"dismissible": true,
|
||||
"timestamp": 1700791126,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"text": "We're about to drop support for legacy Sonarr and Radarr versions (prior to v3). If you're still using those legacy versions, please consider upgrading ASAP.",
|
||||
"link": "",
|
||||
"hash": "",
|
||||
"dismissible": true,
|
||||
"timestamp": 1731247748,
|
||||
"enabled": true
|
||||
}
|
||||
]
|
||||
}
|
||||
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:
|
||||
- /remote/server/bram
|
||||
repositories:
|
||||
- /repo/bram
|
||||
source_directories:
|
||||
- /remote/server/bram
|
||||
|
||||
storage:
|
||||
encryption_passcommand: cat /keys/bram.key
|
||||
compression: lz4
|
||||
archive_name_format: '{now:%Y-%m-%d}'
|
||||
repositories:
|
||||
- path: /repo/bram
|
||||
|
||||
retention:
|
||||
keep_daily: 7
|
||||
keep_weekly: 4
|
||||
keep_monthly: 6
|
||||
prefix: '20'
|
||||
encryption_passcommand: cat /keys/bram.key
|
||||
|
||||
consistency:
|
||||
checks:
|
||||
- repository
|
||||
- archives
|
||||
check_last: 3
|
||||
prefix: '20'
|
||||
umask: 22
|
||||
|
||||
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 "#"
|
||||
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_weekly: 4
|
||||
keep_monthly: 6
|
||||
|
||||
checks:
|
||||
- name: repository
|
||||
- name: archives
|
||||
check_last: 3
|
||||
|
||||
commands:
|
||||
- before: action
|
||||
when:
|
||||
- create
|
||||
run:
|
||||
- |
|
||||
set -euo pipefail
|
||||
REMOTE=/remote/server/bram
|
||||
echo "Mounting $REMOTE..."
|
||||
mkdir -p "$REMOTE"
|
||||
sshfs user@bram.veenboer.xyz:/media/helios/Bram "$REMOTE"
|
||||
|
||||
- after: action
|
||||
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:
|
||||
- /shuttle/etc
|
||||
repositories:
|
||||
- /repo/etc
|
||||
source_directories:
|
||||
- /shuttle/etc
|
||||
|
||||
storage:
|
||||
compression: lz4
|
||||
archive_name_format: '{now:%Y-%m-%d}'
|
||||
unknown_unencrypted_repo_access_is_ok: true
|
||||
repositories:
|
||||
- path: /repo/etc
|
||||
|
||||
retention:
|
||||
keep_daily: 7
|
||||
keep_weekly: 4
|
||||
keep_monthly: 6
|
||||
prefix: '20'
|
||||
umask: 22
|
||||
|
||||
consistency:
|
||||
checks:
|
||||
- repository
|
||||
- archives
|
||||
check_last: 3
|
||||
prefix: '20'
|
||||
compression: lz4
|
||||
archive_name_format: '{now:%Y-%m-%d}'
|
||||
unknown_unencrypted_repo_access_is_ok: true
|
||||
relocated_repo_access_is_ok: true
|
||||
|
||||
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 "#"
|
||||
keep_daily: 7
|
||||
keep_weekly: 4
|
||||
keep_monthly: 6
|
||||
|
||||
checks:
|
||||
- name: repository
|
||||
- name: archives
|
||||
check_last: 3
|
||||
|
||||
@@ -1,41 +1,25 @@
|
||||
location:
|
||||
source_directories:
|
||||
- /shuttle/home
|
||||
patterns:
|
||||
- '- /shuttle/home/.snapshot'
|
||||
- '- /shuttle/home/*/.cache'
|
||||
repositories:
|
||||
- /repo/home
|
||||
source_directories:
|
||||
- /shuttle/home
|
||||
|
||||
storage:
|
||||
compression: lz4
|
||||
archive_name_format: '{now:%Y-%m-%d}'
|
||||
unknown_unencrypted_repo_access_is_ok: true
|
||||
exclude_patterns:
|
||||
- /shuttle/home/.snapshot
|
||||
- /shuttle/home/*/.cache
|
||||
|
||||
retention:
|
||||
keep_daily: 7
|
||||
keep_weekly: 4
|
||||
keep_monthly: 6
|
||||
prefix: '20'
|
||||
repositories:
|
||||
- path: /repo/home
|
||||
|
||||
consistency:
|
||||
checks:
|
||||
- repository
|
||||
- archives
|
||||
check_last: 3
|
||||
prefix: '20'
|
||||
umask: 22
|
||||
|
||||
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 "#"
|
||||
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_weekly: 4
|
||||
keep_monthly: 6
|
||||
|
||||
checks:
|
||||
- name: repository
|
||||
- name: archives
|
||||
check_last: 3
|
||||
|
||||
@@ -1,44 +1,28 @@
|
||||
location:
|
||||
source_directories:
|
||||
- /shuttle/opt
|
||||
patterns:
|
||||
- '- /shuttle/opt/.snapshot'
|
||||
- '- /shuttle/opt/jupyter/conda'
|
||||
- '- /shuttle/opt/emby/metadata'
|
||||
- '- /shuttle/opt/btsync/var/*.journal*'
|
||||
- '- /shuttle/opt/openvpn-server/*.log'
|
||||
repositories:
|
||||
- /repo/opt
|
||||
source_directories:
|
||||
- /shuttle/opt
|
||||
|
||||
storage:
|
||||
compression: lz4
|
||||
archive_name_format: '{now:%Y-%m-%d}'
|
||||
unknown_unencrypted_repo_access_is_ok: true
|
||||
exclude_patterns:
|
||||
- /shuttle/opt/.snapshot
|
||||
- /shuttle/opt/jupyter/conda
|
||||
- /shuttle/opt/emby/metadata
|
||||
- /shuttle/opt/btsync/var/*.journal*
|
||||
- /shuttle/opt/openvpn-server/*.log
|
||||
|
||||
retention:
|
||||
keep_daily: 7
|
||||
keep_weekly: 4
|
||||
keep_monthly: 6
|
||||
prefix: '20'
|
||||
repositories:
|
||||
- path: /repo/opt
|
||||
|
||||
consistency:
|
||||
checks:
|
||||
- repository
|
||||
- archives
|
||||
check_last: 3
|
||||
prefix: '20'
|
||||
umask: 22
|
||||
|
||||
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 "#"
|
||||
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_weekly: 4
|
||||
keep_monthly: 6
|
||||
|
||||
checks:
|
||||
- name: repository
|
||||
- name: archives
|
||||
check_last: 3
|
||||
|
||||
@@ -1,40 +1,24 @@
|
||||
location:
|
||||
source_directories:
|
||||
- /shuttle/root
|
||||
patterns:
|
||||
- '- /shuttle/root/.cache'
|
||||
repositories:
|
||||
- /repo/root
|
||||
source_directories:
|
||||
- /shuttle/root
|
||||
|
||||
storage:
|
||||
compression: lz4
|
||||
archive_name_format: '{now:%Y-%m-%d}'
|
||||
unknown_unencrypted_repo_access_is_ok: true
|
||||
exclude_patterns:
|
||||
- /shuttle/root/.cache
|
||||
|
||||
retention:
|
||||
keep_daily: 7
|
||||
keep_weekly: 4
|
||||
keep_monthly: 6
|
||||
prefix: '20'
|
||||
repositories:
|
||||
- path: /repo/root
|
||||
|
||||
consistency:
|
||||
checks:
|
||||
- repository
|
||||
- archives
|
||||
check_last: 3
|
||||
prefix: '20'
|
||||
umask: 22
|
||||
|
||||
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 "#"
|
||||
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_weekly: 4
|
||||
keep_monthly: 6
|
||||
|
||||
checks:
|
||||
- name: repository
|
||||
- name: archives
|
||||
check_last: 3
|
||||
|
||||
@@ -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
|
||||
@@ -24,16 +24,20 @@
|
||||
import unprotected authentik host:19000
|
||||
import unprotected vouch host:9090
|
||||
import unprotected jellyfin host:8097
|
||||
import unprotected seafile host:8082
|
||||
import unprotected grafana host:3333
|
||||
import unprotected pgadmin host:5050
|
||||
import unprotected homarr host:17575
|
||||
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 protected grafana host:3333
|
||||
import protected sonarr host:18989
|
||||
import protected radarr host:17878
|
||||
import protected bazarr host:16767
|
||||
import protected jackett host:9117
|
||||
import protected prowlarr host:9696
|
||||
import protected dagster host:3000
|
||||
import protected photoprism host:2342
|
||||
import protected qbittorrent host:9092
|
||||
@@ -43,10 +47,15 @@ import protected transmission host:9091
|
||||
import protected droppy host:8989
|
||||
import protected filebrowser host:8002
|
||||
import protected jupyter host:9999
|
||||
import protected nodered host:1880
|
||||
import protected teslamate host:4000
|
||||
import protected beszel host:8090
|
||||
|
||||
import sites/root.caddy
|
||||
import sites/authentik.caddy
|
||||
import sites/ha.caddy
|
||||
import sites/tesla.caddy
|
||||
import sites/geo.caddy
|
||||
import sites/auth.caddy
|
||||
import sites/test.caddy
|
||||
import sites/seafile.caddy
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
FROM caddy:2.9-builder AS builder
|
||||
FROM caddy:2.10-builder AS builder
|
||||
|
||||
RUN xcaddy build \
|
||||
--with github.com/caddy-dns/route53 \
|
||||
--with github.com/mholt/caddy-dynamicdns \
|
||||
--with github.com/zhangjiayin/caddy-geoip2 \
|
||||
--with github.com/mholt/caddy-l4 \
|
||||
--with github.com/greenpau/caddy-security
|
||||
--with github.com/caddy-dns/route53@v1.6.0 \
|
||||
--with github.com/mholt/caddy-dynamicdns@b846b9e \
|
||||
--with github.com/zhangjiayin/caddy-geoip2@0de3173 \
|
||||
--with github.com/mholt/caddy-l4@4a517a9 \
|
||||
--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
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
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 smart
|
||||
LoadPlugin pg_collectd
|
||||
LoadPlugin mqtt
|
||||
|
||||
##############################################################################
|
||||
# Plugin configuration #
|
||||
@@ -112,6 +113,7 @@ LoadPlugin pg_collectd
|
||||
<Plugin disk>
|
||||
Disk "sda"
|
||||
Disk "sdb"
|
||||
Disk "sdc"
|
||||
Disk "nvme0n1"
|
||||
IgnoreSelected false
|
||||
</Plugin>
|
||||
@@ -128,13 +130,29 @@ LoadPlugin pg_collectd
|
||||
IgnoreSelected false
|
||||
</Plugin>
|
||||
|
||||
<Plugin pg_collectd>
|
||||
BatchSize 1000
|
||||
Connection "postgresql://collectd:collectd@host:6543/collectd"
|
||||
StoreRates true
|
||||
LogTimings INFO
|
||||
</Plugin>
|
||||
#<Plugin pg_collectd>
|
||||
# BatchSize 1000
|
||||
# Connection "postgresql://collectd:collectd@host:6543/collectd"
|
||||
# StoreRates true
|
||||
# LogTimings INFO
|
||||
#</Plugin>
|
||||
|
||||
<Include "/etc/collectd/collectd.conf.d">
|
||||
Filter "*.conf"
|
||||
</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:
|
||||
authentik-postgresql:
|
||||
authentik-postgres:
|
||||
image: docker.io/library/postgres:16-alpine
|
||||
container_name: authentik-postgresql
|
||||
container_name: authentik-postgres
|
||||
ports:
|
||||
- "15432:5432"
|
||||
restart: unless-stopped
|
||||
@@ -33,14 +33,14 @@ services:
|
||||
- /opt/authentik/redis:/data
|
||||
|
||||
authentik-server:
|
||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.10.1}
|
||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.8.1}
|
||||
container_name: authentik-server
|
||||
restart: unless-stopped
|
||||
command: server
|
||||
environment:
|
||||
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
|
||||
AUTHENTIK_REDIS__HOST: authentik-redis
|
||||
AUTHENTIK_POSTGRESQL__HOST: authentik-postgresql
|
||||
AUTHENTIK_POSTGRESQL__HOST: authentik-postgres
|
||||
AUTHENTIK_POSTGRESQL__USER: ${AUTHENTIK_PG_USER:-authentik}
|
||||
AUTHENTIK_POSTGRESQL__NAME: ${AUTHENTIK_PG_DB:-authentik}
|
||||
AUTHENTIK_POSTGRESQL__PASSWORD: ${AUTHENTIK_PG_PASSWORD}
|
||||
@@ -51,20 +51,20 @@ services:
|
||||
- "19000:9000"
|
||||
- "19443:9443"
|
||||
depends_on:
|
||||
- authentik-postgresql
|
||||
- authentik-postgres
|
||||
- authentik-redis
|
||||
extra_hosts:
|
||||
- host:192.168.2.200
|
||||
|
||||
authentik-worker:
|
||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.10.1}
|
||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2025.8.1}
|
||||
container_name: authentik-worker
|
||||
restart: unless-stopped
|
||||
command: worker
|
||||
environment:
|
||||
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
|
||||
AUTHENTIK_REDIS__HOST: authentik-redis
|
||||
AUTHENTIK_POSTGRESQL__HOST: authentik-postgresql
|
||||
AUTHENTIK_POSTGRESQL__HOST: authentik-postgres
|
||||
AUTHENTIK_POSTGRESQL__USER: ${AUTHENTIK_PG_USER:-authentik}
|
||||
AUTHENTIK_POSTGRESQL__NAME: ${AUTHENTIK_PG_DB:-authentik}
|
||||
AUTHENTIK_POSTGRESQL__PASSWORD: ${AUTHENTIK_PG_PASSWORD}
|
||||
@@ -73,18 +73,5 @@ services:
|
||||
- /opt/authentik/certs:/certs
|
||||
- /opt/authentik/templates:/templates
|
||||
depends_on:
|
||||
- authentik-postgresql
|
||||
- authentik-postgres
|
||||
- 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
|
||||
8
compose.autoheal.yaml
Normal file
8
compose.autoheal.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
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
|
||||
15
compose.bazarr.yaml
Normal file
15
compose.bazarr.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
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
|
||||
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:192.168.2.200
|
||||
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
|
||||
27
compose.caddy.yaml
Normal file
27
compose.caddy.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
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
|
||||
19
compose.collectd.yaml
Normal file
19
compose.collectd.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
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
|
||||
20
compose.dns-ad-blocker.yaml
Normal file
20
compose.dns-ad-blocker.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
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
|
||||
10
compose.droppy.yaml
Normal file
10
compose.droppy.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
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
|
||||
29
compose.dsmr.yaml
Normal file
29
compose.dsmr.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
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
|
||||
10
compose.esphome.yaml
Normal file
10
compose.esphome.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
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
|
||||
15
compose.filebrowser.yaml
Normal file
15
compose.filebrowser.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
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
|
||||
23
compose.fluentbit.yaml
Normal file
23
compose.fluentbit.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
services:
|
||||
fluentbit:
|
||||
image: fluent/fluent-bit:4.1.1-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:192.168.2.200
|
||||
29
compose.gitea.yaml
Normal file
29
compose.gitea.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
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: always
|
||||
extra_hosts:
|
||||
- host:192.168.2.200
|
||||
volumes:
|
||||
- /opt/gitea:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- "3003:3000"
|
||||
- "222:22"
|
||||
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
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-qO-", "http://localhost:3000"]
|
||||
interval: 20s
|
||||
start_period: 30s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
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:192.168.2.200
|
||||
14
compose.homarr.yaml
Normal file
14
compose.homarr.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
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
|
||||
12
compose.homeassistant.yaml
Normal file
12
compose.homeassistant.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
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
|
||||
extra_hosts:
|
||||
- host:192.168.2.200
|
||||
10
compose.influxdb.yaml
Normal file
10
compose.influxdb.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
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
|
||||
16
compose.jackett.yaml
Normal file
16
compose.jackett.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
services:
|
||||
jackett:
|
||||
container_name: jackett
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Amsterdam
|
||||
external_links:
|
||||
- transmission
|
||||
- qbittorrent
|
||||
image: linuxserver/jackett:0.24.339
|
||||
ports:
|
||||
- 9117:9117
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /opt/jackett:/config
|
||||
19
compose.jellyfin.yaml
Normal file
19
compose.jellyfin.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
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
|
||||
11
compose.jellyseerr.yaml
Normal file
11
compose.jellyseerr.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
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
|
||||
14
compose.loki.yaml
Normal file
14
compose.loki.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
services:
|
||||
loki:
|
||||
image: grafana/loki:3.5.3
|
||||
container_name: loki
|
||||
restart: always
|
||||
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:192.168.2.200
|
||||
22
compose.mediamtx.yaml
Normal file
22
compose.mediamtx.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
services:
|
||||
mediamtx:
|
||||
image: bluenviron/mediamtx:1.14.0-ffmpeg
|
||||
container_name: mediamtx
|
||||
environment:
|
||||
MTX_RTSPTRANSPORTS: tcp
|
||||
MTX_WEBRTCADDITIONALHOSTS: 192.168.2.200
|
||||
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
|
||||
|
||||
# vlc --network-caching=50 rtsp://192.168.2.200:8554/mystream
|
||||
15
compose.minio.yaml
Normal file
15
compose.minio.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
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"
|
||||
14
compose.mosquitto.yaml
Normal file
14
compose.mosquitto.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
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:192.168.2.200
|
||||
13
compose.nodered.yaml
Normal file
13
compose.nodered.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
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:192.168.2.200
|
||||
- mqqtt:192.168.2.200
|
||||
15
compose.openvpn-server.yaml
Normal file
15
compose.openvpn-server.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
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
|
||||
13
compose.pgadmin.yaml
Normal file
13
compose.pgadmin.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
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
|
||||
55
compose.photoprism.yaml
Normal file
55
compose.photoprism.yaml
Normal file
@@ -0,0 +1,55 @@
|
||||
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
|
||||
13
compose.postgis.yaml
Normal file
13
compose.postgis.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
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
|
||||
23
compose.postgres.yaml
Normal file
23
compose.postgres.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
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
|
||||
20
compose.prowlarr.yaml
Normal file
20
compose.prowlarr.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
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:
|
||||
- transmission:192.168.2.200
|
||||
- qbittorrent:192.168.2.200
|
||||
- jackett:192.168.2.200
|
||||
- radarr:192.168.2.200
|
||||
- sonarr:192.168.2.200
|
||||
- lidarr:192.168.2.200
|
||||
16
compose.qbittorrent.yaml
Normal file
16
compose.qbittorrent.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
services:
|
||||
qbittorrent:
|
||||
container_name: qbittorrent
|
||||
image: linuxserver/qbittorrent:5.0.1
|
||||
depends_on:
|
||||
- surfshark
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Amsterdam
|
||||
- WEBUI_PORT=9092
|
||||
network_mode: service:surfshark
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /opt/qbittorrent:/config
|
||||
- /media/scratch/qbittorrent:/downloads/qbittorrent
|
||||
24
compose.radarr.yaml
Normal file
24
compose.radarr.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
services:
|
||||
radarr:
|
||||
container_name: radarr
|
||||
image: linuxserver/radarr:6.0.4
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Amsterdam
|
||||
external_links:
|
||||
- transmission
|
||||
- qbittorrent
|
||||
extra_hosts:
|
||||
- transmission:192.168.2.200
|
||||
- qbittorrent:192.168.2.200
|
||||
- jackett:192.168.2.200
|
||||
- prowlarr:192.168.2.200
|
||||
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
|
||||
11
compose.rsnapshot.yaml
Normal file
11
compose.rsnapshot.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
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
|
||||
88
compose.seafile.yaml
Normal file
88
compose.seafile.yaml
Normal file
@@ -0,0 +1,88 @@
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
8
compose.socks.yaml
Normal file
8
compose.socks.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
services:
|
||||
socks:
|
||||
container_name: socks
|
||||
image: serjs/go-socks5-proxy
|
||||
ports:
|
||||
- 1081:1080
|
||||
network_mode: service:surfshark
|
||||
restart: unless-stopped
|
||||
23
compose.sonarr.yaml
Normal file
23
compose.sonarr.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
services:
|
||||
sonarr:
|
||||
image: linuxserver/sonarr:4.0.16
|
||||
container_name: sonarr
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Amsterdam
|
||||
external_links:
|
||||
- transmission
|
||||
extra_hosts:
|
||||
- transmission:192.168.2.200
|
||||
- qbittorrent:192.168.2.200
|
||||
- jackett:192.168.2.200
|
||||
- prowlarr:192.168.2.200
|
||||
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
|
||||
27
compose.surfshark.yaml
Normal file
27
compose.surfshark.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
services:
|
||||
surfshark:
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
container_name: surfshark
|
||||
devices:
|
||||
- /dev/net/tun
|
||||
dns:
|
||||
- 1.1.1.1
|
||||
environment:
|
||||
- SURFSHARK_USER=${SURFSHARK_USER:?}
|
||||
- SURFSHARK_PASSWORD=${SURFSHARK_PASSWORD:?}
|
||||
- SURFSHARK_COUNTRY=nl
|
||||
- SURFSHARK_CITY=ams
|
||||
- CONNECTION_TYPE=udp
|
||||
- LAN_NETWORK=
|
||||
- ENABLE_SOCKS_SERVER=true
|
||||
image: ilteoood/docker-surfshark:1.7.2
|
||||
ports:
|
||||
- 1080:1080
|
||||
- 9091:9091
|
||||
- 9092:9092
|
||||
- 6881:6881
|
||||
- 6881:6881/udp
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
- autoheal=true
|
||||
18
compose.telegraf.yaml
Normal file
18
compose.telegraf.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
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:192.168.2.200
|
||||
volumes:
|
||||
- /opt/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
|
||||
45
compose.teslamate.yaml
Normal file
45
compose.teslamate.yaml
Normal file
@@ -0,0 +1,45 @@
|
||||
services:
|
||||
teslamate:
|
||||
image: teslamate/teslamate:2.1.0
|
||||
container_name: teslamate
|
||||
restart: always
|
||||
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:192.168.2.200
|
||||
volumes:
|
||||
- /opt/teslamate/import:/opt/app/import
|
||||
cap_drop:
|
||||
- all
|
||||
|
||||
teslamate-grafana:
|
||||
image: teslamate/grafana:2.1.0
|
||||
container_name: teslamate-grafana
|
||||
restart: always
|
||||
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:192.168.2.200
|
||||
volumes:
|
||||
- /opt/teslamate/grafana:/var/lib/grafana
|
||||
- /opt/teslamate/achievements/dashboard.yml:/etc/grafana/provisioning/dashboards/dashboard.yml
|
||||
- /opt/teslamate/achievements/dashboards:/TeslaMateAchievements
|
||||
12
compose.timescaledb.yaml
Normal file
12
compose.timescaledb.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
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
|
||||
16
compose.transmission.yaml
Normal file
16
compose.transmission.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
services:
|
||||
transmission:
|
||||
container_name: transmission
|
||||
image: linuxserver/transmission:4.0.6
|
||||
depends_on:
|
||||
- surfshark
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Amsterdam
|
||||
network_mode: service:surfshark
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /opt/transmission:/config
|
||||
- /media/scratch/torrents:/watch
|
||||
- /media/scratch/transmission:/downloads/transmission
|
||||
68
compose.yaml
Normal file
68
compose.yaml
Normal file
@@ -0,0 +1,68 @@
|
||||
include:
|
||||
# Web
|
||||
- compose.caddy.yaml
|
||||
|
||||
# Authentication
|
||||
- compose.authentik.yaml
|
||||
|
||||
# Other
|
||||
- compose.autoheal.yaml
|
||||
- compose.collectd.yaml
|
||||
- compose.telegraf.yaml
|
||||
- compose.homarr.yaml
|
||||
- compose.beszel.yaml
|
||||
- compose.grafana.yaml
|
||||
- compose.photoprism.yaml
|
||||
- compose.fluentbit.yaml
|
||||
|
||||
# Development
|
||||
- compose.gitea.yaml
|
||||
- tesla-api/compose.yaml
|
||||
|
||||
# Automation
|
||||
- compose.homeassistant.yaml
|
||||
- compose.teslamate.yaml
|
||||
- compose.nodered.yaml
|
||||
|
||||
# Download
|
||||
- compose.jackett.yaml
|
||||
- compose.prowlarr.yaml
|
||||
- compose.transmission.yaml
|
||||
- compose.qbittorrent.yaml
|
||||
|
||||
# Media
|
||||
- compose.radarr.yaml
|
||||
- compose.sonarr.yaml
|
||||
- compose.bazarr.yaml
|
||||
- compose.jellyseerr.yaml
|
||||
- compose.jellyfin.yaml
|
||||
- compose.mediamtx.yaml
|
||||
|
||||
# Networking
|
||||
- compose.surfshark.yaml
|
||||
- compose.dns-ad-blocker.yaml
|
||||
# - compose.socks.yaml
|
||||
# - compose.openvpn-server.yaml
|
||||
|
||||
# Backup
|
||||
- compose.rsnapshot.yaml
|
||||
- compose.borgmatic.yaml
|
||||
|
||||
# Sensors
|
||||
- compose.dsmr.yaml
|
||||
- compose.esphome.yaml
|
||||
- compose.mosquitto.yaml
|
||||
- compose.loki.yaml
|
||||
|
||||
# Storage
|
||||
- compose.seafile.yaml
|
||||
- compose.filebrowser.yaml
|
||||
- compose.droppy.yaml
|
||||
- compose.minio.yaml
|
||||
|
||||
# Database
|
||||
- compose.pgadmin.yaml
|
||||
- compose.postgis.yaml
|
||||
- compose.timescaledb.yaml
|
||||
- compose.influxdb.yaml
|
||||
- compose.postgres.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
|
||||
@@ -1,16 +0,0 @@
|
||||
services:
|
||||
qbittorrent:
|
||||
container_name: qbittorrent
|
||||
image: linuxserver/qbittorrent:5.0.1
|
||||
depends_on:
|
||||
- surfshark
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Amsterdam
|
||||
- WEBUI_PORT=9092
|
||||
network_mode: service:surfshark
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /opt/qbittorrent:/config
|
||||
- /media/scratch/qbittorrent:/downloads
|
||||
@@ -1,22 +0,0 @@
|
||||
services:
|
||||
radarr:
|
||||
container_name: radarr
|
||||
image: linuxserver/radarr:5.14.0
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Amsterdam
|
||||
external_links:
|
||||
- transmission
|
||||
- qbittorrent
|
||||
extra_hosts:
|
||||
- transmission:192.168.2.200
|
||||
- qbittorrent:192.168.2.200
|
||||
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
|
||||
@@ -1,9 +0,0 @@
|
||||
services:
|
||||
rsnapshot:
|
||||
container_name: rsnapshot
|
||||
image: linuxserver/rsnapshot:1.4.5
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /opt/rsnapshot:/config
|
||||
- /mnt/yotta/xenon/rsnapshot:/host/scratch
|
||||
- /root/.ssh:/root/.ssh:ro
|
||||
@@ -1,47 +0,0 @@
|
||||
services:
|
||||
seafile-mysql:
|
||||
image: mariadb:10.11
|
||||
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-server:
|
||||
image: seafileltd/seafile-mc:12.0-latest
|
||||
container_name: seafile-server
|
||||
ports:
|
||||
- "8082:80"
|
||||
volumes:
|
||||
- /opt/seafile/server:/shared
|
||||
- /media/sync/seafile:/shared/seafile/seafile-data
|
||||
environment:
|
||||
- DB_HOST=seafile-mysql
|
||||
- DB_PORT=3306
|
||||
- DB_ROOT_PASSWD=ROOT_PASSWORD
|
||||
- DB_PASSWORD=PASSWORD
|
||||
- TIME_ZONE=Europe/Amsterdam
|
||||
- INIT_SEAFILE_ADMIN_EMAIL=admin@veenboer.xyz
|
||||
- INIT_SEAFILE_ADMIN_PASSWORD=asecret
|
||||
- SEAFILE_SERVER_HOSTNAME=seafile.rik.veenboer.xyz
|
||||
- SEAFILE_SERVER_PROTOCOL=https
|
||||
- JWT_PRIVATE_KEY=8LzWzeuQ41z1i8fc1cr1L7Kw80VpTgmT
|
||||
depends_on:
|
||||
- seafile-mysql
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user