Closed cprpolo closed 3 months ago
I'm using portainer and the logs from jellyfin:
[migrations] started [migrations] no migrations found usermod: no changes ─────────────────────────────────────── ██╗ ███████╗██╗ ██████╗ ██║ ██╔════╝██║██╔═══██╗ ██║ ███████╗██║██║ ██║ ██║ ╚════██║██║██║ ██║ ███████╗███████║██║╚██████╔╝ ╚══════╝╚══════╝╚═╝ ╚═════╝ Brought to you by linuxserver.io ─────────────────────────────────────── To support the app dev(s) visit: Jellyfin: https://opencollective.com/jellyfin To support LSIO projects visit: https://www.linuxserver.io/donate/ ─────────────────────────────────────── GID/UID ─────────────────────────────────────── User UID: 1000 User GID: 1000 ─────────────────────────────────────── [custom-init] No custom files found, skipping... failed to load external entity "/config/network.xml" [19:43:13] [INF] [1] Main: Jellyfin version: 10.8.10 [19:43:13] [INF] [1] Main: Environment Variables: ["[JELLYFIN_CACHE_DIR, /config/cache]", "[JELLYFIN_WEB_DIR, /usr/share/jellyfin/web]", "[JELLYFIN_DATA_DIR, /config/data]", "[JELLYFIN_CONFIG_DIR, /config]", "[JELLYFIN_LOG_DIR, /config/log]"] [19:43:13] [INF] [1] Main: Arguments: ["/usr/lib/jellyfin/bin/jellyfin.dll", "--ffmpeg=/usr/lib/jellyfin-ffmpeg/ffmpeg"] [19:43:13] [INF] [1] Main: Operating system: Linux [19:43:13] [INF] [1] Main: Architecture: X64 [19:43:13] [INF] [1] Main: 64-Bit Process: True [19:43:13] [INF] [1] Main: User Interactive: True [19:43:13] [INF] [1] Main: Processor count: 4 [19:43:13] [INF] [1] Main: Program data path: /config/data [19:43:13] [INF] [1] Main: Web resources path: /usr/share/jellyfin/web [19:43:13] [INF] [1] Main: Application directory: /usr/lib/jellyfin/bin/ [19:43:13] [INF] [1] Jellyfin.Server.Migrations.MigrationRunner: Applying migration 'CreateNetworkConfiguration' [19:43:13] [INF] [1] Jellyfin.Server.Migrations.MigrationRunner: Migration 'CreateNetworkConfiguration' applied successfully [19:43:13] [INF] [1] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /config/cache [19:43:13] [INF] [1] Emby.Server.Implementations.ApplicationHost: Loading assemblies [19:43:14] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Defined LAN addresses : [10.0.0.0/8,172.16.0.0/12,192.168.0.0/16] [19:43:14] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Defined LAN exclusions : [] [19:43:14] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Using LAN addresses: [10.0.0.0/8,172.16.0.0/12,192.168.0.0/16] [19:43:14] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Using bind addresses: [] [19:43:14] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Using bind exclusions: [] [19:43:16] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: TMDb 10.8.10.0 [19:43:16] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: Studio Images 10.8.10.0 [19:43:16] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: OMDb 10.8.10.0 [19:43:16] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: MusicBrainz 10.8.10.0 [19:43:16] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: AudioDB 10.8.10.0 [19:43:16] [INF] [1] Main: Kestrel listening on Any IP4 Address [19:43:16] [WRN] [1] Microsoft.AspNetCore.DataProtection.Repositories.EphemeralXmlRepository: Using an in-memory repository. Keys will not be persisted to storage. [19:43:16] [WRN] [1] Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager: Neither user profile nor HKLM registry available. Using an ephemeral key repository. Protected data will be unavailable when application exits. [19:43:16] [WRN] [1] Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager: No XML encryptor configured. Key {b9d7abd2-cfe9-42b9-960e-50ed289040fb} may be persisted to storage in unencrypted form. [19:43:16] [INF] [1] Emby.Server.Implementations.ApplicationHost: Running startup tasks [19:43:16] [INF] [1] Emby.Server.Implementations.ScheduledTasks.TaskManager: Daily trigger for Extract Chapter Images set to fire at 2023-07-30 02:00:00.000 +02:00, which is 06:16:43.2803240 from now. [19:43:17] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Found ffmpeg version 5.1.3 [19:43:17] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available decoders: ["libdav1d", "av1", "av1_cuvid", "av1_qsv", "h264", "h264_qsv", "h264_cuvid", "hevc", "hevc_qsv", "hevc_cuvid", "mpeg2video", "mpeg2_qsv", "mpeg2_cuvid", "mpeg4", "mpeg4_cuvid", "msmpeg4", "vc1_qsv", "vc1_cuvid", "vp8", "libvpx", "vp8_cuvid", "vp8_qsv", "vp9", "libvpx-vp9", "vp9_cuvid", "vp9_qsv", "aac", "ac3", "dca", "flac", "mp3", "truehd"] [19:43:17] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available encoders: ["libx264", "h264_amf", "h264_nvenc", "h264_qsv", "h264_v4l2m2m", "h264_vaapi", "libx265", "hevc_amf", "hevc_nvenc", "hevc_qsv", "hevc_vaapi", "mpeg4", "msmpeg4", "libvpx", "libvpx-vp9", "aac", "libfdk_aac", "ac3", "dca", "flac", "libmp3lame", "libopus", "truehd", "libvorbis", "srt"] [19:43:17] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available filters: ["deinterlace_qsv", "deinterlace_vaapi", "hwupload_cuda", "hwupload_vaapi", "overlay_opencl", "overlay_qsv", "overlay_vaapi", "overlay_cuda", "procamp_vaapi", "scale_cuda", "scale_opencl", "scale_qsv", "scale_vaapi", "tonemap_cuda", "tonemap_opencl", "tonemap_vaapi", "vpp_qsv", "yadif_cuda", "zscale", "alphasrc"] [19:43:17] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available hwaccel types: ["cuda", "vaapi", "qsv", "drm", "opencl", "vulkan"] [19:43:17] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: FFmpeg: /usr/lib/jellyfin-ffmpeg/ffmpeg [19:43:17] [INF] [1] Emby.Server.Implementations.ApplicationHost: ServerId: 6741fe504fb74e6397fe1694b4498a1e [19:43:17] [INF] [1] Emby.Server.Implementations.ApplicationHost: Executed all pre-startup entry points in 0:00:00.090945 [19:43:17] [INF] [1] Emby.Server.Implementations.ApplicationHost: Core startup complete [19:43:17] [INF] [1] Emby.Server.Implementations.ApplicationHost: Executed all post-startup entry points in 0:00:00.1054301 [19:43:17] [INF] [1] Main: Startup complete 0:00:04.3303974 [19:43:18] [WRN] [13] Microsoft.EntityFrameworkCore.Model.Validation: The entity type 'AccessSchedule' is configured to use schema 'jellyfin', but SQLite does not support schemas. This configuration will be ignored by the SQLite provider. [19:43:18] [WRN] [13] Microsoft.EntityFrameworkCore.Model.Validation: The entity type 'ActivityLog' is configured to use schema 'jellyfin', but SQLite does not support schemas. This configuration will be ignored by the SQLite provider. [19:43:18] [WRN] [13] Microsoft.EntityFrameworkCore.Model.Validation: The entity type 'CustomItemDisplayPreferences' is configured to use schema 'jellyfin', but SQLite does not support schemas. This configuration will be ignored by the SQLite provider. [19:43:18] [WRN] [13] Microsoft.EntityFrameworkCore.Model.Validation: The entity type 'DisplayPreferences' is configured to use schema 'jellyfin', but SQLite does not support schemas. This configuration will be ignored by the SQLite provider. [19:43:18] [WRN] [13] Microsoft.EntityFrameworkCore.Model.Validation: The entity type 'HomeSection' is configured to use schema 'jellyfin', but SQLite does not support schemas. This configuration will be ignored by the SQLite provider. [19:43:18] [WRN] [13] Microsoft.EntityFrameworkCore.Model.Validation: The entity type 'ImageInfo' is configured to use schema 'jellyfin', but SQLite does not support schemas. This configuration will be ignored by the SQLite provider. [19:43:18] [WRN] [13] Microsoft.EntityFrameworkCore.Model.Validation: The entity type 'ItemDisplayPreferences' is configured to use schema 'jellyfin', but SQLite does not support schemas. This configuration will be ignored by the SQLite provider. [19:43:18] [WRN] [13] Microsoft.EntityFrameworkCore.Model.Validation: The entity type 'Permission' is configured to use schema 'jellyfin', but SQLite does not support schemas. This configuration will be ignored by the SQLite provider. [19:43:18] [WRN] [13] Microsoft.EntityFrameworkCore.Model.Validation: The entity type 'Preference' is configured to use schema 'jellyfin', but SQLite does not support schemas. This configuration will be ignored by the SQLite provider. [19:43:18] [WRN] [13] Microsoft.EntityFrameworkCore.Model.Validation: The entity type 'ApiKey' is configured to use schema 'jellyfin', but SQLite does not support schemas. This configuration will be ignored by the SQLite provider. [19:43:18] [WRN] [13] Microsoft.EntityFrameworkCore.Model.Validation: The entity type 'Device' is configured to use schema 'jellyfin', but SQLite does not support schemas. This configuration will be ignored by the SQLite provider. [19:43:18] [WRN] [13] Microsoft.EntityFrameworkCore.Model.Validation: The entity type 'DeviceOptions' is configured to use schema 'jellyfin', but SQLite does not support schemas. This configuration will be ignored by the SQLite provider. [19:43:18] [WRN] [13] Microsoft.EntityFrameworkCore.Model.Validation: The entity type 'User' is configured to use schema 'jellyfin', but SQLite does not support schemas. This configuration will be ignored by the SQLite provider. [ls.io-init] done. [19:43:19] [INF] [13] Emby.Server.Implementations.ScheduledTasks.TaskManager: StartupTrigger fired for task: Update Plugins [19:43:19] [INF] [13] Emby.Server.Implementations.ScheduledTasks.TaskManager: Queuing task PluginUpdateTask [19:43:19] [INF] [17] Emby.Server.Implementations.ScheduledTasks.TaskManager: Executing Update Plugins [19:43:20] [INF] [10] Emby.Server.Implementations.ScheduledTasks.TaskManager: Update Plugins Completed after 0 minute(s) and 0 seconds [19:43:20] [INF] [10] Emby.Server.Implementations.ScheduledTasks.TaskManager: ExecuteQueuedTasks
and from traefik:
time="2023-07-29T17:43:11Z" level=info msg="Configuration loaded from file: /etc/traefik/traefik.toml" time="2023-07-29T17:43:11Z" level=error msg="service \"portainer\" error: port is missing" providerName=docker container=portainer-6da5d61a09c0bd65750339f4854ae221871af3b18f94029c7228dce17578aede time="2023-07-29T17:43:11Z" level=error msg="service \"portainer\" error: port is missing" providerName=docker container=portainer-6da5d61a09c0bd65750339f4854ae221871af3b18f94029c7228dce17578aede
The htpasswd shouldn't matter for Jellyfin specifically because it's not even using it, Jellyfin has its own authentication so htpasswd is irrelevant in this case.
Could you show me your .env file? Also, is the file "acme.json" populated with anything or is it empty?
.env file:
Containers prefix
COMPOSE_PROJECT_NAME=dmc
DATA_DIR=../data SERVICES_DIR=../services
TIMEZONE=Europe/Oslo
ENV_PUID=1000
ENV_PGID=1000
DOMAIN=chickenkiller.com
SUB_DOMAIN_JELLYFIN=jellyfincp SUB_DOMAIN_TRANSMISSION=transmissioncp SUB_DOMAIN_SONARR=sonarrcp SUB_DOMAIN_RADARR=radarr SUB_DOMAIN_PROWLARR=prowlarr SUB_DOMAIN_JELLYSEERR=jellyseerr
"acme.json" is populated with many things
if i deploy with my own containers and config i get the same issue... 404 any other ideas? I am not sure what is wrong tbh...
Could you also show me your docker-compose.yml that's found in "dmc/compose/"?
Here it is: `version: "3.7"
networks: global: external: true local: external: false
services:
jellyfin: image: lscr.io/linuxserver/jellyfin:latest restart: unless-stopped
# - seccomp=unconfined
networks:
- global
- local
environment:
- PUID=${ENV_PUID}
- PGID=${ENV_PGID}
- TZ=${TIMEZONE}
volumes:
- ${SERVICES_DIR}/jellyfin:/config
- ${DATA_DIR}/media:/data/media
labels:
- "traefik.enable=true"
- "traefik.http.routers.dmc-jellyfin.rule=Host(`${SUB_DOMAIN_JELLYFIN}.${DOMAIN}`)"
- "traefik.http.routers.dmc-jellyfin.tls=true"
- "traefik.http.services.dmc-jellyfin.loadbalancer.server.port=8096"
- "traefik.http.routers.dmc-jellyfin.tls.certresolver=letsencrypt"
- "traefik.docker.network=global"
transmission: image: lscr.io/linuxserver/transmission:latest restart: unless-stopped networks:
${SUB_DOMAIN_TRANSMISSION}.${DOMAIN}
)""traefik.http.routers.dmc-transmission.middlewares=dmc-auth"
radarr: image: lscr.io/linuxserver/radarr:latest restart: unless-stopped networks:
${SUB_DOMAIN_RADARR}.${DOMAIN}
)""traefik.http.routers.dmc-radarr.middlewares=dmc-auth"
sonarr: image: lscr.io/linuxserver/sonarr:latest restart: unless-stopped
networks:
${SUB_DOMAIN_SONARR}.${DOMAIN}
)""traefik.http.routers.dmc-sonarr.middlewares=dmc-auth"
prowlarr: image: lscr.io/linuxserver/prowlarr:latest restart: unless-stopped networks:
${SUB_DOMAIN_PROWLARR}.${DOMAIN}
)""traefik.http.routers.dmc-prowlarr.middlewares=dmc-auth"
jellyseerr: image: fallenbagel/jellyseerr:latest restart: unless-stopped networks:
${SUB_DOMAIN_JELLYSEERR}.${DOMAIN}
)"`
is there anything else needed?
I'm still struggling, do you think is a bug or I am doing something stupidly wrong?
When I navigated to the jellyfin domain earlier it did say 404. Meaning it does reach Traefik and since acme.json is also populated means everything works until it comes down to Jellyfin itself.
The issue itself has something to do with Jellyfin. Have you tried running other services like transmission, sonarr, etc.? Do those work?
no, but it is likely the same, I can't test right now what could i check to see the issue on jellyfin?
The easiest and most straightforward thing you can test is the other services. If they do work, then it's definitely something with Jellyfin. If not, then it could be something else. Basically try to narrow down what could be the issue.
cool, i'll check and revert here
just a doubt maybe unrelated to the issue but it is related to traefik and I could not find a clarification. If i want to set service1.mydomain.com to reach my service1 and service2.mydomain.com to reach my service2, I need 2 dns entries pointing to my same public IP, right? one service1.mydomain.com and other service2.mydomain.com, correct?
but if I want mysubdomain.domain.com/service1 to reach my service1 and mysubdomain.domain.com/service2 to reach my service2 I only need a dns entry to reach my public IP on mysubdomain.domain.com, right?
and is there a limitation on traefik working only on HTTP?
Thank you in advance
Yes, it is possible to use /service1, etc. Which would result in one DNS entry. However, in that case you would have to add additional traefik labels and also make sure there's no conflicts or edge cases with the services. While it is possible, it is beyond the scope of this guide. The main reason why I chose to go with subdomains is to fully separate each service.
I am not sure why you would want to run HTTP while using traefik or even without using traefik. In any case it is highly recommended to run any services using HTTPS.
If you're only interested in running jellyfin, you should just look up the official or linuxserver docker set-up which should be more straightforward to install. If you still want to use this set-up, I would suggest trying to setup a simple traefik and nginx installation. Just to see if a service under traefik works. If that works, then try to use the same configuration with just jellyfin and traefik. The issue could be anything at this point, so it may be wise to just try installing the most simple possible thing using traefik and go from there. I am currently using this exact setup, so the issue should be somewhere on your side.
okay, so for https I need a certificate for each dns entry or i can use one for something like: *.mydomain.com? or not adviced?
You don't need to do anything, Traefik generates certificates automatically for every domain or subdomain you define in .env file. All of the generated certificates are stored in the acme.json file. You can actually open the file and see every certificate generated for each sub domain.
mmm okay, cool, good to know, thank you :) I'll let you know how it goes
Hi! I got a working set up for jellyfin with a mix and match of different places. I think we can close this but I also get the certificate not trust if you have any idea? :)
I am glad you finally got it working! Are you using Traefik for certificates? Could you also take a screenshot of the issue?
Thank you for your help!! :)
yes, default traefik certificates
Here is my history:
1032 docker-compose up -d jellyfin `
also, the password is in htpasswd and traefik is running. Modified the domains to match my domain and subdomain but still getting 404...
Any assistance much appreciated :)
EDIT: I'm mainly interested in traefik and jellyfin, so happy to use only those for now or only jellyfin with my url: jellyfincp.chickenkiller.com (404 now) or chickenkiller.com/jellyfin like path maybe better because i have only 5 dns records in freedns (for free) i can work with http only for now and i'm using freedns