this post was submitted on 16 Jun 2025
156 points (94.3% liked)

Linux

55962 readers
780 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 6 years ago
MODERATORS
 

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

top 50 comments
sorted by: hot top controversial new old
[–] nom_nom@lemmy.ml 58 points 2 weeks ago (3 children)

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.list.d/jellyfin.list

[–] nom_nom@lemmy.ml 47 points 2 weeks ago (2 children)

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:

  1. curl is just an open source tool for making Web requests from the command line. It's a great tool to have in general.
  2. https://repo.jellyfin.org/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 telling curl to download the script at https://repo.jellyfin.org/install-debuntu.sh and then passing that file to bash (which is the shell program in the terminal that runs commands) and to run it as sudo 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 for apt, the package manager to download from, and since the command was wrong or outdated, apt is complaining that the Jellyfin source was not found.

[–] Windex007@lemmy.world 18 points 2 weeks ago (1 children)

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"

https://youtu.be/dT7X2IxBDjc

[–] p03locke@lemmy.dbzer0.com 4 points 2 weeks ago (3 children)

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 front
  • cat /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 date
  • cat /var/log/syslog | cut -d' ' -f1 | cut -dT -f1 | sort | uniq -c - Gives you a count of each date
  • grep 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.

[–] Windex007@lemmy.world 8 points 2 weeks ago (1 children)

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.

[–] grue@lemmy.world 6 points 2 weeks ago* (last edited 2 weeks ago) (1 children)

When trying to explain that concept, I like showing people this: https://www.youtube.com/watch?v=tc4ROCJYbm0&t=296

[–] whimsy@lemmy.zip 3 points 2 weeks ago

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

[–] nom_nom@lemmy.ml 3 points 2 weeks ago

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.

[–] whostosay@lemmy.world 2 points 2 weeks ago

Me, a simpleton,

"Wut dat mean"

[–] grue@lemmy.world 6 points 2 weeks ago (1 children)

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.

load more comments (1 replies)
[–] whostosay@lemmy.world 11 points 2 weeks ago (3 children)

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

[–] grue@lemmy.world 10 points 2 weeks ago* (last edited 2 weeks ago) (1 children)

He had added a Jellyfin repo to his apt sources.list 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

[–] whostosay@lemmy.world 2 points 2 weeks ago

Grue, I only really see you when it has to do with Linux.

Come hang out more with the degens, you'd be appreciated

[–] sgh@lemmy.ml 5 points 2 weeks ago (2 children)

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.list.d you would've found that file containing that URL, simply removing the file or URL would've removed the error.

Lastly, you look for either the official documentation, or a more reliable guide.

[–] whostosay@lemmy.world 3 points 2 weeks ago

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.

load more comments (1 replies)
[–] Kelp@lemmy.world 5 points 2 weeks ago (1 children)

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

[–] nom_nom@lemmy.ml 7 points 2 weeks ago (1 children)

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 :)

[–] Kelp@lemmy.world 3 points 2 weeks ago (1 children)

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

[–] whostosay@lemmy.world 4 points 2 weeks ago* (last edited 2 weeks ago)

Seriously an absolute witch.

@nom_nom@lemmy.ml

If you're not being paid an insane amount of money for your insight, you are fucking up bud. People would pay crazy money for that type of deduction.

We are being paid the most though through secondhand knowledge, keep being you, and OP you also keep being you, I love this whole post.

[–] Kelp@lemmy.world 4 points 2 weeks ago

Well 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

[–] hperrin@lemmy.ca 25 points 2 weeks ago (4 children)

Is there a reason you’re not using Docker?

[–] scottrepreneur@lemmy.world 12 points 2 weeks ago (1 children)

This is the question and answer

[–] monovergent@lemmy.ml 10 points 2 weeks ago (4 children)

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.

[–] Nibodhika@lemmy.world 4 points 2 weeks ago

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 run docker 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.

load more comments (3 replies)
[–] Kelp@lemmy.world 11 points 2 weeks ago (2 children)

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

[–] rutrum@programming.dev 11 points 2 weeks ago

Jumping in over your head is how you learn. Just be patient!

[–] hperrin@lemmy.ca 3 points 2 weeks ago* (last edited 2 weeks ago)

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]/ to http://127.0.0.1:8096/ for Jellyfin.

Anyway, best of luck to you, and I hope that helps!

[–] Kushan@lemmy.world 10 points 2 weeks ago

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.

[–] interdimensionalmeme@lemmy.ml 5 points 2 weeks ago* (last edited 2 weeks ago) (2 children)

Probably not interested in dealing with endless permission and proxy problems. Me I just run everything as root and password 543211111111111111Aa+-

[–] AngryPancake@sh.itjust.works 3 points 2 weeks ago

Add yourself to the docker group

[–] frosty@pawb.social 2 points 2 weeks ago (1 children)
[–] mynamewastakenagain@lemmy.ml 2 points 2 weeks ago

Your password is what? All I see is *******

[–] Max_P@lemmy.max-p.me 6 points 2 weeks ago (2 children)

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.

[–] Lemmchen@feddit.org 2 points 2 weeks ago (1 children)

Find out by running lsb_release -c in the terminal.

[–] Kelp@lemmy.world 1 points 2 weeks ago (1 children)

I entered that and got a result of

No LSB modules are available Codename: circe

[–] infeeeee@lemmy.zip 3 points 2 weeks ago* (last edited 2 weeks ago) (1 children)

Elementary 8 circe is based on Ubuntu 24.04 LTS, which is based in debian 13, which has a codename "trixie".

load more comments (1 replies)
load more comments (1 replies)
[–] azvasKvklenko@sh.itjust.works 4 points 2 weeks ago* (last edited 2 weeks ago)

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 guess

[–] infeeeee@lemmy.zip 2 points 2 weeks ago (1 children)

Are you trying to install jellyfin server or client?

[–] Kelp@lemmy.world 2 points 2 weeks ago (1 children)
[–] infeeeee@lemmy.zip 9 points 2 weeks ago* (last edited 2 weeks ago) (1 children)

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 work

[–] Kelp@lemmy.world 3 points 2 weeks ago (2 children)

Thanks, I’ve been seeing that rec a lot recently. I’ll give that a try

[–] jacksilver@lemmy.world 9 points 2 weeks ago (2 children)

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.

[–] Kelp@lemmy.world 3 points 2 weeks ago (2 children)

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!

[–] jacksilver@lemmy.world 2 points 2 weeks ago (1 children)

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.
[–] Lemmchen@feddit.org 2 points 2 weeks ago* (last edited 2 weeks ago)

Also docker logs -f CONTAINERNAME to see the log output for non-interactive containers.

load more comments (1 replies)
[–] COASTER1921@lemmy.ml 3 points 2 weeks ago

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.

[–] phantomwise@lemmy.ml 5 points 2 weeks ago (1 children)

Yeah using docker is the most reliable way to do it

[–] Ephemeral@feddit.org 1 points 1 week ago* (last edited 1 week ago)

I liked it until my docker desktop randomly stopped working. Made me uninstall docker and now I use podman instead. But yeah, pretty much the same.

load more comments
view more: next ›