Hello, I yet again come, hat in hand, for assistance from those wiser in the ways of the Linux. I’m having a bit of an issue downloading Jellyfin on my ElementaryOS laptop. I’ve tried all the guide on the first few pages of ddg only to receive errors after entering the comman “ sudo apt-get update “. I get ERR:3 https//repo.jellyfin.org/debian circle Release 404 Not found.
If someone can point me the way I’d be most appreciative
Find jellyfin related file in /etc/apt/sources.list.d, edit it as root and try replacing „circle” with „bookworm”. After that
apt update
and retry. If it doesn’t work you can also try replacing it with „noble” but the you might also need to replace debian -> ubuntu, but that’s just my guessIs there a reason you’re not using Docker?
I was so ill prepared I didn’t even know what docker was. I definitely jumped the gun on the media server lol. Eh, blessing in disguise since I’m now getting such info I guess. Thank y’all for being kind to an ignoramus
So, Jellyfin is one of those apps where the Docker documentation is really lacking. I’m gonna give you my
docker-compose.yml
file in case it helps:services: jellyfin: image: jellyfin/jellyfin user: 0:0 restart: 'unless-stopped' ports: - '8096:8096' environment: #- JELLYFIN_CACHE_DIR=/var/cache/jellyfin #- JELLYFIN_CONFIG_DIR=/etc/jellyfin - JELLYFIN_DATA_DIR=/var/lib/jellyfin - JELLYFIN_LOG_DIR=/var/log/jellyfin volumes: - ./config:/config - ./cache:/cache - ./data:/var/lib/jellyfin - ./log:/var/log/jellyfin - /data/jellyfin:/data/jellyfin devices: - /dev/dri
For me
/data/
is my RAID array, which is why my jellyfin data directory is there. Everything else goes in the same directory as the compose file. My system has a graphics card that does transcoding (Arc A380), so I have/dev/dri
under devices.You should learn a lot about Docker Compose, because it will help you tremendously. I use Jellyfin behind an Nginx Proxy Manager reverse proxy. I’d highly recommend it. Here’s my compose file for that:
services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped network_mode: "host" #ports: # - '80:80' # - '81:81' # - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt
Running in “host” mode is important, instead of just forwarding ports, because it lets you forward things to localhost, like pointing
https://media/.[mydomain]/
tohttp://127.0.0.1:8096/
for Jellyfin.Anyway, best of luck to you, and I hope that helps!
Jumping in over your head is how you learn. Just be patient!
Op please don’t ignore the above.
Learn docker once and you’ll be able to install almost anything, rather than having to learn every individual app and how it installs on specific operating systems.
Probably not interested in dealing with endless permission and proxy problems. Me I just run everything as root and password 543211111111111111Aa±
Mine is hunter2.
Your password is what? All I see is *******
Add yourself to the docker group
This is the question and answer
To be completely honest, I installed Jellyfin “bare-metal” and have been using it that way since after attempting to skim the Docker documentation and failing to understand how Docker works.
Docker is a virtualization platform, similar to setting out a Virtual Machine but a lot less resource intense. You need to:
- install docker on your machine
- Start/enable the service (this is usually done automatically on most user friendly distros, and if you’re using one that doesn’t I expect you to know how to do it)
- Add your user to the docker group
That’s it, docker setup done, now you need to write a compose file, i.e. something that tells docker what do you want to run, usually you get a working example on any project website, and linuxserver.io is a great site for them too, for example for Jellyfin can be found here: https://docs.linuxserver.io/images/docker-jellyfin/
Just create a folder, create a file called
compose.yaml
there and put that content in it, now rundocker compose up -d
and congratulations you have a working Jellyfin server.With time you’ll learn what the compose file is doing, for example the ports map ports from the docker to your machine, volumes does the same, so for example the example has
/path/to/jellyfin/library:/config
if instead you write./config:/config
a folder called config will be created on the same folder the compose.yaml file is and inside the docker it will be mounted as/config
which is where Jellyfin will look for configurations. In the same manner you can add/home/myuser/Movies:/Movies
and inside docker you will be able to see the contents of/home/myuser/Movies
when scanning the/Movies
folder.My friend, i would like to introduce you to the wonders of Portainer. Go forth and watch a video on youtube and you’ll get it.
Use Portainer if you don’t want anything to be portable. There are other issues too. Just use Docker Compose.
Seems like you followed some random AI generated guide like this one:
https://www.ipv6.rs/tutorial/Elementary_OS_Latest/Jellyfin/
Whenever you’re downloading a Linux (or any) package, always try to look for the official documentation, like here:
https://jellyfin.org/docs/general/installation/linux#debian--ubuntu-and-derivatives
Where it will tell you to install Jellyfin on a Debian/Ubuntu based system is simply:
curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash
and it also tells you that if you don’t have curl already installed, either install it first or instead run:
wget -O- https://repo.jellyfin.org/install-debuntu.sh | sudo bash
which is their official installer.
If you want to undo what you did before installing (assuming you followed the bad guide linked above), just remove the file it created here first:
/etc/apt/sources
.d/jellyfinWell now I feel really dumb cause that is the exact guide I was using. Oh well, live and learn I guess. Thank you very much for educating me
How the fuck did you deduce that from the post above?
I’m not doubting you at all, you’ve got the Linux aura, but please share so more people can hope to do this
This dude is a wizard cause that was the exact “guide” I was using. I had to look over my shoulder for a sec lol
Because, contrary to what it might seem like, we ALL start out this way using Linux. Everyone makes the same mistakes, so its easy to retrace the logic once you understand what the commands you used to copy-paste are doing. OP you’re clearly just making the switch and want to dive head-first into self-hosting as well as Linux, which will be a ton of fun, just try not to get discouraged as there is a lot to learn. Take it one step at a time, and try to understand the commands as there’s really not that many, and you re-use these in many scenarios.
I see many people recommending Docker, which is great, but imho a little too early to dive in to if you haven’t experimented with Linux at all. Docker is just a container of Linux inside of Linux, so you’ll still need to use the command line, and it has its own set of tools. Just my two cents. Somebody else posted but this was the video that also made Linux ‘click’ for me:
https://www.youtube.com/watch?v=tc4ROCJYbm0&t=296
Don’t be afraid to break things and start over. Have fun :)
Thanks so much for the kind words on top of the invaluable info you’ve provided. You are a true gentle-person and a scholar
He had added a Jellyfin repo to his apt
sources
file for some reason, which is weird and likely not the right way to do it these days. But it might have been in the past, so it could be OP was following some obsolete procedure (or one AI-hallucinated from an obsolete procedure).After realizing that OP was completely going about it the wrong way, the guy you replied to just looked up the correct way and relayed that to him.
See also: https://wiki.debian.org/DontBreakDebian
Grue, I only really see you when it has to do with Linux.
Come hang out more with the degens, you’d be appreciated
Not OP, but it was very simple if you have already seen that error.
First of all, there is one single easily parsable error.
https://repo.jellyfin.org/debian produced a 404 error, thus the URL is invalid.
Let’s ignore why it’s invalid for a second.
This error happens after
apt update
, thus we can deduce the following:- It’s supposed to be an apt repository URL (To experienced users, it effectively looks like a repository URL)
- This repository URL does not work
- As in 99% of cases, this URL is likely located in a configuration file in the standard location,
/etc/apt/sources.list.d/
Back to why it’s invalid, maybe it used to be valid in the past, or there is a temporary server error, this can be verified with the official documentation.
If the documentation does not mention this repository URL, then it’s a mistake to use it.
This is a good moment to google this URL and find out why/which guide tells you to use it, and to analyze which steps they made you take.
From there, reverse those steps.
Even if you hadn’t found this guide, you can be sure that by looking into
/etc/apt/sources
you would’ve found that file containing that URL, simply removing the file or URL would’ve removed the error. .dLastly, you look for either the official documentation, or a more reliable guide.
This
This was cool, thank you for doing it.
Sometimes it’s hard to switch gears and understand this OS/language, but you did an excellent job of bridging that gap. Thank you.
I just wanted to add a small follow up comment because I remember being young and copy-pasting commands into Linux and eventually getting really frustrated. Therefore, he’s a (brief) explanation of the commands:
curl
is just an open source tool for making Web requests from the command line. It’s a great tool to have in general.https://repo.jellyfin /install-debuntu.sh
the URL of a shell script from repo.jellyfin.org (Jellyfin’s official website)
What is a shell script? It’s a script that runs a whole bunch of commands by itself, so you don’t have to copy-paste them from the internet. Basically the official Jellyfin people in this case made a file with all of the commands the computer needs to run to install the package. This is great because it means the people who made Jellyfin tested these commands and they’re responsible for keeping it up to date if anything changes.
| bash
The ‘pipe’ or|
symbol in Linux is a cool Unix philosophy of ‘connecting’ programs together. You run one program, and tell it to pass the results to another program. In this case, you’re tellingcurl
to download the script athttps://repo.jellyfin /install-debuntu.sh
and then passing that file tobash
(which is the shell program in the terminal that runs commands) and to run it assudo
or ‘super-user’.Hope this was helpful. The last thing you should know is the command you probably copy-pasted before made you add a source to the
/etc/apt/sources
files, which are basically just a list of sources forapt
, the package manager to download from, and since the command was wrong or outdated,apt
is complaining that the Jellyfin source was not found.The one thing I’d add is to say don’t run a shell script from the Internet unless you’re damn sure that (a) you trust the entity providing it, and (b) you’re downloading via https and haven’t typo’d the URL.
Agreed, but I didn’t want to overwhelm the guy with too much info :P The official guide even recommends checking the cryptographic signature of the script and reading its contents first. I’m sure like all of us they’ll nuke their system several times and before long will be writing their own shell scripts.
GOOD FOLLOW UP!!
I was about to shit a brick that you went from “go to the official trusted source” to “just trust me: curl [x] | sudo bash”
You can do some wild shit with pipes:
head -10 /var/log/syslog
- Look at the first ten lines of one of your log files, with timestamps on the frontcat /var/log/syslog | cut -d' ' -f1
- Splits the lines by a space delimiter (the-d' '
part), and grabs the first “field” (the one with the timestamp, using-f1
)cat /var/log/syslog | cut -d' ' -f1 | cut -dT -f1
- Splits the timestamp at the “T”, and leaves only the datecat /var/log/syslog | cut -d' ' -f1 | cut -dT -f1 | sort | uniq -c
- Gives you a count of each dategrep systemd /var/log/syslog | cut -d' ' -f1 | cut -dT -f1 | sort | uniq -c
- For only the lines with ‘systemd’ on it, gives you a count of each date
The standard GNU toolkit has a ton of utilities like that for doing stuff with text files.
I find it unbelievably cool that the guys who came up with this got it so right the first time, that its still incredibly powerful today.
At work whenever we need to build little command line tools, my team is always vexxed by my guideline to have the meat+potatoes in a script that reads well-formatted data off stdin , and outputs well formatted-data to stout. They always wanna have some stupid interactive prompts and saving to files baked right in.
This is exactly why. You wanna save to a file?? > file
You want to read from a file? cat |
You want to save to a file but swap commas for colons? Sed.
You get so much FOR FREE w/ the GNU toolkit, even for what you build yourself, by thinking in streams.
When trying to explain that concept, I like showing people this: https://www.youtube.com/watch?v=tc4ROCJYbm0&t=296
Wow, this was a treat to watch. Never would have imagined Brian Kernighan would be explaining shell pipeline to me in such a cosy setting
Me, a simpleton,
“Wut dat mean”
It seems to have picked up “circle” as the distro. You’ll need to replace that with the matching Ubuntu or Debian version of what this version of ElementaryOS is.
Find out by running
lsb_release -c
in the terminal.I entered that and got a result of
No LSB modules are available Codename: circe
Elementary 8 circe is based on Ubuntu 24.04 LTS, which is based in debian 13, which has a codename “trixie”.
Assuming this information is correct, OP wants to check a file called similarly to
jellyfin
in/etc/apt/sources.d/
and replace the wordcirce
withnoble
(for the Ubuntu 24.04 codename) ortrixie
(if noble gives the same error as circe). Keep in mind you need sudo/root privileges to modify this file.
I’m sorry I’m a super noob but I think I see where I have to fix it. I just don’t know what version of Ubuntu is Elementary 8.0 is. I found a guide that says Ubuntu 20.04(focal) is 6.1(jolnir)
Are you trying to install jellyfin server or client?
Jellyfin server
Install docker, grab the official docker compose file, then
docker compose up -d
.Details: Look up how to install docker on elementary (I guess it’s
sudo apt install docker
), than you don’t have to care about the distro after that, docker works the same way everywhere. You can find countless tutorials on this, and they should workThanks, I’ve been seeing that rec a lot recently. I’ll give that a try
Once you know how to use docker/containerization it’ll be the only way you want to deploy applications. Most popular applications will also have good guides on how to setup/config the container, but sometimes you’ll need to read up on docker and Linux to figure things out.
Containers are often simple enough you don’t even need a guide. I don’t trust myself to configure anything on the host system correctly, and using Docker containers completely solves concerns of conflicting dependencies during updates. I personally avoid hosting anything that isn’t available with Docker anymore. It’s just too much work for a worse result.
Yeah I really need to do more reading. My lack of knowledge on Linux is my main issue I think. Just jumped the gun to Linux like a month ago, played around in elementary for a bit and was like “now is the time to set up my media server”. Prob needed more time, reading, and texting but eh.
I appreciate the advice I’ve been getting here big time!
You don’t need too much, it should be fairly straightforward, read my other reply in this thread if you want more details, but long story short it’s just install docker, add your user, copy a file, edit it to suit your needs and run a command.
Some of the commands I use a lot for debugging containers, in case you go down that route:
docker run --rm -it --entrypoint bash <image_name>
- This command let’s you enter a docker image with bash so you can test commands and treat it like a temporary VM. Great way to see how the image is setup
docker exec -it <container_name>
- This let’s you enter a running container with bash. A great way to inspect why something might not be working or check mounted volumes, etc.
Also
docker logs -f CONTAINERNAME
to see the log output for non-interactive containers.
Yeah using docker is the most reliable way to do it