Gpu passthough in different containers

I’m running a multi-service media server on a custom built pc using docker to run the servers. Its running the latest version of Ubuntu Server and the most updated version of docker.

ASRock B660M-ITX

Intel® Core™ i9-12900

ASUS Dual NVIDIA GeForce RTX 3060 V2 OC Edition 12GB GDDR6

32GB Single DDR4 3200

1 TB WD nvme drive for os

One container is running Plex and the other container is running Jellyfin. the biggest issue is I can’t get the containers to have access the the GPU. I know the yaml file for each container must be built(for lack of a better word)properly for the container to see the gpu and utilize it. I have read numerous articles about this issue and none of the can get my issue resolved. Not sure if posting the actual yaml file will help but will be done if needed. Anyone that can help out would be greatly appreciated

Thank you

To avoid users searching for and sharing every single link that was already shared in other general topics, can you please share more about how you tried to configure the GPU? What did you install on the host, how you configured containers (gpu-related parameters) Also if you can share the error logs or anything that made you come to the conclusion of having GPU-related issues, we can hopefully recognize faster what the problem could be.

my apologies its was getting late last night and I was getting irritated and frustrated. I have been reading and trouble shooting this issue for over and month and haven’t had any head way. Some of these articles that I have used were intended only for plex and some only for jellyfin and some both.

one article and post I have read talk about installing an nvidia tool kit yet none of the terminal commands that I use work. They all return an error saying the package doesn’t exist. Article dealing with jellyfin and plex recommended this.

another article talked about adding a section in the yaml file that linked the container to the /dev/dri directory on my computer but it also talked about modifying ownership but wasn’t very clear about what ownership needed to be changed. Tried this on both plex and jellying

another article was a walk though about adding an nvidia docker container that you could link other containers too but I could never get the container to work. About 2/3 of the way though this article the commands stop working. At the end the article wants a device section added to the yaml file. I could get that in there and plex and jellyfin could now see the GPU but would not hardware trans-code. Plex reverts to using the CPU instead of the GPU and jellyfin just crashes upon playback. This one I was very hesitant to keep trying. I"m very leary of punching in random commands into the terminal not fully understanding what it is I"m typing in.

the last article added a number of lines to the yaml file that I could not understand in any way

I don’t think I have a GPU issue I can use the nvidia-smi commant and see my GPU. I can change settings for the gpu in the terminal but some some reason I can’t get these docker containers to utilize the gpu

Thank you for the more details, but without specifics like what tutorial you folowed, what you configured, how you started the container and so on (what I mentioned in my previous post), I can only give you general answers to try to point you to the right direction. It will likely include things you already tried.

For example I found this for jellyfin:

https://jellyfin.org/docs/general/post-install/transcoding/hardware-acceleration/nvidia/#official-docker

Since this is the official Jellyfin documentation, that seems to be the best source. You can also find the user id setting in the yaml

user: 1000:1000

I’m not sure if you referred to this as “ownership”, but this sets the user ID of the process in the container. “1000” is the first not system user ID, but you might need to use another ID and group ID depending on your exact user. The following command should return the right IDs:

echo $(id -u):$(id -g)

Than if the process in the container needs to acces something on the host owned by your user, it will make it possible. Unless you are running Rootless Docker, but I’m not sure that would allow you using the GPU. I never tried.

I also assume you are using Docker CE, not Docker Desktop since you mentioned “Ubuntu Server”, not a desktop machine.

What the Jellyfin documentation shows, seems to be right. If you need help with interpreting error messages, you have come to the right place, but we would need specific error messages of specific commands to help.

And you are right. We can probbaly help you with that too. IF you don’t understand something, you can share it here and we will try to help.

Can you confirm first that you have already tried the toe guide in the Jelyfin documentation? You mentioned “articles”, but articles from bloggers can be outdated or simply wrong. And unfortunately in these days, many articles could be generated AI slop, so we have to be careful about what we try.

If you have tried the jellyfin documentation, then please, try again and share the exact error message. The best if you also insert the commands or yaml files you tried, so we can be sure you didn’t just forgot to run one step.

I don’t have a reliable machine with GPU since some parts broke on the motherboard, so I would not be able to test, but I am also not alone here, so there is still hope :slight_smile:

thank you for you help it means alot to me. So starting with jellyfin since you brought it up first. Going to the nvidia website to set up the docker container I get to the header point “configuration”

once I get to this point I have no understanding what is going on and what these commands do or what is happening with my system if I do copy and paste these commands into the terminal. I get down to the potion that says rootless mode and that is when the errors start

I ignored the errors and decided to skip this last step from nvidia. Returning to the jellyfin guide I modified the yaml file exactly as outlined

I stopped the currently running jellyfin container and modify the yaml file
(I did fix the typo after docker returned an error)

pulled the most current jellyfin image from docker. compose the freshly pulled image and started the new container. Go the web UI for jellyfin in my browser and I get nothing.

Server is completely dead yet docker says the container is up and running.

remove all the added stuff from the yaml file and recompose the container and server is back up and running

what am I doing wrong?

The rootless mode section is an optional step which you don’T need. That is only for those who use Rootless Docker, which is a docker daemon running without root privileges as your non-root user. That also complicates some things, so first you just need to focus on the “Rootful mode”.

systemctl --user in the command list meant that the systemctl command was looking for services started by your non-root user. Since you did not install the rootless Docker, it found no docker service.

According to your previous screenshot, the Jellyfin container is restarting. That means it fails with error logs and since the restart policy is “unless-stopped” it starts again immediately.

You can get the logs by running:

docker logs jellyfin

If it is too long, you can limit the number of lines:

docker logs jellyfin --tail 300

Run it when the webpage cannot load and docker ps shows jellyfin is restarting.

well after having that error been bought to my attention I feel very stupid now but its all part of the learning curve. This afternoon I reconfigured the yaml file and recomposed jellyfin. The docker status page says jellyfin is attempting to restart jellyfin web UI is down again. Pulling up the logs from docker I could only find one error but not sure what it means. Is it acceptable to just copy and past the terminal output from docker log command right here?

