jellyfin etc.

This commit is contained in:
Stefan Ostermann 2025-02-28 23:22:29 +00:00
parent 20fcec5c6e
commit 433e78a534
19 changed files with 602 additions and 47 deletions

View File

@ -5,3 +5,5 @@ This is the docker based home server setup for a ubuntu server machine running o
The traefik proxy does not run on this machine but it's own LXC container on proxmox, there is a small script to sync it from there to here so I can have it all on one git repo. The traefik proxy does not run on this machine but it's own LXC container on proxmox, there is a small script to sync it from there to here so I can have it all on one git repo.
Stop home assistant first if jellyfin isn't starting.

View File

@ -1,6 +1,6 @@
services: services:
openwebui: openwebui:
image: ghcr.io/open-webui/open-webui:0.5.11 image: ghcr.io/open-webui/open-webui:0.5.18
container_name: open-webui container_name: open-webui
restart: always restart: always
environment: environment:

View File

@ -82,3 +82,18 @@ services:
condition: service_healthy condition: service_healthy
redis: redis:
condition: service_healthy condition: service_healthy
# authentik_ldap:
# image: ghcr.io/goauthentik/ldap
# Optionally specify which networks the container should be
# might be needed to reach the core authentik server
# networks:
# - foo
# ports:
# - 389:3389
# - 636:6636
# environment:
# AUTHENTIK_HOST: https://auth.home.thoster.net
# AUTHENTIK_INSECURE: "false"
# AUTHENTIK_TOKEN: 4mv8U8docRMUtcrMWBPvcl9lclcOvQ58OavwU6Kek5AMoDwdHgHS3ida2Reu

View File

@ -59,6 +59,6 @@ services:
- /run/udev:/run/udev:ro - /run/udev:/run/udev:ro
environment: environment:
- TZ=Europe/Amsterdam - TZ=Europe/Amsterdam
image: koenkk/zigbee2mqtt:2.0.0 image: koenkk/zigbee2mqtt:2.1.1
links: links:
- "mqtt:mqtt" - "mqtt:mqtt"

View File

@ -72,14 +72,14 @@
- id: '1723274410344' - id: '1723274410344'
alias: Fernbedienung alias: Fernbedienung
description: '' description: ''
trigger: triggers:
- platform: device - domain: mqtt
domain: mqtt
device_id: 7ee7af674fef326af8b7d7f20d1d00d6 device_id: 7ee7af674fef326af8b7d7f20d1d00d6
type: action type: action
subtype: 'on' subtype: 'on'
condition: [] trigger: device
action: conditions: []
actions:
- action: light.turn_on - action: light.turn_on
target: target:
entity_id: entity_id:
@ -99,14 +99,14 @@
- id: '1723274776341' - id: '1723274776341'
alias: Fernbedienung aus alias: Fernbedienung aus
description: '' description: ''
trigger: triggers:
- platform: device - domain: mqtt
domain: mqtt
device_id: 7ee7af674fef326af8b7d7f20d1d00d6 device_id: 7ee7af674fef326af8b7d7f20d1d00d6
type: action type: action
subtype: 'off' subtype: 'off'
condition: [] trigger: device
action: conditions: []
actions:
- action: light.turn_off - action: light.turn_off
metadata: {} metadata: {}
data: {} data: {}
@ -152,16 +152,16 @@
- da8053e3c99c43fa802f32627d9ec42e - da8053e3c99c43fa802f32627d9ec42e
mode: single mode: single
- id: '1732045729333' - id: '1732045729333'
alias: Wasser Spüle alias: Wasser Spüle!
description: '' description: ''
trigger: triggers:
- type: moist - type: moist
platform: device
device_id: ed19b3502ef3dad70cca3de834a993bc device_id: ed19b3502ef3dad70cca3de834a993bc
entity_id: af627c5df02c10ebfdc7e677b2934f12 entity_id: af627c5df02c10ebfdc7e677b2934f12
domain: binary_sensor domain: binary_sensor
condition: [] trigger: device
action: conditions: []
actions:
- action: notify.mobile_app_sm_a536b - action: notify.mobile_app_sm_a536b
metadata: {} metadata: {}
data: data:
@ -241,12 +241,12 @@
entity_id: 2a315e13dac7a4d0e3a5331216e79a5b entity_id: 2a315e13dac7a4d0e3a5331216e79a5b
domain: switch domain: switch
- type: toggle - type: toggle
device_id: aa992894922dfd99d4de351691fddbeb device_id: 0477c12763b17a6f8e00e457e2241c65
entity_id: c9e060ed610aaa859483ed162741f6b8 entity_id: 47503c95c474e4f8bfba5f00c725a1d4
domain: light domain: light
mode: single mode: single
- id: '1733523672915' - id: '1733523672915'
alias: Nur Küchentisch Doppelklick alias: Nur Küchentisch Doppelklick!
description: '' description: ''
triggers: triggers:
- device_id: f9bd33dde8040b0c80b8ef35f0eff174 - device_id: f9bd33dde8040b0c80b8ef35f0eff174
@ -357,7 +357,7 @@
domain: switch domain: switch
mode: single mode: single
- id: '1733861633781' - id: '1733861633781'
alias: Fernbedienung wieder hell alias: Fernbedienung wieder hell!
description: '' description: ''
triggers: triggers:
- domain: mqtt - domain: mqtt
@ -378,7 +378,7 @@
- scene.maximales_licht - scene.maximales_licht
mode: single mode: single
- id: '1733861763897' - id: '1733861763897'
alias: Fernbedienung abdunkeln alias: Fernbedienung abdunkeln!
description: '' description: ''
triggers: triggers:
- domain: mqtt - domain: mqtt
@ -400,7 +400,7 @@
entity_id: scene.hanna_schlafmodus entity_id: scene.hanna_schlafmodus
mode: single mode: single
- id: '1733862634974' - id: '1733862634974'
alias: Küche Wohnzimmer an alias: Küche Wohnzimmer an!
description: '' description: ''
triggers: triggers:
- domain: mqtt - domain: mqtt
@ -428,7 +428,7 @@
domain: switch domain: switch
mode: single mode: single
- id: '1733862691860' - id: '1733862691860'
alias: Küche Wohnzimmer aus alias: Küche Wohnzimmer aus!
description: '' description: ''
triggers: triggers:
- domain: mqtt - domain: mqtt
@ -465,7 +465,7 @@
domain: switch domain: switch
trigger: device trigger: device
for: for:
hours: 0 hours: 1
minutes: 30 minutes: 30
seconds: 0 seconds: 0
conditions: conditions:
@ -474,10 +474,6 @@
device_id: ef6d5a43ae7c971e4b7b740dbc0f378e device_id: ef6d5a43ae7c971e4b7b740dbc0f378e
entity_id: d212bffda3c532f2e43ea9d08b1fd008 entity_id: d212bffda3c532f2e43ea9d08b1fd008
domain: switch domain: switch
for:
hours: 0
minutes: 59
seconds: 0
actions: actions:
- type: turn_off - type: turn_off
device_id: ef6d5a43ae7c971e4b7b740dbc0f378e device_id: ef6d5a43ae7c971e4b7b740dbc0f378e

