Guides for self-hosting from a focus on privacy?

I swear, I need to learn how to self host. If only there was a place online that could teach & guide you how to do so from a focus on privacy and digital freedoms.

6 Likes

Yeah, I know there is plenty of stuff online. But I am an absolute beginner when it comes to self hosting. So, even watching how to set up TrueNAS, I won’t still learn how to do it. No guide is made for an absolute beginner. Imagine teaching your boomer parent to install and set up desktop Linux over the phone. That’s how bad I am with understanding stuff about this.

Yes. I know its about this. I just don’t know how to do it…

2 Likes

Start small aka absolutely not with TrueNAS.
How about something as simple as a quick and dirty website with a “hello world on it”?
Then you could try PiHole? Or maybe Uptime Kuma?

If you run Linux and can navigate a few directories with cd, use ls etc, it’s good enough for a start. If not, take a quick crash course on Bash. :+1:t2:
Then you can move forward into playing around with Fedora or whatever would be your favorite Linux distro. :wink:

If you’re on Windows or MacOS, you can probably access a bash shell quite easily too. Linux is not mandatory, yet very advised to fully embrace the environment and understand how it truly works. :heart:
I’m saying that because I know quite a lot of people that are thinking that they do understand Linux while they never daily-drove it themselves besides soy-late MacOS experience.

2 Likes

Yes, this I can do.

I’ll give it a try again, I gave up on learning about this after having messed up many times. I have a spare mini PC so I guess I can give it a try again.

I do know how to use desktop Linux. I use Fedora (workstation and atomic).

–

Thanks for the guidance (though I am a structured learner who prefers to follow clear instructions written as ELI5 if at all possible).

You can also try a virtual box or alike if you want a “danger-free” zone where you can rollback easily. :blush:

Don’t give up! :flexed_biceps:t2::flexed_biceps:t2:

Otherwise yes, a mini PC is also quite practical and more boots on the field rather than just abstract software theory. :smiley:
Thing is, with Linux and self-hosting there will never be an ELI5 kind of setup because it depends heavily on your config/preferences and…most of the time you can figure it out anyway by reading the errors/docs.

I wouldn’t recommend LLMs for learning, but hey if it helps maybe good enough to get over some boilerplate code? :woman_shrugging:t2:
It’s meant to be dirty, so embrace it. :winking_face_with_tongue:

If you want some structure, you can start there maybe but…don’t get stuck into tutorial hell.
It’s one thing to watch, it’s another to actually do the troubleshooting and setup yourself. You’ll learn far more by actively learning rather than casually copy-pasting/binge watching someone do the hard work for you. :heart:

2 Likes

Thank you again. I’ll give it another honest shot soon. I’ll have some time during the holidays coming up.

Keep us updated on your progress. :wink:
If I see you post here too much, I’ll come and remind you to go back to practice. :winking_face_with_tongue:

3 Likes

I probably will come back with follow ups when I’m really stuck. My self hosting needs are not too much: hosting my media and a few other apps that can relatively easily be self hosted.

2 Likes

The community at forum.level1techs.com have been invaluable to me.

They have the guides in the forums, and some are outdated though but people will update it (eventually) if you request for an update.

2 Likes

The level1techs forum is a decent solution

I would also think we already have but I could make a generalized guide on Privacy Guides if there is a demand

Why…? This scares me lol.

You can, its just that TrueNAS has a lot of nuances to it, like you needing an Intel NIC. You can learn TrueNAS but I wouldnt put critical stuff to it as a beginner.

I did put critical things in it and lost data only because I didn’t know what I really needed to do. Somehow I know I am not doing things 100% right but it is probably good enough.

TrueNAS works beautifully as a NAS but I am not there because I want a beautiful NAS, I wanted a server appliance that I can put apps on it.

1 Like

This is a bit false.

  1. You gotta pay for the hardware itself and all hardware maintenance coming with it, if it’s self hosting with your own hardware. Otherwise you gotta pay for the rented VPS.
  2. You gotta pay for electricity if it’s your own hardware
  3. If you are new, you gotta spend time learning what to do
  4. You gotta spend time maintaining the system

That’s not to say it isn’t rewarding, but it comes with other challenges. If things go wrong, it’s on you,

1 Like

Because that’s not a good start to a “I’m new to Linux, let’s self-host a thing with a subtle mix of hardware, software and deep config setup”.
Just as the rest of my message explains it. :+1:t2:

A NAS is not a backup solution indeed. :grinning_face_with_smiling_eyes:

When you download a free app from somewhere, you don’t:

  • factor in the R&D of the developer
  • the CI/CD pipeline cost
  • the hosting of the asset

So, strictly speaking: yes the software is available at no cost.

4 Likes

It highly depends, but if I would start learning to self-host I would start with a fresh Debian 13 instance and then just try to self-host a few things. Like Pi-hole or Uptime Kuma.
After some time I would reinstall Debian 13, since I didn’t use docker or LXC and I fucked up my setup.

After some learning I would probably go to Docker, then to Kubernetes and at the end to Proxmox.

That is a bit apples and oranges. All the stuff you mentioned has no bearing on your use of it and is done prior to your use. A better equivalent is saying you can’t use no cost software if you don’t have a computer, which you’ve gotta pay for.

Primary point, self hosting is free if you ignore the time you spend on it and the cost of running it.

3 Likes

Linux has always been about servers and networking. How else can you learn Linux if not running your own software on hardware that you have? All of the tooling on Linux is meant for self hosting and you’ll never have a perspective of that unless you try to start running services on your own hardware.

You also be non-tech savvy and use it as a replacement for Windows.
No need to be a hacker and l33t pro of the terminal, you can simply browse the Web and check your emails from a simple Fedora by moving your mouse around.
Installed it for a couple of 60+ yo and they were very happy with it, never complained. :+1:t2:

If you have a more specific self-hosting goals except for a TrueNAS, please let us know! It might make the advice-giving a lot more useful

As an absolute beginner in self-hosting myself, with no idea what to start with, I found the AlmaLinux Wiki very helpful.

After stumbling upon nginx setup tutorial I got the idea of setting up a very basic nginx web server on my 10+ year old unusued laptop. I was already looking for a place to post long “WikiHow style” tutorials for free & open source applications, so this is nice.

Apart from the time investment from having to learn basic html (I still haven’t), more things to consider when self-hosting an nginx website:

  • Security measures: firewall rules, rate-limiting etc (AlmaLinux Wiki covers this)
  • Setting up https with Let’s Encrypt (Also on that wiki)
  • Getting a domain in a privacy-preserving way. This is a seperate deal but just make sure the provider you choose has WHOIS privacy included or doesn’t require address/phone number.

I’ll write a bit in hopes to make self hosting a bit less arcane. By no means is this a guide on what you need to do, but hoping you can follow along to understand what it is that’s required.

From an absolute beginner approach, I think its easier to know that a server is just another computer. For now, let’s ignore that and think about your computer by itself. You interact through it with programs, usually through a mouse and visual interaction (graphical user interface, or GUI). Basic operating system management you can do like this: look at files in folders, delete them etc. However, you can do all of this through the terminal/command line/shell, where you enter text to do the same command. Some applications are built just for the terminal, and these are known as text user interfaces (TUIs). Try editing text through nano if you are on Linux or Mac!

A good first step as mentioned would be to test some really basic file management in whatever you are using know. Create a folder, create an empty text file, delete that text file. Just search how to create files in command line for (MY OPERATING SYSTEM). Same thing as with point-and-click, but you do the same thing with text commands. You can do pretty much every operating system thing as a text command (get creative, try connecting to wifi via the command line! open up an application that you’d normally double click!).


A server is merely a computer that you generally are running 24/7, generally running applications you don’t want your day-to-day computer to use. You actually could have a dedicated monitor and keyboard to your server and interact with it like you would your normal computer. Install Ubuntu with a desktop GUI, and it feels like like a regular computer.

Let’s say you only ever access the server from 1 computer, and its only ever running things that matter from your main computer (i.e. lets say you are running searxng locally). You might not even need a server! Just run searxng whenever you want to use it on your machine (if you are making the jump, I do recommend getting used to Docker, as its the easiest way to manage applications you plan on running on a server). This is also a good first step - can you manage to run this application on your computer. It will end up being a mini-website running your computer that only your computer talks to! You will talk to this application through a browser, and instead of www.foobar.com, you will likely enter something like localhost:8080. localhost is a fancy way to say “your own computer”, and 8080 is the port number the application is listening to (every application can choose to listen to a different port, and it can be configured). By default, most servers listen to HTTP at 80, or if its HTTPS its port 443. You can actually try this out, visit discuss.privacyguides.net:443 and it just works! The computer at the destination of discuss.privacyguides.net is listening on port 443, and you made a request to it, and it talked back. Your browser hides 80 and 443 by default as its the default. Think of it like this: discuss.privacyguides.net is the address of an apartment building and the port is which home in the apartment building you want to get to. HTTP is just how you make the destination to that apartment building - you could get their through HTTP, HTTPS, gRPC, UDP, …, but the port may only be accepting HTTP or HTTPS traffic. I’m going to glance over how a server can server you multiple different applications through a single port (i.e. how privacy guides serves both a forum and their main site through ports 80/443).

Why all the talk about HTTP? That is a protocol for two computers to talk to each other. The others I mentioned are also protocols for talking to each other, all with different capabilities and reasons to use them. Nearly every web you are accessing through HTTP/HTTPS mostly. Other things like video streaming may use UDP, but no need to worry about those for now.

However, running an application on your computer like this gets impractical for extending beyond the previous basic use case, for example

  1. you want to run the application once and access it on multiple devices
  2. you can’t run the application on your device (i.e. mobile phone)
  3. you can’t turn it off (i.e. running PiHole, if you turned it off, would block all internet traffic)

So instead of running it on your personal machine, you put it on a dedicated second computer which you configured to your same WiFi on the same router. Now instead of localhost, you need to find the IP address of this machine on your local area network (LAN). This is just a way to say all of the devices on your router. So let’s say your server is at 192.168.1.100, from what your router said, you now talk to the server running that application through 192.168.1.100:8080 in your web browser! Your router will see you want to talk to that IP address, forward your request to that machine, and if the application is running on port 8080 (and is setup to allow traffic to come in), it will be the same as if the machine was on your computer.

Now to manage this server you probably have tucked away, you could walk over and plug a keyboard and monitor into it and start working on it. However that gets annoying fast. Rather, you can also remotely manage this computer. To do this, most people opt for using a secure shell (SSH). This basically opens a terminal on the remote machine, but you can can access it on the same network and its prevents others from snooping on the commands you send to it (people used telnet before this, but people on the network can see the commands and snoop!). Its also possible to access a remote desktop (RDP) but that is a different setup, and most admins find the terminal just faster. Now if the application has a problem, you SSH into your server, edit the files you need, restart the application, and then test its working.

Viola - this you are now a self hosting server admin! As you access this site, its nothing more than an application running on someone else’s computer :slight_smile: There are lots of way’s you can improve and keep building on it, but the key is to keep building on it rather than do it all at once. Even in this ad-hoc guide, we started with running the application on your machine, then we moved it to the second machine with a monitor and keyboard, then we removed the monitor and keyboard for SSH, then [… so on so forth to make your admin life easier]. Don’t solve everything at once, start small, get it working, then make it better. Sometimes you’ll throw away solutions and restart - that’s ok, that’s part of the learning process. Start small, test it, get it working, iterate.

I.e., I didn’t talk about reverse proxies, which solves the problem of multiple HTTP applications able to talk to the same port, which privacy guides utilize in some capacity, or configuring this in a domain registrar.

CAVEAT: I spoke NOTHING on making this secure, and just wrote this as a teaching exercise. I’ve glanced over a lot of details here, but I’m hoping this demystifies the whole process. Do NOT expose services to the world wide web unless you are prepared to handle that.

6 Likes