\[19:31:44\] \[INF\] \[1\] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
\[19:31:45\] \[INF\] \[10\] Jellyfin.Server.ServerSetupApp.SetupServer: Kestrel is listening on 0.0.0.0
\[19:31:45\] \[INF\] \[10\] Main: Jellyfin version: 12.1.0
\[19:31:45\] \[INF\] \[10\] Main: Environment Variables: \["\[JELLYFIN_CONFIG_DIR, /config/config\]", "\[JELLYFIN_FFMPEG, /usr/lib/jellyfin-ffmpeg/ffmpeg\]", "\[JELLYFIN_CACHE_DIR, /cache\]", "\[JELLYFIN_LOG_DIR, /config/log\]", "\[JELLYFIN_WEB_DIR, /jellyfin/jellyfin-web\]", "\[JELLYFIN_DATA_DIR, /config\]"\]
\[19:31:45\] \[INF\] \[10\] Main: Arguments: \["/jellyfin/jellyfin.dll"\]
\[19:31:45\] \[INF\] \[10\] Main: Operating system: Debian GNU/Linux 13 (trixie)
\[19:31:45\] \[INF\] \[10\] Main: Architecture: X64
\[19:31:45\] \[INF\] \[10\] Main: 64-Bit Process: True
\[19:31:45\] \[INF\] \[10\] Main: User Interactive: True
\[19:31:45\] \[INF\] \[10\] Main: Processor count: 24
\[19:31:45\] \[INF\] \[10\] Main: Program data path: /config
\[19:31:45\] \[INF\] \[10\] Main: Log directory path: /config/log
\[19:31:45\] \[INF\] \[10\] Main: Config directory path: /config/config
\[19:31:45\] \[INF\] \[10\] Main: Cache path: /cache
\[19:31:45\] \[INF\] \[10\] Main: Temp directory path: /tmp/jellyfin
\[19:31:45\] \[INF\] \[10\] Main: Web resources path: /jellyfin/jellyfin-web
\[19:31:45\] \[INF\] \[10\] Main: Application directory: /jellyfin/
\[19:31:45\] \[INF\] \[10\] Jellyfin.Server.Startup: Storage path `/config/data` (Fixed) successfully checked with 793.2GiB free which is over the minimum of 2GiB.
\[19:31:45\] \[INF\] \[10\] Jellyfin.Server.Startup: Storage path `/cache` (Fixed) successfully checked with 793.2GiB free which is over the minimum of 2GiB.
\[19:31:45\] \[INF\] \[10\] Jellyfin.Server.Startup: Storage path `/config` (Fixed) successfully checked with 793.2GiB free which is over the minimum of 2GiB.
\[19:31:45\] \[INF\] \[10\] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
\[19:31:45\] \[INF\] \[10\] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLite connection string: Data Source=/config/data/jellyfin.db;Cache=Private;Default Timeout=60;Pooling=True
\[19:31:45\] \[INF\] \[10\] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLITE connection pragma command set to:
PRAGMA locking_mode=NORMAL;
PRAGMA journal_size_limit=134217728;
PRAGMA synchronous=1;
PRAGMA temp_store=2;

\[19:31:45\] \[INF\] \[10\] Jellyfin.Database.Implementations.Locking.NoLockBehavior: The database locking mode has been set to: NoLock.
\[19:31:45\] \[INF\] \[10\] Jellyfin.Server.Migrations.JellyfinMigrationService: Initialise Migration service.
\[19:31:45\] \[ERR\] \[10\] Microsoft.EntityFrameworkCore.Database.Command: Failed executing DbCommand (1ms) \[Parameters=[ ], CommandType='Text', CommandTimeout='60'\]
SELECT COUNT(\*) FROM "sqlite_master" WHERE "name" = '\__EFMigrationsHistory' AND "type" = 'table';
\[19:31:45\] \[FTL\] \[1\] Main: Unhandled Exception
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
at Jellyfin.Server.Program.StartApp(StartupOptions options)
at Jellyfin.Server.Program.(String[ ] args)
Unhandled exception. Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
at Jellyfin.Server.Program.StartApp(StartupOptions options)
at Jellyfin.Server.Program.(String[ ] args)
\[19:31:52\] \[INF\] \[1\] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
\[19:31:52\] \[INF\] \[7\] Jellyfin.Server.ServerSetupApp.SetupServer: Kestrel is listening on 0.0.0.0
\[19:31:52\] \[INF\] \[7\] Main: Jellyfin version: 12.1.0
\[19:31:52\] \[INF\] \[7\] Main: Environment Variables: \["\[JELLYFIN_CACHE_DIR, /cache\]", "\[JELLYFIN_FFMPEG, /usr/lib/jellyfin-ffmpeg/ffmpeg\]", "\[JELLYFIN_DATA_DIR, /config\]", "\[JELLYFIN_WEB_DIR, /jellyfin/jellyfin-web\]", "\[JELLYFIN_CONFIG_DIR, /config/config\]", "\[JELLYFIN_LOG_DIR, /config/log\]"\]
\[19:31:52\] \[INF\] \[7\] Main: Arguments: \["/jellyfin/jellyfin.dll"\]
\[19:31:52\] \[INF\] \[7\] Main: Operating system: Debian GNU/Linux 13 (trixie)
\[19:31:52\] \[INF\] \[7\] Main: Architecture: X64
\[19:31:52\] \[INF\] \[7\] Main: 64-Bit Process: True
\[19:31:52\] \[INF\] \[7\] Main: User Interactive: True
\[19:31:52\] \[INF\] \[7\] Main: Processor count: 24
\[19:31:52\] \[INF\] \[7\] Main: Program data path: /config
\[19:31:52\] \[INF\] \[7\] Main: Log directory path: /config/log
\[19:31:52\] \[INF\] \[7\] Main: Config directory path: /config/config
\[19:31:52\] \[INF\] \[7\] Main: Cache path: /cache
\[19:31:52\] \[INF\] \[7\] Main: Temp directory path: /tmp/jellyfin
\[19:31:52\] \[INF\] \[7\] Main: Web resources path: /jellyfin/jellyfin-web
\[19:31:52\] \[INF\] \[7\] Main: Application directory: /jellyfin/
\[19:31:52\] \[INF\] \[7\] Jellyfin.Server.Startup: Storage path `/config/data` (Fixed) successfully checked with 793.2GiB free which is over the minimum of 2GiB.
\[19:31:52\] \[INF\] \[7\] Jellyfin.Server.Startup: Storage path `/cache` (Fixed) successfully checked with 793.2GiB free which is over the minimum of 2GiB.
\[19:31:52\] \[INF\] \[7\] Jellyfin.Server.Startup: Storage path `/config` (Fixed) successfully checked with 793.2GiB free which is over the minimum of 2GiB.
\[19:31:52\] \[INF\] \[7\] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
\[19:31:52\] \[INF\] \[7\] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLite connection string: Data Source=/config/data/jellyfin.db;Cache=Private;Default Timeout=60;Pooling=True
\[19:31:52\] \[INF\] \[7\] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLITE connection pragma command set to:
PRAGMA locking_mode=NORMAL;
PRAGMA journal_size_limit=134217728;
PRAGMA synchronous=1;
PRAGMA temp_store=2;