View File

@ -19,11 +19,13 @@ switch:
turn_off: turn_off:
service: shell_command.turn_off_remote_pc service: shell_command.turn_off_remote_pc
- platform: template - platform: template
name: "comfyui" switches:
turn_on: comfyui:
service: shell_command.start_comfy_ui friendly_name: "comfyui"
turn_off: turn_on:
service: shell_command.turn_off_remote_pc service: shell_command.start_comfy_ui
turn_off:
service: shell_command.stop_comfy_ui
#MQTT Broker for milight hub: #MQTT Broker for milight hub:
mqtt: mqtt:

View File

@ -1,2 +1,3 @@
turn_off_remote_pc: "ssh -i /config/ssh_keys/id_rsa_homeassistant -o 'StrictHostKeyChecking=no' homeassistant@192.168.178.87 sudo shutdown -h now" turn_off_remote_pc: "ssh -i /config/ssh_keys/id_rsa_homeassistant -o 'StrictHostKeyChecking=no' homeassistant@192.168.178.87 sudo shutdown -h now"
start_comfy_ui: "ssh -i /config/ssh_keys/id_rsa_homeassistant -o 'StrictHostKeyChecking=no' homeassistant@192.168.178.87 bash -c 'cd /home/oster/git/ComfyUI;./start.sh; read x'" start_comfy_ui: "ssh -i /config/ssh_keys/id_rsa_homeassistant -o 'StrictHostKeyChecking=no' homeassistant@192.168.178.87 bash -c 'cd /home/oster/git/ComfyUI;./start.sh; read x'"
stop_comfy_ui: "echo 0"

View File

