> Sonarr, Lidarr, Radarr, etc. Every time I read about setting it up, it just sounds like a resource-intensive mess that’s fundamentally prone to frequent breakage. That’s the opposite of what I’m looking for when choosing self-hosted services.<p>I just checked on my *arr stack. Sonarr and Radarr idle at 157MB and 159MB of memory and approximately no CPU. Jellyfin currently idles at 330MB. I'm not sure where you got this impression from. I grant these tools are complicated and have somewhat clumsy UX, but they aren't especially heavy to run and are not fragile.<p>OP, point your :robot: at <a href="https://github.com/subdavis/selfhosted/blob/main/docker-compose.yml" rel="nofollow">https://github.com/subdavis/selfhosted/blob/main/docker-comp...</a> and ask for an explanation. It's a single compose file that illustrates how the *arrs, transmission, and jellyfin all work together. I'm sure you can set it up :)
Indeed. The other thing to point out is that, once you have set them up, they will chug along fine for years with near zero input.<p>Here is the stack I recommend:<p>* Radarr (movies) with optional second instance for 4K versions<p>* Sonarr (shows) with optional second instance for 4K versions<p>* Sonarr (anime), separate instance to have control over quality settings<p>* Prowlarr (tracker/indexer management)<p>* SABnzbd (Usenet)<p>* qBittorrent (torrents)<p>I would also recommend consulting the TRaSH guide to tune your setup and ensure you’re grabbing quality releases. From there, the next logical step is Profilarr :)
Instead of multiple Radarr and Sonarr instances, wouldn't it be simpler to have multiple quality profiles on a single instance?
Multiple instances are needed if you want multiple versions of a given movie or episode. For example, I have a Dolby Vision device that works great with certain files, but on some other devices the file works poorly and doesn't transcode well. Plex handles multiple files fine.<p>Definitely not a usecase for everyone
Obviously the instance is to hide away from wife, kids and rest of the family. I recommend stashapp.
Or you could be considerate and set them up with their own instances (of stash), too!
+1. Many people do not see the value in storing their own adult content but mine is high quality, full length, VR, niche, and full of the stuff and actresses I like.
sabnzbd can be replaced with nzbdav or similar tools (infinidysk, altmount) if you want to free up storage and stream directly from usenet.<p>Or, even better, the entire arr stack can be replaced with stremio to just keep everything on-demand instead of curating a library at all.
“Even better” is relative. Some people like having media stored locally instead of relying on torrent streaming availability.<p>Usenet streaming sounds cool, but with releases being DMCAd so frequently, I don’t see how it would be practical for anything but the most recent content.<p>Also, I imagine that Stremio without Debrid (or equivalent) is kind of a terrible experience most of the time.
I tried it once and it barely worked at all. Plex would just show everything as unavailable. Really awful experience even when it did work.
If you're not worried about black-ish pixels, it's surprisingly reliable.
> stremio<p>Is this the latest rendition of Popcorn Time?
Yep basically. The real magic is when you combine it with a Debrid service, which essentially puts a cache in front of torrents. If the torrent has been downloaded before, you get a direct hosted stream instead of having to stream your movie from active seeders (i.e. buffering hell).
Curious question, I host a single instance of sonarr that supports anime through tags. Is there an advantage to hosting 2 instances instead?
Single instance works fine, but a separate instance allows you to set global quality settings that are more accurate for anime: <a href="https://trash-guides.info/Sonarr/Sonarr-Quality-Settings-File-Size/" rel="nofollow">https://trash-guides.info/Sonarr/Sonarr-Quality-Settings-Fil...</a>
You can configure quality profile via the tags too (I do have separate profiles for anime vs liveaction).
I didn't even set the tag, as I don't intermingle them in the same directory, and automatic tagging by sub path is possible too<p>So I'm also surprised why someone would configure a second instance for that
If using the TRaSH guides (synced automatically with recyclarr), with all their quality profiles etc, I find that those mostly don't make sense for anime. It's easier for me to keep the anime specific stuff separate, different naming conventions, different episode numbering, etc.
Can you explain? Are you manually setting tags for every anime you add? How does it work with requests made thru Seerr?
I'm not using seerr, I've used overseer and jellyseer for a while years ago, but as I'm the only person interacting with radarr/sonarr... The value wasn't there for me.<p>I suspect it's would still work, but haven't tried it out<p>Sonarr/radarr has the ability to configure multiple library roots. Those are available in a drop-down when adding a new series through the (son|rad)arr interface<p>This is eg /media/(anime-series|series) for me. Then I defined a rule for those paths to add an anime|lifeaction Tag.<p>This then controls the tracker and quality profiles, as well as language preferences etc
The interfaces of arr stack are ugly, and linking qbit to indexer manager to arr app is needlessly complex. Maybe there could be plugins in one app like qbit.
With agents I am surprised nobody has combined Plex + qbittorrrent + seerr + *arr into one mega app
Prowlarr replaces Jackett?<p><a href="https://github.com/Jackett/Jackett" rel="nofollow">https://github.com/Jackett/Jackett</a>
There's been two major disruptions in my experience.<p>First was Lidarr went for months last year (was it this year?) unable to search/add musicians due to complications with how they were relaying those searches. It took them a long time to refactor that part of the software and make it usable again.<p>Second was the retirement of Readarr, the ebook-version of this software, which was an absolute shame.<p>But aside from that this is pretty much set-and-forget software. Although the setting is harder than it should be, should be much easier to favour smallest x265 rips at <resolution>, lossless audio, season rips with subtitles.
In this day of vibeslop, it's insane no one thinks to combine all these into single app. The best we can do is having single docker compose file that has to manually point each service into each other.<p>A single dream app that combines: Media server, crawler, downloader, subtitle, cloudflare bypass etc, with plugin support.
I agree. What is stopping me is primarily the metadata stuff. For example, Sonarr runs a closed-source service called Skyhook which exists to make efficient use of TheTVDB. Since Sonarr is free open source software maybe they don't have to pay (looking at <a href="https://www.thetvdb.com/api-information" rel="nofollow">https://www.thetvdb.com/api-information</a> and <a href="https://opencollective.com/sonarr" rel="nofollow">https://opencollective.com/sonarr</a>).<p>My dream app is split into two parts. One that serves podcasts, music, books (with OPDS so I can browse my library with KOReader), tv, movies, other multimedia (youtube, whatever else). The other handling the metadata APIs and downloading files from different sources (torrent trackers, torrent DHT, nntp, etc...). Sort of like uber-Jellyfin + uber-Arr.<p>I guess I can probably get a personal API key for TheTVDB, etc... and develop my own sort of proxy and it wouldn't be so bad. Hmm...
So we monoliths are now back in vogue instead of microservices? /s<p>(And I agree, for most workloads monoliths are much easier to grasp and deploy than microservices)
This basically all comes for free in woltspace [0]. Woltspace believes that you should no longer bother building “scalable” apps, but personal apps that literally only run on your own machine. You can access them from anywhere (cloudflare, tailscale eg) and continuously improve them with your wolts over time - from anywhere.<p>It’s all open source and harness agnostic [1]. I’m the park ranger for life aka maintainer of the project. Did a recent YouTube video with what i think the future of open source multiagent setups will look like [2]<p>Happy to chat more about it<p>[0] <a href="https://woltspace.com/" rel="nofollow">https://woltspace.com/</a>
[1] <a href="https://github.com/jerpint/woltspace" rel="nofollow">https://github.com/jerpint/woltspace</a>
[2] <a href="https://www.youtube.com/watch?v=H-4khO7o0XQ" rel="nofollow">https://www.youtube.com/watch?v=H-4khO7o0XQ</a>
I build my own version, single binary that does every thing. While I built it, I learned I cannot make it open source or distribute, bc it might be illegal to do so, so I assume many people have built that, but you're always locked into the narrowly scoped lego pieces. So I enjoy my media now, without hassles, all the features I need, none I don't. I hope one day I get to share.
Same. I made the mistake of adding the downloader to it at the start but brute forced my way through. Single Rust binary for all of the *arrs + sabnzbd is nice though. Unfortunately it is not something I am comfortable making public due to the all-in-oneness of it.<p>Almost all of the time went to to the downloader (usenet is more complicated than I thought). If I had just focused on the basics (sonarr, radarr, seerr) I could probably could have knocked it out in a day or so.
It is important to point out that “a day or so” - or even the ability to spin up your own version - is only possible because these projects <i>already exist</i>.<p>Without a tested and validated reference implementation that already accounts for the numerous edge conditions and quirks of media releases, APIs, etc., your vibecoded version would have taken much longer to iterate on.
Solution is easy, in fact there are 2 solutions:<p>1. Clear that "might", it either <i>is</i> or <i>isn't</i>. An AI can get you 90% there, maybe the definitive confirmation would be good from a lawyer.<p>2. None of this matters if you share it from a foreign code forge and an anonymous pseudonym.
ianal, but presumably you could share a research document that explains the theoretical kinds of broad strokes of an all in one type system, and how youd verify it works.<p>if anyone decided on their own to put that it into a local model and generate their own version of something that met the theoretical spec thats their own deal...
I've been running my instances for over 5 years, I update the Dockers every few months and that's it. I have about five users in different households that rely on it it has never missed a beat.
I think it just sounds intimidating if one hasn't tried, but they are really well designed pieces of software, that are relatively simple to set up (just have to go through the motions and connect everything with API keys).<p>Highly recommend them to OP. My stack went down once in the past 4 years and it was my fault.
It appears the large majority agrees that the *arr stack is fantastic and fundamental context to any vibe coded solution for similar services. I can also confirm resource contention or maintainability is not the issue for me with these.<p>Selecting good releases, for anime, classic cartoons, various dubbs, subtitles, and quality, size, etc can be troublesome. But it is like anything else, you iterate on it.
There’s also <a href="https://autobrr.com/" rel="nofollow">https://autobrr.com/</a> - not exactly the same but many overlapping features, lightweight, written in Go and works well with que and qbitorrent.
For comparison, audiobookshelf idles at 89MB, emby at 178MB and navidrome at 29MB for me.<p>I think everyone has different definitions of what they consider heavy. I tend to think anything using over 30MB when idle is a bit much and anything over 300MB is something that really needs to earn it's spot.
Another good option is nixflix: <a href="https://github.com/kiriwalawren/nixflix" rel="nofollow">https://github.com/kiriwalawren/nixflix</a> (a nixos equivalent)
Oh cool! I have been running it happily for a bit over a year but found the interplay to be annoying. Currently working on <a href="https://github.com/tclancy/lintarr" rel="nofollow">https://github.com/tclancy/lintarr</a> to try to "prove" rules across the stack don't conflict with each other.
The bigger reason is Sonarr and Radarr opens you up to a plethora of attack vectors and realistically at this point you're probably already compromised.
I don't see how. I run them with no public ingress, no plugins or mods. I don't torrent. I'm not sure there's really any attack vector worth worrying about. Certainly no more than many of the other services I host.
what the hell are you smoking? even the silly article earlier had the caveat "Yeah it downloads EXEs but its up to you or your family to run them"<p>and that's totally ignoring the fact that it's only a supremely naive user that hasn't yet refined their filters to exclude dangerous extensions (or, if they're too lazy to do that, rely on one of the many many pre-assembled filter/grabber settings across the net which already do so.)<p>what fear-mongering and FUD-spread.<p>You may also want to warn the public about the dangers of having curl, wget, python or gcc installed.<p><i>They expose a PLETHORA of attack vectors! you're probably already compromised, realistically!"</i><p>... and they're actually more dangerous than a free-floating EXE.
Maybe the resources in question arent RAM.
There must be large amounts of similar code between Radarr, Lidarr, Sonarr etc.<p>Whenever I use them I wonder if they could be one unified app with plugins...?
> Sonarr, Lidarr, Radarr<p>There’s no value to this post honestly.
Also the barrier to entry for these things has dropped immensely with ai
I also self host some services: keycloak, forgejo, home assistant, immich, grafana/prometheus, jellyfin, pureftp (to store my surveillance cameras videos), and a vibecoded financial app, and soon hermes agent on a 2023 laptop.<p>I chose to run most of them on Kubernetes since I am used to work with it. I use:<p>- ha-proxy running on the host and istio running inside the cluster for the sni based ingress routing
- cert-manager with a self-signed CA I had to import the CA cert on my devices
- cloudnative pg for postgresql dbs (keycloak and immich)<p>For the backup it is mainly some cron jobs that save to the cloud.<p>It is overkill I admit but kubernetes makes some integrations easier. Even though it was also a way for me to maintain some Kubernetes skills for my work. The tricky part is the network connectivity, for instance home assistant runs inside the cluster on its own network and it makes things more complex like homekit bridge integration (different network than my devices). But with the help of AI the iptables configuration makes wonders.<p>The kubernetes cluster is k3s running on NixOS micro vms, fully managed declaratively thanks to NixOS.<p>The services that run outside the cluster (ha-proxy, jellyfin) are all managed declaratively.<p>At some point I had thought of using proxmox with lxc but I am very happy with NixOS.
I also used to run everything on K8s (hybrid Talos / Alpine+k0s on nodes too small for Talos). It is a fun exercise, but with many small nodes eventually I realised I was burning a quarter of my fleet's CPU on just monitoring and routing services.<p>Eventually I switched to Systemd only, Clan-managed NixOS instances on bare metal.<p>The killer feature for me is socket activation. It even works with Jellyfin, wrapped in systemd-socket-proxyd. I have Jellyfin listen on a UDS, and Systemd will activate it when my TV connects. The downside is a few more seconds of waiting when I open Jellyfin on the TV. The upside is, after 20 minutes of idling, it is fully powered down.<p>This allows packing even more services on smaller machines, provided you don't e.g. play Minecraft and watch Jellyfin at the same time.
We have come full circle back to inetd, only systemd is a little maze of twisty little passages in comparison
Yes i will probably end up using systemd services when I will hit resource limits. So far everything works just fine on my LG16 32 GB i7 laptop and consumes around 15w.
Just looked up Clan since I'm a big fan of Nix but currently run my cluster with k3s, which indeed has some overhead.<p>It seems however that Clan is one of those classic projects where the website and the docs assume that everyone already knows what it is and how it works and goes straight to the benefits of doing it this (whatever 'this' is) way.<p>After reading both the site, docs and guides I am now scouring Reddit and YouTube for an actual explanation of whatever the hell it is and how it works.
How's your vibecoded financial app setup? Are you using Plaid?
isn't it a nightmare running home assistant with kubernetes? i had a bad enough time just using docker compose.
So far it is ok. I even have a usb zigbee dongle receiver in usb passthrough and the container in privileged mode. I am moving to the Apple ecosystem and I managed to have homekit bridge connected to Apple home. I had to use an avahi relay on the NixOS host for the discovery protocol to work. The home assistant is not the same network as my devices. The homekit bridge allows to configure the advertised IP.<p>I use tailscale (outside the k8s cluster) for connectivity. My phone companion app is not connected to my home assistant server outside my home but could through tailscale.<p>So definitely there is added complexity, especially on the iptables configuration. Without the AI help, I don’t think I would have managed to do it regardless of the time saving.
Shameless plug for my web video player that is especially designed for self-hosting situations. Drop a single html file in your web server folder with your videos and you get thumbnails, library, search, subtitle support, etc.<p>No required third-party dependencies (just the optional Google Drive and OneDrive features). Highly customizable (colors, site logo, default features) with a JSON file the player can produce. Responsively scales for any web browser: laptop, mobile, smart TVs, game consoles, even built-in in-car tablet browsers.<p><a href="https://github.com/pseudosavant/player.html/" rel="nofollow">https://github.com/pseudosavant/player.html/</a>
This looks awesome. Very quickly read the Github page. It does seems to need a webserver. Would i just drop the html file in a smb shared folder and open it in a webbrowser, could that work ? Apologies for asking weird questions.
The main use for it is as a webpage you can serve with any web server. If the folder for your smb video share is also served with any web server, drop player.html in there, access it from the webserver URL, and it'll work great.<p>It is also a PWA though, so you can install the player (e.g. from my github pages test version: <a href="https://pseudosavant.github.io/player.html/player.html" rel="nofollow">https://pseudosavant.github.io/player.html/player.html</a>), and then use it as a local video player for any video file in your OS, like directly from the smb share if it is mounted.
Hey that's pretty neat. Thanks for making and sharing.
> I prefer running services natively when possible, but will containerize complex services or those with many dependencies. Love: a service that’s a single Go binary. A service that only comes as a Docker compose file and wants to run MySQL, Redis, and three other containers? I’m already looking for an alternative.<p>Ok, I respect your opinion, but remember that there are poor souls like me out there that actually love the opposite.
> <i>Ok, I respect your opinion, but remember that there are poor souls like me out there that actually love the opposite.</i><p>All things being equal, why prefer Docker Compose? From my perspective, a single binary strictly dominates any Docker Compose solution.
Isolation from the main system, other services, and other dependencies.<p>Easy to migrate to new system.<p>Easy to upgrade and downgrade. When a new version causes an issue just restart it with an older version.<p>One directory to backup and restore that contains all the services and their settings.
A single binary accomplishes most of those things just fine. Only thing it doesn't get you is isolation, but you can isolate things if you want even then (for example, FreeBSD jails are dead easy to set up).
I use traefik so with docker compose/labels it's real easy to give things a reverse proxy with an auth gate and other middleware<p>There's lots of solutions, I also find compose hits the sweet spot for integration into my homelab
Or bwrap on linux, which is probably good-enough for most services' isolation needs.
Isolation is a pretty big deal to be glossed over.
ok, so you're just using a container with a different name? You can put the single binary in a container and call it a jail if it makes you feel better.
Well yes, but that's the point entirely - you can <i>easily</i> put a binary into a docker container, or a jail, or on a VM. But when something is shipped as 5 different docker containers it is MUCH harder to extract it into something you can run without docker or in a different configuration (like sharing a postgres instance between multiple applications).<p>One distribution method is flexible and can be deployed however you want, the other prescribes solutions and makes any customization difficult.
I'm confused. The original post said "why docker compose? a single binary dominates any docker compose", (I assumed dominates here means wins over because it wouldn't make sense otherwise?) someone replied giving the additional benefit of containerization, then someone replied to that saying you get all those benefit from single binaries, and if you want the system isolation you can use a freebsd jail, which is like saying "if you want the benefit of containers you can use containers"<p>Most applications do ship in a single container. whether it's a single binary inside, or a bunch of python or js files or shell scripts is a separate issue. If there is a dockerfile then you know how to build the container. a single binary is easier to build the container for yourself, assuming you also know the binary dependencies of that single binary. Like maybe ffmpeg or yt-dl cli on the path?<p>Applications that ship as a list of containers are a completely different problem. Those applications are either a victim of their own success, or have developers that come from a particular background.
I've never felt hindered by docker. It's pretty flexible. If I need even more flexibility I'm reaching for k8s, where I am still containerizing any single go binaries
Are you saying it's hard to edit a docker compose file? Being one service or 5 doesn't really make things more complex. I often point servers at my own postgres container instead of spinning up an extra one (so just remove that from the compose for example). That's kind of the entire point of compose, it's so flexible.
I mean I've seen many single go binaries spin up docker before haha
A single config file in a directory beats all.<p>All my home server apps are in /apps/app-name/ all have a docker config... All data and configurations are mounts under that directory or to my library. It's really straight forward.<p>I don't have to hunt for different configuration files, each app has what it needs.<p>I can spin down, move and get back up in a minute or two. All in a consistent way to the platform.<p>The overhead for Docker isn't near a full vm, it's maybe 2-3% if that.
I don't use Docker but I love reading the compose file when a project has it. It is the quickest way for me to get a high level idea of this project's architecture. It's the best documentation :)
It’s the unified interface for me. Updates, logs, service management, network routing, config and storage mapping are all uniform and I don’t have to wrangle many slightly different implementations of each. Isolation from installed packages is a nice bonus.
I use Docker Compose so that I don't have to care if the daemon is a single binary or a whole stack: I can use the same setup for everything, and deploying an entire new thing in a maintainable way is quick and easy. Each app's startup/shutdown is managed using the same templated systemd unit, and Traefik handles the routing and Let's Encrypt cert creation and renewal.<p>Basically I want things reliable and low-maintenance and this setup gives me that.
I like to have consistent architecture across all my services, and I like to see and configure everything in (mostly) one place. If you're running a single go binary, sure do whatever, but if you're running a go binary, and a *arr stack, and a bookmarking service, home assistant, frigate, etc, it gets out of hand pretty quickly.<p>You trade a bit of upfront setup (I mean barely now in the age of LLMs) for easier automation and flexibility down the road. I use docker compose to run my local dev stack and qa envs, but then can do whatever I want with the containers for prod. Google Cloud Run, Amazon, whatever. Right now I do just actually use docker compose behind nginx in prod, but I've used basically the same docker compose setup for all my projects that aren't large distributed systems in the last 10 years. And when the system gets too big, I refactor it into k8s, but k8s is overkill for like 99% of my personal projects and like 75% of my professional projects.
for long-running services, I've never taken the time to learn something reliable like systemd. with Compose, I can see everything I need to know in one yml file and the commands to go with it. I also don't have to really understand any dependencies or their own configuration and can cleanly remove everything associated with that service with a few commands.
You can use systemd and docker compose together. A systemd service is a single config file that runs the commands you give it, including `docker-compose` commands. Everything else about your service is still orchestrated via docker, and you can still run commands against the running containers just like before.<p>A big win with very little effort is systemd starting your docker compose service on boot. You have your systemd config file set `ExecStart` to call your docker-compose command, throw the config file into your systemd folder, and tell systemd to enable it. Docker compose handles the rest.
Its a single config that lets you run multiple services (and can keep them running), upgrades are just editing an image tag.<p>Don't have to look at cli docs to figure out how to run it.<p>Doesn't have access to my file system, logs are easy.
I’ve been a die hard native package or static binary proponent for a long time. I still hold that there are real advantages.<p>As podman has improved and compose stacks have improved, I’ve conceded that containers simplify deployment and updates and isolation, and at this point I find for me the benefits more than outweigh the hassles.<p>Instead of crafting a set of ansible plays that do all the manual native installation steps, I have a relatively lightweight ansible rig that reads containers and relationships desired from a manifest in inventory, then builds or modifies compose files, then just deploys. Much less futzing. And I’m more likely to keep things up to date regularly as a result<p>Or, increasingly, dispatch codex to handle it for me<p>In this way I update home assistant across multiple instances now like magic. I don’t even dread it a little anymore
Not OP, but i prefer a single binary on docker, at least i know it won't fuck up my filesystem when i do something stupid with it.<p>Or at least i can reinstall any time i want, because i know it won't leave any trash in my filesystem and when reinstalling, it won't reuse those outdated files
Some isolation is nice. I say some because I’m told it’s security is not to be trusted, but I still like that even a non nefarious binary has ootb boundaries on what state will persist.
docker isolation is nice just as a management boundary. It's nice to be sure applications don't accidently shit all over each other. Like an application that decides to clear /tmp because reasons, or 2 random ones that both store temp state in a /tmp/state.dat for some odd reason.<p>My favorite is applications that conflict on ports. So you go to change the port an application is listening on, the docs say PORT env var so you set it, but it doesn't work.<p>You look through the code (and this is before LLMs) but the config is just a labyrinth of values flowing from god knows where. So you search the repo for PORT and eventually find a PR from 2 weeks ago that changes PORT to ENDPOINT, so you set ENDPOINT, but it still doesn't work.<p>Then you find an issue that was opened last night that the new `ENDPOINT` value doesn't load from env vars because it conflicts with another ENDPOINT_ prefix on another value, instead you need to create a config.toml and set an `endpoint =` in that, so you do that.<p>Then you realize that creating an empty config.toml has now overridden all the previously defaulted values into nulls or empty strings, instead you need to run `foo config-defaults > config.toml` and go edit the endpoint one.<p>Only to realize that there is a secret that the tool uses to encrypt an ephemeral session. if you don't specify one, the tool would auto generate one on startup. The only downside is restarting it logs your client out which isn't a big deal. But now that you switched to config.toml you must set some value there and it can't be empty<p>Then you're just wondering why the hell did I want to change the port?
Docker isolation is likely good enough if you keep your kernel up to date and aren't allowing 3rd parties to run code. If you are running a CI service or something you need micro VMs. But to host your nextcloud server, docker is good enough, it's unlikely someone will both exploit nextcloud and the kernel if you are keeping them up to date.
I too prefer the Docker compose route. If you give me a single binary, I'll go out of my way to run it inside a compose stack.<p>I manage my home server with a script that presumes the service is running on a compose stack. So I can run stuff like `stack freshrss restart`. I don't want to touch my scripts, I just add the compose file to some expected path and the script finds it based on naming conventions.
I like "a service that's a single Go binary" just like the author does, but deploying that in a FROM scratch docker container is arguabdy the best of both worlds? You get the self contained container, it's not bloated, runs at native speed, works with docker tooling...
Agreed and everyone’s talking about Docker Compose while I’m putting everything in k8s.
I don't hate docker. I just don't like that it seems to keep systems from going into sleep/standby mode, because it keeps writing things from time to time.<p>I would like to have Debian headless mini servers that consume as less power as possible when nobody needs them, only activate when someone needs them and then drop back to using as less power as possible as fast as possible. I'm not expert enough how to get that done using Docker. Debian just because i have the most experience with that linux OS. Curent pi-hole/samba/navidrome server powers down the 2.5" sata drive and goes to cpu C6/8 state pretty fast, but is avaiable within 2 seconds when needed. Don't have much time to tinker a lot. Sometimes stuff just has to work.<p>Using Immich without Docker also seems complicated.
Whenever redis, mysql or postgres rear their head it raises all sorts of ugly questions like do you let apps share databases, how do you do backups, etc.<p>For apps that will have 1-3 users and a few hits a day a sqlite file is far less operational overhead and can be backed up with all of the other files that app has.
A big reason I chose Rust and Sqlite for my project was that end users could just run the small binary and be done with it. <a href="https://github.com/sergiotapia/joyscroller" rel="nofollow">https://github.com/sergiotapia/joyscroller</a><p>I think you can go very very far with this kind of setup especially if it's just for you.
Same here, just give me a compose file and lets go!
You're not alone!
Good article. I have many of the same services in my setup.<p>Self-hosting email fully is tedious/unnecessary, but what you can do is mirror your various inboxes (Gmail, iCloud, proton, non-corporate outlook) with mbsync and use roundcube or some other frontend to view emails and compose.<p>I use this to easily access mail from different services, and I can also send from any of them.<p>I also have a seperate service that watches the mail directory and sends a ntfy.sh notification for new emails.<p>It’s a bit complicated cause theres so many services but here are the quadlets:
<a href="https://github.com/ebrahim37/infra-template/tree/main/homelab/services/rootless/email" rel="nofollow">https://github.com/ebrahim37/infra-template/tree/main/homela...</a><p>I implemented this about a month ago because the iphone Mail app was increasingly buggy.
> Self-hosting email fully is tedious/unnecessary<p>Certainly not unnecessary if you care about privacy and Google not reading your mail.<p>Is it tedious? Not really for someone with a basic command of Linux and computer networking. Even in the pre-AI days, it only took me an afternoon to set up Postfix/Dovecot, and a few more days to refine various aspects of the setup and to write a bash script that can rebuild the whole thing on a new machine. There is basically no ongoing maintenance at all. The Dovecot syntax changed in Debian 13, and Claude translated the old config file in less than a minute. If you are willing to use a Dockerized solution, it's even less work, but I personally like to run this kind of thing bare metal and control every aspect of the setup.
"Self-hosting email fully is tedious/unnecessary"<p>If you IT, why do you particularly consider self hosting email as tedious?
I self-host e-mail, because I am stubborn - I have done it for 20 years. I would not recommend anyone do it if they aren't already, or if they well-and-truly want to be on call for their homelab.<p>So as not to reiterate, here's an HN comment where I described the most recent trial I endured with it: <a href="https://news.ycombinator.com/item?id=46297991">https://news.ycombinator.com/item?id=46297991</a><p>In the last 20 years, I've also run into problems like:<p>* My brand-new ISP wouldn't allow TCP port 25 inbound, and wouldn't relent. I had to go back to the old ISP.<p>* SPF became mandatory at Gmail, but I didn't get the memo, and Google started bouncing my mail one random day.<p>* My residential IP ended up on a "policy blacklist", one it could never get off because it's blacklisted by virtue of being a residential IP, not that it did something bad.
I host my email, my isp blocked mail ports too, my simple and reliant solution is to use 2 quite cheap VPS on different zones as front email servers, with haproxy and postfix forwarding, took some time to setup but works great and not dependent on isp rules.
I've never tried to set it up even though I know it can easily be done with things like mailcow.<p>The downside is never really knowing if your email reached your recipient (maybe it got blocked by Gmail because of your IP, maybe some other reason). If I use Gmail/proton etc, then I can be pretty sure that the other person got my email.
You'll know from bounced email and logs, which you should have monitoring setup on.<p>It's not trivial to run your own email stack, but it's not hard either. It's more tedious than anything. Once it's up and running, it's low-maintenance. And it's fairly trivial to avoid spam. I get vastly more spam in my Gmail than I do on my self-hosted domains.<p>The biggest challenge with self-hosted email is getting an IP address that's not blocked or carrying low reputation. Most VPS IPs from e.g. Digital Ocean, Linode, Hetzner, AWS, etc. are going to get blocked from Google (the strictest) and Yahoo, Hotmail/Live/MS, etc. Cloud providers often block incoming and outgoing mail ports, too. I have a Digital Ocean VPS and my account is old enough to be grandfathered into the old policy, which means my email ports aren't blocked. I used to have no trouble sending email anywhere from my VPS, until I downsized it and got stuck with an IP in a bad reputation CIDR. Now I use smtp2go for relaying outbound mail, but still handle all inbound mail. 10/10 score on mail-tester.com, and I never have any problems or need to do any maintenance.
A few major vendors (I want to say Microsoft was among them) were infamous for silently dropping email without bounce backs. They'd perform then whole protocol sequence as if they accepted the email, then simply never actually put it in that user's inbox or even spam folder.
People should read the parent post and stop spreading FUD about email. The only part that isn't easy is the IP requirement. If you don't have a fixed public IP, preferably v4, then self-hosting email is out of reach, but so is hosting other things like game servers. It's the main cost of self-hosting, and one that isn't big relative to all the benefits. Privacy is the biggest one I think, and so is the ability to create unlimited aliases, one for each company/website.
Dynamic DNS clients are a thing. I host a bunch of stuff on my domain, the only issues I have are related to having a local address when I'm at home. I don't host game servers much, but I hosted terraria (tshock) for few a few years.
Because it's not about setting it up, it's about not getting outgoing mail perceived as spam by someone. Borderline impossible without scale. Even doing everything correct is not enough.
You can do this with Proton?? How does it handle decryption/encryption, etc?<p>Would absolutely love to do this, proton frontend annoys me at times.
I actually don't use protonmail but you should be able to access your mail with IMAP (both iCloud and Gmail support it so proton should as well).<p>If by encryption you mean PGP etc, that's handled in roundcube I believe.<p>mbsync mirrors your protonmail inbox to disk, dovecot shares that mail folder through IMAP, and roundcube or some other frontend connects to dovecot.<p>For gmail/icloud IMAP, you can't use your regular account password, you have to create an "app password" and use that password for mbsync.
Yeah they have integrated end to end encryption, this made me go digging, and I found they have a bridge app that handles it.<p><a href="https://proton.me/support/bridge-for-linux" rel="nofollow">https://proton.me/support/bridge-for-linux</a><p>Excited to set this up, I had assumed it wasn't a possibility.
I'm mostly consume proton via proton-bridge, which is running in a dedicated VM. Then all my IMAP clients connect to that single instance.<p>Also, for email sending I use smtp2go free tier - primarily because I use random emails on my own domains to see who's leaking, and I don't want to set them up separately proton-side.<p>In that setup, proton itself is kinda unnecessary - I keep that path mostly as an insurance, just in case of acatastrophic homelab failure.
I am generally not onboard with the “all you need is SQLite” articles that pop up on HN regularly.<p>But I recently looked into self hosting and several things each wanted their own Postgres container. Immich wants a Postgres and a redis instance.<p>If you’re building apps targeted at self hosters, SQLite is really all you need.
I would rather keep things on postgres but everything wanting its own postgres container is really annoying. Postgres already has support for multiple databases, users, and access controls. I would personally prefer to just set up one postgres instance with proper backups and have everything run against that, unfortunately some self-hosting projects have fairly poor support for that.
I prefer a separate DB instance for each app. Each app is on a separate ZFS filesystem so I can snapshot/backup the app data and DB together as one.<p>A possible restore only affects that app. Plus I can guarantee the files and DB were snapshotted at the same moment this way.<p>It may just be a way for me to avoid managing the DB.
You could sometimes get there. The problem is in an effort to simplify the getting-started with postgres (or other databases) most projects assume they would also automate the management of that postgres instance.<p>The getting started would be a lot different if it first instructed you to install postgres, run a script or create a database and users and configure access controls. Also certain things become easier if you assume you can also manage the postgres instance, like on an upgrade, maybe you just create a completely new database and drop the old one, or isolate tenants within one application into different databases, etc.<p>In general, I agree with OP that sqlite is all you need for selfhosted applications (most of the time at least)
That sounds like a mess. What do you do when the open source projects you're running need different versions of postgres?
That's a large part of why I lean more and more into just preferring sqlite for applications.<p>Even in work environments for apps that likely won't have thousands of simultaneous users. Modern SSD drives are so fast that so many apps don't need the advanced features of a full blown rdbms. And I think options like Turso and Cloudflare D1 fill the in between as a hosted option.<p>I do wish that sqlite had a couple more native types, it works really well as it stands.
Immich uses postgres because it relies on VectorChord for smart search.<p>It's what powers the ability to search your photos for "a dog on a beach".<p>It's also a fairly sensible decision.
> several things each wanted their own Postgres container. Immich wants a Postgres and a redis instance.<p>Those things are dirt cheap. A Postgres container on my machine uses 200MB of memory. Redis is nearly free. It's a small price to pay to not have services cross paths with each other and mucking everything up.
SQLite has a bunch of cool stuff happening around it right now too like Turso and Litestream.
How do backups work with SQLite? Postgres is nice in that it can run them live without any corruption issues for writes in the middle of the backup.
My experience with this is that all of the projects that are worthwhile, continue to grow and then at some point some kind of bottleneck is hit. Migrations become slow or overly complicated, lookups start taking forever, etc and the app just starts to slowly become unusable the more you try to use it.<p>You end up in a situation where you are following some complex guide (hopefully written by the actual developer) where you make a huge backup, have to tear everything down, and then hope the migration from SQLite or MariaDB doesn't hit any issues. Postgres is heavier but at the scales of self hosting it should not matter on any modern system. Multiple docker containers even on a Pi isn't something you have to worry about. Solutions like Immich are usually run on a NAS where there would never be an issue
> . I do have a 4k TV, but it’s not extremely large, and while I can tell the difference in resolution between SD and HD, for almost everything, 720p seems to be good enough for me.<p>I am actually jealous of you, I can tell the difference between 4k low bitrate and 4k high bitrate, 1080p and 720p are like mud to my eyes.
> I can tell the difference between 4k low bitrate and 4k high bitrate, 1080p and 720p are like mud to my eyes<p>The more interesting question is whether you can tell the difference between 720p and 4K at the <i>same</i> bitrate. Dividing that bitrate across more pixels usually results in a worse image at the higher resolution.<p>High-bitrate 720p generally looks <i>better</i> than low-bitrate 4K - it's not uncommon to find that a DVD looks better than the Netflix stream of the same content.
This stuff is so complicated and insane, that a 720p TV version from a decade ago can look better than a modern 4K Blu-ray release.<p>Case in point: Ghost in the Shell (1995)<p><a href="http://comp.judging.it/index.php?seriesid=Koukaku%20Kidoutai&comparisonid=4K-1" rel="nofollow">http://comp.judging.it/index.php?seriesid=Koukaku%20Kidoutai...</a><p>Old TV version: <a href="http://comp.judging.it/content/Koukaku%20Kidoutai/4K-1/Judgment%20new/%5BJudgment%5D%20Ghost%20in%20the%20Shell%20%5B1CE4C716%5D047762.png" rel="nofollow">http://comp.judging.it/content/Koukaku%20Kidoutai/4K-1/Judgm...</a><p>New 4K BD: <a href="http://comp.judging.it/content/Koukaku%20Kidoutai/4K-1/4K%20UHD%20BD/gits_uhd_025045.png" rel="nofollow">http://comp.judging.it/content/Koukaku%20Kidoutai/4K-1/4K%20...</a>
I got a VHS player and a load of free tapes. It hasn't changed since I was young (well they've degraded a little), so if I enjoyed it then I can enjoy it as well now. In some things I try to resist a little the encroachment of higher standards.<p>But not in everything. I can't drink a cheap scotch.
The difference between a 4K bluray encode by pirates who care, and a 4K WEB-DL from Netflix and co, is simply staggering.
Hey, great write-up and thanks for Snapcast. Can’t wait to give it a try once I get home.
Running all these services without a declarative/standard way of deployment, ie docker compose or k3s/k8s is a bit mind boggling to me.<p>I self host on a bunch of different hardware, OSes, providers. I want the least fiddling as possible.
It's been really interesting seeing the divide in the comments! I have a completely different philosophy from the OP on how to self host haha, and it comes from not wanting to fiddle with my server all the time! But they say our ci/cd is fiddly! The whole point of it is to NOT be fiddly! People gotta start figuring out how things work instead of throwing spaghetti at the wall.
In my experience, when something involves words like "declarative", "deployment", "docker", "k8s", that's a sign that it will actually involve more fiddling rather than less. But that's just me.
I'm running like 10 services on a VPS. I'm a professional software engineer. Do you think I want to ssh into my server and find a bunch of single binaries all over the place to run them? What if a service stops, how do you automatically restart it? How would you automate creation of a qa environment when you create a PR on github so that you can test your changes before they go to prod? Gonna ssh into the server and pull down your repo and build the app and run it?<p>It takes like a day to figure out docker compose and like a week to figure out k8s at a level where you can get things done. Honestly, you can get something working now with LLMs and have them help you understand it in probably less time.<p>Of course I want a declarative deployment for my complex home server. Do you run like 1 app on your home server? It's not "fiddling" if you know how these things actually work.<p>I imagine it's more fiddly to figure out how to wire up all your individual services to Uptime Kuma and Homepage. You don't even need Uptime Kuma with docker compose, instead you just set a container restart policy and have a healthcheck endpoint.
What benefit does k8s introduce in a home server? I currently have about a dozen services, but only use docker compose and a bit of shell scripting.
> Do you run like 1 app on your home server?<p>I could just as well ask you why you need to be running 10 services at home.<p>> I'm a professional software engineer.<p>Good for you, mate.<p>> Do you think I want to ssh into my server<p>Clearly you don't, so why even make this a point? No one told you that you have to do it this way.<p>> What if a service stops, how do you automatically restart it?<p>It's called systemd, launchd, OpenRC, or any number of various mechanisms used to manage services and restart them.<p>> How would you automate creation of a qa environment when you create a PR on github so that you can test your changes before they go to prod?<p>No doubt, containers can be beneficial when deploying services exposed to the public. That doesn't mean a layer of complexity isn't added on top that one could consider "fiddling" when applied to the context of self-hosting.<p>I really hope you aren't orchestrating a QA environment just for software you run at home, unless that's truly your passion. I assume you were referring to what you do in your day job.<p>> Gonna ssh into the server and pull down your repo and build the app and run it?<p>As if all server software can only be installed that way without Docker containers. Even when that is the way, you're speaking like running a few commands is akin to landing astronauts on the Moon.<p>> It takes like a day to figure out docker compose and like a week to figure out k8s at a level where you can get things done.<p>Or I can just install the thing I want, make sure it binds to whatever port I need it to, and not need to think about docker-compose.yml.<p>> Of course I want a declarative deployment for my complex home server.<p>Then go ahead and do that. No one's stopping you, mate. I prefer to avoid that as much as I can because it's another thing to learn that, in all the years I've used Docker, rarely provided me that much benefit. I have zero interest in understanding the nuances of docker-compose.yml. (and yes, I am very familiar with it)<p>> It's not "fiddling" if you know how these things actually work.<p>Whoa, buddy. We already know you're a professional software engineer. No need to be punching down.<p>> You don't even need Uptime Kuma with docker compose,<p>You don't even need either of those things.<p>> instead you just set a container restart policy and have a healthcheck endpoint.<p>That's cool man. I don't care about any of that. Again, from my perspective, those are things I consider a waste of time for self-hosting. Especially the health check thing. More power to you if that's your style, but I have other priorities in life, and I'm not wrong for considering all these added technologies to result in more fiddling.
That was the case 10 years ago, maybe even 5. But nowadays the API is mature enough, tooling is good enough and every LLM out there know about them enough to not be a problem anymore.
Noone builds anything without a vision of what it will look like. Blueprints are declarative specs. Why bother with instructions if you dont need to?<p>Many projects, like Immich, only provide docs for docker images/compose deployment.
Pets are OK sometimes! They do need care and feeding, though; some of us don't see that as chores, instead delightful hobbies. I can definitely see the perspective of "there are better things to do", especially if you don't like those things.
Pets are totally fine if you consistency/reliability arent that important. Homelabs can be fun ;)
> if consistency/reliability aren't that important<p>I've administered linux systems with uptime longer than docker has existed. consistency/reliability is perfectly achievable with without modern containerisation
I mean I'm not self hosting my password manager like this guy, but my self hosted services have better uptime than github actions
28 is a lot of pets.
There is something satisfying in handling a home server as cattle though!<p>I don't do it because I don't care; I do it because it is super satisfying when it has been boringly running for weeks without me doing anything to keep it up beyond paying the electricity bill, upgrades are extremely predictable, etc.<p>Boredom is a feature :D
Do you not consider systemd services to be declarative/standard?
I agree. But you could easily automate the systemd/podman based setup the OP has using ansible, if you wanted a declarative approach using OP's tools.<p>For my part, my home server is a single compose file :shrug:
With NixOS you get the declarative approach.
Especially now when you can snap your fingers and get a semi responsible codified version. Heck just do what you want to them ask the LLM to port your work to something marginally better than a totally hand cobbled bucket of bits system.
midwit meme where caveman & wizard are editing files and midwit man is writing terraforms.
Talk is cheap, show us the code ;-).<p>Seriously, I would be interested in your setup files. Similarly to you, I bought a Beelink 16GB mini-pc last year for self-hosting immich, paperless-ngx and jellyfin. I tried to use podman, but couldn't figure out how to set the mentioned services up with it (on debian 13). I had no experience with it, not much time to tinker (two small kids) and installation manuals and tutorials usually focus on docker compose.<p>I guess with AI now it would be trivial, but I'd prefer getting a blueprint already known to work in practice and actually understand the why and how.<p>So please, write a blog post explaining the technical side of your setup.
Not the author of the blog, but these days self-hosting with NixOS is breeze, especially because of the AI that helps with missing documentation. Everything is fully reproducible, revertable and maintainable. You can use nix eval to check if syntax is correct before even deploying anything. And if the actual build files, changes are not applied.<p>Under the hood, with NixOS, you get the authors setup as described. I run some of the mentioned services as described, under NixOS, just defined by .nix files.
Thanks. I watched videos on NixOS recently, it sounds great. I anyway abandoned the very appealing thought of using it. The reasons are already in my comment: <i>"not much time to tinker (two small kids)"</i> and <i>"I guess with AI now it would be trivial, but I'd prefer getting a blueprint already known to work in practice and actually understand the why and how."</i>.<p>I think this makes me incompatible with NixOS. Either I would need to spend the time to learn it, or I wouldn't understand much of what's going on. Maybe when the kids are older.
Just a note on OP's hardware choice. I used to have a Beelink with the N100 CPU. That thing overheated and reboot intermittently after couple months of usage. I suspected they overclocked the CPU to look good in benchmarks. I tried to underclock in the BIOS. The temperatures dropped but the setting was reverted after the next power down. Nothing in the BIOS stuck. Their support was worse than useless. The machine ended up as spare parts.<p>You are better off getting the used business mini-PC from HP/Dell/Leveno/Asus. They have better specs and run great.
This. Or just buy an N100 motherboard (Asrock makes one) and put it in a standard ATX case with a proper cooler, power supply, and enough space for expansion cards and hard drives etc. Maybe you will want a GPU in the future, even if it is unncessary now. Small nonstandard form factors always come back to bite you sooner or later. It's better not to cut corners and build something modular.
Most likely something wrong with the cooler, maybe it's not making proper contact with the CPU. Should be repairable if you give it a try, but yes, the used thin clients are higher quality.
I did clean the thermal paste between the CPU and the heat sink, and re-applied new thermal gel. That didn't help. It was the raised voltage preset in the BIOS. If I lowered the voltage, the temperature stayed low and it would run fine, until the next power down reverting the BIOS changes. The box was too small, the heat sink was too cheap, and the fan was too lacking to be a proper overclocking setup. It would run fine out of the box for couple months until the CPU and hardware worn out due to stress and heat.
Hmm that's too bad. I have bought a few of those (different models) over the years to use as HTPCs for different family TVs. Only one had cooling issues (bad fan bearings). I avoid the extra small ones and just get the NUC-like ones.
New CMOS battery might’ve fixed the BIOS resets
I have the opposite experience. Plex, nextcloud, minecraft servers, and ~10 websites are all hosted on a Beelink N100. It stays cool and quiet.
Just another data point, I got a Beelink S13 Pro N150 running similar things as OP and haven't had any issues. I made changes in BIOS (set "Chipset > PCH-IO > State After G3" to S0 so it boots up again after regaining power) and they are sticking for me.
Same here, N150, no issues. Don't think I've made any changes to the BIOS.<p>Fans spin a lot near-constantly though, I think it is the on board M.2 SSD that is hot, I need to get around to adding a thermal pad or something one of these days.
I have been building a private cloud for small businesses for last few months. Like the OP, I'm also behind CGNAT so I have to use a VPS to expose my services.<p>For running services, Incus, particularly IncusOS has been godsend. Clustering, containers, vm, networking, storage, monitoring; so much is streamlined. I put an OpenWRT router(using a Pi 4) in front as the internet gateway that handles DNS and Wireguard with the VPS. For configuration management, I'm using justfile and a bunch of shell scripts.
Self hosting is great. The access part is hard.<p>Pangolin was the missing piece I needed, to not expose my servers to the internet and easily have my services publicly accessible with built in auth.<p>Tailscale kind of worked, but it was a hassle needing the client on mobile device and it being a VPN.<p>With vibe coding, I have more of my own apps running than pre-built.
Wireguard is relatively simple. The VPN on my phone automatically connects when I disconnect from my home wifi, then it's like I'm at home.
Pfsense and maybe openwrt allow split horizon DNS that allows Wireguard tunnels to work seamlessly whether you’re on or off your home network. Took me years to figure out but it’s what I use now
Not requiring friends/family to use a client to access my services is so much simpler.<p>I also use Adguard which act a VPN to filter traffic. I dont feel like messing around to get both working.
I use Brave and never had a kneed for AdGuard, specifically because of how it uses VPN. Then I use Wireguard to seamlessly access my home setup. Honestly, I choose security and very little admin anxiety over random ads in other, non-browser apps or sites.
That's a cool feature. Do you run Android? How did you set this up?
I'm not the user you replied to, but I run a similar set-up using "WG Tunnel," which is available on F-Droid and the Play Store.<p>You can configure a WireGuard tunnel to auto-connect when you are not on a set list of "trusted networks."
Why the downvotes? Genuinely curious, I do this and don’t know of a downside after setup (with help from {AGENT})
Cloudflare zero trust also works for this, nice if you already use them for DNS and proxy. You install cloudflared tunnel, expose select ports as a service in zero trust, then whitelist email addresses that can log in to zero trust and when they a one time password to log in when they try it. When logged in you get a page showing the services available as clickable links.<p>Vibe coded a python script to configure Cloudflare, it just looks on docker annotations so I can select which containers to expose.
What tools did you create yourself?
Hello! Dawarich needs not "at least" but precisely four containers to run: the app itself, background jobs process, database and redis for cache and background jobs queues. I also have some ideas on how to reduce number of containers in the future :)
I bought a used 8th gen intel NUC a few weeks ago, and was surprised by what I got for the price.<p>110€ for 8GB of RAM, an m.2 slot with a 240GB SSD and a 7781 Passmark multi-core score i5-8259U with a GPU usable for stuff like frigate but also QuickSync transcoding.<p>Plus a second DIMM slot to upgrade to 16GB RAM for another 30€. Plus a SATA Port.
Thunderbolt. WiFi/Bluetooth, and ~4.7W Idle power consumption.<p>For all the "HW has gotten so expensive", that.. kinda isn't? I mean it's still 8 year old used hardware, but it's also perfectly fine still performance-wise. And it's just some x86 thing, so it runs mainline linux.<p>For reference, the N100 mentioned in the article has a passmark multi-core score of 5305. Granted, it also has a TDP of 6W, but still.
Have you measured how much energy it uses once you have your frigate continuously recording and go2rtc multiplexing all the streams
I don't use it for that. I just put the option there for the context of the thread.<p>In my setup, Frigate runs on some 6th gen Intel desktop chip with a coral accelerator that regularly dies, however, on this old mainboard, it does not take the whole USB controller with it (contrary to the 9th gen intel host I've used previously).<p>I couldn't tell you how much of that system's power draw is frigate as it does a lot of stuff beyond just that.
Just upgraded from 7th gen NUC to a new bee link with the new intel Core 3 304, 16GB ram, 500GB ssd for $469 (EU price), my NUC was struggling with jellyfin and some 4k content. The old NUC cost $410 in todays $ without memory and ssd, so maybe $550-580 with those included.
I'd love to NOT expose my services to the internet, but I often share stuff from opencloud/seafile or immich. If somebody has a convinient (for non-technical people I share stuff with) solution, please share because as the author of the post said, with AI assisted hacking now I'm really concerned. I hope that dockploy is secured poperly.
Shameless plug...<p>MatterMost was actually a great file sharing platform for our business. But they was not true open-source and removed features we needed like SSO.<p>So instead we vibe-coded a MatterMost Slack alternative which we have been running on the internet fine for months now <a href="https://intellistream-datahub.github.io/intellistream-chat/" rel="nofollow">https://intellistream-datahub.github.io/intellistream-chat/</a> Its super convenient to share files on. And it comes with built-in secret sharing like YoPass. We occasionally implement new features and fix bugs we discover.<p>Its one jar file, and supports Vault/OpenBao and requires Keycloak and PostgreSQL. Lucene is embedded.
I'm puzzled that OP seems stumped on syncing keepass when they're already using syncthing. I've been using keepass+syncthing for years, and I've never had any issues.
I've been using Syncthing + KeePass for a few no this now after leaving Bitwarden. I do find that I often get sync conflicts, though; I think it's because I will open Keepass on my computer, then on my phone while forgetting to close the one on the computer, but I'm not sure.<p>any suggestions?
I considered KeePass+ Synching but tended to run into the same issues as with Owntracks - Android is hostile to always on background apps. Then when it came time to onboard my spouse, KeePass wasn't an option.
Both Android and iOS have issues with syncthing here for my obsidian syncing and it drives me nuts.<p>I don't understand how people keep recommending Syncthing like it's a magical solution. It is not, it fails constantly, has weird, unfixed upstream bugs if you use encryption. It's definitely a maintenance burden as well.
Do you have a use case to share some credentials with family etc.? How do you do that?
For people interested in a minimalist setup, Tailscale + Samba can go very far. I personally use Foobar2000 and VLC on the client side.<p>It’s not pretty nor great with bad connections, but there is basically no maintenance.
This, but plain Wireguard instead of Tailscale. This assumes you have a public IP. But you can't do true self-hosting without one.
Tailscale IS Wireguard. With all the reasonable management added. You can selfhost the control part via Headscale. Plain Wireguard can be a hassle for most - that bore Netbird, WG-Easy, Netmaker... out of those Tailscale got it the most right.
foobar's rock solid. I have a portable copy on a mounted NAS share and it's great for transcoding and being an ad hoc music player while setting up new computers
Just FYI you can get a M1 Macbook Air with a broken or cracked screen for about $250 on eBay. It's a headless device at that point but it has a keyboard and touchpad.<p>I use it for my Home Assistant setup and more. It still has headroom. No fan, very low power consumption. Not true Linux container stuff but pretty much everything works on it in this area.
My go-to for low power consumption is a Chromebook running some vanilla flavor of Linux. I have some HP units that will run for almost a day on battery with the lid closed. $25<$250.
How do they do with staying on and then restarting everything after power off? Can they automatically repower?<p>I don't have my embedded macbook fully configured but gemini says I can get it to repower itself.<p>By repower I mean if the power goes out and then returns the machine needs to power on and boot.<p>I have a couple of older Chromebooks I use in rando locations (basement, shop, car, rv, boat etc). And they are great for that casual scene-specific use. Very much recommend and amazing what you can get for sub $50 easily.<p>One can create a gmail account like my-robots-73489@gmail.com to sync everything too without touching your main google account. Very handy.<p>[edit: one thing about the M1 is that it has native h.264 h.265 and prores hardware encoder decoders if you are doing video intake of multiple streams]
yeah, they make a great homelab, especially with a fast external drive or 4
Maybe I skimmed your blog too fast, but I'm surprised I didn't see a dns ad blocker. Thats the first thing I'm seting up when I have a more permanent.
Dns4eu is free, has adblocking, and you can deploy it right now.
I run Adguard on my router, not on my server. I did write a subsequent post about the rest of the stuff I run on my router and my Proxmox cluster, but forgot to mention Adguard.
That should be probably in the router.
Never tried it myself but I’d be afraid of stuff being randomly broken. Eg at some point pi-hole made YouTube history not work.
That's my experience as well. Also need to intentionally disable it e.g. when using Cashback sites. And you can't easily do that with a single click.<p>Not to mention it only can do DNS blocking, so you still need an in browser AdBlock for more advanced stuff.<p>I use Brave and see no reason why would anyone chose differently. Maybe if they use freemium apps on their phones with a ton of ads?
Wait, Usenet downloads is still a thing? Thought torrents have taken over for decades.
Shoutout to another happy N100 miniPC user! I have two myself from before the RAMpocalypse, with one doing standard Proxmox + VMs work in a similar vein to ESXi, and the other straight Debian + Docker for more container hands-on time. Just the perfect little homelab boxes at the perfect price point (~$180US) before things got insane.<p>My stack is currently a mix of usual end user services (Jellyfin, FreshRSS) and identity infra, and it chugs along brilliantly without issue. I’m fairly certain that I could leave it running to the heat death of the universe if I built lifecycle management into my backup scripts.
They are absolutely great except:
- you need a beefier GPU for transcoding. It heats up fast under heavy load and most builds are fanless.
- you start to have NAS requirements / +2 hard drives, RAID etc. There are a few chinese motherboards/minipc options now that do 6 SATAs or 4 NVMEs (via PCIE 3.0 x1) but you will be quickly constrained.<p>It is the perfect gateway drug setup though.
To each their own but running that much stuff without proxmox would drive me insane. Especially the native stuff straight on the machine.
I'm currently building a Plex competitor, minus the rug pull. I'll be opening a beta soon, and I'm wondering what the interest is from the hn crowd.<p>Basically: easy self hosting, includes a discovery server you can run on your VPS, all the usual stuff you expect from this kind of software, and free forever.<p>The only thing I'd charge for is my own discovery service which gives you convenience because you don't have to host your own. Any feature that can be hosted yourself remains free forever.
What is the benefit compared to Jellyfin?
Could give it a try, currently happy with Jellyfin. What clients will you support?
Heya, nice read. I’m wondering how you managed to get LetsEncrypt certs minted when your caddy isn’t exposed to the public internet. Doesn’t LetsEncrypt need to make a request back as part of the handshake to mint/refresh the certificate?<p>Would love to know as I wanted to do the same in the past and ended up self signing certs.
I still don't think the benefits of self-hosting is worth the trouble unless you are doing it as some sort of an hobby.
My *arr stack is so rock solid and hands-off that the only downside is that I get 'inactivity' warnings from certain websites that the *arr stack uses to get 'stuff' done because they don't count API access as activity.
With the recent change in Bitwarden's license, not sure for how long they will continue to be self hosting friendly.<p>I am also using Vikunja instead of trello.<p>Tbh in general I am fine if the self hosted app uses postgres or a container Db instead of sqlite only.
I don't know why so many people host personal forgejo / gitea instances. You only really ever need a server with ssh access (and cgit if you really want a web interface).
Super interesting article! I love how you found a solution for almost every daily app!!<p>I also run into the “what should I watch next?” problem, as well as the lack of a Netflix-style recommendation experience in Jellyfin. That’s why I forked Wholphin (huge thanks to the original project!) and added TMDB watchlist and popular-list syncing, all connected to Sonarr and Radarr with direct possibility to add movie in list.<p>Feel free to take a look: <a href="https://github.com/romainio/JellyVault" rel="nofollow">https://github.com/romainio/JellyVault</a>
As someone that loves docker compose and doesn't mind services with the benefits of software better than sqlite, I guess I'm the minority here. I wish more apps were based on postgres. I also have never had a problem with my publicly exposed applications. Not once in 8 years.
As long as you can use one instance of Postgresql. There's another comment thread here[1] about each thing wanting its own Postgresql container.<p>[1] <a href="https://news.ycombinator.com/item?id=50111944">https://news.ycombinator.com/item?id=50111944</a>
Nah I thought their setup was pretty ridiculous and seemed hard to maintain. I run all my stuff via docker compose and am very happy with it. I don't understand the comments praising single go binaries, which I've actually seen reach out to the docker engine api and start containers for their dependencies
8 years to now may not be indicative of what's to come.<p>People with script-kiddie level skills now have access to nation-state level attack expertise via LLM.
I'm a big fan of Tailscale
Alternative for music:<p>owntone + shairport-sync<p>Owntone holds your collection on the sever and can stream to airport, airport2, dlna.<p>Shairport-sync turns a raspberry pi zero 2w, or orange pi zero 2w into an airport {1,2} speaker. Or use a (super cheap) esp32 airport 2 from aliexpress.<p>Can sync every room in the house with owntone OR "I want my phone or laptop's sound to come out of the speakers in this room"<p>Owntone has access to your paid spotify account if you want that. Can stream to your phone with http (remotely with wireguard vpn). Also has mpd controls if you want those and can use apple remote app on your phone if you like that.<p>Owntone, pihole and wireguard is reason enough alone to put an old laptop into service as a home server.
I recently bought a Lenovo Mini PC (01Q8X10) for under £300 that has a Snapdragon X1 CPU (and 32GB LPDDR5 RAM!) and it's turning out to be perfect for self-hosting running the newly released WSL Containers on Windows 11 with WSL 3 (it doesn't fully support Linux yet). Podman had some issues with WSL 3 that they're still releasing fixes for, but it's all working with that too.
For the self hosters: docker containers or not?<p>They are so easy / portable but perhaps systemd is a better option as the author suggests.
Podman + systemd is how I run production workloads at work.<p>For us it's the perfect balance between simplicity, observability (Beszel) and reliability. Not the right tool if you have dynamic workloads but definitely the right tool for boring and predictable workloads.<p>At home I run K3S, it's awesome. It also breaks a lot and does add a whole bunch of complexity that I would only recommend if you enjoy tinkering and fixing things.
I second this, it's great. Commonly called "Quadlets".<p>I also use BGP advertised pod networks so each pod gets it's own IP address that's directly routable (l3 ipvlan) with the rest of my network (hint, don't use 100.64.0.0/10 for that if you use tailscale), so I don't bother with NAT on the host itself or port mapping or port conflicts. It also makes caddy in front of it super easy, barely an inconvenience.
I personally use NixOS and a mix of systemd services and Quadlet-Nix for the few containers that have too many dependencies and moving parts. Works well.
My server is running on NixOS and I went with systemd containers - really happy with my setup. It was not at all difficult to set it up with Claude
I prefer docker containers (on proxmox VMs), but that could just be the familiarity of a few years experience talking. It does add some distance from 'bare metal' but it also makes backup/restore, and therefore portability, quite simple. I backup both the VMs and the 'persistent' container data that I always create dedicated volumes for, so I have a couple of different avenues and granularity for restoring.<p>There's nothing else out there, that I know of, that offers improvements on any kind of scale that it would be worth my migrating to.<p>I do hear good things about podman, so if I was starting from scratch I'd look into that. I have one podman instance running UnifiOS, but that's only because there's no official docker compose from Ubiquiti (and maybe that's telling in itself). Podman feels more opaque to me than docker, but I have years under docker and essentially zero under podman.
Currently testing out FreeBSD jails, but with OCI images and Podman :)<p><a href="https://daemonless.io" rel="nofollow">https://daemonless.io</a><p>BastilleBSD is another great way to run FreeBSD+jails using their templates<p><a href="https://bastillebsd.org/projects/bastillebsd/" rel="nofollow">https://bastillebsd.org/projects/bastillebsd/</a><p><a href="https://github.com/BastilleBSD/templates" rel="nofollow">https://github.com/BastilleBSD/templates</a>
Container manager on Synology. Don't have much choice. Some stuff can run native but it's easier to run containers.<p>The big issue with Synology is the really crappy db logs driver they use. If a container has been running for a while it takes an age to see the logs via the Web UI.<p>There is a solution though: <a href="https://github.com/telnetdoogie-labs/synology-docker" rel="nofollow">https://github.com/telnetdoogie-labs/synology-docker</a>
There are really easy to user docker app managers out there. The author says 'I already use systemd'. I mean, I guess I'm using systemd, but really I'm using e.g. runtipi with an app store, web-based config and logging, and a super easy app template. I can point claude at any project with a docker release and in a couple minutes have it show up in my app store to install, run, simple data backups, etc.
Personally I use docker with portainer to handle the stacks/containers, have done for many years. I like it.
Yes. NixOS running Podman containers is where I ended up after trying almost everything :)
Docker containers are fine. I've moved between 5 NAS' over the years and docker has enabled it to be seemless.<p>rsync data directories. docker compose up. Done.<p>On the consumer or even prosumer nas products which have a semi-locked down system (ie Truenas/qnap/Synology). Technically you have root but as soon as you update the OS all/most of the changes end up being broken. Yes you could probably do something and deal with it. But personally I've spent too long babysitting it on the first and second nas that I no longer care.
For me, I say it depends on the service. I use Coolify for docker apps usually smaller apps, and LXC when docker won't cut it for whatever reason.
Yes, especially if you running a multi-node setup. I'm still running on HashiCorp Nomad.
Why not have your cake and eat it too with quadlets?
Quadlets rule, I have tons of them configured for my professional and hobby/self-hosting services. Super convenient, I wish there was something equivalent for my Mac (launchd files just don't cut it).
For several years, Docker with portainer
Most of the time projects provide a ready to use compose file. I use dockge that provides a simple web interface for compose configs, so just paste in the compose file there and run it.
Regarding Immich, you write: "I’ve come up with a solution for sharing albums with family, as well."<p>Could you elaborate on that a bit?
Dont get it but... the starting page says that the blog itself is self-hosted but the article says he only exposes VPN services...?
I have gone down the self-hosted rabbit hole, like many it all started with setting up a pihole on a raspberry pi.<p>I have since gone down the jellyfin + arr stack route. Resource wise the entire stack uses very little. I have Sonarr, Radarr, Prowlarr, Bazarr, FlareSolverr, Jellyseerr, SABnzbd, qBittorrent, Gluetun, qui, Decluttarr, Recyclarr, arr-dashboard all running on my dell optiplex (previously on the raspberry pi).<p>All up this uses about 2GB of RAM and 0.5% CPU.<p>I found it extremely fiddly to set up, understand what each component does and have everything integrated well across all my devices.<p>Without the help of an AI assistant I just wouldn't have had the time to debug every little issue. It took me a good 12 months of tinkering around work hours to have everything stable. However now it runs along fine with very little intervention and I'm able to share it with friends and family.<p>So the resource argument I don't think is valid. However the fiddly mess I do agree with. Although personally I found it fun and rewarding when things finally worked. But I can understand why people would not want do spend all that time on it.
Almost all of these are totally useless to me, except the one he believes is not worth it - email. So many different views.
I've been building and self-hosting my own analytics platform[0] for 13+ years and never had any major issues with it.<p>The advantage is that if I do want a specific feature, I can just add it, and I am never worried about subscription limits or surprise charged, because I host it on a fixed-cost VPS.<p>Things don't really need maintenance and don't really break by themselves, the only time when they can sometimes break is when changing things.<p>You do need to have a proper setup though, for stuff like disk space alerts, knowing the common gotchas of disabling settings that can cause issues, etc.<p>[0]: <a href="https://uxwizz.com" rel="nofollow">https://uxwizz.com</a>
I'd be interested in a list of services he <i>uses</i> that he could self-host but chooses not to. I think the only one he listed was email.
Great write up, thanks for sharing. I run some of the services mentioned, but got some good ideas from the article and the comments.<p>One suggestion in place of MPD is lyron (<a href="https://lyrion.org/" rel="nofollow">https://lyrion.org/</a>). I’ve used MPD for years but recently switched to lyrion and for me, it’s a lot easier and suitable when you have many clients. It’s nice to have a single (nice) UX/UI for my music and all the “speakers” on the local network.
/Aside/<p>Realizing (not just now, btw) that some folks have such a complex setup in their home networks... Make me go :wide_eyed.gif:<p>I dont even know half (most?!) of the apps/services listed there, let alone know why one would use, or even self-host, them..<p>/Aside
The arr stack isn't really resource intensive, but it sure is a case study in poor architecture. You need 10 services that each do a tiny job and often rather poorly. Setting it up by hand would be maddening but it was trivial with Claude.<p>I started working on my own vibecoded service to replace the vast majority of it and got very far in a short amount of time. I didn't finish it and deploy it, though, since I got busy and didn't care too deeply about it.
> I need to think about realistic ways to handle potential server failure without compromising the functionality of my home<p>Sounds like his family is in a pickle if he’s out of town and the server goes down.
Is putting your reverse proxy in a VM not secure enough? What can break out of a sandboxed VMM?<p>I suppose there was a KVM exploit on twitter a while back...
All I see is server and google blah blah! This is called using your device as a node for other apps to be served. You have no chance of knowing what selfhosting is, but good try.
How do people use let’s encrypt on a host that is not accessible from public Internet? Do they manually renew every three months through DNS challenge?
You don't need to do it manually - the DNS challenge works automatically as long as the machine doing the renewing can call out to something to update the DNS entry, and you can use the dns-alias option¹ if your main DNS provider isn't easy to automate this way (this also limits the opportunities for something going wrong with the automatic DNS updates for certs breaking your main DNS at the same time).<p>I'm interested in the new DNS-persist method² which will make this even easier, though with some obvious trade-offs, but despite the announcements in Feb/May suggesting it would be rolled out in Q2, I've heard nothing recently and we are now in Q4.<p>There are various ways to separate managing certs via regular ACME renews and the hosts that actually use the certificates, meaning that hosts which can never see or be touched by the outside network (except via whatever VPN you may use when away yourself) can have ACME certs instead of you setting up your own CA arrangement to serve them. One option if you don't mind all your services having one private key, is to get a wildcard cert on one host (a small server just answering the top level domain.tld for HTTPS based validation, or again one of the DNS options) and have your other services regularly refresh the certificate they use by reading it from there.<p>----<p>[1] Docs for acme.sh: <a href="https://github.com/acmesh-official/acme.sh/wiki/DNS-alias-mode" rel="nofollow">https://github.com/acmesh-official/acme.sh/wiki/DNS-alias-mo...</a> (other tools work just as well with it)<p>[2] <a href="https://letsencrypt.org/2026/02/18/dns-persist-01" rel="nofollow">https://letsencrypt.org/2026/02/18/dns-persist-01</a>
I renew it automatically via DNS. But as I use Cloudflare for DNS, and it doesn't allow to precisely control access to subdomains, I use a separate locked down VM that is only responsible for issuance and makes the resulting certs available for download.
I used to have my server publicly facing, but now I use Caddy with automatic DNS challenges.
You can automatically renew through DNS challenge?
I am surprised author said *arr stack is a mess, it's probably one of the few things I haven't touched much since setting it up and it saves me a ton of time managing new media.
I've looked at *arr before, and while I didn't get the impression it would be flaky once setup every time I've looked into it I've decided that I'd rather keep spending many very small bits of time doing things more manually than have the block of initial time to setup and tweaking to my tastes at the start. I'm actually consuming less TV & films these days than I used to, so I suspect this decision will stick.
Seems like dealing with this is a part time job. I commend it though.
to each their own i guess. i love docker and exposing my services publicly. and fortunately i bought 64gb 3 years ago :)
I forgot all about MPD. MPD is great, I used it long ago, just exposed to the public internet. Nothing bad ever happened.
I always love reading other peoples self hosted stacks. I never heared of SnapCast but it sounds interesting! Will check it out.
People twist themselves into a knot talking about AI as the future. Its more of a bubble waiting to pop. Self hosting is the real disruptive future.<p>The hardware to accomplish most things that we rely on from cloud vendors is absolutely trivial. My own home server is a used super cheap and tiny machine. The hard disks don't even fit in the box and yet it has plenty of CPU and memory to spare.<p>The software is getting easier to configure year after year eventually creeping to the point where elderly people too lost to use a remote will be running this stuff. The real challenge will be solving for easy access to private networks from public spaces across the internet. Right now everybody seems to be centering on vendor solutions like TailScale for this.
I self host (I have a large overlap with the services in TFA), and love it. I will never go back and think that more people should self host (or at least...join small groups of people who designate one person to manage it for a small number of people).<p>And believing that the current AI economy might have a period of rapid devaluation in the near future is pretty reasonable. But, much like the original .com bubble, the idea that AI as a technology will not survive and thrive through such a pop, and become an ever more important part of our future, is a belief that I can't comprehend. Anthropic and OpenAI very well may go belly up. AI as a technology isn't going anywhere.<p>And as much as I'd like to believe that more people may self host more things in the future, self hosting will never, even if it was adopted by literally everyone, become as big a deal as AI, even if AI hit a wall tomorrow and didn't get any better than the current frontier models.
Self hosting has never been easier and I imagine the average person has never been further from trying it. No one will ever get anywhere close to hosting this much sruff
> Self hosting is the real disruptive future.<p>Self-hoster reporting in.<p>I got into it about a year ago. Bought a refurbished old Dell mini PC for 300 bucks and turned it into a home server. Debian + several docker containers.<p>I don't know if this is the future, but it feels disruptive. I think it is amazing that I can run my private home streaming service alongside a bunch of other cool things on old hardware and the experience is in many ways superior to actual services that I am charged to use.
> Jellyfin<p>I wanted to self-host Jellyfin, but hit the problem.
It's bad at the main thing that player should offer - media playback.<p>If you open <a href="https://jellyfin.org/docs/general/clients/codec-support/" rel="nofollow">https://jellyfin.org/docs/general/clients/codec-support/</a> you can see that this doesn't support HDR and that doesn't support H265.
There is Jellyfin Desktop and it breaks when display scaling is over 100% (what year is it?). Some clients have atrocious subtitle support. And then none of them apparently can't properly pace frames so I still see judder as if I'm on 60 Hz screen (24->60 can't be even translation). But my screen can do up to 165 Hz, so that should never be the issue.<p>In then I just went back to playing media files from Samba share with MPC + madVR. No automation or catalogization or anything, but it is supreme at actually displaying things, and that's what it's important to me.
I understand use cases for Jellyfin and selfhost it myself for music (in combination with incredible Finamp[1]), but for movies/shows plain MiniDLNA[2] works like a charm and is accessible from any device.<p>[1]: <a href="https://github.com/finamp-app/finamp" rel="nofollow">https://github.com/finamp-app/finamp</a><p>[2]: <a href="https://minidlna.com/" rel="nofollow">https://minidlna.com/</a>
Fair, I just never use the web clients. I mainly use the Android phone or TV apps, which do support H.265. The Android TV subtitle support seemed ok, I think I did have issues with the Roku app and subtitles.
I used jellyfin-mpv-shim. You select what to play from any ui and it starts playing in mpv, which seems to have excellent support for everything you would want a player to do.
Out of curiosity, do you have any concerns about backups (especially for e.g. VaultWarden and Immich)? I've been pondering running them, but figure that I'd need to back up to The Cloud for me to feel less concerned about losing everything, at which point: what's the point? Curious what you're doing on that front!
I use both Restic and Syncthing. I have considered putting encrypted backups on a cloud blob storage, but my preference would be to set up an offsite backup at a relative's house.
I use restic to create encrypted snapshots on external cloud storage for the data I care about. My media is stored on a nas which covers me for drive failures. If I accidentally delete everything or my house catches fire I can download my personal data again and just redownload the terabytes of media.
After Google Assistant died I immediately installed Home Assistant on my old PC. Not as good, but at least it doesn't take 5 seconds to turn on a light like Gemini
I stared self hosting in 2020 when Raspberry Pis were super cheap (not anymore :( ) and lots of things started becoming available in Docker. Haven't ever considered going back to the cloud. I love taking back full control.
I highly recommend <a href="https://github.com/mother-of-all-self-hosting/mash-playbook" rel="nofollow">https://github.com/mother-of-all-self-hosting/mash-playbook</a> for those interested in secure containerized self hosting.<p>A tremendous number of services are supported<p>non-root user execution, read-only, and cap-drop where possible
About to retire the NUC I used for 10 years running arr stack, jellyfin, home assistant, pi hole and a few more containers. Bought a new bee link mini pc, new Intel CPU, 500gb SSD and 16gb ram for less than $500.
i used to setup a NAS. it was closed few years ago. plan to buy a new one. you are a legend.
[flagged]
[flagged]
[dead]
[flagged]
[dead]
[dead]
The best thing to self host (if you have some international family/friends you trust) is a VPN. Get each household a raspberry pi joined into one vpn. It means you actually get local tv to work (unlike Nord vpn etc). Each pi sits on a guest network so traffic passing through can't touch anything in the house
I have been self hosting for over a decade and recently have seen more people in my circle doing that and I have been helping them.<p>At first it was hard but then i made it into a product. I am working on Tarvis.io which makes self hosting accessible to non technical users as well. It comes with installation assistant, ssl domains and backups inbuilt into it.<p>You can install open source apps from a catalog or drop any github repo and it installs and run it for you.<p>With Tarvis, I have been self hosting more since I am able to install and delete apps with one click, it makes it easy to try things.