Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login
Browse Self-Hosted Software (selfh.st) similar stories update story
6 points by 8organicbits | karma 4795 | avg karma 3.0 2024-04-04 10:05:46 | hide | past | favorite | 63 comments



view as:


I prefer self hosted FOSS software for the simple reason that it's so much easier to learn how to get them to do tricks. I can install, uninstall, reinstall, hack, patch, and demolish them over and over again, learning a power of stuff each time, and then I can carry that knowledge and power with me for all future endeavors.

This seems absolutely vital to me from a pedagogical point of view, but people almost never talk about it, as if admitting breaking things you can instantly recreate to learn more about them is somehow an admission of shame, around your failure to understand them sight unseen.


> I prefer self hosted FOSS software for the simple reason that it's so much easier to learn how to get them to do tricks.

Perhaps, but if you want something just easier OVERALL, FOSS ain't for you, sadly.


I guess it might depend on skill set, but I disagree. I have so many less headaches & problems with self hosted FOSS solutions. No rug pulls with subscriptions or just outright killing a product by surprise, total control of the data & server, everything is in my hands which makes it much easier to keep operational however long I want.

It’s easy to start with something like yunohost, sandstorm, etc to start with self hosting.

It’s easy to go down the rabbit hole of using an empty vps and that’s not reccomended


Yes, if you need to stay on training wheels, you have to pay someone.

How much I've learned by self-hosting the software that I use on a daily basis is what has made the experience compelling. As you point out, it is knowledge that compounds and I've reaped the benefits on my professional endeavors.

I can’t stress enough how important deliberate practice is.

In all environments where i had some learning/testing/staging environment i just thrived.

I’ve had a couple of jobs so far where you can do all the learning you want, in prod, and of you break something it’s your fault. They’re awful, and are those kind of job where the only people thriving are those who have been there long enough to know where all (or almost all) the sharp edges are.


How do you add something? Syncthing not listed as dropbox alt

You make an account perhaps? Projects lists such as this usually use GitHub, such as (the exactly same in purpose) https://awesome-selfhosted.net/.

From https://selfh.st/apps-about/

> How can I add my project to the list? > Feel free to reach out and share the details of your project with me. > Note that I will not manually intervene with the order in which your project is displayed. The current sort options (repository stars, last activity, alphabetical) are an objective method for displaying projects without personal bias.


Than kyou!!!

I am not sure why I need that if I have this: https://www.debian.org/distrib/packages

that assumes you already know what is available and much of this stuff doesn't have a Debian package. You're high.


It is a good list, but is missing some really great applications. Like Apache Nifi.

What an amazing list! Found so many things I didn't know existed as a private and FOSS alternative.

How did we even manage before things like GitHub existed? I love living in a world where if I can think of it, someone has already done it and it exists as code for free!

I think this is absolutely wild! There can never be to many self-hosted lists, and this one is filled with some great software!!

I find it amusing that as they're referred to as "*arr", tools for torrenting+organising media get top billing in the tags list.

We just need to figure out how to get a one-click 'install' button on there ;)

Curious what you wrote the site in?

So, this is an awkward question to ask (coming from the Windows side of things).

I see all these self hosted projects, think "neat!", then want to spin them up and immediately get a little lost because I honestly haven't really touched Docker.

If I want to set up something from nothing (eg, I'm spinning up a VM for the first time on some ESXi metal to run something), what do I start with as a base OS these days to "just run Docker" without much else?

I know I'm kind of going slightly against the model of Docker here, but when you also don't have anything at all to base from...


There are all kinds of fancy container OS distros and such, but if you just want to get going, just go with good old ubuntu or debian.

Debian for main host is ideal. Proxmox runs on it too.

Easy to run either in a container


Debian is a popular choice, as is Ubuntu Server LTS. I've chosen Ubuntu Server LTS as my base. It's a nice compromise between the rock solid stability of Debian, whilst allowing for some more recent sofftware package releases in the repositories.

If you'd like to dive in more as a newbie to self hosted docker containers for personal software, check out https://docs.linuxserver.io/general/containers-101/

These guys package popular software projects in a reliable format, and they have some good guides to get started.


> whilst allowing for some more recent sofftware package releases in the repositories

That really depends on how the Debian and Ubuntu releases line up.

A lot of the packages in Debian 12 are more current than 22.04, because Debian 12 was released in 2023. That will change this month, because Ubuntu's newest LTS will be from this month.

Debian stable isn't as old on release as it used to be.


I'm using Ubuntu less and less, Debian is so incredibly stable & uses so little RAM & CPU, and I don't have to de-snap the OS.

Agreed! If I end up having to use Ubuntu, my first command is generally `sudo apt purge snapd unattended-upgrades`

I have some ansible playbooks for setting up my "standards" on new machines. The very first playbook that runs, first step, checks for os_family = "Ubuntu" and runs the snap remove & purge command!

I had to drop ubuntu because of their stance of having unattended upgrades enabled by default, this in turns translates to ansible failing every time when I first run it on a brand new server, because the first thing it does is installing updates.

It's really bad from an automation perspective


It's frustrating that the unattended upgrades apply to every package, but luckily you can blacklist things that cause problems. I've had problems with NVidia tools being upgraded before the driver is (since I rarely restart), and don't like upgrades that require restarts, so I do this first thing:

  sudoedit /etc/apt/apt.conf.d/50unattended-upgrades
In Unattended-Upgrade::Package-Blacklist, add

    "linux-";
    "nvidia-";
    "libnvidia-";
    "xserver-";
When I do a planned restart, I run apt dist-upgrade just before it to do the updates.

That's fine on a desktop machine, the problem on a server machine is that as soon as I start the server, I will probably be in automation mode and I definitely need to run `apt` for some reason. But APT is unavailable, so everything is blocked until unattended upgrades are done. So much for being "unattended", I have to attend to start the next script.

Debian is the simplest option I think. It's easy to install and use, and there are lots of guides that are Debian focused out there.

I'm not sure what are you asking, is the question "what do I need on a fresh system to start running containers"? In which case all you need is to install the docker packages from the repositories in the distro of your choice (Debian Stable is a good starter for servers). Or are you asking what do you base your docker container on?

So as of the Broadcom acquisition, ESXi is no longer the recommended route for anything, but especially not personal self hosted projects.

Instead, proxmox is a good, free, open source hypervisor alternative. One nice thing about it is that because it’s really linux under the hood, you can just directly host docker containers in proxmox. I would say that is the recommended route if you have a spare machine available.

If you don't have a spare machine available and want to host on your machine, then you can use docker on Windows with WSL, or you can create a Ubuntu VM, and use that. If you have no linux experience I’d recommend going the Ubuntu desktop route for a VM. While Ubuntu server is lightweight, it’s also a huge learning curve going from a full service GUI to foreign CLI-only OS, that has many fewer guardrails.


> Instead, proxmox is a good, free, open source hypervisor alternative.

I got the impression from all their "enterprise" branding that it wasn't, however based your claim I went digging and found that it's AGPLv3 and they do have a CLA but they allege the submitter retains the copyright, which my IANAL interpretation should(!) prevent rug pulls

https://pve.proxmox.com/wiki/Developer_Documentation#Softwar...


I don't use Windows, so this answer is coming from the total other end of the spectrum from you and I have never done this, but it seems like running those linux docker containers in Windows and not inside a VM that you have to manage is your best option. https://learn.microsoft.com/en-us/virtualization/windowscont...

I argued in https://hiandrewquinn.github.io/til-site/posts/the-unreasona... that the way to go in this situation is to spin up a Debian VM in Virtualbox with Vagrant, and take it from there. Start by learning to install Docker from within the Debian VM, then the world is your oyster!

Proxmox with docker inside

Don’t use docker alone

Install something like proxmox and then if you need some docker you can devote a few containers.

Yes that can mean vm inside of VMs, but home labs rarely do anything that performance demanding that this is an issue.

Something like proxmox will make so much of it point and click, it nearly can do everything needed out of the box (including backups, mirroring), if you prefer to start that way and it’s easy to set and forget. Lots of videos on YouTube too.


> what do I start with as a base OS these days

IMO, there are two primary options:

— Rocky Linux (or AlmaLinux) if you prefer a “bit more corporate” flavor after getting used to Windows;

— Debian if you'd like to get “more community” one.

Once you're somehow familiar with one of these, you should be able to figure out what else you may want to try.


I was in exactly your position a couple of months ago and have just got my first apps running this week!

Im a web developer so had a bit of experience with containers, cli and linux but only basic web related stuff.

Ill detail my journey and then let others tell you how wrong I am.

I bought a thinkcenter m715q for $200ish which was suggested as a good budget starting machine. There's lots of info about this on https://reddit.com/r/homelab , https://reddit.com/r/selfhosted and https://www.servethehome.com

I installed ubuntu and had a play around but then decided proxmox seemed like the way to go for what I wanted to so. So I watched a range of youtubers https://www.youtube.com/@christianlempa https://www.youtube.com/@TechnoTim https://www.youtube.com/@CraftComputing

who all have different series on this and related topics.

Basically you burn the proxmox iso onto USB, plug it in, install it on the computer and its ready to go (obviously watch a few videos!). You need to access Proxmox from another computer on the same network through the IP address you get at the end of install. So if your router/gateway is say 198.168.0.1 you might set Proxmox as 198.168.0.99. Im still figuring the best practices on this out as obviously security is a major factor...

Actually you can use a single computer but need to do something like this https://pve.proxmox.com/wiki/Developer_Workstations_with_Pro...

Which worked for me but its actually more convenient to use another comp as you want to be using your normal environment to use the services.

Once its up you browse to it, sign in and its ready to go. I got started by setting up plex by using this site: https://tteck.github.io/Proxmox/ which gives you a single command to run an install script of whatever you want to install. It will install it as a LXC Container which is like Docker but less overhead.

Or you can create VMs and run docker in them. This is next weeks job for me.

Each container gets created as a new service with its own IP address on the network. To expose them externally creates security risks if you don't know what you are doing. So I chose to use Cloudflare Tunnels which was super easy but I use CF daily. Now i have a working Plex server at plex.<mydomain>.com and a Mattermost server at chat.<mydomain>.com !

Its super fun and you just nuke stuff if it doesnt work. Proxmox UI is easy to understand. My biggest issue was understanding how to connect external drives and share them with the containers permanently. So understanding mounting drives, permissions in linux in general and then in Proxmox https://pve.proxmox.com/wiki/Linux_Container#_bind_mount_poi...

I have a massive amount to learn before I feel comfortable and secure. But totally worth the time spent so far and not as hard as expected once I decided to go down the Proxmox direction.


None of these lists ever seem to be as fleshed out, up to date, or well organized as https://github.com/awesome-selfhosted/awesome-selfhosted , though imo any more attention on the self hosted scene is awesome. We're now self hosting everything at my co-op, and it's a dream. Saves us money, provides learning opportunities, potentially is getting us work (managed hosting providers asking if we can be a devshop for their clients, for example), and lets us give back to the FOSS community as we uncover bugs.

We use:

* Matrix / Synapse for comms (slack alternative) (managed hosting through etke.cc) * OpenProject for project management (linear alternative) (deployed on VPS so we can shim their premium token check) * Kimai for time tracking and invoice generating (VPS) * Crater for financial tracking (VPS) * Outline for wiki (we tried bookstack and it was just too weird) (VPS) * Vaultwarden for password management ("managed" hosting through elestio) * EspoCRM for CRM and as a CMS for marketing sites for our members (VPS) * Coolify as a PaaS (heroku / vercel alternative) (VPS) <- my favorite recent addition, lets any member just chuck projects up with whatever resources they need super easily, for "free" (we have a fatass VPS we got on sale from racknerd)

We usually deploy via docker containers and manage all our various VPS and containers with portainer.

I have a member that keeps pestering us to self-host emails as well but google already has us by the shorthairs with us on Migadu: clients often tell us our emails go to spam. Not much we can do about it we have like 50 email handles and no budget (yet) to give google the new price per email they're charging.


[delayed]

Adding members to the co-op for now has basically 0 onboarding cost because all revenue is through subcontracting, so, some members are revenue driving (because they're working a gig) and others aren't so they cost us nothing but also aren't earning anything. A lot of people joined regardless because working on stuff as a group is usually more impressive than what one can accomplish individually. For example we have a relatively junior member that's basically obsessed with DevOps and site reliability, but they don't get have application development experience so they have nothing "real" to deploy and manage. But with us they got to set up a really cool portainer setup and got us all routed through cloudflare, monitoring setup, etc, for a bunch of very real services that about 50 people use every day.

In terms of developing experience that's basically one half of our reason for existing: a good environment for career and personal growth. We try to make it as easy as possible to pick up new skills or further develop along existing skillsets. So I'd say it's very easy for members to develop the skillset necessary, if they have interest, because everything is transparent, we work hard to write good docs, and anyone can ask anyone else anything and get knowledgeable answers.


> None of these lists ever seem to be as fleshed out, up to date, or well organized as https://github.com/awesome-selfhosted/awesome-selfhosted

That is an excellent and comprehensive list, but is it targeted at individuals or organizations? Every area lists dozens of projects with a short description but no ranking, comparisons, skill-set required, or editorial recommendations.

Personally I rely on resources like https://alternativeto.net or "best of" lists to pick a couple options to evaluate in more depth. If I analyzed 10 times as many options I might discover really wonderful projects I would have otherwise missed, but I struggle to imagine having that kind of time.


In my frustration with MS Office, I gave it a chance and searched for MS Office alternatives ... and found https://github.com/cryptpad/cryptpad ! Looks quite nice. Maybe I should set that up on a server.

I have it! Trivial to setup too since it uses the FS as db.

The big downside is that is very privacy focused, so to invite a person to collaborate you have to do a whole bunch of things that non-tech-savvy wouldn't do.

Good for family though


You got me interested and I've tried it now. I've tried sharing a document and it just gave me a sharable link - doesn't sound too hard (it's not revocable because the URL contains a key, I guess, but that's a technical problem, not something non-technical person has to do)

That's the approach I used, but I wanted a document I could collaborate on and without having the risk of leaking it on the internet. In GDrive it's as simple as share -> specify email address.

In cryptpad you have to share your profile, the person has to "add you to their contacts" from your profile page, then they will appean in your contacts and you can add them as collaborators. The reverse is also an option: ask them to share their profile link, then you can add them. Unfortunately non-tech person don't even understand where their profile link is.

There is also a concept of "team drive", which is cool, a bit rough around the edges. In that case you can send invites to people and they can join and share a single directory, which is great.

Overall nice piece of software I'd say!


Have we gone full circle but made it more complicated? Installing programs locally Installing programs locally that need network access Using web versions of those apps Installing docker to run the web apps but locally.

To some degree probably, but there’s also a bunch of stuff that just didn’t exist in the same way say 20 years ago when the web was newer.

Torrenting was around but now I have a pretty well developed set of stuff that runs on my home server for downloading it and getting it into plex.

And then there’s stuff that’s always been a server thing, like exposing a printer on the network or hosting a file server, DNS (now with adblocking)


What I’m trying to point out is that following this trend, soon exposing a printer would be a docker container

Certainly some of these work fine to run as on-demand programs instead of services for many use cases (e.g. jekyll, rclone). I would say there are a wide variety of use cases that could have some of these running as a service on a laptop or workstation when it happens to be up, but doesn't need to be particularly high availability, too.

Well, Docker is usually not needed.

I make self-hosted software and haven't yet created a Docker image for it, but some people do want it. I also think it's useful, especially if you want to run multiple apps on the same server while having each app mostly isolated for security/privacy/performance reasons.

I think a good self-hosted app should provide numerous ways of installing it (Docker, bash install script, tutorial for manual installation, etc.).


Reminder of one of the risks of self-hosting: maintainability of things when you're not around. Do you have a 'continuity plan' for someone else to run things if you're hosting for people in addition to yourself?

Unless your friends/family have access to someone else as technical as you, things may start breaking. There was a story/discussion on this recently on HN, "Dad died in 2022. Since 2023, things he selfhosted have slowly begun breaking":

* https://news.ycombinator.com/item?id=39526863

Certainly there are risks for cloud-based services (expiring credit card), but if you set aside your credentials in a safe place (e.g., paper envelope) then most folks can probably keep things going around if you're not around.


> maintainability of things when you're not around

The real issue, which is only getting worse.

The guy from Reddit says: “The operating system of either server. They're probably Macs, but more than that I don't know ... EDIT: Based on comments, probably Linux”.

? And that's the very basics. Modern apps tend to get “fancier” each year and the underlying stack of technologies, programming languages, and dependencies grows beyond reasonable.

E.g. one can probably find a Linux admin, a PHP or Python developer within their circle, but something beyond that is way less common. So the options are either hiring some stranger or ditching the setup (and data) entirely.


Being an enthusiast, who highly supports decentralization movement, would like to post just one suggestion while the project is new and the list of apps isn't huge:

I believe it would be to good to have some indication of each app's system requirements and what software stack it requires. Maybe as a filters.

Unfortunately, these days some apps require a rather ludicrous software environment with a DARPA-comparable computing power.

Writing this from my recent experience: I was using Mailcow few years ago. Recently decided to get back to it. Went to the official site aaannnd...

“6 GiB RAM + 1 GiB swap are fine for most private installations, while 8 GiB RAM are recommended for ~5 to 10 users. A company with 15 phones (EAS enabled) and about 50 concurrent IMAP connections should plan 16 GiB RAM.”

Just in case, Mailcow is a mail server, which has recently became a “suite”.


Something about license and if it's open source would be great. Although the license is more about "can i use it in a commercial product".

That being said, thank you, really nice work!


Asked this on a different link to this project:

Is it only with free/open-source self-hosted software?

Many times I am looking for premium self-hosted alternatives that are of good quality. I would rather pay for a self-hosted license knowing that I get support and that the software is maintained than spending the time to self-host something that might not work as expected.


Legal | privacy