@ -19,7 +19,8 @@ services:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/usr/src/app/upload - ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
- /mnt/usb_ssd/Pictures:/Pictures - ./data/pictures:/Pictures
- ./data/mobile-pictures:/mobile-pictures
- /mnt/test:/test - /mnt/test:/test
env_file: env_file:
- .env - .env

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<EncodingOptions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<EncodingThreadCount>-1</EncodingThreadCount>
<EnableFallbackFont>false</EnableFallbackFont>
<EnableAudioVbr>false</EnableAudioVbr>
<DownMixAudioBoost>2</DownMixAudioBoost>
<DownMixStereoAlgorithm>None</DownMixStereoAlgorithm>
<MaxMuxingQueueSize>2048</MaxMuxingQueueSize>
<EnableThrottling>false</EnableThrottling>
<ThrottleDelaySeconds>180</ThrottleDelaySeconds>
<EnableSegmentDeletion>false</EnableSegmentDeletion>
<SegmentKeepSeconds>720</SegmentKeepSeconds>
<HardwareAccelerationType>none</HardwareAccelerationType>
<EncoderAppPathDisplay>/usr/lib/jellyfin-ffmpeg/ffmpeg</EncoderAppPathDisplay>
<VaapiDevice>/dev/dri/renderD128</VaapiDevice>
<QsvDevice />
<EnableTonemapping>false</EnableTonemapping>
<EnableVppTonemapping>false</EnableVppTonemapping>
<EnableVideoToolboxTonemapping>false</EnableVideoToolboxTonemapping>
<TonemappingAlgorithm>bt2390</TonemappingAlgorithm>
<TonemappingMode>auto</TonemappingMode>
<TonemappingRange>auto</TonemappingRange>
<TonemappingDesat>0</TonemappingDesat>
<TonemappingPeak>100</TonemappingPeak>
<TonemappingParam>0</TonemappingParam>
<VppTonemappingBrightness>16</VppTonemappingBrightness>
<VppTonemappingContrast>1</VppTonemappingContrast>
<H264Crf>23</H264Crf>
<H265Crf>28</H265Crf>
<EncoderPreset xsi:nil="true" />
<DeinterlaceDoubleRate>false</DeinterlaceDoubleRate>
<DeinterlaceMethod>yadif</DeinterlaceMethod>
<EnableDecodingColorDepth10Hevc>true</EnableDecodingColorDepth10Hevc>
<EnableDecodingColorDepth10Vp9>true</EnableDecodingColorDepth10Vp9>
<EnableDecodingColorDepth10HevcRext>false</EnableDecodingColorDepth10HevcRext>
<EnableDecodingColorDepth12HevcRext>false</EnableDecodingColorDepth12HevcRext>
<EnableEnhancedNvdecDecoder>true</EnableEnhancedNvdecDecoder>
<PreferSystemNativeHwDecoder>true</PreferSystemNativeHwDecoder>
<EnableIntelLowPowerH264HwEncoder>false</EnableIntelLowPowerH264HwEncoder>
<EnableIntelLowPowerHevcHwEncoder>false</EnableIntelLowPowerHevcHwEncoder>
<EnableHardwareEncoding>true</EnableHardwareEncoding>
<AllowHevcEncoding>false</AllowHevcEncoding>
<AllowAv1Encoding>false</AllowAv1Encoding>
<EnableSubtitleExtraction>true</EnableSubtitleExtraction>
<HardwareDecodingCodecs>
<string>h264</string>
<string>vc1</string>
</HardwareDecodingCodecs>
<AllowOnDemandMetadataBasedKeyframeExtractionForExtensions>
<string>mkv</string>
</AllowOnDemandMetadataBasedKeyframeExtractionForExtensions>
</EncodingOptions>

View File

@ -0,0 +1,38 @@
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"WriteTo": [
{
"Name": "Console",
"Args": {
"outputTemplate": "[{Timestamp:HH:mm:ss}] [{Level:u3}] [{ThreadId}] {SourceContext}: {Message:lj}{NewLine}{Exception}"
}
},
{
"Name": "Async",
"Args": {
"configure": [
{
"Name": "File",
"Args": {
"path": "%JELLYFIN_LOG_DIR%//log_.log",
"rollingInterval": "Day",
"retainedFileCountLimit": 3,
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": 100000000,
"outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz}] [{Level:u3}] [{ThreadId}] {SourceContext}: {Message}{NewLine}{Exception}"
}
}
]
}
}
],
"Enrich": [ "FromLogContext", "WithThreadId" ]
}
}

View File