\[19:31:52\] \[INF\] \[7\] Jellyfin.Database.Implementations.Locking.NoLockBehavior: The database locking mode has been set to: NoLock.
\[19:31:52\] \[INF\] \[7\] Jellyfin.Server.Migrations.JellyfinMigrationService: Initialise Migration service.
\[19:31:53\] \[ERR\] \[7\] Microsoft.EntityFrameworkCore.Database.Command: Failed executing DbCommand (1ms) \[Parameters=[ ], CommandType='Text', CommandTimeout='60'\]
SELECT COUNT(\*) FROM "sqlite_master" WHERE "name" = '\__EFMigrationsHistory' AND "type" = 'table';
\[19:31:53\] \[FTL\] \[1\] Main: Unhandled Exception
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
at Jellyfin.Server.Program.StartApp(StartupOptions options)
at Jellyfin.Server.Program.(String[ ] args)
Unhandled exception. Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
at Jellyfin.Server.Program.StartApp(StartupOptions options)
at Jellyfin.Server.Program.(String[ ] args)
\[19:32:06\] \[INF\] \[1\] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
\[19:32:06\] \[INF\] \[9\] Jellyfin.Server.ServerSetupApp.SetupServer: Kestrel is listening on 0.0.0.0
\[19:32:06\] \[INF\] \[9\] Main: Jellyfin version: 12.1.0
\[19:32:06\] \[INF\] \[9\] Main: Environment Variables: \["\[JELLYFIN_DATA_DIR, /config\]", "\[JELLYFIN_FFMPEG, /usr/lib/jellyfin-ffmpeg/ffmpeg\]", "\[JELLYFIN_LOG_DIR, /config/log\]", "\[JELLYFIN_CACHE_DIR, /cache\]", "\[JELLYFIN_CONFIG_DIR, /config/config\]", "\[JELLYFIN_WEB_DIR, /jellyfin/jellyfin-web\]"\]
\[19:32:06\] \[INF\] \[9\] Main: Arguments: \["/jellyfin/jellyfin.dll"\]
\[19:32:06\] \[INF\] \[9\] Main: Operating system: Debian GNU/Linux 13 (trixie)
\[19:32:06\] \[INF\] \[9\] Main: Architecture: X64
\[19:32:06\] \[INF\] \[9\] Main: 64-Bit Process: True
\[19:32:06\] \[INF\] \[9\] Main: User Interactive: True
\[19:32:06\] \[INF\] \[9\] Main: Processor count: 24
\[19:32:06\] \[INF\] \[9\] Main: Program data path: /config
\[19:32:06\] \[INF\] \[9\] Main: Log directory path: /config/log
\[19:32:06\] \[INF\] \[9\] Main: Config directory path: /config/config
\[19:32:06\] \[INF\] \[9\] Main: Cache path: /cache
\[19:32:06\] \[INF\] \[9\] Main: Temp directory path: /tmp/jellyfin
\[19:32:06\] \[INF\] \[9\] Main: Web resources path: /jellyfin/jellyfin-web
\[19:32:06\] \[INF\] \[9\] Main: Application directory: /jellyfin/
\[19:32:06\] \[INF\] \[9\] Jellyfin.Server.Startup: Storage path `/config/data` (Fixed) successfully checked with 793.2GiB free which is over the minimum of 2GiB.
\[19:32:06\] \[INF\] \[9\] Jellyfin.Server.Startup: Storage path `/cache` (Fixed) successfully checked with 793.2GiB free which is over the minimum of 2GiB.
\[19:32:06\] \[INF\] \[9\] Jellyfin.Server.Startup: Storage path `/config` (Fixed) successfully checked with 793.2GiB free which is over the minimum of 2GiB.
\[19:32:06\] \[INF\] \[9\] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
\[19:32:06\] \[INF\] \[9\] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLite connection string: Data Source=/config/data/jellyfin.db;Cache=Private;Default Timeout=60;Pooling=True
\[19:32:06\] \[INF\] \[9\] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLITE connection pragma command set to:
PRAGMA locking_mode=NORMAL;
PRAGMA journal_size_limit=134217728;
PRAGMA synchronous=1;
PRAGMA temp_store=2;

