Skip to content

Native File Sharing

HomelabARR PE includes native Go implementations of SMB and NFS file sharing. No Docker containers, no Samba packages — file sharing is built into the binary.

Why Native?

Traditional homelab file sharing runs Samba in a Docker container. This adds:

  • Docker network overhead on every file transfer
  • Container restart interrupts active transfers
  • Complex volume mount configurations
  • Separate container to manage and update

PE's native Go implementation talks directly to the kernel. The result:

Method Read Speed Write Speed
Docker Samba ~600 MB/s ~450 MB/s
Native Go SMB ~1.2 GB/s ~900 MB/s
Native Go NFS ~1.1 GB/s ~850 MB/s

Benchmarks on 10GbE network with NVMe storage.

SMB Configuration

file_sharing:
  smb:
    enabled: true
    workgroup: WORKGROUP
    server_string: HomelabARR
    shares:
      - name: Media
        path: /mnt/storage/media
        read_only: false
        guest_ok: false
      - name: Downloads
        path: /mnt/storage/downloads
        read_only: false
        guest_ok: false
      - name: Backups
        path: /mnt/storage/backups
        read_only: true
        guest_ok: false

NFS Configuration

file_sharing:
  nfs:
    enabled: true
    exports:
      - path: /mnt/storage/media
        clients: "192.168.1.0/24"
        options: "rw,sync,no_subtree_check"
      - path: /mnt/storage/backups
        clients: "192.168.1.0/24"
        options: "ro,sync,no_subtree_check"

Dashboard Integration

File shares are managed from the PE dashboard:

  • Add/remove shares without editing config files
  • User management — create SMB users with per-share permissions
  • Active connections — see who's connected and what they're accessing
  • Transfer monitoring — real-time throughput per share