@ -0,0 +1,153 @@
<?xml version="1.0" encoding="utf-8"?>
<MigrationOptions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Applied>
<ValueTupleOfGuidString>
<Item1>9b354818-94d5-4b68-ac49-e35cb85f9d84</Item1>
<Item2>CreateNetworkConfiguration</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>a6dcacf4-c057-4ef9-80d3-61cef9ddb4f0</Item1>
<Item2>MigrateMusicBrainzTimeout</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>4fb5c950-1991-11ee-9b4b-0800200c9a66</Item1>
<Item2>MigrateNetworkConfiguration</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>a8e61960-7726-4450-8f3d-82c12daabbcb</Item1>
<Item2>MigrateEncodingOptions</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>4124c2cd-e939-4ffb-9be9-9b311c413638</Item1>
<Item2>DisableTranscodingThrottling</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>ef103419-8451-40d8-9f34-d1a8e93a1679</Item1>
<Item2>CreateLoggingConfigHeirarchy</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>3793eb59-bc8c-456c-8b9f-bd5a62a42978</Item1>
<Item2>MigrateActivityLogDatabase</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>acbe17b7-8435-4a83-8b64-6fcf162cb9bd</Item1>
<Item2>RemoveDuplicateExtras</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>5c4b82a2-f053-4009-bd05-b6fcad82f14c</Item1>
<Item2>MigrateUserDatabase</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>06387815-c3cc-421f-a888-fb5f9992bea8</Item1>
<Item2>MigrateDisplayPreferencesDatabase</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>a81f75e0-8f43-416f-a5e8-516ccab4d8cc</Item1>
<Item2>RemoveDownloadImagesInAdvance</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>5bd72f41-e6f3-4f60-90aa-09869abe0e22</Item1>
<Item2>MigrateAuthenticationDatabase</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>615dfa9e-2497-4dbb-a472-61938b752c5b</Item1>
<Item2>FixPlaylistOwner</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>d34bfc33-5d2e-4790-8085-069ef6eecb4e</Item1>
<Item2>MigrateRatingLevels</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>cf6fabc2-9fbe-4933-84a5-ffe52ef22a58</Item1>
<Item2>FixAudioData</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>96c156a2-7a13-4b3b-a8b8-fb80c94d20c0</Item1>
<Item2>RemoveDuplicatePlaylistChildren</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>eb58ebee-9514-4b9b-8225-12e1a40020df</Item1>
<Item2>AddDefaultPluginRepository</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>5f86e7f6-d966-4c77-849d-7a7b40b68c4e</Item1>
<Item2>ReaddDefaultPluginRepository</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>34a1a1c4-5572-418e-a2f8-32cdfe2668e8</Item1>
<Item2>AddDefaultCastReceivers</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>852816e0-2712-49a9-9240-c6fc5fcad1a8</Item1>
<Item2>UpdateDefaultPluginRepository10.9</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>4ef123d5-8eff-4b0b-869d-3aed07a60e1b</Item1>
<Item2>MoveTrickplayFiles</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>9b354818-94d5-4b68-ac49-e35cb85f9d84</Item1>
<Item2>CreateNetworkConfiguration</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>a6dcacf4-c057-4ef9-80d3-61cef9ddb4f0</Item1>
<Item2>MigrateMusicBrainzTimeout</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>4fb5c950-1991-11ee-9b4b-0800200c9a66</Item1>
<Item2>MigrateNetworkConfiguration</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>a8e61960-7726-4450-8f3d-82c12daabbcb</Item1>
<Item2>MigrateEncodingOptions</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>4124c2cd-e939-4ffb-9be9-9b311c413638</Item1>
<Item2>DisableTranscodingThrottling</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>ef103419-8451-40d8-9f34-d1a8e93a1679</Item1>
<Item2>CreateLoggingConfigHeirarchy</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>3793eb59-bc8c-456c-8b9f-bd5a62a42978</Item1>
<Item2>MigrateActivityLogDatabase</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>acbe17b7-8435-4a83-8b64-6fcf162cb9bd</Item1>
<Item2>RemoveDuplicateExtras</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>5c4b82a2-f053-4009-bd05-b6fcad82f14c</Item1>
<Item2>MigrateUserDatabase</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>06387815-c3cc-421f-a888-fb5f9992bea8</Item1>
<Item2>MigrateDisplayPreferencesDatabase</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>a81f75e0-8f43-416f-a5e8-516ccab4d8cc</Item1>
<Item2>RemoveDownloadImagesInAdvance</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>5bd72f41-e6f3-4f60-90aa-09869abe0e22</Item1>
<Item2>MigrateAuthenticationDatabase</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>615dfa9e-2497-4dbb-a472-61938b752c5b</Item1>
<Item2>FixPlaylistOwner</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>d34bfc33-5d2e-4790-8085-069ef6eecb4e</Item1>
<Item2>MigrateRatingLevels</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>cf6fabc2-9fbe-4933-84a5-ffe52ef22a58</Item1>
<Item2>FixAudioData</Item2>
</ValueTupleOfGuidString>
<ValueTupleOfGuidString>
<Item1>96c156a2-7a13-4b3b-a8b8-fb80c94d20c0</Item1>
<Item2>RemoveDuplicatePlaylistChildren</Item2>
</ValueTupleOfGuidString>
</Applied>
</MigrationOptions>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<NetworkConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<BaseUrl />
<EnableHttps>false</EnableHttps>
<RequireHttps>false</RequireHttps>
<CertificatePath />
<CertificatePassword />
<InternalHttpPort>8096</InternalHttpPort>
<InternalHttpsPort>8920</InternalHttpsPort>
<PublicHttpPort>8096</PublicHttpPort>
<PublicHttpsPort>8920</PublicHttpsPort>
<AutoDiscovery>true</AutoDiscovery>
<EnableUPnP>false</EnableUPnP>
<EnableIPv4>true</EnableIPv4>
<EnableIPv6>false</EnableIPv6>
<EnableRemoteAccess>true</EnableRemoteAccess>
<LocalNetworkSubnets />
<LocalNetworkAddresses />
<KnownProxies />
<IgnoreVirtualInterfaces>true</IgnoreVirtualInterfaces>
<VirtualInterfaceNames>
<string>veth</string>
</VirtualInterfaceNames>
<EnablePublishedServerUriByRequest>false</EnablePublishedServerUriByRequest>
<PublishedServerUriBySubnet />
<RemoteIPFilter />
<IsRemoteIPFilterBlacklist>false</IsRemoteIPFilterBlacklist>
</NetworkConfiguration>