\[19:32:06\] \[INF\] \[9\] Jellyfin.Database.Implementations.Locking.NoLockBehavior: The database locking mode has been set to: NoLock.
\[19:32:06\] \[INF\] \[9\] Jellyfin.Server.Migrations.JellyfinMigrationService: Initialise Migration service.
\[19:32:07\] \[ERR\] \[9\] Microsoft.EntityFrameworkCore.Database.Command: Failed executing DbCommand (1ms) \[Parameters=[ ], CommandType='Text', CommandTimeout='60'\]
SELECT COUNT(\*) FROM "sqlite_master" WHERE "name" = '\__EFMigrationsHistory' AND "type" = 'table';
\[19:32:07\] \[FTL\] \[1\] Main: Unhandled Exception
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
at Jellyfin.Server.Program.StartApp(StartupOptions options)
at Jellyfin.Server.Program.(String[ ] args)
Unhandled exception. Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
at Jellyfin.Server.Program.StartApp(StartupOptions options)
at Jellyfin.Server.Program.(String[ ] args)

here is the output of the log its just keeps repeating that over and over again

Looks like wherever Jellyfin stores its database, does not allow write access. I assume it is located in /config inside the container. Thus, the host folder /home/god/config (or folders/files in it) seem to be not owned by 1000:1000.

Can you share the output of stat /home/god/config with us? Please paste the output as “preformated text </>” , so it is better readable for us. I edited your post and wrapped your log output in a preformatted text block.

god@plexfin:~$ stat /home/god/config
  File: /home/god/config
  size: 4096      	Blocks: 8          IO Block: 4096   directory
Device: 252,0	Inode: 2883600     Links: 8
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-09-19 02:12:57.135620420 +0000
Modify: 2026-05-10 23:20:47.051128536 +0000
Change: 2026-05-10 23:20:47.051128536 +0000
 Birth: 2026-05-10 23:20:46.771118560 +0000

I think I might understand what the issue is from looking at this but I’ll wait for someone to chime in a tell me. I don’t want to go with a hunch and mess things up any more than they already are.

the jellyfin config directory is in

/home/god/jellyfin

in the home directory there are two other directories names config and .config

So it is what @meyay suspected. The owner of the config folder on the host is root, but the “user: 1000:1000” part in the compose file changes which user runs the process in the container and that user has no write access to the folder

If the user in the container must be a non-root user, you can change the permissions of the folder.

You could change the owner of the folder

sudo chown 1000 /home/god/config

or at least change the group and allow the folder to be writable to the group

sudo chown :1000 /home/god/config
sudo chmod 0775 /home/god/config

You will likely have the same problem with “/home/god/cache”, so you can repeat the steps on that as well.

@rimelek and I referenced /home/god/config, as it is the host folder that, according to the compose file you shared as screenshot (please don’t share text as screenshot → it’s unnecessary hard to read).

The compose file does not use /home/god/jellyfin at all. Either you are mistaken, or the compose file you shared is not the one you actually use.

Though, whatever host folder you mount into container folders, what @rimelek and I wrote about applies to whatever host folder you bind into a container folder,

Just to be sure: the UID:GID of the user that runs the docker command is not relevant, as the docker engine runs as root. So whatever user is configured, or overriden with user: needs to be the owner of host folders you bind into container paths.

I think I understand what happened and maybe someone can give me some feedback on my opinion now that my eyes have been open to the issue and the problem pointed out. when I originally wrote the yaml file for the jellyfin container in the yaml file the host machine directory is :

/home/god/config

/home/god/cache

when is should have been

/home/god/jellyfin/config

/home/god/jellyfin/cache

when I created the directory for jellyfin I created the /config directory and a /cache directory in the /jellyfin directory which is were the yaml file lives. Now since those directories existed in the incorrect place either docker or jellyfin created the current /config and /cache directories where they live at the present. I don’t know which program created these directories, jellyfin or docker, but what ever program crated them didn’t give the directories the proper permissions/ownership because when I check the status of the /config and /cache directories in the jellyfin directories they produce the following

god@plexfin:~/jellyfin$ stat /home/god/jellyfin/config
File: /home/god/jellyfin/config
size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 252,0 Inode: 2883602 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 1000/ god) Gid: ( 1000/ god)
Access: 2026-09-20 01:59:35.366082216 +0000
Modify: 2026-05-10 18:12:11.901010008 +0000
Change: 2026-05-10 18:12:11.901010008 +0000
Birth: 2026-05-10 18:12:11.901010008 +0000
god@plexfin:~/jellyfin$ stat /home/god/jellyfin/cache
File: /home/god/jellyfin/cache
size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 252,0 Inode: 2883604 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 1000/ god) Gid: ( 1000/ god)
Access: 2026-05-17 00:42:53.012812971 +0000
Modify: 2026-05-10 18:12:25.997447248 +0000
Change: 2026-05-10 18:12:25.997447248 +0000
Birth: 2026-05-10 18:12:25.997447248 +0000

to me that looks correct with the Uid and Gid

here is the output of the config and cache directoreis after the change owner and change mod commands

god@plexfin:~$ sudo chown 1000 /home/god/config
[sudo: authenticate] Password:
god@plexfin:~$ suo chmod 0775 /home/god/config
Command ‘suo’ not found, did you mean:
command ‘su’ from deb util-linux (2.41.3-3ubuntu2)
command ‘sumo’ from deb sumo (1.25.0+dfsg1-1build2)
command ‘sum’ from deb coreutils-from-gnu (0.0.0~ubuntu25)
command ‘sum’ from deb coreutils-from-uutils (0.0.0~ubuntu25)
command ‘su1’ from deb hxtools (20251011-1)
command ‘sup’ from deb sup (20100519-8)
command ‘zuo’ from deb zuo (1.12-2build1)
command ‘sudo’ from deb sudo (1.9.17p2-1ubuntu3)
command ‘sudo’ from deb sudo-rs (0.2.13-0ubuntu1)
command ‘sur’ from deb subtle (0.11.3224-xi-3)
Try: sudo apt install
god@plexfin:~$ sudo chmod 0775 /home/god/config
god@plexfin:~$ stat /home/god/config
File: /home/god/config
size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 252,0 Inode: 2883600 Links: 8
Access: (0775/drwxrwxr-x) Uid: ( 1000/ god) Gid: ( 0/ root)
Access: 2026-09-20 16:00:06.368881828 +0000
Modify: 2026-05-10 23:20:47.051128536 +0000
Change: 2026-09-20 15:59:49.168324465 +0000
Birth: 2026-05-10 23:20:46.771118560 +0000
god@plexfin:~$

