• Stars
    star
    1,933
  • Rank 23,975 (Top 0.5 %)
  • Language
    JavaScript
  • License
    GNU General Publi...
  • Created almost 6 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Web Desktop Operating System for low power platforms, Now written in Go!

Image

Features

User Interface

  • Web Desktop Interface (Better than Synology DSM)
  • 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 16GB 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.

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

  1. Create a folder a name that has no space and ASCII only
  2. Download the arozos_windows_amd64.exe from the Release Page
  3. Download the web.tar.gz from the Release Page
  4. Put both files into the same folder you created in step 1
  5. Double click the exe file to start ArozOS
  6. Click on "Allow Access" if your Windows Firewall blocked ArozOS from accessing your network
  7. 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

Not exists yet

Screenshots

Image Image Image Image Image Image

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 (default "wlan0")
  -wpa_supplicant_config string
        Path for the wpa_supplicant config (default "/etc/wpa_supplicant/wpa_supplicant.conf")

Example

//Starting aroz online with standard web port
./arozos -port 80

//Start aroz online in demo mode
./arozos -demo_mode=true

//Use https instead of http
./arozos -tls=true -tls_port 443 -key mykey.key -cert mycert.crt -disable_http=true

//Start both HTTPS and HTTP server on two different port
./arozos -port 80 -tls=true -key mykey.key -cert mycert.crt -tls_port 443

//Change max upload size to 25MB
./arozos -max_upload_size 25

See documentation for more examples.

ArozOS Launcher

Launcher is required for performing OTA updates in arozos so you don't need to ssh into your host every time you need to update ArozOS. You can install it via the installation script or install it manually. See more in the following repository.

https://github.com/aroz-online/launcher

Storage Configuration

Visit System Settings > Disk & Storage > Storage Pools and follow on screen instructions to setup your disk.

  • Name: Name of this virtual disk in ArozOS system, (e.g. Movie Storage)
  • UUID: UUID of this virtual disk in ArozOS system, must be unique, ascii only and no space (e.g. movie)
  • Path: The mounting path of the disk in Host OS or Protocol Specific IP Address / URLs. Here are some examples
    • Local disk (ntfs / ext4 etc): /media/storage1
    • WebDAV: https://example.com.com/webdav/storage
    • FTP / SFTP: 192.168.1.220:2022
    • SMB: 192.168.0.110/MyShare (Where "MyShare" is one of the Shares inside File Explorer if you visit \\192.168.0.110)
  • Access Permission: Read Only or Read Write
  • Storage Hierarchy
    • Isolated User Folder: User cannot see other user's files
    • Public Access Folders: User can see each other's files and edit them if permission is set to "READ WRITE"
  • File System Type: The disk format (if local disk) or protocols (if remote file system) to mount / establish connection

Here are some local disk only options. You can leave them out if you have already setup automatic disk mount in /etc/fstab

  • Mount Device: The physical disk location on your host (e.g. /dev/sda1)
  • Mount Point: The target path to mount the disk to. (e.g. /media/storage)
  • Automount: Check this if you want ArozOS to mount the disk for you Notes: You cannot auto-mount a disk required by ArozOS -root options. Use /etc/fstab for it if that is your use case. This function is designed for delay start and reduce the power spike during system startup & disk spinups.

Here are some network disk only options

  • Username
  • Password

Credentials of your account on the remote server that you are trying to mount remotely

File Servers

If you want to share files from ArozOS, there are many ways you can do it.

  • Share API: Right click a file in File Manager and click Share.
  • User Accounts: Create user account for a user who want to access your file and limit the scope of file access with permission group storage pool settings
  • Network File Servers: Create a single shared user in a permission group with limited access settings and enable network file server in System Settings > Networks & Connections > File Servers > WebDAV / SFTP / FTP. Follow the on-screen guide to setup the access mode.
  • Legacy Browser Server: Share files to legacy devices via basic HTTP and Basic Auth. You can enable it in System Settings > Networks & Connections > File Servers > Directory Server. You can login with your current ArozOS user credentials.

WebApp Development

See examples folder for more details.

Other Resources

If you are looking for other WebApps (Installed via System Setting) or subservices (Require SSH login to install, for OEM only), please take a look at our collections over here: https://github.com/aroz-online/WebApp-and-Subservice-Index

Community / Q&A

💬 Direct Contact

You can reach the authors using Telegram! We welcome all kind of feedbacks and questions.

🖥️ Device Compatibility Showcase

Using ArozOS on something other than Raspberry Pis? Show us your server configuration & hardware specs!

#50

📝 Related Articles

If you are looking for tutorials or need help on debugging some minor issues, feel free to take a look at these articles written by our users. (Thank you so much for sharing this project :D )

English

Chinese

Japanese

Portuguese

Feel free to create a PR if you have written an article for ArozOS!

License

Source Code

ArozOS - General purpose cloud desktop platform Copyright (C) 2023 tobychui

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Documentations

Copyright (C) 2023 tobychui Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Artwork and Mascot Design

Copyright (C) 2023 tobychui, All Right Reserved

More Repositories

1

zoraxy

A general purpose HTTP reverse proxy and forwarding tool. Now written in Go!
HTML
2,543
star
2

4xMacropad

Some ultra low cost, unique layouts mechanical macropad using CH552G
C
178
star
3

WebStick

A miniature personal cloud drive designed for ESP8266 (ESP12F)
HTML
62
star
4

MCH-PD-Automatic-Reflow-Hotplate

A palm sized MCH (Metal Ceramic Heater) based reflow hotplate powered by USB-PD
C++
58
star
5

SlicerA

A web based STL to Gcode slicer for ArozOS
JavaScript
24
star
6

The-3D-Scanner-Project

This repo contains all the developmental data of creating a low cost 3D scanner with Arduino. Remember to read README before start building your own one as not all of the version will works.
G-code
18
star
7

ArOZ-Omega-Online

ArOZ Omega Online Multimedia Streaming Web System design for low processing power servers.
CSS
17
star
8

imusutm

Basic service up-time monitor written in Golang
HTML
15
star
9

DIY-60W-PD-Powerbank

A DIY 60W PD Powerbank with realtime battery display for charging your laptop and smartphone
G-code
14
star
10

Weather-Pet-Display

A simple weather display with a cute interactive desktop pet (❛◡❛✿)
C++
11
star
11

go-DDDNS

Go implementation of the Rouring ID based Distributed Dynamic Domain Name Service
Go
10
star
12

Automatic-Update-Launcher

A general purpose updater for updating program binaries when update folder exists
Go
8
star
13

Youtube-Video-and-Audio-merge

Simple bat script for merging 1080p Video and 360p Audio source with FFmpeg
Batchfile
6
star
14

PHP2CuraEngine

A CuraEngine bridge written in PHP, providing 3D model slicing via PHP request.
G-code
5
star
15

Home-Dynamic

Home Dynamic Protocol for ESP8266 offgrid home automation system
JavaScript
5
star
16

OpenTicketSupport

Opensource Ticket Support System written in Go
CSS
5
star
17

goHidden

Go module to set a hidden folder and check if a folder is hidden
Go
5
star
18

ArOZ-Portable-LAN-Scanner

A simple app design for Andriod that can scan all the ArOZ Portable devices within the same local area network
Objective-C
4
star
19

Kawaii-Useless-Robot

A kawaii useless robot that runs away if you push it too hard
C++
4
star
20

PixelShot

PixelShot - Opensource screenshot tool for Windows written in VB.net
HTML
3
star
21

TocasUI-2-to-2.3-Converter

This simple python script convert all php or html that contains TOCAS UI 2 tocas.min.css to latest version of tocas.css 2.3
Python
3
star
22

GitDocA

A Simple Github docs/ rendering script using Markdown
3
star
23

ArOZ-User-Interface

ArOZ User Interface is a VB.net based interface that make a cartoon character stand on your desktop. Supported with ArOZ Script (which is a self developed lanuage that make it perform a certain action, possible to translate from SSP to AP with software provided) and plugins, ArOZ can help you with your daily work and chat with you when you are tired.
Visual Basic
3
star
24

Webview-Adapter

Building basic Windows desktop GUI with Golang and HTML
Visual Basic .NET
2
star
25

Golang-OOP-Example

A very basic example showcasing the use of go module and struct for OOP in Golang project
Go
2
star
26

Anime-Dump

A simple tool with a simple interface for you to manage the folder that you just put all your downloaded anime without sorting.
C#
2
star
27

Python-Mood-Analysis-Engine

This python code can identify users mood by checking the keywords in a certain sentence. The sentence can be provided with Voice to Text Engine.
Python
2
star
28

IMUS-Quick-Send

This system is designed for quick transfer of text or url from smart phone to PC and vice versa with QR-code and session id system.
JavaScript
2
star
29

ArOZ-Mirror

The alternative to MagicMirror but with clearner interface and nearly no settings required.
PHP
2
star
30

PhoneGap-xml-generator

An exe that simplify your steps towards creating an App xml and preparation of icons/splash screen images.
Visual Basic
2
star
31

gcci

gcc Compiler Simple User Interface
Visual Basic
1
star
32

Gitupgo

A git based update utility written in Go
Go
1
star
33

ArUSB2Win

ArOZ USB Drive Filename to Windows Filename Converter
Visual Basic
1
star
34

FFmpeg-ArOZ-Online-Wrapper-

A simple wrapper for ArOZ Online Beta system. A simple PHP based FFmpeg wrapper with Asynchronous Threadings supported.
HTML
1
star
35

Wordpress-Phonegap-App

A demo for porting wordpress blog into phonegap app using as minimum lines of code as possible.
JavaScript
1
star
36

Hello-World

1
star
37

DotFix

Fixing the problem of no respond while pressing the dot key on keyboard but Shift+dot is working for unknown reason.
Visual Basic
1
star
38

IMUS-WSR

IMUS WebSocket Reflector(TM), this simple websocket script reflect all your websocket input to all connected client so you can catch the message with JavaScript.
JavaScript
1
star
39

ArOZ-Omega-Python-Interface

ArOZ Omega Python Interface for Linux Environment, created with pygame
Python
1
star
40

Gcode-Coloring-Analysis-Engine

A simple python algorithm that turn any black and white Gcode data into another black and white gcode data with en extra file containing color data.
Python
1
star
41

smartsort

A smart sorting algorithm for Go to sort filename containing digits that is not zero padded
Go
1
star