Arozos
Web Desktop Operating System for low power platforms, Now written in Go!
Install / Use
/learn @tobychui/ArozosREADME

<img src="https://img.shields.io/badge/License-GPLv3-blue"> <img src="https://img.shields.io/badge/Device-Raspberry%20Pi%203B%2B%20%2F%204B-red"> <img src="https://img.shields.io/badge/Made%20In%20Hong%20Kong-香港開發-blueviolet">
Features
User Interface
- Web Desktop Interface
- Ubuntu remix Windows style startup menu and task bars
- Clean and easy to use File Manager (Support drag drop, upload etc)
- Simplistic System Setting Menu
- No-bull-shit module naming scheme
Networking
- Basic Realtime Network Statistic
- Static Web Server (with build in Web Editor!)
- mDNS discovery + SSDP broadcast
- UPnP Port Forwarding
- WiFi Management (Support wpa_supplicant for Rpi or nmcli for Armbian)
File / Disk Management
-
Mount Disk Utilities
- Local File Systems (ext4, NTFS, FAT etc)
- Remote File Systems (WebDAV, SMB, SFTP etc)
-
Build in Network File Sharing Servers
- FTP, WebDAV, SFTP
- Basic Auth based simple HTTP interface for legacy devices with outdated browser
-
Virtual File System + Sandbox Architecture
-
File Sharing (Similar to Google Drive)
-
Basic File Operations with Real-time Progress (Copy / Cut / Paste / New File or Folder etc)
Security
- oAuth
- LDAP
- IP White / Blacklist
- Exponential login timeout
Extensibility
- ECMA5 (JavaScript like) scripting interface
- 3rd party Go / Python module development with sub-service reverse proxy
Others
- Require as little as 512MB system memory and 1.5GB system storage
- Base on one of the most stable Linux distro - Debian
- Support for Responsive Web Design (RWD) for different screen size
- Support use as Progress WebApp (PWA) on mobile devices
- Support desktop devices with touch screen
Build from Source
Require GO 1.20 or above (See Instllation tutorial) and ffmpeg (Optional: wpa_supplicant or nmcli)
Run the following the command to build the system
git clone https://github.com/tobychui/arozos
cd ./arozos/src/
go mod tidy
go build
./arozos
#sudo ./arozos for enabling hardware and WiFi management features
(Yes, it is that simple)
Install from Precompiled Binary
Linux (armv6 / v7, arm64 and amd64)
(e.g. Raspberry Pi 4B, Raspberry Pi Zero W, Orange Pi, $5 tiny VPS on lightsail or ramnode, only tested with Debian based Linux)
Install the latest version of Raspberry Pi OS / Armbian / Debian on an SD card / boot drive and boot it up. After setup and initialization is done, connect to it via SSH or use the Terminal App on your desktop to enter the following command
wget -O install.sh https://raw.githubusercontent.com/tobychui/arozos/master/installer/install.sh && bash install.sh
and follow the on-screen instruction to setup your arozos system.
If you selected install to systemd service, you can check the status of the service using
sudo systemctl status arozos
Otherwise, you will need to manually start the arozos using the following command
cd ~/arozos
sudo ./arozos
# or if you have launcher installed
sudo ./launcher
After installation, depending on the processing power and disk speed of your host, it will take some time for arozos to unzip the required files. Wait around 3 - 5 minutes and visit the following link to continue root admin account setups.
http://{ip_address_of_your_host}:8080/
Note: If you are using some browsers that hides your user agents, you can manually switch between mobile and desktop interface with the following links.
- Mobile: http://localhost:8080/mobile.system
- Desktop: http://localhost:8080/desktop.system
To uninstall your ArozOS in case you screw something up, use the uninstall script in the installer folder.
Windows (amd64)
If you are deploying on Windows, you need to add ffmpeg to %PATH% environment variable and following the steps below.
Adding FFMPEG to %PATH%
Visit https://www.ffmpeg.org/ to download the precompiled binary to C:\ffmpeg. After unzipping, you should be able to find the binary ffmpeg.exe at C:\ffmpeg\bin.
Go to "System Properties" > "Environment Variables" > "System Variables" > "Edit" and add "C:\ffmpeg\bin" into the environment variable list. Save and Exit the tool windows and restart your PC to apply the new settings.
Installing ArozOS
- Create a folder a name that has no space and ASCII only
- Download the arozos_windows_amd64.exe from the Release Page
- Download the web.tar.gz from the Release Page
- Put both files into the same folder you created in step 1
- Double click the exe file to start ArozOS
- Click on "Allow Access" if your Windows Firewall blocked ArozOS from accessing your network
- Visit
http://localhost:8080/in your web browser to continue root admin account setups.
Some features are not available for Windows build
Windows arm64 version are experimental and not tested
OpenWRT (mipsle) / Linux (riscv64)
OpenWRT build and Linux RSICV64 is experimental and might contains weird bugs. If you are interested to test or maintain these builds, please contact me directly.
wget -O arozos {binary_path_from_release}
wget -O web.tar.gz {web.tar.gz_path_from_release}
chmod -x ./arozos
sudo ./arozos
Docker
Thanks SysAdmin74 for contributing a dockerfile for ArozOS. You can check out his dockerfile here (WIP).
Screenshots

Start the ArozOS Platform
Supported Startup Parameters
The following startup parameters are supported (v2.016)
-allow_autologin
Allow RESTFUL login redirection that allow machines like billboards to login to the system on boot (default true)
-allow_cluster
Enable cluster operations within LAN. Require allow_mdns=true flag (default true)
-allow_iot
Enable IoT related APIs and scanner. Require MDNS enabled (default true)
-allow_mdns
Enable MDNS service. Allow device to be scanned by nearby ArOZ Hosts (default true)
-allow_pkg_install
Allow the system to install package using Advanced Package Tool (aka apt or apt-get) (default true)
-allow_ssdp
Enable SSDP service, disable this if you do not want your device to be scanned by Windows's Network Neighborhood Page (default true)
-allow_upnp
Enable uPNP service, recommended for host under NAT router
-beta_scan
Allow compatibility to ArOZ Online Beta Clusters
-bufffile_size int
Maxmium buffer file size (in MB) for buffer required file system abstractions (default 25)
-buffpool_size int
Maxmium buffer pool size (in MB) for buffer required file system abstractions (default 1024)
-cert string
TLS certificate file (.crt) (default "localhost.crt")
-console
Enable the debugging console.
-demo_mode
Run the system in demo mode. All directories and database are read only.
-dir_list
Enable directory listing (default true)
-disable_http
Disable HTTP server, require tls=true
-disable_ip_resolver
Disable IP resolving if the system is running under reverse proxy environment
-disable_subservice
Disable subservices completely
-enable_buffpool
Enable buffer pool for buffer required file system abstractions (default true)
-enable_hwman
Enable hardware management functions in system (default true)
-enable_pwman
Enable power management of the host system (default true)
-force_mac string
Force MAC address to be used for discovery services. If not set, it will use the first NIC
-gzip
Enable gzip compress on file server (default true)
-homepage
Enable user homepage. Accessible via /www/{username}/ (default true)
-hostname string
Default name for this host (default "My ArOZ")
-iobuf int
Amount of buffer memory for IO operations (default 1024)
-key string
TLS key file (.key) (default "localhost.key")
-logging
Enable logging to file for debug purpose (default true)
-max_upload_size int
Maxmium upload size in MB. Must not exceed the available ram on your system (default 8192)
-ntt int
Nightly tasks execution time. Default 3 = 3 am in the morning (default 3)
-port int
Listening port for HTTP server (default 8080)
-public_reg
Enable public register interface for account creation
-root string
User root directories (default "./files/")
-session_key string
Session key, must be 16, 24 or 32 bytes long (AES-128, AES-192 or AES-256). Leave empty for auto generated.
-storage_config string
File location of the storage config file (default "./system/storage.json")
-tls
Enable TLS on HTTP serving (HTTPS Mode)
-tls_port int
Listening port for HTTPS server (default 8443)
-tmp string
Temporary storage, can be access via tmp:/. A tmp/ folder will be created in this path. Recommend fast storage devices like SSD (default "./")
-tmp_time int
Time before tmp file will be deleted in seconds. Default 86400 seconds = 24 hours (default 86400)
-upload_async
Enable file upload buffering to run in async mode (Faster upload, require RAM >= 8GB)
-upload_buf int
Upload buffer memory in MB. Any file larger than this size will be buffered to disk (slower). (default 25)
-uuid string
System UUID for clustering and distributed computing. Only need to config once for first time startup. Leave empty for auto generation.
-version
Show system build version
-wlan_interface_name string
The default wireless interface for connecting to an AP (defa