god@plexfin:~$ sudo chown 1000 /home/god/cache
god@plexfin:~$ sudo chmod 0775 /home/god/cache
god@plexfin:~$ stat /home/god/cache
File: /home/god/cache
size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 252,0 Inode: 2883608 Links: 12
Access: (0775/drwxrwxr-x) Uid: ( 1000/ god) Gid: ( 0/ root)
Access: 2026-09-20 16:02:08.740847136 +0000
Modify: 2026-09-18 02:12:33.665626599 +0000
Change: 2026-09-20 16:02:03.279670174 +0000
Birth: 2026-05-10 23:20:46.771118560 +0000
god@plexfin:~$

after doing those changes I stoped the currect jellyfin container pull the image again composed it and checked the staus of docker and it still says restarting.

god@plexfin:~/jellyfin$ docker ps --all
CONTAINER ID   IMAGE                             COMMAND                CREATED         STATUS                                    PORTS     NAMES
338c8f46be87   jellyfin/jellyfin:latest          "/jellyfin/jellyfin"   4 seconds ago   Restarting (139) Less than a second ago             jellyfin
1313ba097748   lscr.io/linuxserver/plex:latest   "/init"                3 days ago      Up 6 minutes                                        plex
4f2e91c1aa03   linuxserver/plex:latest           "/init"                4 days ago      Exited (0) 3 days ago                               keen_golick
4a8be2e4c0ec   c5e295f023b4                      "/init"                4 days ago      Exited (0) 4 days ago                               hopeful_carver
a0daa30d8637   lscr.io/linuxserver/plex:latest   "/init"                4 days ago      Exited (0) 4 days ago                               bold_bouman
0f7f73053f35   jellyfin/jellyfin                 "/jellyfin/jellyfin"   5 days ago      Exited (0) 4 days ago                               elated_solomon
4ca3f63391ae   jellyfin/jellyfin                 "/jellyfin/jellyfin"   5 days ago      Exited (0) 4 days ago                               optimistic_brattain
d9e40722f1f9   hello-world                       "/hello"               4 months ago    Exited (0) 4 months ago                             clever_meitner
god@plexfin:~/jellyfin$ 

do I need to change the Gid as well?

here are the current docker logs

god@plexfin:~$ docker logs jellyfin --tail 300
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
   at Jellyfin.Server.Program.StartApp(StartupOptions options)
   at Jellyfin.Server.Program.<Main>(String[] args)
[16:23:50] [INF] [1] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
[16:23:50] [INF] [9] Jellyfin.Server.ServerSetupApp.SetupServer: Kestrel is listening on 0.0.0.0
[16:23:50] [INF] [9] Main: Jellyfin version: 12.1.0
[16:23:50] [INF] [9] Main: Environment Variables: ["[JELLYFIN_DATA_DIR, /config]", "[JELLYFIN_CONFIG_DIR, /config/config]", "[JELLYFIN_CACHE_DIR, /cache]", "[JELLYFIN_WEB_DIR, /jellyfin/jellyfin-web]", "[JELLYFIN_FFMPEG, /usr/lib/jellyfin-ffmpeg/ffmpeg]", "[JELLYFIN_LOG_DIR, /config/log]"]
[16:23:50] [INF] [9] Main: Arguments: ["/jellyfin/jellyfin.dll"]
[16:23:50] [INF] [9] Main: Operating system: Debian GNU/Linux 13 (trixie)
[16:23:50] [INF] [9] Main: Architecture: X64
[16:23:50] [INF] [9] Main: 64-Bit Process: True
[16:23:50] [INF] [9] Main: User Interactive: True
[16:23:50] [INF] [9] Main: Processor count: 24
[16:23:50] [INF] [9] Main: Program data path: /config
[16:23:50] [INF] [9] Main: Log directory path: /config/log
[16:23:50] [INF] [9] Main: Config directory path: /config/config
[16:23:50] [INF] [9] Main: Cache path: /cache
[16:23:50] [INF] [9] Main: Temp directory path: /tmp/jellyfin
[16:23:50] [INF] [9] Main: Web resources path: /jellyfin/jellyfin-web
[16:23:50] [INF] [9] Main: Application directory: /jellyfin/
[16:23:50] [INF] [9] Jellyfin.Server.Startup: Storage path `/config/data` (Fixed) successfully checked with 792.7GiB free which is over the minimum of 2GiB.
[16:23:50] [INF] [9] Jellyfin.Server.Startup: Storage path `/cache` (Fixed) successfully checked with 792.7GiB free which is over the minimum of 2GiB.
[16:23:50] [INF] [9] Jellyfin.Server.Startup: Storage path `/config` (Fixed) successfully checked with 792.7GiB free which is over the minimum of 2GiB.
[16:23:50] [INF] [9] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
[16:23:50] [INF] [9] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLite connection string: Data Source=/config/data/jellyfin.db;Cache=Private;Default Timeout=60;Pooling=True
[16:23:50] [INF] [9] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLITE connection pragma command set to: 
PRAGMA locking_mode=NORMAL;
PRAGMA journal_size_limit=134217728;
PRAGMA synchronous=1;
PRAGMA temp_store=2;

[16:23:50] [INF] [9] Jellyfin.Database.Implementations.Locking.NoLockBehavior: The database locking mode has been set to: NoLock.
[16:23:50] [INF] [9] Jellyfin.Server.Migrations.JellyfinMigrationService: Initialise Migration service.
[16:23:51] [ERR] [9] Microsoft.EntityFrameworkCore.Database.Command: Failed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsHistory' AND "type" = 'table';
[16:23:51] [FTL] [1] Main: Unhandled Exception
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
   at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
   at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
   at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
   at Jellyfin.Server.Program.StartApp(StartupOptions options)
   at Jellyfin.Server.Program.<Main>(String[] args)
