• Home
  • Blog
  • Contact
  • Projects
  • Content Mirror
  • Matrix Guide

  • OpenBSD All The Way

    March 20, 2022

    I use OpenBSD for everything. It runs on my server, my desktop, and my laptop. But it isn't just that; I try to use OpenBSD base software for everything I possibly can, and will often refrain from using a technology if OpenBSD doesn't provide it in the base system. I don't install many 3rd-party packages at all. My server has exactly one 3rd-party package, which is rsync(1), because OpenBSD's implementation of rsync, called openrsync(1), is quite lacking at this time. My desktop and laptop only have Firefox and LibreOffice. Everything else, I do with tools built in to OpenBSD.

    For my calendar, I use calendar(1). It is a file-based calendar system that reads files of events from various sources, and displays them on the console. It took a little while to get used to how this calendar worked, but once I figured it out, it totally replaced all the other calendar software I tried. It doesn't seem that complicated, but it does everything I need it to, and nothing I don't. For reminders and to-do lists, I just use less(1) with a text file called todo in my home directory. I have a shell alias to it that looks like this:

        alias todo="less ~/todo"

    The format of my todo file is very simple. It just has Markdown-style checkboxes that I can edit by launching vi(1) directly from less(1).

    For version control, I use cvs(1). CVS doesn't do nearly as much as Git, but it does everything I want. I can sync my documents between my desktop and my laptop with it, and I can work on personal programming projects.

    On the server side, I make use of smtpd(8) and mail(1) for email, and unbound(8), nsd(8), dhcpd(8), tftpd(8), vmd(8), and more for networking. I also run httpd(8) for my website, and cron(8) for mirroring content. To download files, I use ftp(1), which supports HTTP(S).

    So the question is: why? Why would I use OpenBSD, of all operating systems, and why do I try to force myself into using only software built in to it?

    I switched from Windows to Linux around the time Windows 10 came out. I remember trying the Windows 10 developer previews, and being amazed...at how much slower my laptop was compared to Windows 7. So I tried Ubuntu. And that began my journey into Linux. A few years later, after hopping between more distributions than I can count, and after running Arch in production because Ubuntu Server didn't have new enough packages for Nextcloud, I discovered OpenBSD. OpenBSD looked like a promising server operating system. I saw that it had a firewall that was easy to configure (I never was able to figure out Linux's iptables firewall in any meaningful or useful way) and shipped with a number of useful built-in daemons. I also saw that the documentation was very good. I saw that it was lightweight and simple, and focused on security and correctness above all else.

    So I made the leap on my server from Arch Linux, which I had to update twice a day, to OpenBSD, which updates every 6 months. I poked around with OpenBSD 6.8 on an old laptop, and quickly decided that it would work well on my server. But I knew that OpenBSD 6.9 was just around the corner, so I waited until that came out. OpenBSD 6.9 was the first release of OpenBSD that I really used. I ran it on my server, which I turned into my network's router as well. I instantly fell in love with OpenBSD because of how cohesive it is. OpenBSD feels like a complete system, because it is. Linux has always felt hacked together, because the kernel and userspace are developed totally independently. But OpenBSD is distributed as a whole operating system, and it really shows. Furthermore, it was free from Systemd, which was really starting to bother me about Arch, because trying to figure out trivial things like WiFi and DNS were actually painful with Systemd. But on OpenBSD, it wasn't. It is easy to pop open /etc/resolv.conf in an editor, and it is easy to use ifconfig(8) to connect to WiFi. I also noticed that the man(1) pages were just excellent—far superior to anything I'd ever seen on Linux. On Linux, I was always used to looking things up online, because the built-in documentation was never helpful. But now, on OpenBSD, I almost solely consult the man(1) pages built right into the operating system, because they are extremely helpful.

    So that's a bit of the why behind my decision to use OpenBSD in the first place. But now that I'm using it, I'm trying to use it in its purest form: without any additional packages or software. My rationale for this is a little different, but it does stem from the fact that OpenBSD is a complete system. It is a simple system, but a complete one. I really enjoy the simplicity, and it has inspired me to dramatically simplify my digital life. Somewhere between my Ubuntu and Arch Linux days, I decided to delete all my online accounts and self-host my own servers, but now, in my OpenBSD days, I've taken it a step further and tried to self host only the bare minimum. I used to run a Nextcloud server, and a Webmail server, and a Matrix homeserver. Now, I use SSH for accessing my files, OpenBSD's mail(1) client for email, and my SMTP server for chatting with my girlfriend via a handy app called DeltaChat.

    I want my life to be simple, and without distractions, because the world is full of distractions. And, as much as I love computers, they are a distraction too. But by using OpenBSD, and only running essential base software, I still get to tinker with them in a way that isn't as much of a distraction. I can still come up with creative solutions for problems, and I can still run and maintain my own home server, but those things no longer take away from the rest of my life. Well, I suppose it depends on who you ask. But the point is, I'm trying to be conscious of the role computers have in my life. The thing is, it is impossible to trust tech companies these days. They spy on us constantly, so to me, running my own servers is the only solution. I know it isn't for everyone, but it works for me, and I enjoy doing it.

    I think there's also a lot of satisfaction to be found in using computers the way they would have been used in the 90s. Computers are complex, and I feel as though they've only gotten more complex so that people can get dummer. They do more now than they ever have so that users have to do less and less. I don't think this is a good way to go, because we don't have to think anymore. Computers are meant to be a tool to aid us in our persuits, not a replacement for them altogether. So I don't mind that OpenBSD is a niche operating system that requires a high level of technical knowledge to get up and running. That's what makes computers so fun. Having everything spoon-fed to you is not fun at all. At least not to me. I like to problem solve, and OpenBSD gives me plenty of problems to solve. I am very much of the mindset that in order to make the most of something, you have to be fully aware of how it works. Or at least, mostly aware of how it works. I think the same is true of cars, and other things we depend on, because if they break, you want to be able to know how to fix them.

    So, to summarize: I use OpenBSD for everything, and I use only the base system whenever I can, because OpenBSD is simple, yet powerful. It forces me to learn about how computers work, and enables me to tinker with them and do a lot of really neat things. It also encourages me to simplify my digital life. My mindset lately has been that if OpenBSD can't do it, maybe it doesn't need to be done. And that has gone a long way toward decreasing my stress with other areas of life, such as school.

    OpenBSD is an awesome operating system, and I'm committed to it. My whole digital life is now managed by it, and I'm sincerely convinced it will be the last operating system I ever use. I'm done distro-hopping, and have finally settled on something that is rock-solid and stable. I've truly gone all in with it, and I'm soon hoping to find the time to contribute my own time and money to the project.

    © 2019-2024 Jordan Bancino.