freebsd-server

Project  
Name FreeBSD Home Server
Tech FreeBSD, UNIX tools, …
URL https://gist.github.com/erikw/b005e31c2c01730fdc8d0aaa8ede53e5

An all-in setup for a home server running FreeBSD.

While I have has a few GNU/Linux servers in the past, I had long dreamed of setting up a proper BSD-server at home. Why? Maybe to get taste of a different Unix flavor than I was used to. And because it’s damn fun to hack together a server providing useful functions for the home!

I made quite extensive notes of my setup, so that I can re-do it in case of system failure, but also remember how and why I had done some setup. It’s written like a shell script, but will not actually execute even though it looks like it would. I’m just using command lines as documentation here.

The server hardware itself was Intel NUC Dawson Canyon NUC7i3DNH2E.

As I had long dreamed of the “perfect server”, I went all in and setup a ton of things including:

  • OS setup
    • Users
    • Keymapping
    • Time sync
    • Version control of /etc
    • OS, package and ports upgrade procedure and email notifications
    • Automatic export and backup of system state like installed packages.
  • Disks
    • ZFS pools
    • automatic snapshots with zfstools
    • Full disk encryption with GELI
    • Automatic remote backup with restic
  • Security
    • rootkit hunter
    • Aduit logging
    • Anti-malware with clamAV
    • /boot on a USB stick.
    • FreeBSD Jails
  • Networking
    • OpenSSH + port knocking (knockd)
    • Mosh
    • Firewall with ipfw or pf
    • Dyndns with ddclient
    • Wake on LAN
    • Email with ssmtp
    • Samba network share
    • DHCP server
    • FTP server
    • DNS resolver/cache with Unbound
    • IP-over-DNS tunneling with iodine
    • OpenVPN server
  • Printing
    • CUPS
    • Google Cloud Print
  • Services
    • Webmit
    • Gitolite server
    • taskd server
    • IRC bouncer with ZNC
    • Bitlbee IM proxy via IRC
    • ngin web server + letsencrypt

Eventually I decided that it was too much effort to keep the OS, packages, ports etc. up to date and I teared the server down and moved to the cloud… /projects/erikw.me-jekyll/.

Updated: