The WebStick Is A Small, Cheap NAS

The ESP8266 was one of the first chips that provided wireless functionality at a cost low enough to be widely popular for small microcontroller projects. This project uses one to provide rapid, small, and inexpensive network-attached storage (NAS) capabilities wherever you happen to go.

With an ESP12F board at the heart to provide network connectivity, the small device also hosts a micro SD card slot and a USB-A port to provide power and programming capabilities for the device. It’s Arduino-compatible, and creator [tobychui] has provided the firmware source code necessary to bring it up on your network and start serving up files. Originally intended for people to host web services without experience setting up all of the tools needed for it, there’s services for storing and streaming music and video over the network as well.

While it includes a lot more functionality than is typically included on a NAS, [tobychui] notes that with a library, something like WebDAV could be added to provide more traditional NAS capabilities. As it stands, though, having networked storage with web hosting capabilities on a PCB with a total cost of around $5 is not something to shy away from. If you’re looking for something a little more powerful for your home network, take a look at this ARM-based NAS instead.

23 thoughts on “The WebStick Is A Small, Cheap NAS

  1. “While it includes a lot more functionality than is typically included in a NAS”

    What? A typical NAS includes far more functionality than this! NASes typically include Samba support, iSCSI, a hypervisor, some sort of replication functionality, similar browser driven UIs and so on and so forth.

    This is a neat project and I have nothing against it, but rather against that weird claim in the blurb. Have you never used a NAS before or what?

    1. Odd indeed. Perhaps their definition of a typical NAS is the feature found in most household routers. I’ve never used that function, but I wouldn’t be surprised if it was limited for the sake of simplicity. Though, the processing power and network connectivity provided by the router would likely be leagues ahead of this intentionally bare-bones project.

      1. Yep, my thoughts too. With as cheap as micro SD cards are getting (256GB for about $15) I can see them being a possible storage, but at least 2 slots (4 would be nice) and a simple duplication for when the card fails will be needed for me to even consider this. Even the super basic NAS on a router can setup a dumb RAID 1.

        1. RAID1 on an ESP8266 with microSD-cards would be….slow. You need to write CRC for each and every file, then verify that CRC on read before handing the data over the network; an ESP32 would be a far more suitable choice at that point.

          Though, at that point I’d just move on to an RPi Zero W or one of the number of similar boards, so I could use real filesystems meant for redundancy and bitrot-detection, like e.g. Btrfs.

          1. RAID1 doesn’t need CRC calculations. RAID5, for example, does. RAID1 just needs to write blocks of data twice to different storage devices, and will read from only one. By itself this can overwhelm an ESP8266 of course. I/O speeds are also limited.

          2. Pedro, without CRC, you won’t know which drive has the correct data and which one doesn’t; you’ll only know that one copy or both are bad. If you then just simply guess, you may end up serving corrupted data.

    2. You can use your typical sata/(m)pci-e/u.2/m.2 holder to x1-16 SD/eMMC/eUFS optinal to PCI-e carrier board just reprogram controller for your particular need.
      You can even install your favored *nix OS directly to hard drive controller and use it this way, sadly I newer seen modern hard drive with swappable platters, ram or eMMC/eUFS cache…

  2. As much as I like the idea of using an SD card for storage, it’s a really bad idea to use an SD card for data backup, such as in an NAS. I have seen so many different failure modes with SD cards that I have never seen with conventional hard disk drives or solid state disks. Usually with normal storage devices, you can check them constantly for their health and see beforehand when things are going to fail. With hard disk drives, it’s the easiest to predict failure. With solid state disk drives, it’s harder and they can fail out of nowhere. But solid state disks have also been improved on a lot, while SD cards are just not meant for safe storage. As much as I like the idea and the project, I would never ever use an SD card to store valuable information for a longer period. Also, the stuff that I have on my phone, well, you know, it’s my own problem if that disappears because of some weird SD card failure mode.

    1. I think they fail because they usually aren’t managed by a flash-friendly file manager or load balancer. Consumer devices designed from the ground up for SD card storage typically use a file system like f2fs and SSDs have load balancing logic interposed between system calls and the raw flash.

      I think I’ve seen something of the sort implemented on an MCU in the past, but I doubt it was here. That said, if the user rarely deletes files and only adds, the flash shouldn’t experience write exhaustion, so as long as it’s used “correctly” it should be fine.

    1. Thx for the project link,
      I like the project, but I do not like the NAS focus of the article.
      From the project description, this gadget makes sense.
      The NAS feature is just “a happy little accident”, and nobody should use is for saving important stuff.
      The same goes for all those “Raspi NAS” solution or the complains about its speed.

  3. Can it run a DLNA server? If you have a Smart TV* from 2016 or later it most likely supports h.264 and h.265 video and DLNA, plus can play at least MP3 audio at a minimum. Doesn’t need Plex or other server side transcoding so the server can be an old 32bit thin client. It only has to make the media files available via DLNA for the client device’s software to play.

    *Some brands, like TCL with Roku, only support h.265 on TVs with greater than 1080p resolution. 1080p or lower resolution TCL TVs with Roku do not play h.265 for reasons known only to TCL.

    1. A DLNA server was my first thought as well. What you point out is totally correct. Also, newer TVs are more picky about older content. If you are a fan of old TV shows that you got transcoded or, ok, downloaded, 10 or more years ago, you’re in for some disappointment. We are not talking just XVid or more exotic AVI container files. Feels like some h.264 profiles are also problematic.

    1. I was thinking about how cool this would be to integrate with a dice tower after loading the SD card with illicit PDFs of various RPG books. I’m already set up to just do this with my phone if I end up running a F2F game ever again, but the idea of a light-up thing that’s a network appliance for a specific kind of task appeals to my older sensibilities.

  4. I would love to have a really simple local drive that did one thing, transparently wrote reed Solomon error correction code as data is written, and transparently verify/correct as read, with a scrub option. For a lot of us we have pretty good backup processes and already have one copy of the data in addition to the archive. I just want the archive to be protected from bit rot. I don’t need raid to the Nth power if I am already happy with the number of copies of the data.

  5. A “self-hosting device for non-technical users” running a custom c++ webserver that someone bashed together in a weekend. I’m sure there are some handy uses for this but the way the creator pitches it is basically Network Compromise In A Box. And characterizing soldering SMD devices as a simple thing to do with no experience seriously calls their judgement into question imho.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.