ArozOS
Overview
ArozOS is a self-hosted web desktop operating system and cloud file platform. In a browser it gives you a desktop with a start menu, a task bar and draggable windows, running over a virtual file system that you own. It is multi-user, so a family, a team or a small organisation can share one server while each person keeps a private file space.
This SecureAnyCloud image serves ArozOS 2.025 on a hardened Ubuntu 24.04 LTS base, patched at build time, with the web desktop on port 8080. It is secure by default: the image ships with no user account, so you create your own administrator with your own password on the first visit. There are no shared or default credentials anywhere in the image.
What you get:
- ArozOS 2.025, a single self-contained Go binary, managed by systemd
- The web desktop, file manager and all modules on
:8080 - No default account: you create the first administrator on the first visit
- An embedded key-value store, so there is no external database to run
- A drag-and-drop file manager with upload, download, zip, share and preview
- A built-in text and code editor, media streaming and a per-user static web server for publishing pages straight from a folder
- Multi-user accounts with permission groups and storage quotas
- Optional built-in FTP, WebDAV, SFTP and TFTP file servers, all disabled by default
- A per-instance file server host key generated on first boot and never shared between VMs
- A dedicated Azure data disk at
/opt/arozosfor all files and state arozos.serviceas an enabled systemd unit- 24/7 SecureAnyCloud support
Prerequisites
You need an active Azure subscription, an SSH key pair, and a VNet with a subnet in the target region.
Standard_B2s (2 vCPU / 4 GiB RAM) is a sensible starting point. Choose a larger size for more concurrent users or heavier media streaming.
Configure the NSG to allow inbound 22/tcp from your management network and 8080/tcp for the web desktop.
The image deliberately ships with no account, so the create administrator form is open to whoever reaches port 8080 first. Scope the inbound rule for 8080/tcp to your own IP address before you boot the VM, and create your administrator immediately after first boot. Once your administrator exists, ArozOS restricts account creation to signed-in administrators.
Step 1 - Deploy from the Azure Marketplace
Sign in to the Azure Portal, choose Create a resource, search the Marketplace for ArozOS by SecureAnyCloud, and select Create.
On the Basics tab, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22), then add a custom rule for 8080 scoped to your own IP.
Review the dedicated data disk on the Disks tab, then select Review + create and Create.
Step 2 - Deploy from the Azure CLI
# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:arozos-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name arozos \
--image sac1647283583153:arozos-ubuntu-24-04:default:latest \
--size Standard_B2s \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku StandardOpen the web desktop port, restricted to your own address:
az network nsg rule create \
--resource-group <your-rg> \
--nsg-name arozosNSG \
--name allow-arozos-ui \
--priority 900 \
--source-address-prefixes <your-ip>/32 \
--destination-port-ranges 8080 \
--access Allow --protocol TcpStep 3 - Confirm the service is running
SSH in as azureuser and confirm that ArozOS is active. The web desktop listens on port 8080. All state lives on the dedicated data disk mounted at /opt/arozos.
systemctl is-active arozos arozos-firstbootsudo ss -tln | grep ':8080 ' | awk '{print $1, $4}'findmnt -no SOURCE,TARGET,FSTYPE /opt/arozosStep 4 - Read the first-visit info note
ArozOS ships with no user account. On the first boot of every VM, a one-shot service writes an instance info note that records the web desktop URL and the create administrator instruction. The note contains no password, because you set your own on the first visit. Read it with sudo:
sudo grep -v '^#' /root/arozos-credentials.txt | grep -v '^$'You can also confirm from the command line that the server is healthy and that no account is baked into the image. The health endpoint returns 200. The group listing endpoint offers the administrator group only while zero accounts exist, which is exactly the create administrator state:
curl -s -o /dev/null -w 'GET /system/id/ping -> HTTP %{http_code}\n' http://127.0.0.1:8080/system/id/pingcurl -s http://127.0.0.1:8080/system/permission/listgroup; echoStep 5 - Create your administrator on first visit
Browse to http://<vm-public-ip>:8080/. Because the image ships with no account, ArozOS opens on its New User form.
Choose a username and a strong password, and confirm the password. Leave the user group as administrator and select Create.
This one screen is where you secure the instance. There are no default credentials to change, because none ship.
Step 6 - Explore the web desktop
Sign in with the account you just created and ArozOS loads its web desktop. The task bar across the bottom carries the start menu and the clock. The desktop holds your File Manager, System Setting and Trash Bin shortcuts.
Every module opens as a window on the desktop, so you can work with several at once, as you would on a local machine.
Step 7 - Use the file manager
Open File Manager from the desktop. The left pane lists your storage pools. User (user:/) is your private file space and tmp (tmp:/) is scratch storage.
Use New Folder and New File on the toolbar to create items. Drag files from your machine onto the window to upload them. Use Download, Create Zip, Share and Delete to manage what is there.
The screenshot below shows a freshly created account after adding a couple of folders and a text file.
Step 8 - Open system settings and add users
Open System Setting from the desktop for the administration interface. The Overview tab shows the signed-in account, its permission group, storage usage and uptime. The tabs across the top cover host information, performance, runtime and power.
From the Users group in the settings menu, create additional accounts, assign them to permission groups and set per-user storage quotas. This is how you turn a single instance into a shared team or family server.
Step 9 - Confirm access control
ArozOS refuses unauthenticated access across the whole surface, not just on the login page. Requests for the desktop and for file operations are redirected to the login page, and the API endpoints reject the caller outright. Confirm it from the command line:
curl -s -o /dev/null -w 'GET /desktop.html -> HTTP %{http_code}\n' http://127.0.0.1:8080/desktop.htmlcurl -s -o /dev/null -w 'POST /system/file_system/newItem -> HTTP %{http_code}\n' -X POST --data-urlencode 'src=user:/' --data-urlencode 'type=file' --data-urlencode 'filename=probe.txt' http://127.0.0.1:8080/system/file_system/newItemcurl -s http://127.0.0.1:8080/system/users/list; echoThe image also fixes a defect in the upstream release archive. The archive ships a fixed 1024-bit private key that every ArozOS installation would otherwise reuse as the host key for its built-in SFTP server.
This image removes that key entirely and generates a fresh 4096-bit key on each VM's first boot, so no two deployments share a host identity:
sudo openssl rsa -in /opt/arozos/system/auth/id_rsa.key -noout -text | head -1Step 10 - Verify the stack
Confirm that the unit is enabled at boot, then review what lives on the dedicated data disk and check its free space:
systemctl is-enabled arozossudo ls /opt/arozosdf -h /opt/arozos | tail -1Step 11 - Where your data lives
Every user's files, the account store, the device identity, the file server host key and the ArozOS web resources live on a dedicated Azure data disk mounted at /opt/arozos, separate from the OS disk. The disk is captured into the image and re-provisioned on every VM. You can snapshot and resize it independently as your storage grows.
User files sit under files/, one directory per account.
sudo find /opt/arozos/files -maxdepth 2 2>/dev/null | head -10Step 12 - Enable the built-in file servers (optional)
ArozOS can expose the same storage over FTP, WebDAV, SFTP and TFTP for desktop clients and legacy devices. All of them are disabled by default in this image.
Enable only the servers you need from the settings menu under Network. At the same time, open the matching port in the NSG, scoped to the networks that need it. The SFTP server uses the per-instance host key described in Step 9, so its host fingerprint is unique to your VM.
Security notes
- Restrict the web desktop. It serves on port 8080. Limit
8080/tcpin the NSG to trusted networks and consider putting it behind your own VPN. ArozOS can also terminate TLS itself if you supply a certificate. - Create your administrator first. The image ships with no account, and the create administrator form stays open until you complete it. Scope the NSG rule to your own IP before first boot and create your administrator straight away. After that, only signed-in administrators can create accounts.
- No shared host key. A fresh file server host key is generated per instance on first boot, so no cryptographic identity is shared across deployments. The fixed key shipped in the upstream release archive is not present in this image.
- Reduced listening surface. LAN peer discovery over mDNS and SSDP is turned off, since it has no purpose on a cloud VM. Re-enable it in the unit file if you have a specific need.
- Least privilege for accounts. ArozOS runs as root because its disk mount, power and hardware information modules need privileged access. Grant each account the narrowest permission group that meets its needs, and use storage quotas to bound usage.
- Keep the VM patched. The image is patched at build time and ships with unattended security upgrades enabled.
Support
SecureAnyCloud images come with 24/7 support. For questions about this ArozOS image or help with your deployment, contact us through the SecureAnyCloud website.
Deploy on Azure
Launch ArozOS on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com
Overview
ArozOS is a self-hosted web desktop operating system and cloud file platform. In a browser it gives you a desktop with a start menu, a task bar and draggable windows, running over a virtual file system that you own. It is multi-user, with accounts, permission groups and storage quotas.
This SecureAnyCloud image installs ArozOS from the official prebuilt Go binary at /usr/local/bin/arozos and runs it as a systemd service that serves the web desktop directly on port 8080. It is secure by default and ships with no user account. The first person to reach the web desktop creates the administrator and chooses their own username and password.
What you get:
- A drag-and-drop File Manager for uploading, organising, previewing and sharing files
- A built-in text and code editor, media streaming and a per-user static web server
- Optional built-in FTP, WebDAV, SFTP and TFTP file servers
- No external database: ArozOS uses an embedded key-value store
- All runtime state (the web assets, the account store, the device identity, the per-instance file server host key and every user's files) on a dedicated, independently resizable EBS data volume mounted at
/opt/arozos - No shared login: two instances launched from the same Amazon Machine Image never share credentials, and no default credential ships
- No shared host key: the official ArozOS release archive contains a fixed private key that every installation would otherwise reuse as its built-in file server host key. This image removes that key and generates a fresh, stronger key on the first boot of each instance
Prerequisites
Before you deploy this image, make sure you have:
- An Amazon Web Services account where you can launch EC2 instances
- IAM permissions to launch instances, create security groups, and subscribe to AWS Marketplace products
- An EC2 key pair in the target Region for SSH access to the instance
- A VPC and subnet in the target Region, with a security group allowing inbound port 22 from your management network and port 8080 for the web desktop, scoped to your own IP address
- The AWS CLI (version 2) installed locally if you plan to deploy from the command line
Launch the instance from the AWS Marketplace
Sign in to the AWS Management Console, open the EC2 service, and select Launch instance. Under Application and OS Images, choose AWS Marketplace AMIs and search for ArozOS. Select the SecureAnyCloud listing, choose Select, then choose Continue on the subscription summary.
Pick an instance type of m5.large or larger. Choose your EC2 key pair under Key pair (login). Leave the root volume at the default size or larger.
Under Network settings, select your VPC and subnet. Create or select a security group that opens port 22 from your management network and port 8080 scoped to your own IP address for the web desktop.
Select Launch instance. First-boot initialisation takes a few seconds after the instance state becomes Running and the status checks pass.
Launch the instance from the AWS CLI
Run the following command to launch an instance from the SecureAnyCloud ArozOS Marketplace AMI into an existing subnet and security group.
Replace <ami-id> with the AMI ID shown on the Marketplace listing and <key-name> with your EC2 key pair name. Replace <subnet-id> with your subnet ID and <security-group-id> with a security group that opens ports 22 and 8080 as described above.
aws ec2 run-instances \
--image-id <ami-id> \
--instance-type m5.large \
--key-name <key-name> \
--subnet-id <subnet-id> \
--security-group-ids <security-group-id> \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=arozos}]'Connect to your instance
Connect over SSH on port 22 as the default login user for your operating system variant. For Ubuntu 24.04 LTS, the login user is ubuntu.
Replace <public-ip> with the public IP address of your instance and your-key.pem with your EC2 private key file.
ssh -i your-key.pem ubuntu@<public-ip>Open the web desktop and create your administrator
The ArozOS web desktop is served on port 8080. In a browser, open http://<instance-public-ip>:8080/. Because the account store ships empty, ArozOS shows its first-run create administrator form. Choose your own username and password and select Create.
On the first boot of every instance, an info note with the resolved desktop URL is written to a file readable only by the root user. It contains no password, because you set the administrator password yourself on the create administrator form. Retrieve it over SSH:
sudo cat /root/arozos-credentials.txtThe note shows the resolved web desktop URL for this instance:
# ArozOS on Ubuntu 24.04 LTS (sac AWS Marketplace image)
# SECURE BY DEFAULT: no user account ships with this image.
# Create the first administrator on first visit at the URL below. arozos.url=http://<instance-public-ip>:8080/Important: the create administrator form is open to whoever reaches port 8080 first. Scope the inbound security group rule for port 8080 to your own IP address. Complete the create administrator form immediately after the instance boots.
Sign in
Once your administrator account exists, ArozOS shows the sign-in page. Enter your username and password and select Sign In.
Explore the web desktop
After you sign in, the ArozOS web desktop opens. It has desktop icons for the File Manager, System Settings and Trash Bin, a start menu in the bottom-left corner, and a task bar.
Double-click an icon to open its application in a draggable window.
Use the file manager
Open the File Manager to work with your files. Use the toolbar to upload and download files, create folders and share items.
The sidebar lists your storage pools, including your personal space (user:/). Everything you store here lives on the dedicated data volume.
Manage users, groups and system settings
Open System Settings to administer the server. An administrator manages Users and Groups, storage quotas and permission groups, Disk and Storage, Network and Connection, and Security and Auth from here. The Host Info tab shows the server specifications.
To add a user, open Users and Groups and create the account. Assign it to a permission group and optionally set a storage quota. Each user receives their own private file space and a shareable public space.
Enable the built-in file servers (optional)
ArozOS can expose the same storage over FTP, WebDAV, SFTP and TFTP for desktop clients and legacy devices. These servers are disabled by default. An administrator enables them from the settings interface.
The SFTP server uses the fresh per-instance RSA 4096 host key that this image generated on first boot, not the shared key that ships in the upstream release. Open the relevant port in your security group only when you enable a server, and scope it to the clients that need it.
Check the data volume
The ArozOS working directory at /opt/arozos is a dedicated EBS data volume. It holds the web assets, the embedded account and settings store, the device identity, the per-instance file server host key and every user's files. Your data is independently resizable and survives instance replacement. Confirm that the volume is mounted:
findmnt /opt/arozosTARGET SOURCE FSTYPE OPTIONS /opt/arozos /dev/nvme1n1 ext4 rw,relatimeCheck its free space:
df -h /opt/arozosVerify the service
ArozOS runs as the arozos systemd service. Confirm that it is active and healthy:
systemctl is-active arozos.servicecurl -s -o /dev/null -w 'HTTP %{http_code}\n' http://127.0.0.1:8080/system/id/pingThe health endpoint returns HTTP 200. To read the service logs, use journalctl:
sudo journalctl -u arozos.service -n 30 --no-pagerEnable HTTPS
ArozOS can terminate TLS itself. To serve the desktop over HTTPS, provide a certificate and key and restart the service with the -tls, -cert and -key flags.
For a publicly trusted certificate, obtain one for your own domain (for example with certbot) and point the flags at the issued files. Then open port 443 in your security group, scoped to your clients.
Backup and maintenance
All state lives under /opt/arozos, so backing up ArozOS means backing up that volume. Take periodic EBS snapshots of the data volume, or copy /opt/arozos to object storage.
The operating system base is fully patched at build time with unattended security upgrades enabled, so the instance keeps receiving OS security updates.
Support
SecureAnyCloud provides this image with 24/7 technical support by email and chat. We can help with deployment, user and permission group management, storage quotas, the built-in FTP, WebDAV and SFTP file servers, mounting additional storage, enabling TLS, and backing up the data volume.
All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.
Deploy on AWS
Launch ArozOS on AWS with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com