NOSTALGEX

Support & How-To

Stuck on something? Start here. Most of what trips people up is the browser, not the app, and it's all written down below.

Getting started

Nostalgex points at your own Plex, Jellyfin, or Emby and turns it into flippable TV channels, with an actual channel guide instead of an endless grid. There are two ways to run it.

Apple TV app (the easy one)

Web tuner

Worth saying plainly: there's no account, and there's no server of mine sitting in the middle. It all runs between your browser (or the app) and your box. Your login, your server URL, your library, your video, none of it comes to me. Open your browser's Network tab and watch the requests if you want proof. They all go straight to your server.

Connecting your server

Plex

Sign in with your Plex account and Nostalgex finds your server on its own. Plex hands out its own secure addresses (plex.direct), so it usually just works on both the app and the web tuner with nothing extra to set up.

Jellyfin

Drop in your Jellyfin server URL and sign in, either with your username and password or Quick Connect. Use the whole URL with the scheme on the front, like https://jellyfin.yourdomain.com.

Emby

Emby and Jellyfin share an API, so Emby works the same way: drop in your Emby server URL and sign in with your username and password. In the Apple TV app it's its own option; on the web tuner, use the Jellyfin connect and point it at your Emby server.

Why the web tuner needs https

The web tuner runs on an https page, and browsers won't let an https page reach out to a plain http or raw-IP address. They call it mixed content, and they just block it. If your server opens fine in another browser tab but the tuner swears it can't reach it, that's almost always what's happening. It's the browser's rule, not something I can flip off from the web.

A plain http box on your LAN will always work in the Apple TV app and never in a browser tab. That's the one real difference between them.

Reverse proxy & CORS (Jellyfin or Emby behind nginx, haproxy, Caddy)

Here's the one that catches people. Your Jellyfin is on https and reachable, but the tuner still says "COULD NOT REACH THE JELLYFIN SERVER", and if you pop open the browser dev console you see a CORS error. That means your reverse proxy is rejecting the request because it's coming from a different domain (this site). The browser throws away the response unless your server says it's OK for https://nostalgex.app to talk to it.

This is a web-tuner-only thing. The Apple TV app doesn't use CORS, so if you're on the app you can ignore all of this.

The fix is one header at your proxy: allow requests from https://nostalgex.app. How you do that depends on what you run.

haproxy

http-request set-var(txn.cors_origin) req.hdr(Origin)
acl cors_allowed var(txn.cors_origin) -m str https://nostalgex.app
http-response set-header Access-Control-Allow-Origin %[var(txn.cors_origin)] if cors_allowed

nginx

add_header Access-Control-Allow-Origin "https://nostalgex.app" always;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, DELETE" always;
add_header Access-Control-Allow-Headers "Authorization, Content-Type, X-Emby-Authorization" always;
# answer the preflight
if ($request_method = OPTIONS) { return 204; }

Caddy

header Access-Control-Allow-Origin "https://nostalgex.app"
header Access-Control-Allow-Methods "GET, POST, OPTIONS, DELETE"
header Access-Control-Allow-Headers "Authorization, Content-Type, X-Emby-Authorization"
@options method OPTIONS
respond @options 204

Reload the proxy, hard-refresh the tuner, and try again. The exact syntax shifts around between versions, but the goal is always the same: every response (including the OPTIONS preflight) needs to carry Access-Control-Allow-Origin: https://nostalgex.app.

Don't feel like touching your proxy config? Use the Apple TV app. It needs none of this.

FAQ

Does my data go through your servers?

No. It's a straight line from your browser or app to your own server. Your login, server URL, library, and video never reach me. I only host the web page. If you want to check, open the Network tab in your browser and watch where the requests go. Every one of them hits your server, not mine.

Is the web tuner tracking me?

No. There are no analytics or tracking scripts on the tuner pages. The marketing landing page counts basic visits, but the part that connects to your server doesn't run anything.

Can I use it with an M3U / IPTV playlist?

Not right now. Nostalgex builds channels out of your own Plex, Jellyfin, or Emby library, it doesn't read a list of live streams. M3U isn't on the roadmap yet.

Why does the web tuner need https when the app doesn't?

Browsers won't let a secure page reach a plain http or raw-IP server, and they enforce CORS on top of that. A native app has neither rule, so the Apple TV app just connects to your local box directly.

A channel is a black screen, or takes a while to start. What gives?

First, make sure you're on the latest version. Older builds couldn't play HEVC/H.265 or mkv and would sit on a black screen. They play fine now. A few seconds of the "tuning" screen at the start is normal too: anything that isn't directly playable gets transcoded by your server, and that takes a moment to spin up. If a channel never starts, check that transcoding is turned on (Jellyfin: Dashboard → Playback).

Troubleshooting

"Could not reach the server / check the URL"

"Could not load library"

Black screen, or playback won't start

Channels look wrong or empty

Contact & bug reports

Email

support@nostalgex.app

I usually get back within a day or two.

Reporting a bug? The stuff that actually helps me fix it: what you were doing, what you expected versus what happened, your app and tvOS version (Settings → About), whatever error or diagnostic line showed up, and a photo of the screen if you've got one.

Nostalgex is built by Muell Haus Inc. Here's the Privacy Policy.

PRODUCT UPDATES

New channels and fixes ship often. Optional email — no account needed.