View File

@ -0,0 +1,191 @@
<?xml version="1.0" encoding="utf-8"?>
<ServerConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<LogFileRetentionDays>3</LogFileRetentionDays>
<IsStartupWizardCompleted>true</IsStartupWizardCompleted>
<EnableMetrics>false</EnableMetrics>
<EnableNormalizedItemByNameIds>true</EnableNormalizedItemByNameIds>
<IsPortAuthorized>true</IsPortAuthorized>
<QuickConnectAvailable>true</QuickConnectAvailable>
<EnableCaseSensitiveItemIds>true</EnableCaseSensitiveItemIds>
<DisableLiveTvChannelUserDataName>true</DisableLiveTvChannelUserDataName>
<MetadataPath />
<PreferredMetadataLanguage>en</PreferredMetadataLanguage>
<MetadataCountryCode>US</MetadataCountryCode>
<SortReplaceCharacters>
<string>.</string>
<string>+</string>
<string>%</string>
</SortReplaceCharacters>
<SortRemoveCharacters>
<string>,</string>
<string>&amp;</string>
<string>-</string>
<string>{</string>
<string>}</string>
<string>'</string>
</SortRemoveCharacters>
<SortRemoveWords>
<string>the</string>
<string>a</string>
<string>an</string>
</SortRemoveWords>
<MinResumePct>5</MinResumePct>
<MaxResumePct>90</MaxResumePct>
<MinResumeDurationSeconds>300</MinResumeDurationSeconds>
<MinAudiobookResume>5</MinAudiobookResume>
<MaxAudiobookResume>5</MaxAudiobookResume>
<InactiveSessionThreshold>0</InactiveSessionThreshold>
<LibraryMonitorDelay>60</LibraryMonitorDelay>
<LibraryUpdateDuration>30</LibraryUpdateDuration>
<ImageSavingConvention>Legacy</ImageSavingConvention>
<MetadataOptions>
<MetadataOptions>
<ItemType>Book</ItemType>
<DisabledMetadataSavers />
<LocalMetadataReaderOrder />
<DisabledMetadataFetchers />
<MetadataFetcherOrder />
<DisabledImageFetchers />
<ImageFetcherOrder />
</MetadataOptions>
<MetadataOptions>
<ItemType>Movie</ItemType>
<DisabledMetadataSavers />
<LocalMetadataReaderOrder />
<DisabledMetadataFetchers />
<MetadataFetcherOrder />
<DisabledImageFetchers />
<ImageFetcherOrder />
</MetadataOptions>
<MetadataOptions>
<ItemType>MusicVideo</ItemType>
<DisabledMetadataSavers />
<LocalMetadataReaderOrder />
<DisabledMetadataFetchers>
<string>The Open Movie Database</string>
</DisabledMetadataFetchers>
<MetadataFetcherOrder />
<DisabledImageFetchers>
<string>The Open Movie Database</string>
</DisabledImageFetchers>
<ImageFetcherOrder />
</MetadataOptions>
<MetadataOptions>
<ItemType>Series</ItemType>
<DisabledMetadataSavers />
<LocalMetadataReaderOrder />
<DisabledMetadataFetchers />
<MetadataFetcherOrder />
<DisabledImageFetchers />
<ImageFetcherOrder />
</MetadataOptions>
<MetadataOptions>
<ItemType>MusicAlbum</ItemType>
<DisabledMetadataSavers />
<LocalMetadataReaderOrder />
<DisabledMetadataFetchers>
<string>TheAudioDB</string>
</DisabledMetadataFetchers>
<MetadataFetcherOrder />
<DisabledImageFetchers />
<ImageFetcherOrder />
</MetadataOptions>
<MetadataOptions>
<ItemType>MusicArtist</ItemType>
<DisabledMetadataSavers />
<LocalMetadataReaderOrder />
<DisabledMetadataFetchers>
<string>TheAudioDB</string>
</DisabledMetadataFetchers>
<MetadataFetcherOrder />
<DisabledImageFetchers />
<ImageFetcherOrder />
</MetadataOptions>
<MetadataOptions>
<ItemType>BoxSet</ItemType>
<DisabledMetadataSavers />
<LocalMetadataReaderOrder />
<DisabledMetadataFetchers />
<MetadataFetcherOrder />
<DisabledImageFetchers />
<ImageFetcherOrder />
</MetadataOptions>
<MetadataOptions>
<ItemType>Season</ItemType>
<DisabledMetadataSavers />
<LocalMetadataReaderOrder />
<DisabledMetadataFetchers />
<MetadataFetcherOrder />
<DisabledImageFetchers />
<ImageFetcherOrder />
</MetadataOptions>
<MetadataOptions>
<ItemType>Episode</ItemType>
<DisabledMetadataSavers />
<LocalMetadataReaderOrder />
<DisabledMetadataFetchers />
<MetadataFetcherOrder />
<DisabledImageFetchers />
<ImageFetcherOrder />
</MetadataOptions>
</MetadataOptions>
<SkipDeserializationForBasicTypes>true</SkipDeserializationForBasicTypes>
<ServerName />
<UICulture>de</UICulture>
<SaveMetadataHidden>false</SaveMetadataHidden>
<ContentTypes />
<RemoteClientBitrateLimit>0</RemoteClientBitrateLimit>
<EnableFolderView>false</EnableFolderView>
<EnableGroupingIntoCollections>false</EnableGroupingIntoCollections>
<DisplaySpecialsWithinSeasons>true</DisplaySpecialsWithinSeasons>
<CodecsUsed />
<PluginRepositories>
<RepositoryInfo>
<Name>Jellyfin Stable</Name>
<Url>https://repo.jellyfin.org/files/plugin/manifest.json</Url>
<Enabled>true</Enabled>
</RepositoryInfo>
</PluginRepositories>
<EnableExternalContentInSuggestions>true</EnableExternalContentInSuggestions>
<ImageExtractionTimeoutMs>0</ImageExtractionTimeoutMs>
<PathSubstitutions />
<EnableSlowResponseWarning>true</EnableSlowResponseWarning>
<SlowResponseThresholdMs>500</SlowResponseThresholdMs>
<CorsHosts>
<string>*</string>
</CorsHosts>
<ActivityLogRetentionDays>30</ActivityLogRetentionDays>
<LibraryScanFanoutConcurrency>0</LibraryScanFanoutConcurrency>
<LibraryMetadataRefreshConcurrency>0</LibraryMetadataRefreshConcurrency>
<RemoveOldPlugins>true</RemoveOldPlugins>
<AllowClientLogUpload>true</AllowClientLogUpload>
<DummyChapterDuration>0</DummyChapterDuration>
<ChapterImageResolution>MatchSource</ChapterImageResolution>
<ParallelImageEncodingLimit>0</ParallelImageEncodingLimit>
<CastReceiverApplications>
<CastReceiverApplication>
<Id>F007D354</Id>
<Name>Stable</Name>
</CastReceiverApplication>
<CastReceiverApplication>
<Id>6F511C87</Id>
<Name>Unstable</Name>
</CastReceiverApplication>
</CastReceiverApplications>
<TrickplayOptions>
<EnableHwAcceleration>false</EnableHwAcceleration>
<EnableHwEncoding>false</EnableHwEncoding>
<EnableKeyFrameOnlyExtraction>false</EnableKeyFrameOnlyExtraction>
<ScanBehavior>NonBlocking</ScanBehavior>
<ProcessPriority>BelowNormal</ProcessPriority>
<Interval>10000</Interval>
<WidthResolutions>
<int>320</int>
</WidthResolutions>
<TileWidth>10</TileWidth>
<TileHeight>10</TileHeight>
<Qscale>4</Qscale>
<JpegQuality>90</JpegQuality>
<ProcessThreads>1</ProcessThreads>
</TrickplayOptions>
</ServerConfiguration>

View File

@ -0,0 +1,33 @@
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
user: 1000:1000
# network_mode: 'host'
ports:
- 8096:8096
- 8920:8920 #optional
- 7359:7359/udp #optional
- 1900:1900/udp #optional
volumes:
- ./config:/config
- ./cache:/cache
- type: bind
source: /media/extension/music
target: /music
- type: bind
source: /media/extension/video
target: /video
# read_only: true
# Optional - extra fonts to be used during transcoding with subtitle burn-in
# - type: bind
# source: /path/to/fonts
# target: /usr/local/share/fonts/custom
# read_only: true
restart: 'unless-stopped'
# Optional - alternative address used for autodiscovery
environment:
- JELLYFIN_PublishedServerUrl=http://example.com
# Optional - may be necessary for docker healthcheck to pass if running in host network mode
extra_hosts:
- 'host.docker.internal:host-gateway'

3
samba/README.md Normal file
View File

@ -0,0 +1,3 @@
# Samba in a docker container
TODO: Ldap. Note: smb.conf from config is not used, only during docker image build! ldap can not be configured in the compose file.

View File

@ -4,7 +4,16 @@
dns proxy = no dns proxy = no
# password stuff # password stuff
passdb backend = smbpasswd # passdb backend = smbpasswd
# LDAP Configuration
passdb backend = ldapsam:ldap://ubuntu:389
ldap admin dn = cn=samba,ou=users,dc=home,dc=thoster,dc=net
ldap suffix = dc=home,dc=thoster,dc=net
ldap user suffix = ou=users
ldap group suffix = ou=groups
# rest via docker compose
obey pam restrictions = yes obey pam restrictions = yes
security = user security = user

