161
submitted 1 month ago by Kelp@lemmy.world to c/linux@lemmy.ml

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 41 comments
sorted by: hot top controversial new old
[-] nom_nom@lemmy.ml 61 points 1 month ago

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 1 month ago

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 1 month ago

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 1 month ago

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 7 points 1 month ago

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 1 month ago* (last edited 1 month ago)

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 1 month 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 1 month 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.

[-] grue@lemmy.world 6 points 1 month ago

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.

[-] nom_nom@lemmy.ml 1 points 1 month ago

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.

[-] Kelp@lemmy.world 4 points 1 month 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 27 points 1 month ago

Is there a reason you’re not using Docker?

[-] scottrepreneur@lemmy.world 13 points 1 month ago

This is the question and answer

[-] monovergent@lemmy.ml 11 points 1 month ago

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 1 month 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.

[-] goldenquetzal@lemmy.world 3 points 1 month ago

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.

[-] hperrin@lemmy.ca 5 points 1 month ago

Use Portainer if you don’t want anything to be portable. There are other issues too. Just use Docker Compose.

[-] goldenquetzal@lemmy.world 2 points 1 month ago

Benefit of portainer is that it teaches people new to this how it works and makes it accessible. Then they can learn other tools and grow from there. Immediately throwing people into CLI can scare them off or be intimidating.

[-] Kelp@lemmy.world 12 points 1 month ago

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 12 points 1 month ago

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

[-] hperrin@lemmy.ca 3 points 1 month ago* (last edited 1 month 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 1 month 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.

[-] Max_P@lemmy.max-p.me 7 points 1 month ago

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 3 points 1 month ago

Find out by running lsb_release -c in the terminal.

[-] Kelp@lemmy.world 1 points 1 month ago

I entered that and got a result of

No LSB modules are available Codename: circe

[-] infeeeee@lemmy.zip 3 points 1 month ago* (last edited 1 month ago)

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

[-] Lemmchen@feddit.org 1 points 1 month ago* (last edited 1 month ago)

Assuming this information is correct, OP wants to check a file called similarly to jellyfin.list in /etc/apt/sources.d/ and replace the word circe with noble (for the Ubuntu 24.04 codename) or trixie (if noble gives the same error as circe). Keep in mind you need sudo/root privileges to modify this file.

[-] Kelp@lemmy.world 1 points 1 month ago

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)

[-] azvasKvklenko@sh.itjust.works 4 points 1 month ago* (last edited 1 month 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 1 month ago

Are you trying to install jellyfin server or client?

[-] Kelp@lemmy.world 2 points 1 month ago
[-] infeeeee@lemmy.zip 10 points 1 month ago* (last edited 1 month ago)

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 1 month ago

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

[-] jacksilver@lemmy.world 9 points 1 month ago

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 1 month ago

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 1 month ago

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 1 month ago* (last edited 1 month ago)

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

[-] Nibodhika@lemmy.world 1 points 1 month ago

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.

[-] COASTER1921@lemmy.ml 3 points 1 month 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 1 month ago

Yeah using docker is the most reliable way to do it

[-] Ephemeral@feddit.org 1 points 1 month ago* (last edited 1 month 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.

this post was submitted on 16 Jun 2025
161 points (100.0% liked)

Linux

56953 readers
417 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