Skip to content

Instantly share code, notes, and snippets.

@Saturn745
Created July 26, 2023 00:26
Show Gist options
  • Save Saturn745/2ebf21d1ab7337b9b9721c7d4ba0139c to your computer and use it in GitHub Desktop.
Save Saturn745/2ebf21d1ab7337b9b9721c7d4ba0139c to your computer and use it in GitHub Desktop.
Run Jellyfin with Arion. Currently this does not work due to some SSL error and Jellyfins plugin manifest. I have tried countless things to fix it but it just refuses to work.
{ pkgs, ... }:
{
project.name = "media-server";
services = {
jellyfin = {
nixos.configuration = {pkgs, ...}: {
boot.isContainer = true;
boot.tmpOnTmpfs = true;
};
image.enableRecommendedContents = true;
image.nixBuild = true;
image.command = [ "sh" "-c" ''echo Starting Jellyfin... && ${pkgs.jellyfin}/bin/jellyfin --datadir /config --cachedir /cache'' ];
service.useHostStore = false;
service.container_name = "jellyfin";
service.volumes = [
"./services/media-server/jellyfin/:/config"
"./media:/data/media"
"./services/media-server/jellyfin/tmp:/tmp"
];
service.ports = [
"8096:8096"
"8920:8920" # optional
"7359:7359/udp" # optional
"1900:1900/udp" # optional
];
service.dns = [ "1.1.1.1" "8.8.8.8" ];
service.hostname = "jellyfin";
service.restart = "unless-stopped";
};
};
}
jellyfin | [23:39:45] [ERR] [10] Emby.Server.Implementations.Updates.InstallationManager: An error occurred while accessing the plugin manifest: https://repo.jellyfin.org/releases/plugin/manifest-stable.json
jellyfin | System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
jellyfin | ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: PartialChain
jellyfin | at System.Net.Security.SslStream.SendAuthResetSignal(ProtocolToken message, ExceptionDispatchInfo exception)
jellyfin | at System.Net.Security.SslStream.CompleteHandshake(SslAuthenticationOptions sslAuthenticationOptions)
jellyfin | at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)
jellyfin | at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
jellyfin | --- End of inner exception stack trace ---
jellyfin | at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
jellyfin | at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
jellyfin | at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
jellyfin | at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(HttpRequestMessage request)
jellyfin | at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
jellyfin | at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
jellyfin | at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
jellyfin | at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
jellyfin | at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
jellyfin | at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
jellyfin | at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
jellyfin | at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
jellyfin | at System.Net.Http.Json.HttpClientJsonExtensions.GetFromJsonAsyncCore[T](Task`1 taskResponse, JsonSerializerOptions options, CancellationToken cancellationToken)
jellyfin | at Emby.Server.Implementations.Updates.InstallationManager.GetPackages(String manifestName, String manifest, Boolean filterIncompatible, CancellationToken cancellationToken) in /build/source/Emby.Server.Implementations/Updates/InstallationManager.cs:line 102
jellyfin | [23:39:45] [INF] [10] Emby.Server.Implementations.ScheduledTasks.TaskManager: Update Plugins Completed after 0 minute(s) and 0 seconds
jellyfin | [23:39:45] [INF] [10] Emby.Server.Implementations.ScheduledTasks.TaskManager: ExecuteQueuedTasks
@Saturn745
Copy link
Author

Working version which uses Linuxserver.io's image

{ pkgs, ... }:
{
  project.name = "media-server";
  services = {
    jellyfin = {
      service.image = "lscr.io/linuxserver/jellyfin:latest";
      service.container_name = "jellyfin";
      service.volumes = [
        "./services/media-server/jellyfin/:/config"
        "./services/media-server/media:/data/media"
        "./services/media-server/jellyfin/tmp:/tmp"
      ];
      service.useHostStore = false;
      service.ports = [
        "8096:8096"
        "8920:8920" # optional
        "7359:7359/udp" # optional
        "1900:1900/udp" # optional
      ];
      service.restart = "unless-stopped";
    };
  };
}

Sadly can't use NixOS under the hood due to the issues stated above :(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment