Homeassistant as NAS with SimpleNas Addon

Simple NAS – Turn your Home Assistant into a full NAS with Web GUI

Hi everyone!

I built a Home Assistant add-on that turns your Raspberry Pi (or any HA hardware) into a simple NAS with Samba file sharing and a built-in web interface — no SSH or config files needed.

Why?

I wanted a straightforward way to share USB drives connected to my Raspberry Pi 5 running HA OS, without the complexity of existing Samba add-ons. I needed something where I could plug in a drive, create a share, manage users — all from within Home Assistant.

Features

  • Samba file server (SMB/CIFS) — access your shares from Windows, macOS, Linux, and other apps like Nextcloud
  • Web GUI integrated in HA — manage everything via Ingress, no separate web interface needed
  • Drive management — detect, mount, and unmount USB drives directly from the GUI (supports ext4, NTFS, exFAT, btrfs, XFS, FAT32)
  • Share management — create, edit, and delete Samba shares with a few clicks
  • Users & Groups — create Samba users with passwords, organize them in groups, assign per-share access
  • Network discovery — your NAS automatically appears in Windows Explorer (WS-Discovery), Linux file managers (Avahi/mDNS), and macOS Finder
  • Dark/Light theme — matches the HA look and feel, switchable in the header
  • System protection — warning dialog when trying to mount/unmount system partitions (sda)
  • Persistent configuration — all shares, users, groups, and mounts survive add-on restarts and updates
  • Configurable web port — change the GUI port if 8099 conflicts with something else

Screenshots

Quick Start

Installation:

  1. Go to Settings → Add-ons → Add-on Store
  2. Click ⋮ → Repositories
  3. Add: https://github.com/gregorwolf1973/EasyNas-HASSIO-Addon
  4. Find Simple NAS → Install → Start → Open

Usage:

  1. Plug in a USB drive
  2. Go to Drives tab → click Mount on your partition
  3. Go to Shares tab → create a new share pointing to the mounted drive
  4. Go to Users tab → create a Samba user
  5. Access your share from any device: \\YOUR-HA-IP\sharename

Works with Nextcloud

If you run Nextcloud on HA, you can mount Simple NAS shares as external storage:

  • External Storage → SMB/CIFS
  • Host: your HA IP
  • Share: the exact share name from Simple NAS
  • Authentication: Username and Password (use a Samba user you created in Simple NAS)

Tip: Use “Username and Password” authentication instead of “Global credentials” — it’s more reliable.

Technical Details

  • Based on the official HA base image (Alpine Linux)
  • Samba 4.x with SMB2/SMB3
  • Flask web server with HA Ingress support
  • Avahi (mDNS) + WSDD (WS-Discovery) for network browsing
  • Privileged mount operations via FIFO daemon
  • Architectures: aarch64 (RPi 4/5), amd64, armv7

Links

Feedback

This is my first public HA add-on. I’d love to hear your feedback, bug reports, and feature requests — either here or as GitHub issues.

If you find it useful, a :star: on GitHub would be much appreciated!

4 Likes

Hi I just switched over to Simple NAS from the standard Samba NAS add-on, and the difference is night and day.

Your version is so much easier to handle, especially for managing external drives. Most importantly for me: it runs significantly better with macOS. Finder picks up the shares instantly and the connection is much more stable than what I experienced before.

Läuft super! Really appreciate you putting this together and making NAS functionality accessible for everyone.

One quick question: Is there (or could there be) an option to exclude specific files? I’d love to prevent macOS from cluttering the shares with its ‘junk’ files (like .DS_Store, ._* files, or .TemporaryItems).

1 Like

Thanks for this. Will definitely try it out!

1 Like

Hi there,
I have included the function. But I’m not using macos, so i’m not able to test it. Please give it a try and let me know how it works.

With the new update its not working anymore?

thanks for implementing the veto files

However, I’ve run into another issue: When rebooting the host or restarting the add-on, the device assignments (like /dev/sda vs /dev/sdb) sometimes swap. This leads to the wrong drives being mounted to the wrong share paths.

this looks awesome, thanks for sharing! i’ve been wanting something like this for ages—just plug in a usb drive and go, no messing with config files. will give it a shot on my pi, especially since i’m already running a bunch of monitoring stuff on HA anyway. curious if anyone’s tried it with bigger drives or if there’s any weirdness with permissions?

Have just installed, works great for smaller drives, using raspberry pi 4
I have an old 160Gb that works great.

Have yet to get a big drive going Tb ,tried powered USB hub, it sees the drive and tries to mount but timeouts. Will have another go later.

Does SimpleNAS have an hd-idle capability and setting similar to hdd_idle_seconds in SambaNAS (as documented here: hassio-addons/sambanas/DOCS.md at 7b3f41c65b996d4a868f25e9426595fc1148547e · dianlight/hassio-addons · GitHub ) ?

Yes, it does use hd-idle

Hi Bjoern, thanks!

