Ask HN: How can a total beginner start with self-hosting

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
surveyjs.io
featured
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
  • yunohost

    YunoHost is an operating system aiming to simplify as much as possible the administration of a server. This repository corresponds to the core code, written mostly in Python and Bash.

  • awesome-selfhosted

    A list of Free Software network services and web applications which can be hosted on your own servers

  • This is a long but satisfying road if you're a tinkerer. Start by prioritising. In my case, I was worried about Google locking me out so I started there, other things such as VPN could wait because I wasn't locked in on my VPN service.

    In your case that might be migrating your photos off iCloud. I found the awesome-selfhosted[1] list to be excellent for trying out different products that patch the size of the VPS you've got or maybe you just want to put that onto your local Synology NAS.

    Self hosted BitWarden is also another straightforward one with the very lightweight vaultwarden[2].

    As I said above this is a long road although it doesn't consume your life daily it still requires you to keep up with all the things any sysadmin needs to handle like monthly patching.

    [1] https://github.com/awesome-selfhosted/awesome-selfhosted#pho...

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • vaultwarden

    Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs

  • syncthing-android

    Wrapper of syncthing for Android.

  • It depends on what direction you want take. You could purchase a $5/mo digital ocean server or a $5 raspberry pi and start by installing https://pi-hole.net, https://nextcloud.com, https://syncthing.net, https://www.plex.tv, or some other software to get the first (largest) thing you want resolved. Then move on from there and install the next package you need.

    Ad blocking for your phone? VPN for work? Self hosted email? Retro gaming? Figure out what you want most and jump into that instead of trying to get everything all at once as it can be overwhelming to consider every system instead of taking one step at a time.

  • Pi-hole

    A black hole for Internet advertisements

  • It depends on what direction you want take. You could purchase a $5/mo digital ocean server or a $5 raspberry pi and start by installing https://pi-hole.net, https://nextcloud.com, https://syncthing.net, https://www.plex.tv, or some other software to get the first (largest) thing you want resolved. Then move on from there and install the next package you need.

    Ad blocking for your phone? VPN for work? Self hosted email? Retro gaming? Figure out what you want most and jump into that instead of trying to get everything all at once as it can be overwhelming to consider every system instead of taking one step at a time.

  • Nextcloud

    ☁️ Nextcloud server, a safe home for all your data

  • It depends on what direction you want take. You could purchase a $5/mo digital ocean server or a $5 raspberry pi and start by installing https://pi-hole.net, https://nextcloud.com, https://syncthing.net, https://www.plex.tv, or some other software to get the first (largest) thing you want resolved. Then move on from there and install the next package you need.

    Ad blocking for your phone? VPN for work? Self hosted email? Retro gaming? Figure out what you want most and jump into that instead of trying to get everything all at once as it can be overwhelming to consider every system instead of taking one step at a time.

  • headscale

    An open source, self-hosted implementation of the Tailscale control server

  • To understand networking: read a book. Much of my early networking knowledge came from https://dl.acm.org/doi/book/10.5555/1593414 but you can probably find more modern variants of such a book. Getting a good grasp of networking requires reading and experimentation; luckily, you've got the tools for experimentation already.

    Most of application deployment is little more than reading the docs and tuning the configuration to your needs. From what I read, I think you've got enough knowledge to get that stuff running on your servers. You can probably get a lot more out of learning about the underlying concepts.

    For your own photos and cloud: I use Seafile, have used Nextcloud, and alternatives exist. Quite easy to set up, but with the ability to go deep into Modern (TM) Cloud (C) backends if you want.

    For your Bitwarden setup: Vaultwarden is a lot easier on resources and has pretty much all the features you need. Also quite easy to set up.

    For your tailscale setup: there's a guide for the server (https://github.com/juanfont/headscale/blob/main/docs/running...) and you can find more guides for the clients.

    For your Git setup: Git works over simple SSH. If you can SSH into your server, you can host a git repository. If you want more (a nice web GUI) then Gitea or Gitlab can also be run on your server.

    Things I recommend reading into if your knowledge about them is spotty (find guides or book recommendations):

    - Networking (ARP, IPv4, IPv6, TCP, UDP, DNS, mDNS, maybe PPPoE, and other such abbreviations). This is a lot of reading. You can also try to get started with this stuff without reading into it (it's how I learned!) and have a terribly frustrated time by overlooking obvious mistakes and easy solutions, but I don't recommend that.

    - SystemD services. People use Docker to solve a lot of daemon problems but good ol' systemd can do a huge part of that! I run most of my services in systemd rather than some kind of container setup because I don't want to have to deal with Docker and its many friends and dependencies whenever I'm trying to resolve a problem and so far it works great.

    - Reverse proxies, if you're running multiple services on a single server with subdomains or subpaths; learn about nginx/caddy/apache2/whatever server you prefer and how to set up proxying. Along the way you will break stuff and learn new things with every error message or unexpected routing error you encounter!

    - Firewalls; firewalld and ufw are nice ways to get started, nftables/iptables for the underlying stuff. It's not hard, per se, but it can get complicated fast. Maybe mess with the Windows firewall as well just for fun.

    - Set up IPv6 if you don't have it already. This would allow you to do some more networking stuff and prepare you better for the future, because corporate networking people seem to be grumpy and annoyed at the thought of one day needing to enable a protocol from the 90s. If your ISP only does IPv4, https://ipv6.he.net/ will get you an IPv6 subnet for free and if you do all of their quizzes they'll even send you a free shirt!

    - Along the way, you will (or should, at least) learn to use Wireshark and friends. Incredibly overwhelming at first but with some knowledge about networks you'll get the hang of it by setting up the right filters.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • PhotoPrism

    AI-Powered Photos App for the Decentralized Web πŸŒˆπŸ’Žβœ¨

  • > - photos: NextCloud

    If you don't mind horrible experience viewing photos/videos via nextcloud, go on. In my case this was unusable. Thumbnails not pregenerated even after trying (Yeah, didn't spend whole day on that issue) and generates on the fly. So viewing larger directory is... rubbish. Videos don't play as nice not to say they don't even have thumbnails.

    How great was HN when it suggested me https://photoprism.app/ - and it really just works! And my photos can be viewed finally. I still use nextcloud just for sync and photoprism just has directory mounted as readonly.

    Someone suggested https://photostructure.com/ - it looks decent, haven't tried out.

  • infra

    99.8% less leaked credentials (by ironicbadger)

  • pms-wiki

    The aim is to share knowledge and information about building an open-source media server.

  • How-To-Secure-A-Linux-Server

    An evolving how-to guide for securing a Linux server.

  • > In short it’s all about control, privacy, and security, in that order.

    I am going to strongly urge you to consider changing that order and move *security* to the first priority. I have long run my own servers, it is much easier to setup a server with strong security foundation, than to clean up afterwards.

    As a beginner, you should stick to a well known and documented Linux server distribution such as Ubuntu Server LTS or Fedora. Only install the programs you need. Do not install a windowing system on it. Do everything for the server from the command line.

    Here are a few blog posts I have bookmarked over the years that I think are geared to beginners:

    "My First 5 Minutes On A Server; Or, Essential Security for Linux Servers": An quick walk through of how to do basic server security manually [1]. There was a good Hacker News discussion about this article, most of the response suggests using tools to automate these types of security tasks [2], however the short tutorial will teach you a great deal, and automation mostly only makes sense when you are deploying a number of similar servers. I definitely take a more manual hands-on approach to managing my personal servers compared to the ones I professionally deploy.

    "How To Secure A Linux Server": An evolving how-to guide for securing a Linux server that, hopefully, also teaches you a little about security and why it matters. [3]

    Both Linode[4] and Digital Ocean[5] have created good sets of Tutorials and documentation that are generally trustworthy and kept up-to-date

    Good luck and have fun

    [1]: https://sollove.com/2013/03/03/my-first-5-minutes-on-a-serve...

    [2]: https://news.ycombinator.com/item?id=5316093

    [3]: https://github.com/imthenachoman/How-To-Secure-A-Linux-Serve...

    [4]: https://www.linode.com/docs/guides/

    [5]: https://www.digitalocean.com/community/tutorials

  • > In short it’s all about control, privacy, and security, in that order.

    I am going to strongly urge you to consider changing that order and move *security* to the first priority. I have long run my own servers, it is much easier to setup a server with strong security foundation, than to clean up afterwards.

    As a beginner, you should stick to a well known and documented Linux server distribution such as Ubuntu Server LTS or Fedora. Only install the programs you need. Do not install a windowing system on it. Do everything for the server from the command line.

    Here are a few blog posts I have bookmarked over the years that I think are geared to beginners:

    "My First 5 Minutes On A Server; Or, Essential Security for Linux Servers": An quick walk through of how to do basic server security manually [1]. There was a good Hacker News discussion about this article, most of the response suggests using tools to automate these types of security tasks [2], however the short tutorial will teach you a great deal, and automation mostly only makes sense when you are deploying a number of similar servers. I definitely take a more manual hands-on approach to managing my personal servers compared to the ones I professionally deploy.

    "How To Secure A Linux Server": An evolving how-to guide for securing a Linux server that, hopefully, also teaches you a little about security and why it matters. [3]

    Both Linode[4] and Digital Ocean[5] have created good sets of Tutorials and documentation that are generally trustworthy and kept up-to-date

    Good luck and have fun

    [1]: https://sollove.com/2013/03/03/my-first-5-minutes-on-a-serve...

    [2]: https://news.ycombinator.com/item?id=5316093

    [3]: https://github.com/imthenachoman/How-To-Secure-A-Linux-Serve...

    [4]: https://www.linode.com/docs/guides/

    [5]: https://www.digitalocean.com/community/tutorials

  • nixos-machines

    My NixOS machines.

  • I have been there. The progress was rather slow until I started to use NixOS. The learning curve is a bit steep but is very rewarding. It is not specific to self-hosting stuff, but as a side effect it makes self hosting super easy (declarative, readable, etc).

    For most of the services that you would like, you just write a simple configuration and deploy it. For example, to run the service shiori (https://github.com/breakds/nixos-machines/blob/main/machines...), or to host a game (terraria) server (https://github.com/breakds/nixos-machines/blob/main/machines...), or tailscale (https://github.com/breakds/nixos-machines/blob/main/base/tai...). Since Nix is also a very good package manager, you also do not have to deal with installing packages and managing their dependencies.

    With my NixOS server I am running all the services you mentioned, and also my router is just a bunch of services running on a NixOS box.

  • Sandstorm

    Sandstorm is a self-hostable web productivity suite. It's implemented as a security-hardened web app package manager.

  • Self-host-GitLab-CI-for-GitHub

    Installs your own GitLab CI and runs it on all your GitHub repos, in a single command.

  • https://github.com/TruCol/Self-host-GitLab-CI-for-GitHub

    Tor because that way your self-hosting works from wherever you are, even if you're in a flat behind a gateway you do not have access to. 1-click because I like the user experience to be as simple as possible.

  • charts

    Community Helm Chart Repository (by truecharts)

  • There are several projects designed to help you self-host your own services.

    Proxmox[0] is mentioned by a few folks here. It's mostly a hypervisor. It's good if you have a "big" server and want to split it up into VMs for various needs. It doesn't have any concept of an AppStore or service catalog. I think this is too low level for what you're asking.

    Unraid [1] is probably the easiest way to turn an arbitrary computer into a useful server. You install the OS on a thumb drive and it runs from there. It provides network storage services out of the box, can host VMs, and has a solid catalog of packaged services in their Community Applications plug in [2]. These are packaged in weird obscure way that I tried and failed to figure out. I've run this on an old T410 for a couple years and it's been pretty good. Not as flexible as some other options, but quick to get going on the basics. You can see this in their storage system... you can easily add arbitrary disks to your pool, but parity options are limited. My biggest complaint is that it's hard to spin up your own docker images, especially if you don't want to mess with Docker Hub.

    TrueNasSCALE [3] is my next platform. It's an iteration on the very solid FreeNAS/TrueNAS and ZFS. It handles containers and containerized services as first-class citizens using kubernetes, but also includes KVM so you can do virtual machines. Like Unraid, it has a healthy app library over at TrueCharts [4]. Unlike Unraid's weird XML manifest, SCALE uses Helm. Nice.

    coolLabs [5] is sort of a self-hosted Heroku alternative. I just discovered it on HN the other day [5a] in that context. It looks pretty neat. It has some pre-packaged services already [6] but seems to lack any concept of a community-curated service package repo. It seems to be mostly focused on helping you deploy applications you develop yourself. I don't think it gives you network shares, for example. Still, it could be a great choice to throw onto the VPS you're wonder what to do with. [7]

    Kubesail [8] is a k3s-based self-hosting operating system. It's designed to help you run basic web services as easily as possible. Where Unraid assumes you have an old computer laying around, Kubesail will sell you a PiBox [9] to get you up and running. (You can also bring your own hardware). The have a nice AppStore and have put particular attention into the photo use case you mentioned - they emphasize support for PhotoStructure [10].

    Cloudron [11] was mentioned by a few other comments. I haven't dug into it, but it does seem to have an appstore as well.

    [0] https://www.proxmox.com/en/

    [1] https://www.unraid.net/

    [2] https://unraid.net/community/apps

    [3] https://www.truenas.com/truenas-scale/

    [4] https://truecharts.org/

    [5] https://coollabs.io/

    [5a] https://news.ycombinator.com/item?id=33077118

    [6] https://docs.coollabs.io/coolify/services/

    [7] https://docs.coollabs.io/coolify/installation

    [8] https://kubesail.com/homepage

    [9] https://pibox.io/

    [10] https://kubesail.com/template/erulabs/photostructure

    [11] https://www.cloudron.io/

  • pibox-os

    πŸ“¦πŸ’» The Official PiBox Operating System

  • There are several projects designed to help you self-host your own services.

    Proxmox[0] is mentioned by a few folks here. It's mostly a hypervisor. It's good if you have a "big" server and want to split it up into VMs for various needs. It doesn't have any concept of an AppStore or service catalog. I think this is too low level for what you're asking.

    Unraid [1] is probably the easiest way to turn an arbitrary computer into a useful server. You install the OS on a thumb drive and it runs from there. It provides network storage services out of the box, can host VMs, and has a solid catalog of packaged services in their Community Applications plug in [2]. These are packaged in weird obscure way that I tried and failed to figure out. I've run this on an old T410 for a couple years and it's been pretty good. Not as flexible as some other options, but quick to get going on the basics. You can see this in their storage system... you can easily add arbitrary disks to your pool, but parity options are limited. My biggest complaint is that it's hard to spin up your own docker images, especially if you don't want to mess with Docker Hub.

    TrueNasSCALE [3] is my next platform. It's an iteration on the very solid FreeNAS/TrueNAS and ZFS. It handles containers and containerized services as first-class citizens using kubernetes, but also includes KVM so you can do virtual machines. Like Unraid, it has a healthy app library over at TrueCharts [4]. Unlike Unraid's weird XML manifest, SCALE uses Helm. Nice.

    coolLabs [5] is sort of a self-hosted Heroku alternative. I just discovered it on HN the other day [5a] in that context. It looks pretty neat. It has some pre-packaged services already [6] but seems to lack any concept of a community-curated service package repo. It seems to be mostly focused on helping you deploy applications you develop yourself. I don't think it gives you network shares, for example. Still, it could be a great choice to throw onto the VPS you're wonder what to do with. [7]

    Kubesail [8] is a k3s-based self-hosting operating system. It's designed to help you run basic web services as easily as possible. Where Unraid assumes you have an old computer laying around, Kubesail will sell you a PiBox [9] to get you up and running. (You can also bring your own hardware). The have a nice AppStore and have put particular attention into the photo use case you mentioned - they emphasize support for PhotoStructure [10].

    Cloudron [11] was mentioned by a few other comments. I haven't dug into it, but it does seem to have an appstore as well.

    [0] https://www.proxmox.com/en/

    [1] https://www.unraid.net/

    [2] https://unraid.net/community/apps

    [3] https://www.truenas.com/truenas-scale/

    [4] https://truecharts.org/

    [5] https://coollabs.io/

    [5a] https://news.ycombinator.com/item?id=33077118

    [6] https://docs.coollabs.io/coolify/services/

    [7] https://docs.coollabs.io/coolify/installation

    [8] https://kubesail.com/homepage

    [9] https://pibox.io/

    [10] https://kubesail.com/template/erulabs/photostructure

    [11] https://www.cloudron.io/

  • PowerDNS-Admin

    A PowerDNS web interface with advanced features

  • PowerDNS

    PowerDNS Authoritative, PowerDNS Recursor, dnsdist

  • personal-server

    Personal server configuration with k3s

  • Maybe not as beginner friendly as you would want but you can read my tutorial about my personnal server

    https://github.com/erebe/personal-server

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Home Lab Guide

    12 projects | news.ycombinator.com | 8 Mar 2024
  • Ask HN: How do I leave Dropbox

    2 projects | news.ycombinator.com | 14 Dec 2023
  • Pi hole set up for total beginner

    2 projects | /r/pihole | 6 Dec 2023
  • Anti-Anti-Adblocker uBlock filter to get rid of the annoying YouTube message

    4 projects | news.ycombinator.com | 14 Oct 2023
  • Encrypted Client Hello – the last puzzle piece to privacy

    4 projects | news.ycombinator.com | 29 Sep 2023