View File

@ -20,7 +20,6 @@ services:
SAMBA_CONF_LOG_LEVEL: 3 SAMBA_CONF_LOG_LEVEL: 3
# uncomment to disable optional services # uncomment to disable optional services
#WSDD2_DISABLE: 1 #WSDD2_DISABLE: 1
#AVAHI_DISABLE: 1 #AVAHI_DISABLE: 1
@ -34,19 +33,22 @@ services:
#ACCOUNT_oster: "oster:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:86C156FC198B358CCCF6278D8BD49B6A:[U ]:LCT-61B0859A:" #ACCOUNT_oster: "oster:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:86C156FC198B358CCCF6278D8BD49B6A:[U ]:LCT-61B0859A:"
ACCOUNT_oster: "oster:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:079B8E33CB77467761A3B505A15D8163:[U ]:LCT-67A885B6:" ACCOUNT_oster: "oster:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:079B8E33CB77467761A3B505A15D8163:[U ]:LCT-67A885B6:"
ACCOUNT_karin: "karin:1001:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:580F67E12940BCE800781B09EA453D4D:[U ]:LCT-67BF7AE3:"
# example for password hashes in the list format: # example for password hashes in the list format:
# - "ACCOUNT_foo=foo:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:8846F7EAEE8FB117AD06BDD830B7586C:[U ]:LCT-5FE1F7DF:" # - "ACCOUNT_foo=foo:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:8846F7EAEE8FB117AD06BDD830B7586C:[U ]:LCT-5FE1F7DF:"
UID_oster: 1000 UID_oster: 1000
UID_karin: 1001
GROUPS_oster: family GROUPS_oster: family
GROUPS_karin: family
#SAMBA_VOLUME_CONFIG_shared_home: "[Home]; path=/home/%U; valid users = oster; guest ok = no; read only = no; browseable = yes" SAMBA_VOLUME_CONFIG_oster: "[oster]; path=/shares/oster; valid users = oster; guest ok = no; read only = no; browseable = yes"
SAMBA_VOLUME_CONFIG_home: "[oster]; path=/shares/oster; valid users = oster; guest ok = no; read only = no; browseable = yes" SAMBA_VOLUME_CONFIG_karin: "[karin]; path=/shares/karin; valid users = karin; guest ok = no; read only = no; browseable = yes"
SAMBA_VOLUME_CONFIG_paperless: "[paperless]; path=/shares/paperless-consume; valid users = oster; guest ok = no; read only = no; browseable = yes" SAMBA_VOLUME_CONFIG_paperless: "[paperless]; path=/shares/paperless-consume; valid users = oster, karin; guest ok = no; read only = no; browseable = yes"
SAMBA_VOLUME_CONFIG_public: "[Public]; path=/shares/public; valid users = oster, karin; guest ok = no; read only = no; browseable = yes"
SAMBA_VOLUME_CONFIG_public: "[Public]; path=/shares/public; valid users = oster; guest ok = no; read only = no; browseable = yes; force group = 1000" SAMBA_VOLUME_CONFIG_public_ro: "[Public ReadOnly]; path=/shares/public; guest ok = yes; read only = yes; browseable = yes"
SAMBA_VOLUME_CONFIG_public_ro: "[Public ReadOnly]; path=/shares/public; guest ok = yes; read only = yes; browseable = yes; force group = 1000" SAMBA_VOLUME_CONFIG_video_ro: "[Video]; path=/shares/video; guest ok = no; read only = no; browseable = yes"
SAMBA_VOLUME_CONFIG_music_ro: "[Music]; path=/shares/music; guest ok = no; read only = no; browseable = yes"
SAMBA_VOLUME_CONFIG_karinstefan: "[karin stefan]; path=/shares/karin-stefan; valid users = oster, karin; guest ok = no; read only = no; browseable = yes"
#SAMBA_VOLUME_CONFIG_guestmultilineexample: | #SAMBA_VOLUME_CONFIG_guestmultilineexample: |
# [Guest Share] # [Guest Share]
# path = /shares/guest # path = /shares/guest
@ -57,6 +59,10 @@ services:
- /etc/avahi/services/:/external/avahi - /etc/avahi/services/:/external/avahi
# avoid loops when mounting folders to /shares (I'd recommend explicit mapping for each share) # avoid loops when mounting folders to /shares (I'd recommend explicit mapping for each share)
- ./shares/public:/shares/public - /media/ssd/public:/shares/public
- ./shares/oster:/shares/oster - /media/ssd/oster:/shares/oster
- /media/ssd/karin:/shares/karin
- /media/ssd/karin-stefan:/shares/karin-stefan
- /media/extension/music:/shares/music
- /media/extension/video:/shares/video
- ./paperless-consume:/shares/paperless-consume - ./paperless-consume:/shares/paperless-consume

