All right, here we go, boys. It is time for episode 116.
100?
Oh, my God, what's wrong with me?
Oh, God.
Going back in time. Look how youthful we are.
Hello, friends, and welcome back to your weekly Linux talk show. My name is Chris.
My name is Wes.
And my name is Brett.
Hello, gentlemen. Coming up on the show today, we're getting ready for the TUI challenge by locking in to a disposable server mini challenge this week. We'll tell you all about that. Plus, because we love doing this for some reason, we're going to do a live update of our extremely precious production-grade NextCloud server.
We didn't tell Drew about this beforehand. He's just finding out if it worked and he got the files.
Then we're going to round the show out with some great boosts, some picks, and a lot more. So before I go any further, let's say good morning to our friends at Tailscale. Tailscale.com slash unplugged. Tailscale is the easiest way to connect your devices and services to each other, wherever they are, whatever they might be. I'm talking VPSs across multiple providers, your mobile device, your machines on your LAN.
It is modern networking that connects devices directly to each other over a mesh network protected by...
Wow.
Nice one. I mean, we're talking really fast, secure remote access that you can get up and running in just a few minutes. It is a intuitive, programmable way to manage a private network. It kind of fills in the gaps that the Internet never quite delivered. Back in the day when I got my first public IP on a land that I managed, every single node was on the public Internet.
And that's how you just move files between each other. That's crazy today, but on a tailscale mesh network, which we call a tailnet, you can have all of your nodes across complex networks with ACLs that are defined by the admin console that tie into your existing authentication infrastructure. When you go to tailscale.com slash unplugged, you can try it for free on 100 devices for three users, no credit card required.
That's the plan I'm on for my personal account, and I've used it for a few years now, and I have no inbound ports on any of my firewalls, and I realized we need to do this at Jupyter Broadcasting, too. Thousands of other companies, thousands of listeners are using Tailscale. Go try it out for yourself or your business. Just start at tailscale.com slash unplugged. Well, the Terminal User Interface Challenge kicks off next week in episode 618,
which will be coming out on June 8th. And we'd love to have you join us. I have in the show notes linked the TUI Challenge rules, which are the final edition after incorporating everyone's feedback. The idea is for this to run seven days. The objective is to complete some common computing tasks using only terminal applications. So no GUI apps like Firefox, LibreOffice, Thunderbird, etc., other than your terminal emulator, of course.
So you can use your terminal emulator, Wes. We have a point system for completing the challenges. There's also some bonus points in there for some creative solutions. We also have outlined how you should share your progress. And I've created a scoreboard so people can have a little scorecard.
Ooh, okay. So it's like the rules digested into a little table? What do we got here?
Yeah. So you can track your progress as you complete the challenge. And I don't know, I don't know my GitHub's, but I think people could take this and they could post it on their GitHub's and then they could link it to us either in a boost or on the contact form. And Bob's your uncle, we could see their score. So there's a total of 170 points available. And so we're going to total up how we all did and see who comes out on top. I think it's going to be.
I'm getting nervous because I know you've been doing homework and a bunch of listeners have like been building apps and stuff to get ahead on this.
There are some easy low hanging fruit points. So like easy stuff is like 10 points. Stuff that's a little bit harder is 20 points. And then things that are a little more complicated are worth 30 points. So you could knock out a few things and get some big points or you could do some of the easy stuff. And all the challenge tasks, there's a day one task, a day two, all the way to day seven are all outlined in the challenge rules, which we will have linked in the show notes.
and we will officially begin at the start of next episode. So I guess figure out your web browser solution.
Yeah, we're going to need to be able to look at the dog.
Yeah. So 618 is when it kicks off Sunday, June 8th. We will stream that episode live over at jblive.tv and jblive.fm. If you want to have fun with us and join us live or just listen on the download and participate and let us know how you did, or I suppose just kick back and enjoy the ride. It should be a fun seven days. Now we're going to do something that you should never do, and we're going to live update our production Nextcloud instance on the air.
And this is the instance we use to upload this very show to Editor Drew and all of our productions. We use it for all kinds of things, but we like to run these things in production and then report back to you how they've actually done. And part of that is updating them live on the show. And if it blows up, we have to own it live on the show. How are you feeling, Wes Payne?
About as good as one can i've at least got the docker compose file updated and pre-pulled the images so now we just gotta you know down and up.
All right can we get a little reminder of how old this box is.
Surprisingly not that old um i don't remember the last time we updated it but apparently not that far in the past yeah we're like a version.
And a half behind or something.
Yeah about that not too bad for us actually.
All right let's give it a go, now best case scenario pulls down everything just fine starts a new container and there isn't anything you have to do like in the past where you've had to enter the container and do some osc commands or ocs.
I do sometimes do that anyway you know um but you're right hopefully there's nothing and like it just automatically applies any needed database migrations yeah let's take a look at the logs yeah starting up okay uh we're updating a bunch of apps so that's probably good okay yeah that's.
Always part of this dude.
Files pdf viewer to 4.0.
I'm gonna get a tab ready so when you tell me to check it it'll be ready uh-oh.
Starting integrity check.
Okay integrity check is good, still going uh-oh update.
Successful turning off maintenance mode resetting log level initialization finished. Notice, ready to handle connections.
Let's go find out then. Okay.
I'm seeing activity in the logs.
Okay.
Get indexed on PHP.
That's me. I'm going to see if I can log in. Are you ready, Wes Bay? I am. This is the final test. This would be really great. This would probably be one of our smoothest ever, I think.
Except you probably have to log into your password manager several times.
Yep. Okay, here I go. Okay, here I go.
I'm seeing 200.
Hey, there it is, Wes! You got it!
Now, the real test is can you actually upload a file, but I suppose that can wait till the end of the show.
Hey, if they're hearing this episode, I think it means it worked. That is the smoothest NextCloud upgrade we've done yet. Live right here on the air. Well done. That's gotten a lot smoother. That used to be a process where you'd have to go in and then manually do some of those upgrades.
Yeah.
It's nice to see that smooth out. So that's on theme with this week's episode. Don't necessarily do as we do. And we, with that disclosed, wanted to try out a little mini challenge this episode. While we were recording the last episode of Self-Hosted, episode 150, we were remarking in the episode about a common problem. Some of our favorite self-hosted apps are just not that easy to share with friends and family. You know, Audio Bookshelf, I think, is a good example of this.
Mealy is another example of this. LubeLogger is another example of this. And the one that we were talking about in self-hosted, especially when you compare it to the alternative, is Jellyfin. Plex really solves this problem. They make it easy to share media with friends and family if everybody has a Plex account and you're all in. But if you're trying to live the jellyfin lifestyle, but maybe you want to watch a season of TV with your friends, this is hard.
Either you have to come up with a VPN or you have to come up with some sort of VPS router that basically is just putting your jellyfin server on the internet.
Or, you know, holes in your firewall.
Yeah.
Or a shared, maybe for like your close friends or family, you can have them on your tail net or do like a, you know, tail net share thing. But that gets difficult quickly. And it's one more thing people have to use. They can't just like pull up the jellyfin client in a hotel. well, you're going to have to explain how to do all the stuff that is sometimes even tricky for us.
And maybe they want to watch on their TV and they can't install a VPN client.
Right.
So this is where we started thinking about the concept of a disposable server, which is an idea that I think all three of us have played around with a little bit. Brent, I know that you've kind of done the disposable server thing on and off as different projects have come up.
Yeah, there's one that I created to just basically create an on-demand VPN that I connect to in various countries. So the last time I went to Germany, I think I spun one up on a VPS in Germany using NixOS Infect, I think it was, with a nice little NixOS configuration that I could just pop up in whichever country I happen to be in. So that's a nice little ephemeral VPN endpoint that I could create. I think for that I used just a tailscale exit node, but I don't need it to be
running all the time. So I could just boot it up when I need it and then tear it down after that.
Yeah I've definitely done the Jellyfin on a quick VPS sync some files over for friends especially because for a long time I was running Jellyfin on like an older box where you know with my devices for the most part I didn't need to be transcoding dynamically like my stuff worked and it could really support at least one transcode but if I was trying to like watch with a friend or like really share it just wasn't going to work but if we I was specifically doing that like especially
when maybe some Star Trek was coming out or something yeah just sync a couple seasons over stand up at Jellyfin share it with them and tear it down when we're done.
And that's almost a perfect solution. But it has, I think, one major flaw, and that is every time you did this, you had to upload the media.
Yeah.
So we were thinking, wouldn't it be pretty neat if you could have a disposable server, like, say, a Jellyfin instance, maybe to watch a season of a show with a friend, and once you're done, you could totally destroy the server, but the storage would be persistent. So you could quickly start up this ready-to-go self-hosted app, and you would have it auto-connect to remote storage, and then you would just finish the final bits of setup, and it'd be good to go.
But the trick is, is how do you do that? And so we made an attempt. We set out to solve this in our own ways. Chris, myself, using, yeah, that's me, using a new Podman workflow that's still new to me. I was taking advantage of Podman Desktop and solving this. and then Wes took more of a Nix workflow route to see how he could solve this.
So what we thought we would do is we'd present our setups to Brent and he could score them on a few areas like a point for cleverness of the setup, a point for easy for others to replicate like those of you in the audience, a point of everything needed to work is included and then five points if it actually works, which Brent can be the determinant of.
So that's what we thought with the disposable server and ideally you could apply this to all kinds of self-hosted apps like I mentioned, audio bookshelf and others. And if nothing else, even if this isn't something you'd necessarily want to do, it's a really fun way to explore some of the really powerful technologies built into Linux.
1password.com slash unplugged. Take the first step to better security for your team by securing credentials and protecting every application, even unmanaged shadow IT. You can learn more at 1password.com slash unplugged. That's 1password.com slash unplugged, and it's all lowercase. If you're a security or IT professional, you've got a mountain of assets to protect. Devices, identities, and applications. It's a lot, and it can create a mountain of security risk too.
Fortunately, you can conquer that mountain of security risk with 1Password extended access management. You know, over half of IT pros say that securing SaaS apps is their biggest challenge. Well, with the growing problem of SaaS sprawl and shadow IT, it's not hard to see why, really. So thankfully, Trileca by 1Password can discover and secure access to all your apps, managed or not. Trileca by 1Password inventories every app in use at your company.
Then, pre-populated app profiles assess the SaaS risks, letting you manage, access, optimize, spend, and enforce security best practices across every app your employees use. Treleka by 1Password provides a complete solution for SaaS access governance, and it's just one of the ways extended access management helps teams strengthen compliance and security. My friends and family have been using 1Password for years. I couldn't imagine their online life without it.
And now 1Password's award-winning password manager that's trusted by millions of users from IBM to Slack, now they're securing more than just passwords with 1Password Extended Access Management. So take the first step to better security for your team by securing credentials and protecting every application, even unmanaged shadow IT. You need to learn more by going to 1Password.com slash unplugged. That supports the show. It's all lowercase. It's 1Password.com slash unplugged.
Well, Chris, as we heard in last episode, you're now living the cloud native lifestyle. So I'm curious if you took that route to build your little disposable server.
You know, I did. I'm embracing this. And this actually gave me a vast, complex, somewhat confusing world of opportunity and options. So I could start with a universal UBI image of RHEL 10, which they have micro, minimal, and a base image.
that'd be pretty neat and i saw i kind of started there because i thought hmm maybe i could build this on a long-term base so then you know i wouldn't really have to mess with this for years, and this would be great for this style thing so i could have one for audio bookshelf one for jellyfin and you know but things like jellyfin need modern ffmpeg amongst many other things so i could sit there and kind of ram it in to rel but i scratched that idea because what i saw was
there's a plethora of images based on Fedora and often just straight up upstream Fedora 42. This is nice because you get in there, you got DNF, so you can actually install stuff. The rel images didn't have DNF. So that meant super easy to get FFM Peg and friends going, easy to get our clone going, which I'll talk about more.
And you are a Fedora fan.
But... Not super great for getting Jellyfin going. There's just a lot of repositories and stuff you got to add. Not everything was available for Fedora 42 yet. So I realized I need to think about this from more of a cloud native workflow standpoint and start with Jellyfin. Why am I trying to ram Jellyfin into an image when I could just start with the Jellyfin image with everything working? So I went and got the upstream Jellyfin image, which is based on Debian 10 Bookworm.
No big deal. in there and I'm app getting like a pro. So I got everything I needed installed. Had to add a couple of repos to get all the FFmpeg stuff, but no bigs. Everything's packaged for Bookworm. So what I ended up with is the Jellyfin container and then I abused that to include Rclone and Tailscale, which I'm not utilizing at the moment, but I thought, boy, I could probably definitely use this with Tailscale at some point.
Absolutely.
I installed it in there. And then what I did is I set up Rclone to connect to our Nextcloud server that we just updated. and have a couple of video folders in my home folder that have just the season of TV I want to watch with my friends. And I have our clone connecting over web dev. And, you know, our clone has a mode specifically for next cloud. And that goes in there and that creates a mount called slash mount slash horse.
And in there, when you go into the slash horse, you see the TV directory and then you have all the Star Trek season one for Star Trek, the original series, of course. however and maybe i'll lose some points for this i used podman desktop to set this up which was really great it really let me explore this quick and iterate through ideas really fast so i like that about it.
And then what i mean what was that like it were you sort of hacking on the container file there and like rebuilding with podman desktop.
Yeah so and so what's really you know just one step easier is when you launch a container inside Podman desktop it immediately opens up a shell inside the container. Which, you know, no big deal, but it's handy. It's really, so you can just immediately get to work and, you know, you can copy and paste between your web browser and the Podman desktop terminal session. And so it's, it really feels like a first class terminal experience inside the
container. So you're just getting immediately to work and you're building just like you would any Linux system that you know in building out inside this container. And then Podman desktop just gives you a export button and it tars up the whole thing for you. But if I could have one verbal feature request for Podman Desktop, it would be to tweak some of the container settings after you've created the container.
And one of the things that I couldn't change after I created it was including new devices and changing some of the environmental options. Those are sort of baked in once you've created the container. You have an option at creation to add that stuff. But like a dummy, I didn't think about the fact that this isn't a complete Linux environment. And so I needed to have Fuse support for our clone, not only inside the container, but I needed Fuse support on the host OS.
Well, this was a brand new Bluefin setup that I just did on the road last week. And so I didn't really have much loaded on this. So first I had to get Fuse working on the host system. And then I realized I couldn't go back and proactively modify these settings in the Podman container. So I couldn't pass through the fuse device like I needed to, so that way the container environment could use fuse. So I exported the thing out, and I did the right thing, and I sent it over to Wes.
And I said, Wes, take a look at this. Tell me what you think.
And unfortunately, I could not access the file.
Oh, really?
Yeah.
Ah, okay, all right, okay. So I didn't get the fuse mount working properly, but I think if I had set it up properly in the first place and passed that device through.
I added it at runtime, I would think.
Well, also, I think I could edit the YAML that actually sets up the whole thing.
Oh, yeah, and then rebuild it if you need to.
And I opened that up. God bless. But Podman Desktop, it's like using front page for YAML. Dude, there's like every option that needs or could be defined is defined in this file. And I opened this thing up, and I'm like, oh, maybe I'll just worry about this later. And I closed it. And I was like, this is too much scope creep for what I'm trying to do.
So I think we have some extra work to do after the show, because I want to see this now. I want to get it working.
Yeah, yeah. So the idea, I thought, was pretty sound. And that is I've created my own version of a jellyfin container that I can throw on any VPS, and it would start... It would mount the NextCloud file storage. It would start Jellyfin. Then I would go to the URL, which I'd be so lazy I wouldn't even register a domain for. I would just raw the IP right into the browser. And then I would just say, you know, scan the files because it would be a different set of files from time to time.
And I have a Jellyfin server. And then we would watch the season one of Star Trek, the original series, like we should. And then I would just blow that container away. And next time I want to do it, those files are still there. so I could spin up another one and I don't have to re-upload files or I can change them, you know, at my own cadence, at my own will. And then the next time I spin up this disposable jellyfin server, I'm good to go.
The storage remains persistent and I could do the same thing with a selection of audio books and all of that. So I love the idea. I just didn't get it quite across the finish line because I was also learning Podman desktop at the same time.
Yeah, and you know, the Fuse stuff does add a device sharing and having to pass through the right stuff with containers can be. Something that takes a few tweaks to get right.
So Judge Brent, I'd like to know what you think of the cleverness of my setup. That's one of the scoring here.
I'm going to give you a point for cleverness. I think you decided on a path. You went for it. And I think it's quite a nice little solution if you can get it working.
Can I argue the reproducibility for others? You could do this on your own. All you need is Podman Desktop and then get the Jellyfin container and then pop in there and app to install this stuff and configure it for your own storage. So it's stuff you would just do on your own box, but you're doing it inside a container.
There's a bit of configuration for others to be able to use this, but it doesn't sound too daunting.
Right, and for others that would be watching Jellyfin, they would just go to the URL and it would just work for them. So for like burden on the viewer, they don't have to install any kind of VPN. It would work on a set-top box. It would work on a phone. It would work on the web browser because you're just running on a VPS for a small period of time.
And you're just handing us an IP or something like that.
Okay, so everything to work is included, but it doesn't all work. So everything that needs to work is included.
Well, is it? Because you said, you know, Fuse is missing currently to make it all work.
Well, Fuse is installed. You just, when you set up the container, you have to pass through the Fuse device from your host.
That doesn't sound like everything.
Well, that's just how containers work. I can't solve for that.
Oh, fine. Okay. Are you convincing me here? I think you might be.
I don't know. What do you think, Wes? I think, is everything needed? Feels like a stretch. Is everything included to make it work?
Yeah, maybe a readme for how to launch the thing with the fuse attached. But yeah, I think so.
You think?
In principle.
So the readme is not included? That's the problem?
Well, like, not yet. Not yet. I think all of this is going to depend on a fuse device, right?
Fair.
All these, because you have to have fuse to do, like, the amount of the cloud storage.
If you're doing the, yeah, tricking jellyfin into thinking it's just more media.
So I think it's just a dependency. So that means three points for me, but I don't get the five points because it doesn't work.
Does any portion of it work? Cause I'm willing to give like partial points.
Oh yeah. I mean, jellyfin works.
Okay.
Everything works except for the fuse mount.
Which is critical.
Yeah.
I'll give you two points on this one.
All right. So I get a, I get a total of five points.
Total of five. That's what you, well, you know, you could, you could improve here. But for now, I wish I could have got.
I'll take my five points. Okay, Wes, tell us about your setup. How did you solve this problem?
Well, it's pretty similar to yours, really. It's just changing out the orchestration, tying it together layer to use NixOS and NixOS modules.
Okay.
So, you know, to use it, you do need to be running NixOS. It needs that as a base because, you know, it'd be packaged up sort of as like a flake you could include and then have some module options that you could set. For my local testing of this, I just had NixOS spin up a min.io server, so it could be an S3 backend. I liked what you were doing with WebDev and NextCloud. That's clever, but I thought, you know, there might be S3 might be another way.
You could just sort of have this hanging around if you already have that kind of storage. So first things first, it's NixOS, so it's going to be a lot of SystemD, right?
SystemD sort of plays the role of what Podman or Docker and especially Compose does to, like, get all the things going do it in the right order tie them together so they can talk to each other, so first things first you know systemd starts up r clone which uses r clone mount to talk to minio or whatever s3 server so you could just give it whatever parameters you want in the config to pass through like what's your endpoint and,
You're going to also have to pass through credentials, which right now, they're just kind of hackily in there. I'd probably migrate that to use a file that gets loaded so that's a little more properly done. And so then that establishes a mounted file that then, in a second systemd service that depends on the first one starting, that just launches Jellyfin. So it doesn't reuse the NixOS stuff. It's sort of a second instance of it. It has its own separate Jellyfin systemd service that runs.
And then it's sort of pointing stuff so that like the config state dir and databases don't get kept they're just stored somewhere that'll get that'll just get wiped when you reboot the system but it does get access to the media folder mounted from our clone now the one thing i didn't get working that i was really hoping to as a stretch goal but it looks like it's configured in kind of a messy way in a sqlite database not in a config file is i was hoping to have jellyfin pre-configured to just
be able to to mount the have the collection pre-configured.
So the library was already set to go to the R clone mount point?
Yeah, exactly.
That'd be nice.
That'd be sweet.
You could probably copy, I guess, if you wanted to hard code in the pre-configured database file. That's a little hacky. Or maybe you could have a post-run systemd thing that would use the API to add this. Because I know all the paths already. I could hard code those in. Just do that and then tell it to scan the library or something. So those were stretch goals I did not actually get done, but I tried a little bit.
Is that something you can define like in the Jellyfin module or something like that?
Not that I could see. Jellyfin has a bunch of config to like tell it where to store stuff in its config. And maybe there's some sort of special initialization, but in my searching, I didn't find it. What I was eventually able to find is there's like a library.db in sort of the state directory that wherever it is. By default, it's like .local slash share slash Jellyfin, but you can set that with an nvar command line.
and then there's some tables and if you looked in typed base items there is a media browser controller entities collection folder, and physical location list and then that seems to have the right stuff so there's clearly a bunch of state I don't quite understand that you'd need to replicate. Stuffing it into a SQLite database is totally doable but that's where maybe doing it via API call might be more practical Yeah.
Very well maybe Jellyfin also has some sort of startup parameters where you can just pass some.
Of that stuff That would be nice yeah But I was able to get it working. I used a sort of pinch-flat alternative that I found recently that I snuck in as a sneaky pick later in the show.
Oh, good.
So I was able to use that to just download some YouTube videos into a collection format that would work for Jellyfin specifically. And then I synced that into MinIO. And then I was able to get my system going, point it at that local Meneo, so I didn't have to worry about, like, actually syncing these things over the network or anything. But it would all just work with whatever S3 provider that you set up. Yeah, and then I watched some nature documentary, I forget which one,
about the largest thermonuclear bomb. So it worked that far.
That's not a bad way to just set up your own private YouTube and let a VPS just turn away at that stuff. So definitely a clever setup, I would say, Brent. He gets a point for that, right?
Yeah, I feel like maybe we should take your cleverness point away, because his seems a...
Whoa.
Wow.
Okay, we'll both give you one.
But I don't mean to be the bad guy here, but I do want to argue the point for easy for others to replicate. It is in one sense, but it does depend on Nix OS as the base OS, which is tricky on a VPS. Yeah. Where mine you could do on any base OS.
I do think I could probably, because I was just running ArcLone and Jellyfin, I could convert that to containers built with Nix. That could be a future option, but I did not do that for this challenge.
Right, yeah, yeah. So that's the problem, though, because you'd almost be looking at a Knicks takeover before you could really make this hum. Now, maybe you already have that, but I do love the reproducibility of mine in the sense that it's not reproducibility, but the, you know, what am I looking for? Portability, the portability.
Yeah, it runs anywhere Potton runs.
Yeah. That's nice.
That is a very real trade-off for sure.
I don't know, Wes, I don't know.
I'm willing to take one last point there.
You have to be the decider, though.
Yeah, now you've seen both options.
For the fun of the game, I'll give him a zero on this one.
Oh, okay. So one point for Wes and no point there. Okay. Everything needed included to make it work. I think you got this one, right?
Yeah. I mean, you have to specify like the S3 endpoint and connection stuff and all that, but it handles everything after that.
So point number two for you.
Well, I don't know. I have an argument here. The whole NixOS requirement.
Yeah, that's not included. I don't set that up for you.
It's also, right? It's quite a hard one.
I could probably build a VM image.
Oh, no! Okay, all right. So let me think about this. Hmm, hmm, hmm. That is a good point.
But Chris didn't install Podman for you.
Oh, I guess you could make that argument. Yeah, okay. Yeah.
I'll keep going, Wes.
Keep convincing me. It's arguably a lot simpler, but...
And it's arguably going to be, like, included on some of these VPSs already.
And it's like one line with next.
I'll give you a half point.
Okay, half point. We're getting granular.
1.5 points right now for Wes. Now, here's where you're going to make it up, though, Wes, because you get five points if it works.
So, Wes, did it work?
I think it worked.
It worked? Yes. I can pull it up here.
So that means 6.5 points. I can verify. There it is.
Oh, yeah, there it is. Full episode. Very nice.
National Geographic. That's an NGO.
So six and a half points for Wes. And Chris, you got a big five points.
Oh, was it four? I thought I got it. Okay, five. I'll take five.
That was four. If you want to argue for four, go for it.
I wonder what I... I'm trying to think back what I could have done differently... maybe not have used R clone and did something else. I don't know what else I could have done. How else to solve the storage problem.
You do want something, unless Jellyfin has a way to have remote storage natively, you want something that will look like a normal. But you could maybe, I mean, you could do Samba or NFS.
Or what about solving it at the host? Now, this would be a dependency in a case, but if I was just thinking about the way I would do this, I might mount that fuse file system on the host.
And then not bother with permissions or pass through.
Yeah, and then it's just like, you know, map it through to the container and like in slash media inside the container is actually pointing at a mount on the host file system.
Doesn't mean you have more host container coupling and more orchestration concerns for the host. But there is simplicity to it.
But then it means I wouldn't be having to add fuse to the Jellyfin container. I'd only be going in there. And, oh, and R clone. The only thing that I think it'd still be worth adding is tail scale. that is really handy because if you do have a tail net and you just put jellyfin on your tail net yeah.
Definitely like mesh network vpn integration.
So you can.
Just wherever you stand it up it automatically connects to the storage.
There was a version of this too we discussed where the application runs on the host but it's using network namespaces with something like netbird and then you just if you were watching on a pc you could have a browser that when it launches connects to that namespace that has a similar namespace on your local machine that also is on a network or a tail net.
And then the browser is just on that network namespace and the Jellyfin application is on that network namespace and maybe they're both on a mesh VPN. And you could just do it that way, like that per application network namespace layer, which would be a really fun way to solve this, but there's no way to solve that for the set-top box. It'd only work on the desktop, a Linux desktop. But maybe there's another way to do it. Let us know how you do it.
You can send us a boost or go to linuxunplugged.com slash contact. If you'd like to support the show, this is independent media that we make for you. You can support us directly by becoming a member at linuxunplugged.com slash membership. You get the bootleg, which has a whole bunch more content, and I think makes the whole membership worth it. But if you like something a little shorter, still with all those Editor Drew touches, then you can get an ad-free version of the show.
You can do the Jupiter Party membership and support all the shows, including some new stuff we're working on. That's at jupiter.party. Or you can support just the show, linuxunplugged.com slash membership. You can also support each individual production with a boost. And Fountain FM has some really incredible things in the works. It makes it super easy to boost, and it's only going to get easier. Check that out at Fountain.fm. Then you also get all the extra podcasting 2.0 features as well.
And, of course, you can always sponsor. If you think maybe there's a product you have or a service that the world's best Linux audience should know about, reach out. Chris at jupiterbroadcasting.com.
Well this week we were lucky enough to receive two space balls boosts from our dear hybrid sarcasm, First question here. So, Chris, why Bluefin and not Silverblue, Aurora, Bazite, or something else?
I have one part of the answer. He's a Gnome guy now. So it couldn't be Aurora.
Well, I actually, that is kind of it. I've kind of gone for a Gnome workflow on my laptops, and I was on the go, and this is the machine I'm going to be using for a bit for the TUI challenge and whatnot, and I kind of wanted to get into this workflow quick. and something that was just while I was on a trip I could swap over to and not spend a lot of time setting up. And so Bluefin seemed like a good fit for that when I was sort of, you know, just weighing my options there.
Yeah, I wonder maybe if one comparison that's useful would be just Bluefin versus Silverblue.
Yeah, I felt like it was just sort of more ready to go. You know, like they've taken some design choices there. They've made some choices like Brew. like there's just things in there that just make it ready to go compared to like I felt like Silverblue would be I'd spend the whole day setting up my laptop maybe.
It's more of a little base that you can start with and make something great but it's a little more lean than what you get.
Yeah I don't know if this is where I stay for this what I was fantasizing about I don't know maybe this was just me being a rookie I was fantasizing about somehow remixing Bluefin to my own tastes.
Yeah I mean you can build your own image from there.
You're probably using Podman desktop that's what I was trying to figure out but I never quite got there I haven't gotten there yet, but that's where I was hoping to take it. So I started with bluefin thinking then I would from there take it in my own direction.
Chrisfin.
Fishfin? No.
I like that. And the second Spaceballs boost here. Also, can we get an update on the race for the 2025 Boosties winner?
Okay, request noted. We're recording earlier this week, so with the timing, I have not yet pulled those, but probably for the next episode it could.
I'll tell you what, the news is going to be bad. You know, it's just we've had a few changes in the technology space. Albi has transitioned from a custodial service to hub, which means some of the podcasting Twitter apps are harder to boost with. And, you know, there's been a lot of price action. So I think it's going to be a lot less than we were at this point last year.
But maybe a little competition will... Spurs off.
Yeah, perhaps. BHH32 came in with 2,500 sats. I'm working on trying to make a video player as a Tui with real video, not ASCII videos. I've got a very rough prototype working that prints the controls and the time elapsed. The plan is to allow Jellyfin and YouTube streaming alongside local videos. I hope to have enough done in time for the Tui challenge for you fellas.
Wow.
Nice. Yes, that is so great.
We might just have a hope yet.
Phew.
I would say send the project along like whichever state it's in i'm sure our audience would love to give it a test we would love to give it a test and to help you develop this thing.
Yeah if.
You need the bugs found we got a guy gene bean boosts in with 5 468 sas, chris i am stoked to hear what you are going to do with bluefin and image mode.
I am getting just started it is a whole world gene i realized i have a lot to learn learning quick though treading water at least.
By the way lazy git is a great tui tool.
Okay yeah lazy git i've heard that is a good one we should check that out right we should check that it.
Is good i've tried it a little bit.
I like that gene bean it's good to hear from him.
Another good guy is zach attack 6 000 sat sent in this week, I'm happy to hear you jumped to Bluefin. The biggest change for me was getting used to using Brew to install terminal apps and app containers. Apps in containers.
You know, Brew for me isn't too bad just because it was my lifeline anytime I had to use macOS.
Yeah, you are familiar with Brew.
Yeah.
You know how to relink all your Python interpreters?
I'm sorry? Do you need to lay down?
Zach continues here. The escape hatch of layering items for the Fedora repo is handy as well. but it used to be used only when needed. Ublue handles the updating of DistroBox containers, which is very slick. I'm putting Aurora on my parents' system with a weekly reboot, knowing I don't have to worry about it getting behind on updates or something breaking in it.
Yeah.
That's a good test.
Yeah. That's so nice.
I think when a distro gets to friends and family status, that is a good test for it.
Handling the DistroBox containers too is nice because I imagine that is something I'm going to be taking advantage of. Thank you, Zach Attack. That's a great field report. Appreciate it. Jordan Bravo is here with 5,555 sats. I finally got a chance to set up AlbiHub on my home server. Heck yes, buddy.
Nice, well done.
Well done. So now he's boosting from Podverse, which he's connected to his AlbiHub. So this is a fully free software, self-hosted stack. Peer to peer. Albi Hub is free software. Podverse is free software. The Lightning Network is free software. He says, by the way, it looks like the most recent Podverse release for Android was from mid-2024. Has the project been abandoned? No. No, they've decided to go the direction of a rewrite. As you can imagine, that takes all of their focus.
But they are fired up about it. They are passionate about it. They've got a lot of great ideas and lessons learned.
I've definitely seen Mitch active in Matrix helping folks and answering questions.
I'm very excited about the next release of Podverse. Or, you know, when they get the rewrite done. That's big.
Hey, do you remember Boost CLI? We used to get a few folks sending boosts in via CLI. I haven't seen that in a bit.
Oh, yeah.
Maybe we need to make sure there's Boost CLI plus AlpiHub Combat.
Yeah, we need a Boost CLI sound to recognize the heroes.
Make it worth the wine.
Thank you, Jordan. Good to hear from you.
And our final boost today, Jor-El69 comes in with 15,000 sets. Or as Drell puts it 150 hundreds sats Oh, I'm a bit late for the final self-hosted episode, but I want to say that the self-hosted podcast was my entry point to the Jupyter network, and I will really miss it. Many thanks to Alex and to y'all for reigniting my passion for Linux and owning my data.
Hey, oh, yes, more of that.
Love to hear it.
Alex mentioned in 150 that he's going to be getting a bus and traveling the country, so now we're just trying to talk him into coming up here and doing an episode with us.
Maybe some meetups.
Good road trip, right? It'd be a good road trip. All right, thank you, everybody.
we are recording early this week so it's it's a humble boost summary but we'll get to it it's uh not so well we had 21 streamers and collectively they stacked 29 821 sats thank you everybody who streams them sats as you listen to the show and then when you combine that with our boosts we stacked i think our lowest this year 89 034 sats, But we are recording a little early and we thought something we've never done before since, you know, the beginning of taking the boost.
I think when we set the 2K sat limit, let's do a boost sale. So we're going to lower the cutoff that we read on the show to 1000 sats since the sat price has gotten a little higher. So if you've been wanting to boost in and get your message read on the show for next episode, the cutoff will be 1000 sats and we'll read 1000 sats and above in our boost segment. So it's a good chance to get a message, get your message in on sale. As they say, crazy Brent's boost sale.
We can call it that. I'm fine with that. I'd also like to know what people thought of our Red Hat coverage. Sometimes the boost coming in is a little bit of a signal for us. But if you enjoyed the coverage, let us know. If you didn't, also, please let us know. That way we can change things next time.
It's a lot of work we could just avoid. I suppose people don't like it. That's a great point. But yes, that is always a feedback that we very much consider. All right, we have not one, but two picks for you before we get out of here. And this first pick, and I'm really glad Wes found a second pick, because I have to disclose right off the top, this first pick is U.S. only because it requires NOAA weather data, which is only in the U.S.
But if you are in the U.S., you are going to thank me for this one. This is called WS4KP, and it's a web-based WS4KP. It's a project, it's a web-based project that aims to bring back the feel of the 90s with a weather forecast that has the look and feel of the Weather Channel at that time, but using modern data. So it also has a kiosk mode, so you could put it up on your tablets in your home. If you ever have seen the Weather Channel, it looks exactly like the old Weather Channel.
And they have a live demo, so you can go check it out, see what I'm talking about, and you're going to fall in love with it. Chris, what are you talking about? What are you talking about? Go check it out.
They already have the weather channel now, bro.
I really love the old weather channel, and it's got a music mode, so I recommend when you check out the live demo, turn on the music so you can get some of this great smooth jazz. It's got several settings you can configure, and a full screen mode if you want to pull it in, as well as a tall and wide mode.
It looks like if you had a fancy VCR that was also a weather app.
Yeah, you remember those from back in the day? Or there were a few channels that just had this on one of the channels.
Right.
And it actually is clean and useful information, well displayed, that I would love to figure out a way to plumb into my ersatz TV setup.
Yeah, visibility here at the studio, 10 miles.
That's right. And the ceiling is unlimited. So go check it out. It's, again, it's a weird name. It's WS4KP. I know it sounds like a strange pick, but you are going to love this so much. And if you set it up somewhere in your home, please take a picture and send it in. I want to see this.
You can also check out the demo at weatherstar.netbymat.com.
And it is MIT licensed, so you could always fork it and maybe set it up to use a weather API from your local area. I don't know. It should be possible. But not one, but two of them, Wes. Two.
Yeah, okay. Check out YTDL-sub. It's a lightweight tool to automate downloading and metadata generation with YTDLP. So it's just kind of some more Python on top of YTDLP to automate, using that to go get all the data out of YouTube, both metadata, subs, and the actual video files. And then it knows how to stuff them into the various formats for popular stuff like Plex or Jellyfins.
This is great if you don't want something like Pinchflat. You just want a few songs or a couple of videos, but you do want them on a media center. It supports Cody's formatting, Jellyfin, like you said, but also it supports a lot of the websites that YouTube DLP supports that are not just YouTube. So like SoundCloud, Bandcamp, and others, and it knows how to get that metadata and then format it so your TV media center can display it appropriately.
Yeah, and it did by, you know, at least in the examples I tried, it did a good job of pulling in the right kind of metadata for me and worked nicely.
and it's got a lot of fancy files you have like a yaml file that you kind of define things by default it's really well set up to do like shows by date so it'll make like seasons that are you know for the year and then episodes within there from the channel and you can specify like only keep the last two months or only keep up to 30 episodes so if you don't want to download, everything ever for a new channel you just want to start following it that's made pretty easy.
I you know the way i would i would practically use this is i would install this on my jellyfin server and then i would just create a youtube directory that i have added as a library to jellyfin i would go to that youtube directory and i would just use this to pull down the stuff i need along with the videos that i would get.
Yeah so i think you can like automate it in the background oh sure to run or it's neat because it kind of does scale down nicely i was able to copy their demo yaml tweak it a little bit to include what i wanted and then you just kind of run ytdl dash sub and then the sub command and then you point it at the yaml file and it just starts going, and Jellyfin was the easiest pointing it at that folder and it recognized it immediately.
You can see this too, like you just want to back up a single channel.
Right.
And you only do that once.
Yeah. You don't need a full server that's running in the background and everything.
You could automate it, but yeah.
And it works. They've got an installation on a lot of stuff. So they have a Linux server IO based Docker image. They've also got one with the like VS code server running. If you want to edit the YAML file inside of there from like a web.
Man, that's easy mode right there.
Yeah. CPU and GPU pass through, Windows, Unraid, Arm is supported. You can also just install it with PIP too because it's basically just Python using YTDLP.
This is a great pick. YTDL-sub will have a link in the show notes, which are at linuxunplugged.com slash 617.
And yes, it's packaged in Nix, and there's a NixOS module for it, and that's how I found it.
Ah, very good, Wes, very good.
Oh, and GPLv3.
I was just going to say, it is GPLv3, so, you know, mix and match as you like. Well, I'm pleased to say we will be back at our regular live scheduled time, so you can make it a Linux Tuesday on a Sunday. You can join us Sunday at 12 p.m. Pacific, 3 p.m. Eastern over at jblive.tv or jblive.fm. And don't forget, since episode 600, every episode of Linux Unplugged has a transcript, which you can review and use or plug into an LLM or whatever it is you might like.
And they're available in the podcasting 2.0 apps, and they're also available on our site. And every episode is chaptered. So if there's something you did like or didn't like, you can play it again or you can skip it again. go.
Right to the good stuff skip to the picks you know.
Yeah why not it's really the picks is what everybody wants that's the thing alright thank you so much for joining us on this week's episode of your Unplugged program contact info mumble matrix info all of that's at our website and we hope to see you right back here next Tuesday, as in Sunday whooppa, If we were going to wait one or two more weeks for the TUI challenge, I was really going to try to get an old school computer that is just a terminal going.
I love that idea.
I think that would have been a lot of fun. And still something I might do eventually is just really something from like the IBM PS2 era or a really old Mac that you can somehow connect to the Internet. That's my dream for the TUI challenge. and if anyone out there has the opportunity to do this you just have if you're the person out there that has that machine in your closet, this is its moment this is go wake it up and put it to work and it'd be the perfect machine for the TUI challenge I.
Can already see you're going to be asking me to copy your messages from the BBS over to Matrix.