Unhandled exception. Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
   at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
   at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
   at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
   at Jellyfin.Server.Program.StartApp(StartupOptions options)
   at Jellyfin.Server.Program.<Main>(String[] args)
[16:23:58] [INF] [1] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
[16:23:58] [INF] [10] Jellyfin.Server.ServerSetupApp.SetupServer: Kestrel is listening on 0.0.0.0
[16:23:58] [INF] [10] Main: Jellyfin version: 12.1.0
[16:23:58] [INF] [10] Main: Environment Variables: ["[JELLYFIN_LOG_DIR, /config/log]", "[JELLYFIN_CONFIG_DIR, /config/config]", "[JELLYFIN_FFMPEG, /usr/lib/jellyfin-ffmpeg/ffmpeg]", "[JELLYFIN_DATA_DIR, /config]", "[JELLYFIN_CACHE_DIR, /cache]", "[JELLYFIN_WEB_DIR, /jellyfin/jellyfin-web]"]
[16:23:58] [INF] [10] Main: Arguments: ["/jellyfin/jellyfin.dll"]
[16:23:58] [INF] [10] Main: Operating system: Debian GNU/Linux 13 (trixie)
[16:23:58] [INF] [10] Main: Architecture: X64
[16:23:58] [INF] [10] Main: 64-Bit Process: True
[16:23:58] [INF] [10] Main: User Interactive: True
[16:23:58] [INF] [10] Main: Processor count: 24
[16:23:58] [INF] [10] Main: Program data path: /config
[16:23:58] [INF] [10] Main: Log directory path: /config/log
[16:23:58] [INF] [10] Main: Config directory path: /config/config
[16:23:58] [INF] [10] Main: Cache path: /cache
[16:23:58] [INF] [10] Main: Temp directory path: /tmp/jellyfin
[16:23:58] [INF] [10] Main: Web resources path: /jellyfin/jellyfin-web
[16:23:58] [INF] [10] Main: Application directory: /jellyfin/
[16:23:58] [INF] [10] Jellyfin.Server.Startup: Storage path `/config/data` (Fixed) successfully checked with 792.7GiB free which is over the minimum of 2GiB.
[16:23:58] [INF] [10] Jellyfin.Server.Startup: Storage path `/cache` (Fixed) successfully checked with 792.7GiB free which is over the minimum of 2GiB.
[16:23:58] [INF] [10] Jellyfin.Server.Startup: Storage path `/config` (Fixed) successfully checked with 792.7GiB free which is over the minimum of 2GiB.
[16:23:58] [INF] [10] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
[16:23:58] [INF] [10] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLite connection string: Data Source=/config/data/jellyfin.db;Cache=Private;Default Timeout=60;Pooling=True
[16:23:58] [INF] [10] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLITE connection pragma command set to: 
PRAGMA locking_mode=NORMAL;
PRAGMA journal_size_limit=134217728;
PRAGMA synchronous=1;
PRAGMA temp_store=2;

[16:23:58] [INF] [10] Jellyfin.Database.Implementations.Locking.NoLockBehavior: The database locking mode has been set to: NoLock.
[16:23:58] [INF] [10] Jellyfin.Server.Migrations.JellyfinMigrationService: Initialise Migration service.
[16:23:58] [ERR] [10] Microsoft.EntityFrameworkCore.Database.Command: Failed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsHistory' AND "type" = 'table';
[16:23:58] [FTL] [1] Main: Unhandled Exception
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
   at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
   at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
   at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
   at Jellyfin.Server.Program.StartApp(StartupOptions options)
   at Jellyfin.Server.Program.<Main>(String[] args)
Unhandled exception. Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
   at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
   at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
   at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
   at Jellyfin.Server.Program.StartApp(StartupOptions options)
   at Jellyfin.Server.Program.<Main>(String[] args)
[16:24:12] [INF] [1] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
[16:24:12] [INF] [7] Jellyfin.Server.ServerSetupApp.SetupServer: Kestrel is listening on 0.0.0.0
[16:24:12] [INF] [7] Main: Jellyfin version: 12.1.0
[16:24:12] [INF] [7] Main: Environment Variables: ["[JELLYFIN_DATA_DIR, /config]", "[JELLYFIN_FFMPEG, /usr/lib/jellyfin-ffmpeg/ffmpeg]", "[JELLYFIN_CACHE_DIR, /cache]", "[JELLYFIN_LOG_DIR, /config/log]", "[JELLYFIN_WEB_DIR, /jellyfin/jellyfin-web]", "[JELLYFIN_CONFIG_DIR, /config/config]"]
[16:24:12] [INF] [7] Main: Arguments: ["/jellyfin/jellyfin.dll"]
[16:24:12] [INF] [7] Main: Operating system: Debian GNU/Linux 13 (trixie)
[16:24:12] [INF] [7] Main: Architecture: X64
[16:24:12] [INF] [7] Main: 64-Bit Process: True
[16:24:12] [INF] [7] Main: User Interactive: True
[16:24:12] [INF] [7] Main: Processor count: 24
[16:24:12] [INF] [7] Main: Program data path: /config
[16:24:12] [INF] [7] Main: Log directory path: /config/log
[16:24:12] [INF] [7] Main: Config directory path: /config/config
[16:24:12] [INF] [7] Main: Cache path: /cache
[16:24:12] [INF] [7] Main: Temp directory path: /tmp/jellyfin
[16:24:12] [INF] [7] Main: Web resources path: /jellyfin/jellyfin-web
[16:24:12] [INF] [7] Main: Application directory: /jellyfin/
[16:24:12] [INF] [7] Jellyfin.Server.Startup: Storage path `/config/data` (Fixed) successfully checked with 792.7GiB free which is over the minimum of 2GiB.
[16:24:12] [INF] [7] Jellyfin.Server.Startup: Storage path `/cache` (Fixed) successfully checked with 792.7GiB free which is over the minimum of 2GiB.
[16:24:12] [INF] [7] Jellyfin.Server.Startup: Storage path `/config` (Fixed) successfully checked with 792.7GiB free which is over the minimum of 2GiB.
[16:24:12] [INF] [7] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
[16:24:12] [INF] [7] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLite connection string: Data Source=/config/data/jellyfin.db;Cache=Private;Default Timeout=60;Pooling=True
[16:24:12] [INF] [7] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLITE connection pragma command set to: 
PRAGMA locking_mode=NORMAL;
PRAGMA journal_size_limit=134217728;
PRAGMA synchronous=1;
PRAGMA temp_store=2;