View File

@ -36,6 +36,13 @@ http:
service: paperless-service service: paperless-service
tls: tls:
certResolver: letsencrypt certResolver: letsencrypt
jellyfin-router:
entryPoints:
- "websecure"
rule: "Host(`media.home.thoster.net`) && PathPrefix(`/`)"
service: jellyfin-service
tls:
certResolver: letsencrypt
hass-router-auth: hass-router-auth:
entryPoints: entryPoints:
- "websecure" - "websecure"
@ -157,6 +164,10 @@ http:
loadBalancer: loadBalancer:
servers: servers:
- url: "http://ubuntu:8000" - url: "http://ubuntu:8000"
jellyfin-service:
loadBalancer:
servers:
- url: "http://ubuntu:8096"
dummy-service: dummy-service:
loadBalancer: loadBalancer:
servers: servers:

View File

@ -8,15 +8,21 @@
[Paperless Dokumentenmanagement](https://pl.home.thoster.net) [Paperless Dokumentenmanagement](https://pl.home.thoster.net)
[Jellyfin Medien](https://media.home.thoster.net)
[KI Server](https://ai.home.thoster.net) -> wenn der Rechner im Keller aus ist, gehen nur die öffentlichen Modelle! [KI Server](https://ai.home.thoster.net) -> wenn der Rechner im Keller aus ist, gehen nur die öffentlichen Modelle!
Der Rechner lässt sich über Homeassistant hochfahren!
#### Alte Dinge #### Alte Dinge
[Photo App auf der NAS](https://home.thoster.net:446/photo/) [Photo App auf der NAS](https://home.thoster.net:446/photo/)
### Interne Dienste ### Interne Dienste
[Proxmox](https://192.168.178.99:8006) [Proxmox](https://192.168.178.99:8006)
[Jellyfin Medienserver](http://ubuntu:8096/)
[Zigbee2mqtt](http://ubuntu:8080/#/) [Zigbee2mqtt](http://ubuntu:8080/#/)
[Portainer](http://ubuntu:9100) [Portainer](http://ubuntu:9100)
@ -29,7 +35,15 @@
[Paperless ai](http://ubuntu:3000/) [Paperless ai](http://ubuntu:3000/)
#### Netzlaufwerke
Unter Windows mit ```\\ubuntu```
Hier gibt es die bekannten Netzlaufwerke für Backups, z.B. karin-stefan
https://www.reddit.com/r/homeassistant/comments/oje65v/home_assitant_with_grafana_and_influxdb_2x_basic/ https://www.reddit.com/r/homeassistant/comments/oje65v/home_assitant_with_grafana_and_influxdb_2x_basic/
### Probleme / TODOs ### Probleme / TODOs
#### Homeassistant
* Nach dem Neustart des Servers funktioniert der zigbee stick nicht! In Proxmox entfernen und wieder hinzufügen. * Nach dem Neustart des Servers funktioniert der zigbee stick nicht! In Proxmox entfernen und wieder hinzufügen.