As the title says, I just upgraded to 10.9.9 and now I can’t connect to the server. I have it installed on a docker container on a headless ubuntu machine. This is the first time I’ve updated after installing and successfully using the server for several months. I followed the instructions in the first response here: link

Originally, the update/install seemed to work just fine. I opened up a client on a browser and it successfully connected and prompted the install wizard. So I went through it and re-pointed to all of my media. However, at the very last step when clicking submit, it got stuck. I saw online that this happened to others and what worked for them was to just try again.

So, after some time, I restarted the server and restarted the above process, except now I’m unable to connect at all.

When trying to connect from my Nvidia Shield, it tells me to complete the setup on a browser. When connecting on a browser, it asks me to select a server, lists the server, and then fails to connect to it with the error “We’re unable to connect to the selected server right now. Please ensure it is running and try again”. Connecting on my android phone and connecting in incognito prompts the same error.

Also, I’m unable to see any new logs now. ~/jellyfin/config/log has 3 log files from the last 3 days. But the latest one seems to have stopped around the time of the upgrade and shows no errors. I’ve updated the logging.json file as per the instructions here and this does not help: debug-logging

Does anyone have any advice here?

UPDATE: Issue seems to be solved. Tailscale seemed to be causing some problem on the client-side. Disabling and reattempting seemed to work. The library is still being scanned, so I haven’t validated playback. But I can at least navigate my content now.

UPDATE 2: Playback is validated

  • @GeekySalsaOP
    link
    English
    01 month ago

    Oh! I wasn’t aware of these logs. Yep, I’m seeing an error repeating many times here: “Unhandled exception. System.UnauthorizedAccessException: Access to the path ‘/config/config/migrations.xml’ is denied.”

    • Shadow
      link
      fedilink
      English
      51 month ago

      Yeah there’s your answer. Check what user jellyfin is running as and fix the permissions on your files.

      • @GeekySalsaOP
        link
        English
        2
        edit-2
        1 month ago

        So, I’m connected through SSH as the admin user. Lets call it salsa. When calling docker run, I passed the --user 1000:1000, which matches salsa. This actually results in the browser not even finding jellyfin. Returning some 4xx (probably 401).

        However, originally I was running docker run without the --user field, which yields the result I mentioned before. Where it shows Jellyfin, lists the server, but then fails to connect.

        From this, docker logs show no errors:

        spoiler
        • [09:03:41] [INF] [1] Main: Jellyfin version: 10.9.9
        • [09:03:41] [INF] [1] Main: Environment Variables: [“[JELLYFIN_FFMPEG, /usr/lib/jellyfin-ffmpeg/ffmpeg]”, “[JELLYFIN_DATA_DIR, /config]”, “[JELLYFIN_CONFIG_DIR, /config/config]”, “[JELLYFIN_WEB_DIR, /jellyfin/jellyfin-web]”, “[JELLYFIN_LOG_DIR, /config/log]”, “[JELLYFIN_CACHE_DIR, /cache]”]
        • [09:03:41] [INF] [1] Main: Arguments: [“/jellyfin/jellyfin.dll”]
        • [09:03:41] [INF] [1] Main: Operating system: Debian GNU/Linux 12 (bookworm)
        • [09:03:41] [INF] [1] Main: Architecture: X64
        • [09:03:41] [INF] [1] Main: 64-Bit Process: True
        • [09:03:41] [INF] [1] Main: User Interactive: True
        • [09:03:41] [INF] [1] Main: Processor count: 8
        • [09:03:41] [INF] [1] Main: Program data path: /config
        • [09:03:41] [INF] [1] Main: Log directory path: /config/log
        • [09:03:41] [INF] [1] Main: Config directory path: /config/config
        • [09:03:41] [INF] [1] Main: Cache path: /cache
        • [09:03:41] [INF] [1] Main: Web resources path: /jellyfin/jellyfin-web
        • [09:03:41] [INF] [1] Main: Application directory: /jellyfin/
        • [09:03:41] [INF] [1] Jellyfin.Server.Migrations.MigrationRunner: Marking following migrations as applied because this is a fresh install: [“CreateNetworkConfiguration”, “MigrateMusicBrainzTimeout”, “MigrateNetworkConfiguration”]
        • [09:03:41] [INF] [1] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
        • [09:03:41] [INF] [1] Emby.Server.Implementations.ApplicationHost: Loading assemblies
        • [09:03:41] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Defined LAN subnets: [“127.0.0.1/8”, “10.0.0.0/8”, “172.16.0.0/12”, “192.168.0.0/16”]
        • [09:03:41] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Defined LAN exclusions: []
        • [09:03:41] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Used LAN subnets: [“127.0.0.1/8”, “10.0.0.0/8”, “172.16.0.0/12”, “192.168.0.0/16”]
        • [09:03:41] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Filtered interface addresses: [“127.0.0.1”, “10.0.0.23”, “100.64.37.178”]
        • [09:03:41] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Bind Addresses [“0.0.0.0”]
        • [09:03:41] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Remote IP filter is Allowlist
        • [09:03:41] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Filtered subnets: []
        • [09:03:42] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: TMDb 10.9.9.0
        • [09:03:42] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: Studio Images 10.9.9.0
        • [09:03:42] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: OMDb 10.9.9.0
        • [09:03:42] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: MusicBrainz 10.9.9.0
        • [09:03:42] [INF] [1] Emby.Server.Implementations.Plugins.PluginManager: Loaded plugin: AudioDB 10.9.9.0
        • [09:03:42] [INF] [1] Jellyfin.Server.Migrations.MigrationRunner: Marking following migrations as applied because this is a fresh install: [“DisableTranscodingThrottling”, “CreateLoggingConfigHeirarchy”, “MigrateActivityLogDatabase”, “RemoveDuplicateExtras”, “MigrateUserDatabase”, “MigrateDisplayPreferencesDatabase”, “RemoveDownloadImagesInAdvance”, “MigrateAuthenticationDatabase”, “FixPlaylistOwner”, “MigrateRatingLevels”, “FixAudioData”]
        • [09:03:42] [INF] [1] Main: Kestrel is listening on 0.0.0.0
        • [09:03:42] [WRN] [1] Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager: No XML encryptor configured. Key {088145f8-6aa5-420c-b690-406299d35e5b} may be persisted to storage in unencrypted form.
        • [09:03:43] [WRN] [1] Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware: The WebRootPath was not found: /wwwroot. Static files may be unavailable.
        • [09:03:43] [INF] [1] Emby.Server.Implementations.ApplicationHost: Running startup tasks
        • [09:03:43] [INF] [1] Emby.Server.Implementations.ScheduledTasks.TaskManager: Daily trigger for Generate Trickplay Images set to fire at 2024-08-08 03:00:00.000 +00:00, which is 17:56:16.5092379 from now.
        • [09:03:43] [INF] [1] Emby.Server.Implementations.ScheduledTasks.TaskManager: Daily trigger for Extract Chapter Images set to fire at 2024-08-08 02:00:00.000 +00:00, which is 16:56:16.5067972 from now.
        • [09:03:43] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Found ffmpeg version 6.0.1
        • [09:03:43] [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”]
        • [09:03:43] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available encoders: [“libsvtav1”, “av1_nvenc”, “av1_qsv”, “av1_amf”, “av1_vaapi”, “libx264”, “h264_amf”, “h264_nvenc”, “h264_qsv”, “h264_v4l2m2m”, “h264_vaapi”, “libx265”, “hevc_amf”, “hevc_nvenc”, “hevc_qsv”, “hevc_vaapi”, “mjpeg_qsv”, “mjpeg_vaapi”, “mpeg4”, “msmpeg4”, “libvpx”, “libvpx-vp9”, “aac”, “libfdk_aac”, “ac3”, “alac”, “dca”, “flac”, “libmp3lame”, “libopus”, “truehd”, “libvorbis”, “srt”]
        • [09:03:43] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available filters: [“deinterlace_qsv”, “deinterlace_vaapi”, “hwupload_cuda”, “hwupload_vaapi”, “libplacebo”, “overlay_opencl”, “overlay_qsv”, “overlay_vaapi”, “overlay_vulkan”, “overlay_cuda”, “procamp_vaapi”, “scale_cuda”, “scale_opencl”, “scale_qsv”, “scale_vaapi”, “scale_vulkan”, “tonemap_cuda”, “tonemap_opencl”, “tonemap_vaapi”, “vpp_qsv”, “yadif_cuda”, “zscale”, “alphasrc”]
        • [09:03:43] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available hwaccel types: [“cuda”, “vaapi”, “qsv”, “drm”, “opencl”, “vulkan”]
        • [09:03:44] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: FFmpeg: /usr/lib/jellyfin-ffmpeg/ffmpeg
        • [09:03:44] [INF] [1] Emby.Server.Implementations.ApplicationHost: ServerId: 20accacd2d674450b3c157b6f96d5533
        • [09:03:44] [INF] [1] Emby.Server.Implementations.ApplicationHost: Core startup complete
        • [09:03:44] [INF] [1] Main: Startup complete 0:00:03.0145715
        • [09:03:46] [INF] [16] Emby.Server.Implementations.ScheduledTasks.TaskManager: Clean up collections and playlists Completed after 0 minute(s) and 0 seconds
        • [09:03:47] [INF] [10] Emby.Server.Implementations.ScheduledTasks.TaskManager: Update Plugins Completed after 0 minute(s) and 1 seconds

        EDIT: Also, with this, ~/jellyfin/config/logs is still showing no new logs.

        • Shadow
          link
          fedilink
          English
          31 month ago

          I use docker compose but I also set the uid/gid to 1000.

          Do you have a local path mounted into /config of the container? You might just need to chown -r 1000:1000 your config dir

          • @GeekySalsaOP
            link
            English
            3
            edit-2
            1 month ago

            Actually, I managed to fix the issue. Tbh, idk why/how this fixed it and perhaps I should’ve mentioned this as well, but I have tailscale set up on my server to allow remote connections. I was connecting to the server through tailscale even though I’m in the local network. This should work just fine and has in the past, but perhaps it doesn’t when first signing into a fresh install. I disabled tailscale on my client and retried and that worked. I was able to reattempt the install wizard, completed it, and now have a working server once again.

            I haven’t yet validated playback as my library is being rescanned now, but I’m at least able to navigate. I’m also unsure why I was able to attempt the wizard before just for it to get stuck…

            Thanks for the help! Your swift responses have been appreciated and I learned a good bit :)

        • @GeekySalsaOP
          link
          English
          2
          edit-2
          1 month ago

          Just in case, I tried fixing the permissions anyway with sudo chown user:salsa /config/config/migration.xml. However, this gives another error: chown: invalid user: 'user:salsa'. Even though it is a valid user and shows up when checking getent passwd | grep 'salsa'

          • Shadow
            link
            fedilink
            English
            31 month ago

            Your syntax is wrong. It’s user:group, as in salsa:salsa. Not literally “user” but the user/group ownership you want to set.