The Handbook

    Theme
    • Guides
        • Check a system before installing FreeBSD
        • Orient a Linux administrator on FreeBSD
        • Supported FreeBSD releases
        • Choose a FreeBSD documentation and support channel
        • Move files safely without GNU mv -t
        • Update, upgrade, or update packages?
        • Upgrade 14.4 or 15.0 to FreeBSD 15.1
        • Choose packages, ports, or poudriere
        • Choose the quarterly or latest package branch
        • Choose a FreeBSD download or package mirror
        • Make a system setting persistent
        • Configure locale, keyboard, and time zone
        • Configure a serial console for recovery
        • Choose a custom kernel, module, or loader setting
        • Run a Linux binary with the compatibility layer
        • Check desktop and laptop hardware before installation
        • Choose and check a graphics driver
        • Choose Xorg or Wayland
        • Build a maintainable desktop baseline
        • Install and check a desktop browser
        • Check laptop Wi-Fi, power, and suspend
        • Check multimedia readiness
        • Choose and configure a printing stack
        • Run Windows applications with Wine
        • Snapshot and replicate a ZFS dataset
        • Choose a filesystem and storage layout
        • Operate ZFS without losing the recovery path
        • Restore files from a ZFS snapshot
        • Read ZFS pool health and run a scrub
        • Replace a failed device in a ZFS mirror
        • Replicate a ZFS dataset over SSH
        • Change PF safely on a remote host
        • Configure a narrow WireGuard tunnel
        • Plan a FreeBSD home server
        • Choose a mail server or an outgoing relay
        • Publish a network service safely
        • Choose a jail network model
        • Choose native jails or a jail manager
        • Choose a jail or a bhyve virtual machine
        • Establish a FreeBSD security baseline
        • Choose a MAC policy
        • Audit security-relevant activity
        • Start a DTrace performance investigation
    • Integrations
        • Create a first jail with Bastille
        • Compare jail managers and OCI tooling
        • Publish a Bastille service through PF
        • Mount a ZFS dataset in a Bastille jail
        • Update and upgrade Bastille jails
        • Back up and restore a Bastille jail
        • Prepare bhyve and vm-bhyve
        • Choose NFS or Samba for file sharing
        • Choose ZFS backup automation
        • Operate a signed poudriere repository
        • Manage FreeBSD configuration with Ansible or Salt
        • Run Motion with webcamd on FreeBSD
        • Design a reverse proxy, certificates, and monitoring
    • FAQ
      • Troubleshooting
          • Recover an interrupted freebsd-update run
          • Resolve a package repository or ABI mismatch
          • Diagnose the FreeBSD boot path
          • Recover with a ZFS boot environment
          • Diagnose DNS, routing, and firewall paths
          • Diagnose network mbuf exhaustion
          • Bind a service to a low port without running it as root
          • Diagnose audio output or input
          • Diagnose webcamd, cuse, and a webcam
          • Fix USB device permissions without opening every device
      • About this handbook
      • Synopsis
      • Start with requirements
      • Separate host and service responsibilities
      • Give data an explicit home
      • Make exposure explicit
      • Choose file sharing by clients
      • Define the maintenance calendar
      • Preserve a recovery order
      • Primary references

      Plan a FreeBSD home server

      Last reviewed
      13 August 2026
      Applies to
      15.1-RELEASE, 15.0-RELEASE, 14.4-RELEASE

      Synopsis #

      A maintainable home server is an arrangement of failure boundaries, not a list of packages. The host owns hardware, storage, networking, updates, and backups. Jails or virtual machines isolate workloads. Each service owns explicit data, ports, credentials, and a recovery procedure.

      This planning guide establishes those boundaries before a media server, file share, DNS service, reverse proxy, monitoring stack, or other application is installed.

      Start with requirements #

      Record the workloads and classify each one:

      QuestionWhy it matters
      Must the service be reachable from the Internet?Public exposure changes firewall, authentication, update, and monitoring requirements.
      Does it require Linux-only kernel facilities?A FreeBSD jail and Linux binary compatibility do not supply cgroups or Linux namespaces.
      Where is its durable data?The answer defines dataset, backup, quota, and restore boundaries.
      Can it be stopped for a snapshot?Stateful applications may need consistency hooks.
      What is the recovery-time requirement?It determines whether configuration, datasets, or a whole VM must be replicated.
      Which other service must it trust?Hidden dependencies make isolated recovery fail.

      Discard workloads that cannot be maintained with available time, hardware, or recovery access.

      Separate host and service responsibilities #

      Keep the host small. It normally owns:

      • FreeBSD base-system maintenance;
      • pool and filesystem administration;
      • bridges, routing, firewall, and time;
      • jail or VM lifecycle;
      • backup transport and monitoring.

      Run application stacks in jails when they fit the FreeBSD kernel and need process, filesystem, and network separation. Use bhyve when a workload needs another kernel or a stronger machine-shaped boundary. Use jail or bhyve to select that boundary, then see Create a first jail with Bastille for one managed-jail starting point.

      Give data an explicit home #

      Design datasets or filesystems from lifecycle rather than application fashion. A useful service data boundary has:

      • a documented mount point;
      • owner and permission policy;
      • quota or capacity alert;
      • snapshot schedule;
      • independent replication target;
      • restore procedure.

      Configuration and data may need different retention. Large reproducible media caches should not crowd out irreplaceable documents or database snapshots.

      The filesystem and storage-layout guide separates availability from backup. The ZFS replication guide covers an independent remote copy.

      Make exposure explicit #

      For every listening socket, record:

      • owning service and jail or VM;
      • interface and address;
      • transport and port;
      • intended client network;
      • firewall rule or reverse-proxy route;
      • TLS and authentication boundary;
      • log and health signal.

      Do not expose an administrative interface merely because the application binds to all addresses by default. Prefer a private service network and publish only the required entry point.

      Use Publish a network service safely as the shared lifecycle checklist before following an application-specific installation procedure.

      Choose file sharing by clients #

      NFS fits trusted UNIX-like clients and preserves familiar UID/GID semantics when identity is coordinated. SMB through Samba fits Windows, macOS, and mixed-client networks. Neither protocol should be exposed directly to the public Internet.

      A file-sharing dataset should not also become an unrestricted application-data mount. Separate human shares from service-internal state so permissions and restore operations remain understandable.

      Use Choose NFS or Samba for file sharing to make the client identity, authentication, and permission decision before exporting a dataset.

      Define the maintenance calendar #

      Schedule and monitor:

      • supported-release and security-advisory review;
      • base-system and package updates;
      • jail or VM update windows;
      • snapshots, replication, and retention;
      • ZFS scrubs and pool-health checks;
      • certificate renewal;
      • restore exercises.

      See Update, upgrade, or update packages? before automating commands with different maintenance scopes.

      Preserve a recovery order #

      A useful recovery document names the order in which the system returns:

      1. firmware, boot, and host network;
      2. storage pools and encryption;
      3. firewall, DNS, and time;
      4. jail or VM infrastructure;
      5. service configuration and secrets;
      6. durable application data;
      7. reverse proxy and public exposure;
      8. monitoring and backup schedules.

      Test one service restoration without using the production dataset. A backup inventory alone does not prove that dependencies, ownership, and application state can be reconstructed.

      Primary references #

      • FreeBSD Handbook: Jails and Containers
      • FreeBSD Handbook: Virtualization
      • FreeBSD Handbook: Network Servers
      • FreeBSD Handbook: ZFS
      • FreeBSD security information

      Independent documentation. Not affiliated with or endorsed by the FreeBSD Project or the FreeBSD Foundation.

      Report a bug
      • Synopsis
      • Start with requirements
      • Separate host and service responsibilities
      • Give data an explicit home
      • Make exposure explicit
      • Choose file sharing by clients
      • Define the maintenance calendar
      • Preserve a recovery order
      • Primary references