I have not been able to get Moonfin Seerr integration working. I have made some progress by adding the Seerr URL to the Moonfin plugin settings as http://sb-seerr:5055. Now Moonfin seems to find the Seerr installation, but everytime I try to actually sign in it says "No session cookie received from Seerr".
19 replies
noahlol01 wrote:
I have tried the same thing and can't get it to work. But I have gotten it to work with fladder client seerr integration. Just with the tailscale ip and port behind it. Thinks it's a handshake problem when using your local ip but I dont know
skylyn wrote:
Thanks, I was able to get Fladder working too.
skylyn wrote:
It works for me using my nginx dns proxy.
fab wrote:
Hello, for me it works locally after setting IP:8096 for jellyfin extenal URL on seerr settings
tomspark wrote:
Good progress getting it to find Seerr at sb-seerr:5055. That 'No session cookie received' means Moonfin reached Seerr but the login handshake didn't finish — Seerr didn't hand back a session. Most common fix: open Seerr directly in a browser first (your-server-IP:5055) and sign in there once with your Jellyfin account, so Seerr creates and links your user. Then go back and try the Moonfin sign-in again — it usually goes through once Seerr already knows you. If it still won't after that, tell me and I'll dig deeper — Moonfin's a third-party plugin, so the handshake can be finicky.
skylyn wrote:
I did make sure to login to Seerr with the account first. I've also tried multiple accounts, both Jellyfin accounts, and "Local" Seerr accounts, and multiple devices - in the Moonfin app on my phone and in my web browser. It's giving me the same error everywhere, and regardless of the account I use.
tomspark wrote:
Thanks for trying all that — sounds like you've ruled out the usual account stuff, so let's look at what Seerr itself is saying. Right when you hit that error in MoonFin, check Seerr's own log: in Seerr go to Settings then Logs, or on the server run sudo docker logs sb-seerr --tail 50. That'll show whether Seerr is actually rejecting the login (and why) versus MoonFin not reading the reply back. Paste me the line that shows up at that moment and I'll tell you the next step. MoonFin's Seerr hookup is third-party so it can be picky, but we'll get it sorted.
skylyn wrote:
2026-06-25T05:47:00.045764755Z 2026-06-25T05:47:00.045Z [debug][Download Tracker]: Found 10 item(s) in progress on Sonarr server: Sonarr 2026-06-25T05:47:29.403254987Z 2026-06-25T05:47:29.402Z [info][API]: Found matching Jellyfin user; updating user with Jellyfin {"ip":"::ffff:172.20.0.7","jellyfinUsername":"user"} 2026-06-25T05:48:00.013622225Z 2026-06-25T05:48:00.013Z [debug][Jobs]: Starting scheduled job: Download Sync Seerr seems happy, no errors, just a log saying it found the user.
tomspark wrote:
That log actually tells us a lot — Seerr IS authenticating you fine ("Found matching Jellyfin user"), so the problem is purely that the session cookie Seerr hands back isn't sticking on MoonFin's side. Two things to try: 1) In MoonFin's Seerr URL, swap the internal name for your server's real address: http://YOUR-SERVER-IP:5055 instead of http://sb-seerr:5055. The internal Docker name (sb-seerr) makes the session cookie unusable for your phone/browser, which is exactly that "no cookie" symptom — the external address normally fixes it. 2) If MoonFin has a field for a Seerr API key (in Seerr: Settings - General - API Key), use that — it skips the cookie login entirely. Try 1 first. If neither sticks, it's a MoonFin-side limit on the Seerr handshake (it's a third-party plugin), and you'd still have full request functionality through the Seerr web app directly. Let me know how 1 goes!
skylyn wrote:
Using the IP address, it spins for a while, then returns "An unexpected error occurred" after it times out. The Jellyfin logs show a stacktrace confirming a timeout. No log shows in Seerr. 2026-06-25T06:16:58.782377840Z System.Threading.Tasks.TaskCanceledException: The request was canceled due to the configured HttpClient.Timeout of 15 seconds elapsing. 2026-06-25T06:16:58.782382968Z --- System.TimeoutException: A task was canceled. 2026-06-25T06:16:58.782386621Z --- System.Threading.Tasks.TaskCanceledException: A task was canceled. 2026-06-25T06:16:58.782389627Z at System.Threading.Tasks.TaskCompletionSourceWithCancellation1.WaitWithCancellationAsync(CancellationToken cancellationToken) 2026-06-25T06:16:58.782392572Z at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken) 2026-06-25T06:16:58.782395551Z at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) 2026-06-25T06:16:58.782398936Z at System.Net.Http.HttpClient.<SendAsyncgCore|830(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) 2026-06-25T06:16:58.782402949Z --- End of inner exception stack trace --- 2026-06-25T06:16:58.782405662Z --- End of inner exception stack trace --- 2026-06-25T06:16:58.782418811Z at System.Net.Http.HttpClient.HandleFailure(Exception e, Boolean telemetryStarted, HttpResponseMessage response, CancellationTokenSource cts, CancellationToken cancellationToken, CancellationTokenSource pendingRequestsCts) 2026-06-25T06:16:58.782421902Z at System.Net.Http.HttpClient.<SendAsyncgCore|830(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) 2026-06-25T06:16:58.782424462Z at Moonfin.Server.Services.JellyseerrSessionService.FetchCsrfTokenAsync(HttpClient client, String jellyseerrUrl, CookieContainer cookieContainer) 2026-06-25T06:16:58.782427023Z at Moonfin.Server.Services.JellyseerrSessionService.AuthenticateAsync(Guid userId, String username, String password, String authType) 2026-06-25T06:18:38.858326886Z [06:18:38] [INF] [3] Emby.Server.Implementations.Session.SessionWebSocketListener: Sending ForceKeepAlive message to 1 inactive WebSockets. 2026-06-25T06:19:39.222718241Z [06:19:39] [ERR] [3] Moonfin.Server.Services.JellyseerrSessionService: Unexpected error during Seerr auth for user Seth 2026-06-25T06:19:39.222773551Z System.Threading.Tasks.TaskCanceledException: The request was canceled due to the configured HttpClient.Timeout of 15 seconds elapsing. 2026-06-25T06:19:39.222780544Z --- System.TimeoutException: A task was canceled. 2026-06-25T06:19:39.222784507Z --- System.Threading.Tasks.TaskCanceledException: A task was canceled. 2026-06-25T06:19:39.222787942Z at System.Threading.Tasks.TaskCompletionSourceWithCancellation1.WaitWithCancellationAsync(CancellationToken cancellationToken) 2026-06-25T06:19:39.222791164Z at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken) 2026-06-25T06:19:39.222794358Z at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) 2026-06-25T06:19:39.222798319Z at System.Net.Http.HttpClient.<SendAsyncgCore|830(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) 2026-06-25T06:19:39.222802609Z --- End of inner exception stack trace --- 2026-06-25T06:19:39.222805484Z --- End of inner exception stack trace --- 2026-06-25T06:19:39.222808347Z at System.Net.Http.HttpClient.HandleFailure(Exception e, Boolean telemetryStarted, HttpResponseMessage response, CancellationTokenSource cts, CancellationToken cancellationToken, CancellationTokenSource pendingRequestsCts) 2026-06-25T06:19:39.222811583Z at System.Net.Http.HttpClient.<SendAsyncgCore|830(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) 2026-06-25T06:19:39.222815012Z at Moonfin.Server.Services.JellyseerrSessionService.FetchCsrfTokenAsync(HttpClient client, String jellyseerrUrl, CookieContainer cookieContainer) 2026-06-25T06:19:39.222830315Z at Moonfin.Server.Services.JellyseerrSessionService.AuthenticateAsync(Guid userId, String username, String password, String authType)
skylyn wrote:
I also setup a Nginx Proxy for requests.internal pointing to Seerr. If I use requests.internal in Moonfin, I get the same No Session cookie received from Seerr error. Logs in Jellyfin show the user authenticating through the flow, but ending in the no session cookie. 2026-06-25T06:27:00.481169875Z [06:27:00] [INF] [32] Jellyfin.Server.Implementations.Users.UserManager: Authentication request for User has succeeded. 2026-06-25T06:27:00.482836984Z [06:27:00] [INF] [32] Emby.Server.Implementations.Session.SessionManager: Current/Max sessions for user Usern: 2/0 2026-06-25T06:27:00.484267622Z [06:27:00] [INF] [32] Emby.Server.Implementations.Session.SessionManager: Logging out access token 2a0e17b54b0e4ec8ab445dc83b0976f1 2026-06-25T06:27:00.491519046Z [06:27:00] [INF] [32] Emby.Server.Implementations.Session.SessionManager: Creating new access token for user fe5d781c-fc7a-47c1-a67d-1074ce0a392a 2026-06-25T06:27:00.550526678Z [06:27:00] [WRN] [90] Moonfin.Server.Services.JellyseerrSessionService: No session cookie received from Seerr for user User
tomspark wrote:
Brilliant logs — this pins it. The IP timeout: MoonFin runs inside the Jellyfin container, so it can't reliably reach your server's external IP:5055 (that's the 15s FetchCsrfToken timeout). The internal name (sb-seerr:5055, or your requests.internal proxy) IS the right address for reachability — stick with that. The 'No session cookie': with the internal name MoonFin does authenticate you, but Seerr isn't returning the session cookie it expects. Here's the crux — SparkBox ships a Seerr fork (seerr 3.2.0), and MoonFin's login service was written for upstream Jellyseerr, so its cookie/CSRF handshake doesn't line up. That's not something you can fix from settings. Two paths: (1) check MoonFin for an 'API key' auth option (the key's in Seerr → Settings → General) — if it has one, that skips the cookie flow and should just work. (2) If it's username/password only, you've hit a real MoonFin-vs-our-Seerr compatibility gap, and I'm flagging it to get fixed properly. In the meantime the Seerr web app (your requests.internal page) gives you full request functionality. I'll update you when there's a proper fix — thanks for the seriously good debugging here.
tomspark wrote:
Really useful data point — thanks, and it actually confirms the diagnosis. If Fladder's Seerr integration works (via your Tailscale IP) while MoonFin doesn't, that tells us Seerr itself is fine — the breakage is specific to how MoonFin's login handshakes with our Seerr build. So two takeaways: (1) anyone stuck on MoonFin + Seerr right now can use Fladder's integration as a working alternative (nice find), and (2) it's firmly a MoonFin-side fix, which I've flagged to sort out. Appreciate you adding this to the thread.
skylyn wrote:
I don't see any API key option in Moonfin settings. I suspect you're correct that this is an incompatibility between Seerr and Moonfin with Moonfin expecting Jellyseerr - as seen in the stacktrace JellyseerrSessionService
tomspark wrote:
Yep, you've nailed it — that JellyseerrSessionService in the stack trace is the smoking gun. MoonFin is built to log into upstream Jellyseerr, and the Seerr we ship is a different fork, so MoonFin's login handshake doesn't line up (which is also why you don't see the API-key field you'd expect). It's firmly a MoonFin-side compatibility fix and it's on the list. In the meantime, the working path another user confirmed on this thread is Fladder's Seerr integration — point it at your Tailscale IP + port and requests start flowing from your client while we sort MoonFin out. Thanks for the sharp diagnosis; it genuinely helps pin this down.
noahlol01 wrote:
Only works with tailscale for u too?
tomspark wrote:
Jumping in with the why: Tailscale tends to 'just work' because it gives Fladder one stable address that always routes straight to your box, regardless of network. The local LAN IP can work too — but only if the device running Fladder is on the same network AND you point it at the exact address shown on Seerr's card in your dashboard (its direct port, plain http, not an https/proxy URL). So local isn't impossible; Tailscale just removes the two things that usually trip it up — wrong network and wrong port/scheme. Worth a try on local if you're on the same Wi-Fi as the box, but if it fights you, Tailscale's the clean path you've already got working.
tomspark wrote:
Nice — that's a great third option for the thread (Fladder and a Tailscale IP were the other two that worked). Putting an nginx reverse proxy in front of Seerr likely normalizes the headers and cookies enough that MoonFin's login handshake lines up. Thanks for sharing what worked — that genuinely helps the next person who hits this. The proper MoonFin-side fix is still on the list, but it's good to have a few working routes in the meantime.
tomspark wrote:
Appreciate you adding this, fab — that's a genuinely useful one. Pointing Jellyfin's external URL at your IP:8096 inside Seerr's settings gives the login handshake the right address to land on, and it sounds like that's enough to get MoonFin signing in locally for you. That's now a fourth working route people can try on this thread, alongside Fladder's integration, a Tailscale IP, and an nginx reverse proxy. Thanks for sharing exactly what worked — it genuinely helps the next person who lands here. The proper MoonFin-side fix is still on our list.