Intro
Who am I?
- My name is Patrick O’Connor and I studied Electrical Engineering and Computer Science at University of California, Berkeley.
- At UC Berkeley, I learned how to use Git, SSH, and various programming languages.
- It was my curiosity that led me to discover Docker, Cloudflare, and subsequently self-hosting.
- My first self-hosted application was Vaultwarden running on a RaspberryPi (shout out to Uncle Mike if you are reading this, best present ever).
- Now I have 4 ProxMox Virtual Environment Nodes running Linux containers (LXCs) and Virtual Machines (VMs) that run close to a hundred various Docker containers.
What is self-hosting (in layman terms)?
- You have a client, and you have a server.
- Imagine the physical component of a server as a computer that is always running, and the client as your device, talking to that server. For example, your email app (e.g. Outlook, Mail, Gmail) is a client for viewing the data (e.g. your username, password, and emails) stored on that server.
- Self-hosting is taking your own hardware, and hosting your own applications. You are creating your very own server in order to store and access that data with another client (device). My favorite container is Vaultwarden, and it stores all of my passwords on my server. When I update on one device, it sends to the server, and all devices will subsequently update as well.
How do I reach my server?
- Your server exposes applications through ports.
- These ports can be accessed when added to the end of that devices IP address.
- The Internet Protocol Address (IP address) is assigned to every connection of a device to the network.
- There are private network addresses (e.g. 192.168.1.X, 10.0.0.X) and public network addresses.
- Private IP addresses are assigned by your router and accessible only on your local network (under the same roof).
- Public IP addresses are assigned by your Internet Service Provider (ISP) (e.g. AT&T) and are accessible to everyone from anywhere. You will need to forward a port from your router in order to access via public IP address, but due to security concerns, it is best to use a service like Tailscale that allows remote connections through their servers. You can also use a Virtual Private Server (VPS) hosted by someone else!
- Also, your Wi-Fi is not your internet! They are two very different things. Wi-Fi is a family of network protocols that allow connection to your network over radio waves.
- In conclusion, your applications on your private, local network will look like: ‘http://192.168.1.50:8080’ (http is unencrypted, https is encrypted).
Why should you self-host?
- While there are numerous reasons to self-host, I have found the challenge of learning something new, the retention of my personal data, and the convenience that managing your own software provides as the core reasons I have continued my journey.
- Most of everything on this site is open-source with some exceptions (e.g. Tailscale). There is usually an open-source implementation for every closed-source one (e.g. Firefox vs. Chrome), And I like to argue that the open-source option is usually better.
- A vast amount of containers (conceptualize this as your various “apps”) can run sufficiently on hardware you already have (e.g. old laptop, old desktop, mobile devices).
- Self-hosting can save you money (especially on stupid subscriptions), but with the increasing prices for computer parts and many ways to add to your self-hosting journey that cost money (e.g. VPS and domain subscriptions) it can get to a point where it is a hobby, and hobbies have budgets.