[16:24:12] [INF] [7] Jellyfin.Database.Implementations.Locking.NoLockBehavior: The database locking mode has been set to: NoLock.
[16:24:12] [INF] [7] Jellyfin.Server.Migrations.JellyfinMigrationService: Initialise Migration service.
[16:24:12] [ERR] [7] Microsoft.EntityFrameworkCore.Database.Command: Failed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsHistory' AND "type" = 'table';
[16:24:12] [FTL] [1] Main: Unhandled Exception
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
   at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
   at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
   at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
   at Jellyfin.Server.Program.StartApp(StartupOptions options)
   at Jellyfin.Server.Program.<Main>(String[] args)
Unhandled exception. Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
   at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
   at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
   at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
   at Jellyfin.Server.Program.StartApp(StartupOptions options)
   at Jellyfin.Server.Program.<Main>(String[] args)
[16:24:38] [INF] [1] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
[16:24:39] [INF] [10] Jellyfin.Server.ServerSetupApp.SetupServer: Kestrel is listening on 0.0.0.0
[16:24:39] [INF] [10] Main: Jellyfin version: 12.1.0
[16:24:39] [INF] [10] Main: Environment Variables: ["[JELLYFIN_CONFIG_DIR, /config/config]", "[JELLYFIN_LOG_DIR, /config/log]", "[JELLYFIN_DATA_DIR, /config]", "[JELLYFIN_WEB_DIR, /jellyfin/jellyfin-web]", "[JELLYFIN_CACHE_DIR, /cache]", "[JELLYFIN_FFMPEG, /usr/lib/jellyfin-ffmpeg/ffmpeg]"]
[16:24:39] [INF] [10] Main: Arguments: ["/jellyfin/jellyfin.dll"]
[16:24:39] [INF] [10] Main: Operating system: Debian GNU/Linux 13 (trixie)
[16:24:39] [INF] [10] Main: Architecture: X64
[16:24:39] [INF] [10] Main: 64-Bit Process: True
[16:24:39] [INF] [10] Main: User Interactive: True
[16:24:39] [INF] [10] Main: Processor count: 24
[16:24:39] [INF] [10] Main: Program data path: /config
[16:24:39] [INF] [10] Main: Log directory path: /config/log
[16:24:39] [INF] [10] Main: Config directory path: /config/config
[16:24:39] [INF] [10] Main: Cache path: /cache
[16:24:39] [INF] [10] Main: Temp directory path: /tmp/jellyfin
[16:24:39] [INF] [10] Main: Web resources path: /jellyfin/jellyfin-web
[16:24:39] [INF] [10] Main: Application directory: /jellyfin/
[16:24:39] [INF] [10] Jellyfin.Server.Startup: Storage path `/config/data` (Fixed) successfully checked with 792.7GiB free which is over the minimum of 2GiB.
[16:24:39] [INF] [10] Jellyfin.Server.Startup: Storage path `/cache` (Fixed) successfully checked with 792.7GiB free which is over the minimum of 2GiB.
[16:24:39] [INF] [10] Jellyfin.Server.Startup: Storage path `/config` (Fixed) successfully checked with 792.7GiB free which is over the minimum of 2GiB.
[16:24:39] [INF] [10] Emby.Server.Implementations.AppBase.BaseConfigurationManager: Setting cache path: /cache
[16:24:39] [INF] [10] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLite connection string: Data Source=/config/data/jellyfin.db;Cache=Private;Default Timeout=60;Pooling=True
[16:24:39] [INF] [10] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: SQLITE connection pragma command set to: 
PRAGMA locking_mode=NORMAL;
PRAGMA journal_size_limit=134217728;
PRAGMA synchronous=1;
PRAGMA temp_store=2;

[16:24:39] [INF] [10] Jellyfin.Database.Implementations.Locking.NoLockBehavior: The database locking mode has been set to: NoLock.
[16:24:39] [INF] [10] Jellyfin.Server.Migrations.JellyfinMigrationService: Initialise Migration service.
[16:24:39] [ERR] [10] Microsoft.EntityFrameworkCore.Database.Command: Failed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsHistory' AND "type" = 'table';
[16:24:39] [FTL] [1] Main: Unhandled Exception
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
   at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
   at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
   at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
   at Jellyfin.Server.Program.StartApp(StartupOptions options)
   at Jellyfin.Server.Program.<Main>(String[] args)
