A ESP12E/F powered web server with limited NAS functionality
Basic Web Server
Directory View
Cookie based login system
File Manager
File Upload / Download (with multiple-file zip download support)
File Open, Cut and Copy
Support UTF-8 filename (32 bit length only, filename length depends on variable bytes used per char)
File Searching Tool
System Information
WebApps
mDNS are local only domain names. If you want your viewer to be able to access your website from the public internet via your domain or your home public ip address, you will need to purchase a domain name, setup your DNS and / or your NAT router's port forward rules.
The following libraries are required for building the WebStick backend code (firmware to be used in ESP8266) using Arduino IDE. You can find the source code for the backend bare metal web-server in the /web-server
folder.
Here are the recommended settings for best performance.
Board: Wemos D1 R2 & Mini
CPU clockspeed: 160Mhz
IwIP Varient: v2 Higher Bandwidth
The WebStick provide basic web server functions like a fresh install Apache
▲ Homepage template
▲ Web server for HTML files
▲ Directory listing
WebStick contains basic functions for single admin environment. All file operations can only be performed by the only admin user in this system.
▲ Login / User System (based on Cookie not Basic Auth)
▲File Manager (Support upload, (multi-zip) download, copy, cut, paste, rename and new folder / files)
▲ Basic Search Engine (for local files)
▲ System Statistics
There are also limited multimedia streaming functionality on the WebStick.
▲ Basic Music Player
▲ Video Player (really small webm / mp4 files only)
▲ Photo Viewer
WebStick also got other text editing utilities. If you are using markdown as notes or you want to update your website remotely, you can use the markdown editor or the notepadA editor.
▲ Markdown Editor (Powered by SimpleMDE project)
▲ NotepadA Code Editor (Powered by ace editor, support multi-tabs)
As you might have notice by now this system is hosted on a 1 USD MCU (ESP8266), even if web server is written in bare metal, it still have the following limitations
Filename length (hardcoded to 32 bits per filename, might be shorter for UTF-8 as it use variable byte structure, but technically this is not the system limit)
File size limit (recommend) <= 5MB, any file size larger than 5MB that is not stream-able (e.g. mp4) is not meaningful. Stream-able files can be larger than this size (e.g. webm) with acceptable playback speed.
Slow Upload / Download speed (2 - 4Mbps), Very slow concurrent R/W speed (200 - 210 Kbps)
Single admin session (cookie), due to limit in runtime memory (i.e. If you try to login from 2nd browser, the first browser will automatically logged out)
You can place order at PCB printing service provider like JLCPCB or get one from my Tindie Store
Hardware Design (PCB files): CC BY-NC-SA
Backend Code (Arduino): MIT License
Front-end Code (html files): AGPL
(I strongly recommend anyone with ability to write a better UI than my system :D)