Why Choose ArozOS#
For a long time, many makers have hoped to have their own highly customizable NAS, which is why many manufacturers have adapted to the currently most popular SBC—Raspberry Pi. As a result, NAS applications on Raspberry Pi are diverse, and here are a few main ones:
- Nextcloud
Perhaps the most popular application at the moment, it has plugin functionality and apps, and is very feature-rich. However, it has a fundamental flaw—it is written in PHP, which is incredibly slow.
- pydio
Currently used relatively less in China, it is written in Golang, fast, and has a relatively complete set of features, which was an option I was previously struggling with.
- Seafile
Seafile - Open Source Enterprise Private Cloud Storage Software
Written in C language by Chinese developers, a choice of Tsinghua and Peking University, it has complete features and high efficiency.
- …
Having said so much, they are all quite good, so why not use them?
There are roughly the following reasons:
- The degree of customization is not high enough; although there is a plugin system, there are still too few places where you can write your own code.
- They are all company projects (this point is subjective).
- They all have professional versions, which also means that the capabilities of the free versions cannot reach saturation.
- They can generally only be considered as cloud storage applications and cannot match the capabilities of Synology DSM.
- …
Now let me truly introduce ArozOS.
General purposed Web Desktop Operating Platform / OS for Raspberry Pis, Now written in Go!
Some may ask, isn't this a NAS application? Why is it called an OS?
That's right, you might have thought of it; ArozOS's capabilities far exceed those of Nextcloud-like cloud storage applications. It also has two major weapons: WebApp and Subservice, and it even serves as an IoT controller.
Some Applications
WebApp Management
Subservice Management
Of course, basic functions such as file sharing and music/video playback are also included.
File Sharing
Music and Video Playback
You can even perform file editing and code writing.
This is the NAS system we need!
How to Install ArozOS#
Currently, there are two ways to install ArozOS.
Using the Pre-packaged img#
Everything is set up for you, ready to use out of the box.
You can directly access http://RaspberryPiIPAddress:8080/ to register a user.
Manual Build#
- First, install Golang 1.14+
cd ~/
# Choose the following four steps as needed
# Raspberry Pi 64bit if network conditions allow
wget https://golang.org/dl/go1.17.3.linux-arm64.tar.gz
# Raspberry Pi 32bit if network conditions allow
wget https://golang.org/dl/go1.17.3.linux-armv6l.tar.gz
# Raspberry Pi 64bit for domestic use
wget https://golang.google.cn/dl/go1.17.3.linux-arm64.tar.gz
# Raspberry Pi 32bit for domestic use
wget https://golang.google.cn/dl/go1.17.3.linux-armv6l.tar.gz
sudo tar -C /usr/local -xzf go*
echo 'export PATH=$PATH:/usr/local/go/bin' >> .bashrc
source ~/.bashrc
go version
- Clone the entire project
# For domestic use
git config --global url."https://hub.fastgit.xyz/".insteadOf "https://github.com/"
git config protocol.https.allow always
# Necessary
git clone https://github.com/tobychui/arozos.git
- Build
# For domestic use
go env -w GOPROXY=https://goproxy.cn,direct
# Build
cd ./arozos/src/
go build
./arozos
- Daemon Process
# Before starting, ensure there are no arozos processes running
cd /etc/systemd/system/
sudo nano arozos.service
# Add the following content
[Unit]
Description=ArozOS Cloud Service
After=systemd-networkd-wait-online.service
Wants=systemd-networkd-wait-online.service
[Service]
Type=simple
ExecStartPre=/bin/sleep 30
WorkingDirectory=/home/pi/arozos/src
ExecStart=/bin/bash /home/pi/arozos/src/start.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl enable systemd-networkd.service systemd-networkd-wait-online.service
sudo systemctl start arozos.service
sudo systemctl enable arozos.service
At this point, you can access http://RaspberryPiIPAddress:8080/ to register a user.
Launcher and Updates#
ArozOS has supported launcher and OTA updates since 1.119. Next, let's talk about how to use these two features.
How to Migrate to Launcher Mode#
In the previous section, we learned how to build from the source. So how do we use the launcher on top of that?
# Pause Arozos process
sudo systemctl stop arozos
# Enter the directory
cd arozos/src
# Clone the launcher source code
git clone https://github.com/aroz-online/launcher.git launche
# Compile the launcher
cd launche && go build
mv launcher ../
cd ..
# If you are not on v1.119, please perform the following steps
mkdir updates
cd updates
wget https://github.com/tobychui/arozos/releases/download/v1.119/arozos_linux_arm64 -O arozos
wget https://github.com/tobychui/arozos/releases/download/v1.119/web.tar.gz
tar -zxvf web.tar.gz
cd ..
# Change ./arozos in start.sh to ./launcher
eg:
#!/bin/bash
sudo ./launcher -port 80 -tls=true -tls_port 443 -hostname "RPI-NAS"
# Restart arozos
sudo systemctl start arozos
If successful, you should be able to see the effect by opening the link in your browser.
OTA Upgrade#
Arozos has supported OTA upgrades since version 1.119, allowing you to directly update the version in Arozos.
WebApp & Subservice#
When it comes to ArozOS, two things cannot be overlooked: WebApp and Subservice.
WebApp#
The WebApp in ArozOS is a web application written in HTML5, allowing installation via a module installer.
Installation#
You can install the WebApp using a git repo URL or a zip file. You can find the installation interface in the "System Settings" > "Add and Remove Modules" tab.
Deletion#
To delete a WebApp, select the WebApp you want to remove from the WebApp list and click "Uninstall."
You can also delete it manually; here is an example of deleting a subservice named "MyWebApp."
sudo systemctl stop arozos
cd ~/arozos/web/
rm -rf MyWebApp
sudo systemctl start arozos
Subservice#
The Subservice in ArozOS is an executable file that needs to be compiled during installation.
Installation#
You need to manually install it in the ArozOS directory; here is an example of deleting a subservice named "MySubservice."
cd ~/arozos/subservice
git clone MySubservice's git address
cd MySubservice
./build.sh
Deletion#
Here is an example of deleting a subservice named "MySubservice."
sudo systemctl stop arozos
cd ~/arozos/subservice/
rm -rf ./MySubservice
sudo systemctl start arozos
Enable and Disable#
To enable or disable a subservice, go to the System Setting > Subservice tab, then select the service you want to start/disable.
Of course, you can also operate manually.
sudo systemctl stop arozos
cd ~/arozos/subservice/MySubservice
touch .disabled
sudo systemctl start arozos
One More Thing#
ArozOS is still actively being developed, and I have had the privilege of contributing some code to it.
If you have good ideas for this project, feel free to raise issues and PRs, and you can also join the Telegram group to communicate with us.
Thank you for reading!