rootbsd.net before that, but they don't seem to exist anymore.
https://news.ycombinator.com/item?id=49207236
e.g. Hetzner tripled prices recently.
Switched to OVH immediately.
It is a small and no frills service but the sys-admin, who runs the project, is very helpful and attentive. That is to say probably much better and human customer service than the big players. There are definite downsides, but if a project fits, highly recommended.
If you want a book, Absolute OpenBSD is good though a bit out of date now. A lot of it would still be applicable though, if backed up by the current man pages.
Reading undeadly.org is a another good way to keep up on developments.
Thanks for pointing this out and I appreciate the other recommendations in this thread. Massive +1 for @jcs. That dude is awesome and puts out great stuff.
You'll find much better pricing at RackNerd, DediRock, InterServer, BuyVM, etc. Small indy hosting companies are the way to go. 2GB for $5/month or so is the typical price point.
Any host that offers KVM and allows you to upload your own ISO can run OpenBSD (or FreeBSD, NetBSD, whatever you want).
Check out LowEndTalk or LowEndBox for deals. There are other sites but that's where I shop.
Sure, if you need an API, or if you want to host in one of the less common locations, or if you absolutely must have five nines, then DO or Vultr or Linode or Amazon LightSail can be a good fit. But if you just need a VPS with a control panel in a typical hosting location (Amsterdam, LA, New York, Chicago, Singapore, etc.) then I don't see the point of paying more at one of the big hosts.
A couple of theories I’ve had is that maybe
a) my VM was compromised and there is a persistent rootkit installed that kills sshd, or
b) file corruption after previous unclean shutdown has left some file needed by sshd corrupted and it leads to this behaviour, or
c) maybe it’s running out of memory sometimes
Each time I want to ssh into the machine I usually have to first connect with the VNC from the vultr dashboard to start sshd up again.
It’s running the latest FreeBSD, as every now and then I log in and do an upgrade on it some time after a new version has been released.
A persistent rootkit may have been installed if it was compromised between when some vulnerability became known and when I later upgraded next time.
If a file was corrupted in an unclean shutdown in the past maybe it’s a file that has not been changed between FreeBSD versions so even though upgrades replace some files maybe it’s the same corrupted file all along.
Ideally I’d just reinstall the machine, but that’s always more of a hassle than it should be so I continue running the VM in this broken state where sshd keeps dying every now and then.
The fact that they donate back to OpenBSD is great though. I own a VM there for testing stuff.
joshua stein's interest in getting OpenBSD running on anything he can provides useful insight too https://jcs.org/tagged/openbsd
Otherwise, I hosted a site with them for years and all went well.
Look on webhostingtalk or lowendbox or lowendtalk.
I ended up turning that off and switching to Tailscale. Tailscale is set to advertise my home IP range (I chose one that's not 192.168 based which avoids problems with range conflicts). So I can just connect to Tailscale and connect to 10.X.Y.Z as though I'm home. If I want memorable hostnames I can point DNS records to those private IPs.
> Small indy hosting companies ... $5/month or so is the typical price point.
> I don't see the point of paying more at one of the big hosts.
I'm confused. People who are paying $4/mo at the big host should instead save money by paying $5/mo at a small host?
It will only take a few min..
None of the dedicated machines I found were cheaper, so I'm surprised someone is offering that for $35/month.
This is kind of exactly what I worry about with a dedicated box. That and hardware failure.
And to clarify, this means encrypt it before it gets to the VPS. Just having full-disk encryption is not enough because cloud providers can dump RAM. There are tools that easily extract encryption keys from RAM.
So, really, you need to trust the cloud provider unless everything is encrypted on computers you own.
Check out BuyVM 3.50$ plan.
Meanwhile I recently migrated a $5 DigitalOcean VM that's been running flawlessly for over 6 years. It was in dire need of an Ubuntu upgrade. I expect this one to keep going for just as long!
For app hosting I'd either 1) use cloudflared and a cheap Lenovo Tiny box to host from my house, 2) write something serverless that runs on Cloudflare Workers, or 3) use a real host that isn't 18 months old and run by hucksters in a race to the bottom.
While I’m at it I also took a quick look now at output of `top` and it’s sitting at 27 MB free RAM lol. So from that, out of memory is very likely the reason I keep having sshd die on me.
The wireguard tunnels haven’t gone down after years of no maintenance use.
sshd_oomprotect=YES
Then run service sshd restartPreviously I haven't seen much detailed reason for why it dies in system messages. But this time it said something very specific:
> sshd[2036]: fatal: pack_hostkeys: serialize hostkey private: string is too large
Which kind of sounds like one of the sshd hostkey files might be corrupt? And maybe it only triggers after a while becuase it happens when scanners try to connect to it and during ssh negotiation sshd ends up selecting a different hostkey type than the one it uses when I connect to the machine myself?
I'm going to regenerate all of the three hostkey files on the server, and after that also disable the two that I can do without anyway.

My homepage now runs on OpenBSD with httpd(8) and Let's Encrypt via acme-client(1). I previously hosted it on GitHub Pages and then eventually moved to Cloudflare Pages because both options were free and easy. Free and easy is cool, and I understand that writing software full-time leaves us wanting absolutely nothing to do with computers after we punch out, but lately I have been missing the do-it-yourself web that I grew up with. Some of my favorite times growing up included installing and configuring UNIX-based operating systems and spending hours trying to understand how computers worked. I even met one of my closest friends online through a FreeBSD UNIX shell account forum more than 20 years ago.
So, in that vein, I wanted to write something on how you can get up and running on OpenBSD with DigitalOcean for $4 a month. Well, really, it's $4.24 after tax but that's still pretty good!
There are a few different options when it comes to downloading OpenBSD, but the quickest method is to grab the miniroot image.
curl -O -O https://cdn.openbsd.org/pub/OpenBSD/7.9/amd64/{miniroot79.img,SHA256}
Confirm that the checksum of the image is correct.
sha256sum -c --ignore-missing SHA256 miniroot79.img miniroot79.img: OK
Once you are signed up and logged in to DigitalOcean, go to Backups & Snapshots under the STORAGE section in the left-hand navigation. Click Upload an Image. Select the miniroot79.img file we downloaded earlier. Select a datacenter that makes sense for you. Select Other for the distribution (Hey, DigitalOcean, why no BSD distribution?). Give the custom image a name, something clever like "OpenBSD miniroot79". Finally, click the Add Custom Image button.
DigitalOcean will charge you for hosting custom images. Make sure you come back to this page to delete the image after your server is up and running.

Click Droplets under the COMPUTE section in the left-hand nav. We are going to create the basic droplet that includes 512MB memory, 1vCPU, 500GB transfer, and 10GB of disk space.
Select a datacenter region that makes sense for you.
Choose the miniroot79.img file we uploaded earlier under the Custom Images tab.

Choose the Basic plan.

Under the Authentication section add an SSH Key. DigitalOcean does not actually add this key but it is required to create the droplet. Follow the instructions on how to create and add an SSH key.
The rest of the options are up to you. Just a heads up, though, I have noticed that it won't let you create the droplet with IPv6 enabled. Finally, give your droplet a name and click Create Droplet.
Notice the total cost of $4.00/month... nice, dude.

Go to your newly created droplet and click the Web Console button at the top right. You will see a modal pop-up about updating the droplet console. Just click the Launch Recovery Console button.

This opens a new browser window that drops you into a console of the booted up miniroot79.img. Look at the white on blue text. Beautiful.

Type i and press return.
For most of these questions we can go with the default option. Please select whatever makes sense for you, but I will try to walk you through a very basic setup. Just make sure you give your server a cool hostname.

vio0 network interface.autoconf for IPv4 and IPv6 addresses. Select [done] afterwards because we can configure other interfaces later.sshd(8) by default so we can SSH into the server after installation.com0.sd0 for the root disk. You can type ? if you wish to see the size of the disks.p to encrypt the disk with a passphrase.This will require you to log in to DigitalOcean and launch the web console on the droplet to type in the passphrase every time you reboot the server. As far as I know there is no fdesetup authrestart equivalent on OpenBSD so installing kernel patches that require a reboot involve a little more work. To me this isn't a big inconvenience. There may also be arguments around the security of typing into the web console.

(W)hole disk MBR.(A)uto layout.sd1. Press return for [done].http.? to see a list of mirrors. Find the number for the mirror closest to the datacenter you selected for the droplet.q to get out of the pager.pub/OpenBSD/7.9/amd64.Since this is going to be a bare-bones web server we can remove most of the sets. You can type in -x* to remove all of the X server sets. Let's also remove the game -gam* and compiler -com* sets too. This should leave us with bsd, bsd.rd, base79.tgz, and man79.tgz. Press return since we are done. You should see signatures verified for the sets as they download. After the sets install we can select [done].

OpenBSD is now installed! Press return to reboot.

If you decided to use full disk encryption you will be prompted for the passphrase now. You should see the boot> prompt after successfully entering the passphrase. You can either press return to boot or wait for the system to boot automatically. From here you can either continue to use the Web Console or SSH into the server. I would recommend SSH since a terminal is a bit more comfy. Go to the droplet and copy the public IP address and SSH in! Make sure you use the non-root user we created during installation since we turned off root SSH login.

You are now SSH'd into your lovely OpenBSD server running on DigitalOcean for $4/month.
Now would be a great time to head over to OpenBSD Handbook and read up on Post-Installation Configuration. I would also recommend taking a look at OpenBSD's FAQ Page. Finally, I would recommend copying your public SSH key to the server and turning off PasswordAuthentication as a bare minimum.
If you have any questions please do not hesitate to reach out to me, even if it's just to say hello! You can find my contact details on my cool homepage https://wallyjones.com, running on a cool OpenBSD server.
Tue Aug 25 17:45:19 EDT 2026: In the curl request I originally wrote arm64 when I meant amd64. This has been fixed. Huge shoutout to Ben for catching this!