Good news: this device-swap problem is already solved in v3.0.33+. Simple NAS now stores mounts using stable /dev/disk/by-id/… identifiers (based on the drive’s serial) instead of raw /dev/sdX names, so a USB drive is always found correctly after a reboot even if the kernel assigns it a different letter. Existing /dev/sdX entries are auto-migrated to by-id paths on startup (v3.0.34).

Please update to the latest version. After updating, restart the add-on once with all drives connected so the migration can resolve every drive’s by-id path (if a drive is disconnected during migration, its old raw path can’t be converted).

If you still see swaps after that, please post the output of:

A rare edge case is two identical USB enclosures that report no unique serial number — then their by-id paths aren’t distinguishable. If that’s your setup, let me know and we can switch those mounts to /dev/disk/by-path/ (stable per physical USB port) instead.

I tested hd-idle (1.22-r7) in SimpleNAS 3.1.11 and in my particular case, using an external USB drive (Fantom 2TB GF3B2000UP), this fails…, but works if the “-c ata” argument is passed to hd-idle. I think this parameter is per device, and I’m not sure if this is something that can be determined programatically (?), but I modified your file hd_idle_args.py Line #55 to: args.append(f"-a {disk} -i {IDLE} -c ata") and this works for this particular drive.

Wow this might be something i want, cause i want a hdd to be detectable through the network for storing files..
IS it fast enough? Not for streaming but storing files, like word, pdf, excel etc…
Does it take much resources of ram and storage? (the addon)?

Hi, i installed this, looking promising.
Question, i used the samba addon before so i could browse my files on a windows pc with explorer.
Now i disabled the samba addon and are using this addon.
Is it possible, cause i see my HA config files through files… but is it possible to also share that so i can browse the config files using my windows explorer, instead of going through the addon?
@gregorwolf1973

Nobody? Is this still maintained?

@skank - Yes, the apps appear to be maintained: GitHub shows last updates to Samba Share were 4 days ago; Simple NAS most recent updates were 2 weeks ago. As with most volunteer-maintained open-source community projects, immediate responses to user queries aren’t necessarily expected (and not necessarily from the lead maintainer).

I think I can answer your question, even though I haven’t used the Simple NAS app yet (but am planning to do so soon). And I do use the Samba Share.

From my reading of the docs, it seems that Samba Share provides file-share access to HA disk (like config files), while Simple NAS gives access to disks that are externally mounted to HA server – usually meaning USB-attached drives (thumb drives, external hard disk, etc.).

Since both apps are providing Samba (SMB/CIFS) protocol services to clients, if you want to have both active at the same time, the docs say you need to configure Simple NAS to operate on a different port, and include that port number in your UNC references from Windows, such as: \\my-ha-server-ip:4445\my-share-name

But hmm, for my usage (seldom accessing HA internal files from Windows), it could be simplest to not worry about port #'s, & not have to mess with ports. Then just have both apps installed, & only ever have one of them in Started condition at a time. (Thus only one app ever responding to file-share requests on SMB port 445.) Slightly more tweaky, but probably easier for me to remember than adding a port number to my UNC’s. Not applicable if using fully-automated scripts and such, but maybe OK for my manual activities.

I know i can start/stop whenever i want to avoid conflict.
Thats not the question.
The question is, inside simple nas i can see my files of HA like my config files, however, is there a way to show/map them like the other drives so i can see them through my explorer without going into the addon

Yes, the veto files function works, but I think it currently causes an unexpected issue for macOS users.

I’m using Simple NAS from a Mac, and I noticed that I can copy individual files to the NAS without any problems, but Finder fails whenever I try to copy a folder containing .DS_Store. It immediately returns error -8062.

I tested this with a folder containing only a single .DS_Store and confirmed that removing .DS_Store makes the exact same folder copy successfully. New folders that have never been opened by Finder also copy correctly until macOS creates .DS_Store in them.

From what I understand, this is because veto files makes Samba reject the .DS_Store file entirely. Finder then treats the rejected metadata file as a failed folder copy, so the whole folder operation fails.

Would it be possible to make the veto files functionality optional, for example with a configuration switch? Ideally, users could choose whether these files should be blocked, or they could simply be automatically deleted/cleaned after upload instead of causing the entire folder transfer to fail.

This would be especially useful for macOS users, because currently the feature effectively prevents us from uploading many existing folders at all. I think making it optional would preserve the current behavior for users who want it while allowing macOS users to copy folders normally.

Thanks for adding the feature in the first place — it does work, perhaps just a little too well in this particular case! :grinning_face_with_smiling_eyes:

1 Like

Hi,

I just wanted to say thanks. The add-on is exactly what I was looking for. Unfortunately, it took a while before I stumbled upon it while browsing the web. It really ought to be in the official repository.

Thanks again :+1:

1 Like

sorry for the late response. Vacation, job change … lots of work :slight_smile: but yes, it is possible