I'm looking for someone to hold my hand through setting this service up. I've been banging my head against the desk trying to figure out how to install/use docker to make this work but I'm having a really hard time wrapping my head around setting all of this up. I've been through the documentation multiple times and keep getting road blocked, likely from my own ignorance. Currently have both plex and jellyfin along with Prowlarr, Sonarr, and Radarr installed on my windows media server. Any help would be greatly appreciated..
#Need Help Setting up Seerr
262 messages · Page 1 of 1 (latest)
How have you installed all of those other applications? Did you use docker containers? If it's on Windows, just install docker desktop which includes docker compose, and then check the docs for the compose example.
Install Jellyseerr using Docker
i get to the part where you make a container but it doesn't say how and just gives me some code to use for docker cli or compose. I assume im using compose but i don't see any place to add a new container like many of the video tutorials show..
i've tried pasting the code into the command line in the bottom but that gives me errors.
and yes i have them all installed but no, none of them are installed with docker. I would prefer to bypass using docker all together, I'm told it's possible but i can never find an executable or any other known way to install on windows.
Docker is the recommended way.
https://docs.docker.com/compose/ may help.
Also, when you get Docker set up , you might consider using Portainer. It makes it easy to deploy and manage docker containers. https://docs.portainer.io/start/install-ce
Yes I've seen all of this but I'm looking for step by step instructions for someone who doesn't understand how to use docker or why it's necessary. It still doesn't make sense to me.
It just seems like the instructions hands you some code/command prompts and expects it to work and for the person reading it to know what to do with it, which I do not. Sorry for being difficult, I'm honestly trying to understand but it's just not happening..
Lol yeah, Docker can be a beast if you're used to just getting a .exe to run. So Docker basically sets up a tiny OS for each service you want to run. This tiny OS is called a container. The container has all of the prerequisite things that the service needs, which eliminates all of the "it works on my machine, idk why yours is busted" issues associated with direct Windows/MacOS installs.
Containers usually have variables you can set, and notably the container will probably need at least one volume. The container itself doesn't actually store any persistent data; If you restart the container, all of the data inside of it is lost. Instead, containers will use Volumes to store persistent data. You map the volume to somewhere on your computer, (like somewhere on your C:\ drive,) and that volume holds the data even after the container is rebooted. The container can only see the files stored inside of that mapped volume, so anything outside of that specified location is safe. For instance, if a container gets hacked, it's not going to be able to muck with all of your files elsewhere on your PC.
There are a few ways to go about booting a container up. Docker Desktop is probably what you're trying to use, and it is... Not great. It makes variables more confusing than they need to be. You can also boot it up via command line, which is actually likely going to be the easier method. If you're on Windows, you'll likely want to use Docker Compose, which should have already been installed when you set up Docker Desktop... But we'll come back to that.
So first, we're going to create a docker-compose.yml file. Just start by creating an empty text file, (right click>New>Text Document if you're on Windows) and rename it docker-compose.yml. This is how you'll actually store your variables. This makes restarting the container much easier, because all of your container variables are saved in that file. Open that new yml file in your preferred text editor (I suggest Notepad++), and paste Seer's provided docker-compose setup into it. As of me writing this, that text is this:
---
version: '3'
services:
overseerr:
image: sctx/overseerr:develop
container_name: overseerr
environment:
- LOG_LEVEL=debug
- TZ=Asia/Tokyo
- PORT=5055 #optional
ports:
- 5055:5055
volumes:
- /path/to/appdata/config:/app/config
restart: unless-stopped
Let's go through each line, to see what it does. First, we define which version of Docker Compose we want to use. Likely not necessary, but it can be nice if compose later changes something that breaks this.
overseerr: defines that we want to create a new container for the overseerr service.
image: defines which image we want to use for that container. In this case, it's the official sctx/overseerr image, using the :develop branch.
container_name: allows us to name the container. We do this because Docker will automatically assign a random name if none is specified. And we want to keep our container list nice and pretty (and easy to maintain in the future!)
environment: is where things get tricky. These are the variables I mentioned earlier. There will be some things to change here, to fit your specific setup.
- LOG_LEVEL=debug simply specifies that we want to gather logs with the debug level. This can be left alone.
- TZ=Asia/Tokyo specifies which time zone you're in. You'll want to change this to whatever your local time zone is, using IANA Time Zone format (Google it. There's a wikipedia article that has all of them listed.)
- PORT=5055 tells the container that we want to use network port 5055 for access. We repeat this again with the next two lines, so you can technically delete this line if you want.
The volumes: level is where things really get important. This volume will be where persistent data is stored, because the container wipes itself when you restart it. You'll want to change that /path/to/appdata/config part to wherever you want the volume to be stored. It uses linux file path format, so for instance C:\Docker\Overseerr\appdata would actually be written as /c/Docker/Overseerr/appdata. Keep in mind that Linux is case sensitive, so you'll need to watch your capital letters and be sure they match the folder names exactly. Then the :app/config section is what the actual container sees.
Lastly, restart: unless-stopped tells the container to automatically restart itself unless you had manually stopped it. For instance, when you boot up your computer and Docker loads. This way you don't need to manually start the container each time your server reboots.
So after you have that all set, and have those variables plugged into where they need to go, we'll actually work on starting the container.
Starting the container will involve opening cmd (Win+R, "cmd") and using the command line to call that docker-compose.yml file. We'll start by navigating to wherever you stored that file. For instance, maybe you saved it in that same C:\Docker\Overseerr folder. We would use cd C:\Docker\Overseerr in our command line. cd means "Change directory" which simply navigates our cmd to the listed folder.
Once we're in that folder, we use docker-compose up -d to boot the docker-compose.yml file that is saved in that location.
holly sh**, havent read all of this yet but it looks like it will be a huge help. let me parse through everything but for now, thank you so much for your help. I will make another attempt using your instructions
Portainer is a similar setup involving Docker Compose. It simply gives you a GUI to do it, instead of using cmd. The nice part about that is you can access Portainer via a browser, so you don't actually need to be remoted into your server to maintain things. But setting up Portainer is only tangental to this. If you want to tackle that later, you'd be able to just copy your docker-compose text into Portainer.
But the important part is getting those variables set correctly first. I want to be sure it boots (and that the volume is working) before we try to tackle Portainer.
Also worth noting that multiple containers can be booted via a single compose file. This is called a stack, and it can be a good way to keep your containers organized. It also makes updating everything easy, because you can kill the entire stack, pull new images, and restart the stack (using the new images) very easily.
Also worth noting that if you wanted to use the Jellyseer image instead, you would swap the image variable to ghcr.io/fallenbagel/jellyseerr:latest instead. I used Overseerr by default, but Jellyseerr may fit your needs better if you're trying to sync with both Plex and Jellyfin. I'm hesitant to suggest Seerr (the merge of Overseerr and Jellyseerr) until it has been tested.
ok got the yml file created and set right, about to run on cmd
Nice
Do i use the windows cmd or the cmd in docker? Or is that all the same thing?
Windows cmd. The cmd in Docker is similar, (and you can even run cmd inside of each container), but let's stick with the windows cmd just to be safe.
10-4
Oh I just realized, you may get a WSL2 error if that's not installed. I totally forgot that Windows needs WSL2 lmao.
Basically, you'd want to fully shut down Docker, then in Powershell (not cmd) you would run wsl.exe --install
You'll probably need to reboot after that's done installing. Then follow that first link to actually enable WSL in Docker.
It might not be necessary if you're mapping a volume to your C:\ drive. But better safe than sorry, cuz we don't want any corrupted databases.
Ok i got the wsl installed via powershell, selected a username and pw, and the settings are correct in docker
Woo! Now you should be able to boot that docker-compose file. And hopefully it boots on the first try lmao
ok i assume that means we jump back to this spot, correct?
Yeah, you'll use cd to navigate to wherever you saved that file, and then docker-compose up -d to run it.
in the windows cmd? not the docker cmd?
Correct
And it has the .yml file type? It shouldn't be .yml.txt, for instance
oh thats what's wrong
I think Windows hides file types by default, so you may need to un-hide the extension to change it.
ok now it seems to be running
Nice. Let's do some testing before we get too excited. For starters, visit http://localhost:5055 (substitute localhost with your server's LAN IP address if you're on a separate machine), and go through the initial User setup. We don't need to get very far in configuring everything yet. We just need to get that initial setup done.
Yeah, I want to make sure that volume is working properly. You'll have issues in the future if it's not.
So go ahead and connect to port 5055 via your browser, then go through the initial setup.
holly crap, i think its going
its prompting me for an overseerr login
could have sworn i set it up for jellyseerr but ill take what i can get
Yeah, Jellyseerr or Overseerr will depend on which image you used. Refer to this comment to swap to jellyseerr if you didn't already.
honestly im torn between the two. Jellyfin seems to just work and there's no extra bs but Plex seems to be nice about grabbing optional subtitles without plugins and has trailers baked in. Would it be bad to have jellyseerr and overseerr?
You probably don't want to run both at the same time. If you're trying to sync with both, I think you can do that directly with Jellyseerr alone.
Well im already down the road with Overseerr,. should i just continue or go back and do jellyseerr?
its currently asking what my host name or ip address is
I mean, if you haven't even set it up yet, you might as well go ahead and swap to Jellyseerr. No reason to set it up twice, right?
I didn't initally see that you were using Jellyfin, which is why I used the Overseerr image in that example compose file.
no worries, ok i changed all the "overseerr"s to "jellyseerr" in the yml. So now i just run that again?
You'll want to use the jellyseerr image. So image: ghcr.io/fallenbagel/jellyseerr:latest
Note that it's ghcr.io/fallenbagel, not just sctx/
Also you'll probably want to use the :latest branch for Jellyseerr instead of :develop
Lol yeah you didn't copy the right image path
crap
It's ghcr.io/fallenbagel/jellyseerr:latest, not sctx/jellyseerr
in the yml?
You'll also want to run docker-compose down before you try again
Yes
Like change sctx/jellyseerr:develop to ghcr.io/fallenbagel/jellyseerr:latest
And then run docker-compose down to shut down the existing containers, before running docker-compose up -d again.
i havent changed anything and it appears right..
ran docker-compose down
ok i think i have it switched but i assume its mad at me for not making a docker volume yet?
That’s what I wanted to test, and I’m glad you sent that screenshot of your compose. It looks like you removed half of the volume section.
You'll want to set that to - /c/Docker/Jellyseerr/appdata:/app/config. The stuff after the colon is what maps to the actual container. Since the container isn't seeing that map, it won't be able to actually save anything.
Basically, the first part before the colon is to map the volume to a path on your computer. The second part after the colon is to map that volume to the container. You need both for it to work.
so now docker down again?
Yup lol
Luckily, getting it to boot is often the biggest hurdle. You got that far, so now it's just the small little things that will trip you up.
ok diffent problem now..
Can you send another screenshot of the compose?
No space after the colon
lol got it
Yup it's always something tiny like that lmao
ok, not getting that app/config error
Great. Go ahead and set up your user, and then we'll want to restart it one more time to ensure the settings are actually saving. Cuz the volume appears to be mapped, but I want to be sure juuuuuust in case.
Ok, working on that part, do i mess with api keys at this point or do that later?
Either way. You'll have to do it eventually, and if it's set up properly it should be able to save all of that now.
The reboot is basically just to make sure the volume is actually working properly. Some containers will act like they're fine, and will "save" things, but then that data is lost when the container is restarted because it wasn't actually saving lol
Ok, so thats just a docker down again and docker up to restart? Also, i can't begin to thank you enough for all your help so far
So I want you to go ahead and set some stuff up, then run docker-compose down and docker-compose up -d again to ensure it still has your settings saved after the restart.
Yup you've got it. No worries. Like I said, Docker can be a beast if you've never had to use it before. And the documentation does not make things easy for newbies.
ok yes, it remembered the settings i did change
Woo, you're up and running. If you want to set up Portainer (so you can do it with a GUI instead of running commands in cmd) then we can try to tackle that now.
ok so add an environment to an existing installation?
Wait, for what?
portainer
Oh, did you get it set up already?
I went to this link and am following instructions
i guess you didnt send that one
Oh gotcha
If you're running it in the same Docker instance that your Jellyseer stack is in, you should be able to just use the local environment. Go ahead and Live Connect to that one.
oookay, i might be lost again.. Not sure what you mean. Happy to send screenshots if that would help
I could even share my screen via discord if that would work better
Guessing it looks something like that.
no, i dont think im that far. That looks like portainer is already installed
Yeah, it downloaded the image and started it. So now you should be able to access it on port 9443
That should start the initial setup process
so load localhost:9443 on a browser?
Yup yup
it said client sent an HTTP request to an https server.. oops?
bingo
And once you have that set up, I can walk you through migrating your compose to Portainer. By default, Portainer will be able to see your existing stacks, but won’t have full control over them until you actually boot them with Portainer.
ok, is there a trick to getting it to accept a username? It accepted my pw (12 characters? wtf?) but no matter what i change the username to, the "create user" button is greyed out..
I think the username has to be all lowercase? Could always try the default admin as well
Dumb question, but can you click the greyed out button?
yes, but nothing happens
Yeah, that’s because Portainer uses a self-signed certificate.
has a red circle with a cross through it when i hover over the create user
Basically, your browser can’t authenticate the validity of the certificate, because it’s not signed by a third party authority. It just has to rely on the “just trust me bro” method. So it throws up a warning that the https isn’t secure.
thats cool with me as long as it's not keeping me from creating a user
Looking at it, does your password verification match? There’s a red X on that second password field.
It’s always something dumb and small like that lmao
how do i restart portainer?
If you’re using Docker Desktop, you can technically just hit the big Stop button on your container list.
ah, easy enough
Yup
Woo! Start by Live Connecting to your local environment.
Oh you may need to add your local environment first? I can’t remember tbh.
i believe so, docker standalone?
Yeah
Yeah I honestly don't remember this part tbh
I think you should just have a "Local environment" option somewhere?
Like you shouldn't need to connect to an external environment. That would be for if you were going to manage another machine running Docker somewhere else on your network.
Oh yeah there is. Found it in the docs.
It's the "Get Started" option, not "Add Environments"
Cool. That'll take you to the dashboard for your Docker instance. You should have a "Stacks" option, and it probably has a big "1" next to it.
yes
got it
That will take you to a list of all of your currently running stacks
So now we're going to start by killing the existing stack. Portainer can likely see it, but you'll need to boot it with Portainer for it to have full control.
So go ahead and run the docker-compose down command in cmd
done
Great. Now let's go back to Portainer, and use the "Add Stack" button in the top
ok
You'll probably just want to name it "Seerr" or something
Then the Web Editor section is where you'll want to paste your docker-compose text
ok so im opening my yml file and copying that over to this
Or if you prefer, you can use the Upload feature to just grab that file directly
Correct. Step 1 was getting it to boot, so we knew the compose was formatted correctly. Now we're importing that into Portainer so it has control of the stack.
It probably says at the top of the page
Oh did you name it?
Every Portainer stack needs a unique name
lol i used a capitol letter
Oh yup lol
stack successfully deployed
Great! Now it should show up in your Stacks list.
correct
Go ahead and click on it. This is where you can stop and update it.
yes, i see that part
So near the top, you have a little "Stop stack" button. If you need to stop it, this is where you go. Right above that, you have an "Editor" tab
That Editor tab is where you go to update it.
ok cool! Im needing flaresolverr as well, is this where i would get that done?
or is that a whole other can of worms?
The Editor tab should look pretty familiar. It'll have the compose text, along with the currently running containers.
Yes, you can run them both as a single stack.
flaresolverr: #Create Flaresolverr container
image: ghcr.io/flaresolverr/flaresolverr:latest #DockerHub mirror flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_HTML=${LOG_HTML:-false}
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none} #There are no working solvers as of 2025-07-17. Can update here if a working one gets added later.
- TZ=America/Chicago
ports:
- "${PORT:-8191}:8191"
restart: unless-stopped
Paste that at the bottom of your current compose file.
That's from mine lmao
oh really? thats not bad at all.. then i assume i just restart the stack?
So updating is usually a matter of stopping the stack with that first little button, then going to Edit and hitting the "Update the stack" button below the compose text.
It'll ask if you want to re-pull images. If you're updating, you do want new images.
it's not liking the ports in the text from above
Oh odd. Mine is marked red but it still runs just fine lol
i removed the " and it isnt red anymore
It's because of the quotes. It automatically highlights quoted text in red.
update the stack is greyed out..
Right, but you might actually need the quotes. The red doesn't mean it'll fail to run. You can still try to update, and it'll give you an error if it fails.
Cuz you removed the quote, but it's expecting to find one lol
oh, ok. quotes back in
Lol yeah the red looks scary, but it's not actually a "this will stop it from running" error. It's just red to highlight the text.
The same way the commented text (behind the #) is orange.
version: "3"
services:
overseerr:
image: ghcr.io/fallenbagel/jellyseerr:latest
container_name: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=America/Chicago
- PORT=5055 #optional
ports:
- 5055:5055
volumes:
- /c/Docker/Jellyseerr/appdata:/app/config
restart: unless-stopped
flaresolverr: #Create Flaresolverr container
image: ghcr.io/flaresolverr/flaresolverr:latest #DockerHub mirror flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_HTML=${LOG_HTML:-false}
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none} #There are no working solvers as of 2025-07-17. Can update here if a working one gets added later.
- TZ=America/Chicago
ports:
- "${PORT:-8191}:8191"
restart: unless-stopped
You have an extra space before the flaresolverrr: line.
lol always something little
It needs to be the same indent level as overseerr:
Also you have it listed as Overseerr on that top level, even though you're using the jellyseerr image lmao
Not a problem per se, just something I noticed.
ok it didnt like that i made it jellyseerr so i just called it seerr
yes, state: Running for both. Is it going to be a problem that the rest of my arr stack isnt in this environment? (sonarr, radarr, etc)
i have those installed directly on windows
ok i have those and prowlarr obviously.. any other glaring missing items or must haves?
dont have those. is that just another edit to the stack like we did for flaresolverr?
Yup, they'd just paste in at the bottom of the compose, just like flaresolverr did.
They'll both have some variables to edit, fwiw. More volumes.
ok so i cant just copy code from you?
Assuming you want to use the same filepath convention as Jellyseerr...
cleanuparr:
image: ghcr.io/cleanuparr/cleanuparr:latest
container_name: cleanuparr
restart: unless-stopped
ports:
- "11011:11011"
volumes:
- /c/Docker/Cleanuparr:/config
environment:
- PORT=11011
- BASE_PATH=
- PUID=1000
- PGID=1000
- UMASK=022
- TZ=America/Chicago
healthcheck: # Health check configuration
test: ["CMD", "curl", "-f", "http://localhost:11011/health"]
interval: 30s # Check every 30 seconds
timeout: 10s # Allow up to 10 seconds for response
start_period: 30s # Wait 30 seconds before first check
retries: 3 # Mark unhealthy after 3 consecutive failures
huntarr:
image: huntarr/huntarr:latest
container_name: huntarr
restart: unless-stopped
ports:
- "9705:9705"
volumes:
- /c/Docker/Huntarr:/config
environment:
- TZ=America/Chicago
You can technically skip that health check part on the cleanuparr service, fwiw.
Those would be available on ports 11011 and 9705 respectively.
And welcome to the magic of Docker Compose. The learning curve is steep, but once you figure it out, installing new things in a stack is quick and easy.
ok, yeah my legs are still wobbling like a baby giraffe but i think im standing lol
Lmao yeah, once you start using it more, it'll get easier. It helps that yaml is easy enough to read. The hard part is just figuring out the various names for what you want to do. But that's why Google exists.
Can i get you a steam gift card or something? lol i definetly owe you for your time and expertise
Worth noting that you may need to go create folders for those volumes? I can't remember if Docker automatically creates them if they don't already exist.
Lol no worries, everyone is a noob at some point. Just gotta commit to bashing your head against it for long enough, and eventually it starts working.
Plus I'm just at home with a sick wife. She's been passed out on the couch this whole time, so I haven't been busy with anything else lmao
lol, i'll try to pay if forward someday. i will try to work on configuring seerr to talk to radarr and sonarr next. i see a SeerrTV on my google tv device, is this a point and click way to use this service?
I'm not sure about GoogleTV. I think it has a native Jellyfin app?
oh.. is there anything i need to do to set that up?
And if you're talking about trying to access Jellyseerr, you may be better off setting it to sync to Plex/Jellyfin watch lists. That way users can just add something to their watchlist, and it automatically appears in their library after it's downloaded. Seerr is nice for allowing you to fine tune how those requests are handled, but actually making the requests can usually be done directly in their watchlists.
yes, i have the jellyfin app on my devices but i dont see anything involving seerr
Individual users should be able to access Seerr at the LAN IP and port number, just like you did. If you want to make it accessible outside of your network, I'd suggest a reverse proxy like SWAG.
maybe someday on outside access, need to get my skis under my feet before i go there
For starters, I'd suggest finishing the setup for Seerr, and then checking out those other services too.
Cleanuparr will automatically purge stuck/stalled downloads and retry them. It will also help catch all of the malicious "movie.mp4.exe" downloads.
And Huntarr will occasionally prod your *arr stack to search for missing content. Because by default, it simply sits and watches RSS feeds for new posts. So if content is old and never gets fresh posts, it won't ever get downloaded. Huntarr fixes that, by occasionally telling your various *arr services to try searching for missing content.
10-4 i'll work on that for now
o7 godspeed
I think i finished setting up seerr, i am able to make some requests but it's still needs some work. Do you know of anyway to setup the application URL? It appears necessary to be able to use SeerrTV so that i can make requests from a tv instead of a browser. Or maybe you know of an easier way but it's not showing up within the jellyfin app.
I'm also having trouble adding more indexers, was under the impression that flaresolverr was going to fix the "blocked by cloudflare protection" message. I tried localhost:8191 to configure it but that just displays a message that it's on and working but i have yet to see any additional signs that it's working.
oh, nvm on the flaresolverr. finally got that.
The URL would just be http://{your server's LAN IP address}:5055
If you want to be able to use it with a proper URL (and away from your local network) that's where a reverse proxy will come into play.
oh, duh. i should have known that, i forgot to add the port. Thanks!! Still not sure if Huntarr and Cleanuparr are configured correctly, i might have to dig into that tomorrow.
Yeah those take some fiddling, but they're a godsend once they're properly running.
I think i actually got those all up and going but i think im still having problems with Flaresolverr, thought i had it a couple times but then it just wouldnt work. Everything in the setup seemed to go off without a hitch. It all worked just the way the instructions said but when i add an indexer, it still says it's blocked by cloudflare protection. Do i need to add something like this to the yml?
import requests
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {
"cmd": "request.get",
"url": "http://www.google.com/",
"maxTimeout": 60000
}
response = requests.post(url, headers=headers, json=data)
print(response.text)
Oh no, Flaresolverr doesn’t actually solve anything except for getting the indexer to stop complaining about the lack of Flaresolverr. Cloudflare started monitoring Flaresolverr so it doesn’t work at solving captchas anymore. It hasn’t worked in at least a few months. It might be working again if they added new solvers, but I haven’t been paying close attention to it.
Usually you can fix it (at least for a while) by visiting the indexer’s website and manually solving a captcha. But lots of indexers still claim to need Flaresolverr (even though it hasn’t worked for a while) so most people run it just to get their indexers to stop complaining.
FWIW, you can also likely run Prowlarr outside of your VPN. If you’re getting constant captcha requests, it could be because of your VPN. The actual sites aren’t illegal to visit, and https means outside watchers can’t see which specific pages on the site you’re visiting. Just be sure your torrent client is on your VPN, because that’s where you run into issues.
oh, ok. That makes more sense, i thought it was still solving captchas. yeah torrent client is bound to the vpn via socks5 and the rest of my traffic isnt running through the vpn.. not sure why im getting captcha prompts all the time..
Yeah i load the website and it seems to skip right past a captcha but then prowlarr keeps getting upset about cloudflare blocking it
i take that back, when i searched it did try to figure out if i was human but prowlarr still wont work after i solved it manually..