Unhandled exception. Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 8: 'attempt to write a readonly database'.
   at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
   at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
   at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
   at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteScalarAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.ExistsAsync(CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrationsAsync(CancellationToken cancellationToken)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Migrations.JellyfinMigrationService.MigrateStepAsync(JellyfinMigrationStageTypes stage, IServiceProvider serviceProvider)
   at Jellyfin.Server.Program.ApplyStartupMigrationAsync(ServerApplicationPaths appPaths, IConfiguration startupConfig, StartupOptions startupOptions)
   at Jellyfin.Server.Program.StartApp(StartupOptions options)
   at Jellyfin.Server.Program.<Main>(String[] args)
god@plexfin:~$ 

so I think I know what happened. when I began doing all the docker container commands after building the computer I intended to put all the jellyfin stuff in its one directory /jellyfin. In that directory is the yaml file and two directories I created, /config and /cache. Here is the stat of those directories

god@plexfin:~/jellyfin$ stat /home/god/jellyfin/config
  File: /home/god/jellyfin/config
  size: 4096      	Blocks: 8          IO Block: 4096   directory
Device: 252,0	Inode: 2883602     Links: 2
Access: (0775/drwxrwxr-x)  Uid: ( 1000/     god)   Gid: ( 1000/     god)
Access: 2026-09-20 01:59:35.366082216 +0000
Modify: 2026-05-10 18:12:11.901010008 +0000
Change: 2026-05-10 18:12:11.901010008 +0000
 Birth: 2026-05-10 18:12:11.901010008 +0000
god@plexfin:~/jellyfin$ stat /home/god/jellyfin/cache
  File: /home/god/jellyfin/cache
  size: 4096      	Blocks: 8          IO Block: 4096   directory
Device: 252,0	Inode: 2883604     Links: 2
Access: (0775/drwxrwxr-x)  Uid: ( 1000/     god)   Gid: ( 1000/     god)
Access: 2026-05-17 00:42:53.012812971 +0000
Modify: 2026-05-10 18:12:25.997447248 +0000
Change: 2026-05-10 18:12:25.997447248 +0000
 Birth: 2026-05-10 18:12:25.997447248 +0000
god@plexfin:~/jellyfin$ 

to me that looks corret with the Uid and Gid. When I wrote the yaml file I put in the incorrect host machine directory so when I built the container and started it either jellyfin or docker crated those directories and didn’t give them the proper ownership/permissions. so I went and performed the chown and chmod commands on the /home/god/config and /home /god/cache directories.

god@plexfin:~$ sudo chown :1000 /home/god/config
sudo chmod 0775 /home/god/config
[sudo: authenticate] Password:         
god@plexfin:~$ sudo chown :1000 /home/god/cache
sudo chmod 0775 /home/god/cache
god@plexfin:~$ stat /home/god/config 
  File: /home/god/config
  size: 4096      	Blocks: 8          IO Block: 4096   directory
Device: 252,0	Inode: 2883600     Links: 8
Access: (0775/drwxrwxr-x)  Uid: ( 1000/     god)   Gid: ( 1000/     god)
Access: 2026-09-20 16:00:06.368881828 +0000
Modify: 2026-05-10 23:20:47.051128536 +0000
Change: 2026-09-20 17:02:32.809354072 +0000
 Birth: 2026-05-10 23:20:46.771118560 +0000
god@plexfin:~$ stat /home/god/cache
  File: /home/god/cache
  size: 4096      	Blocks: 8          IO Block: 4096   directory
Device: 252,0	Inode: 2883608     Links: 12
Access: (0775/drwxrwxr-x)  Uid: ( 1000/     god)   Gid: ( 1000/     god)
Access: 2026-09-20 17:03:19.984845514 +0000
Modify: 2026-09-18 02:12:33.665626599 +0000
Change: 2026-09-20 17:02:59.468196886 +0000
 Birth: 2026-05-10 23:20:46.771118560 +0000
god@plexfin:~$ 

do I need to change the Gid as well?

stoped the current jellyfin container, deleted that image, pulled a new image from docker hub, composed the image and started jellyfin. Docker status says jellyfin is still trying to restart

god@plexfin:~$ docker ps
CONTAINER ID   IMAGE                             COMMAND                CREATED          STATUS                            PORTS     NAMES
338c8f46be87   jellyfin/jellyfin:latest          "/jellyfin/jellyfin"   34 minutes ago   Restarting (139) 24 seconds ago             jellyfin
1313ba097748   lscr.io/linuxserver/plex:latest   "/init"                3 days ago       Up 41 minutes                               plex
god@plexfin:~$ 

Docker did, because you used it as a host folder bind to a container folder. If he folder doesn’t exists, docker creates it. If data exists in the folder, jellyfin created it,

If data previously created by yellyfin already existed in the folder, you still have an owernship permission problem for the files and subfolders inside the folder. You need to run the commands with the -R (or was it -r?) argument to apply the ownership change and permissions recursively:

Though, if this is a fresh installation and a loss of data would be no concern, wouldn’t it be better to stop the compose deployment, modify the compose file to use the host folders you intended to use, then deploy he compose deployment again? Afterwards you can delete the folders you never intent ended to use in the first place.

Not necessarily. Just the UID should be enough.

That was unnecessary. The image does not change by what you did. It changes if a maintainer creates and publishes a new image to Docker Hub.

so after stopping the container which docker command should I use to create the new container from the modified yaml file? I have been using

docker compose up -d

after navigating to the directory with the yaml file

so I changed the owner and rear/write permissions using the recursive modifier Jellyfin is now up and running but I still can’t get hardware encoding up and running.

also sorry about the multiple post I was editing and adding terminal output and fixing formatting too quickly and the forum flagged me as trying to spam the server

Have you ever saw the damage a tiny little box jellyfish can do that my coin your not any smarter than your story

here is the jellyfin log. I know this forum is only dedicated to docker but maybe someone can make heads or tails of it because I can’t. I attempted to play the file S01_E01_Part_One_Master_and_Apprentice.mkv the video tries to load and then the player crashes and this is the error i found in the log

[2026-09-21 00:53:42.634 +00:00] [ERR] [9] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: FFmpeg exited with code 218
[2026-09-21 00:53:42.675 +00:00] [ERR] [9] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL "GET" "/videos/2592ebb7-d460-73e0-bd70-d29369de41d9/hls1/main/-1.mp4".
MediaBrowser.Common.FfmpegException: FFmpeg exited with code 218

so now a new error pops up

You will need to wait for someone who uses Jellyfin.

Though, I assume the number of Jellyfin users that run your setup is magnitudes higher in the Jellyfin forum, than users in this forum, that happen to run Jellyfin, know your problem and how to solve it.

Update: seems I typed some words in my head, but not on the keyboard :smiley: