Cloudreve
Overview
Cloudreve is an open-source, self-hosted cloud storage and file-sharing platform: a personal cloud drive that runs entirely inside your own network. From a browser you can upload, organise, preview and share files, with multi-user accounts, public share links and pluggable storage backends.
This SecureAnyCloud image serves Cloudreve 4.18.0 behind an nginx reverse proxy on a hardened Ubuntu 24.04 LTS base, patched at build time. Cloudreve is a single self-contained Go binary with an embedded SQLite datastore, so there is no separate database or runtime interpreter to manage.
Cloudreve has no default account. The first account registered on a fresh VM becomes the administrator, and the image performs that registration on first boot with a unique password, so no shared or default login ever ships in the image.
What you get:
- Cloudreve 4.18.0 served behind nginx, managed by systemd
- The Cloudreve web interface on
:80, with the first registered account elevated to administrator - A per-VM administrator account generated on first boot and recorded in a root-only file
- A fresh per-instance session signing secret, generated with the configuration on first boot, so sessions cannot be forged across deployments
- The Cloudreve server bound to
127.0.0.1:5212only, never exposed directly to the network - A dedicated Azure data disk at
/var/lib/cloudrevefor the configuration, the SQLite database and every uploaded file cloudreve.serviceandnginx.serviceas enabled systemd units- An open
/api/v4/site/pingendpoint for Azure Load Balancer health probes - 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 size. Choose a larger size for heavier concurrent transfer loads.
Configure the network security group (NSG) to allow inbound 22/tcp from your management network and 80/tcp for the web interface. Cloudreve serves plain HTTP on port 80, so for production terminate TLS in front of it with your own domain. The Cloudreve server listens on 127.0.0.1:5212 only, so port 5212 stays off the network.
Step 1 - Deploy from the Azure Marketplace
Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Cloudreve 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) and HTTP (80).
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:cloudreve-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name cloudreve \
--image sac1647283583153:cloudreve-ubuntu-24-04:default:latest \
--size Standard_B2s \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku StandardOpen port 80 for the web interface:
az vm open-port --resource-group <your-rg> --name cloudreve --port 80Step 3 - Confirm the services are running
SSH in as azureuser and confirm that Cloudreve and nginx are active. The Cloudreve server listens only on 127.0.0.1:5212, while nginx serves the web interface on port 80.
systemctl is-active cloudreve nginx cloudreve-firstbootss -tlnp | grep -E ':80 |:5212 ' | awk '{print $1, $4}'Step 4 - Retrieve the per-VM administrator account
Cloudreve has no built-in default account. On the first boot of every VM, the image registers a single administrator with a unique password. It writes the login email, password and site URL to a root-only credentials file. Read it with sudo:
sudo cat /root/cloudreve-credentials.txtSign in to Cloudreve with the cloudreve.admin.user email and the cloudreve.admin.pass value from this file. To confirm the login works, request an access token from the command line with those credentials:
EMAIL=$(sudo grep '^cloudreve.admin.user=' /root/cloudreve-credentials.txt | cut -d= -f2-);
PASS=$(sudo grep '^cloudreve.admin.pass=' /root/cloudreve-credentials.txt | cut -d= -f2-); curl -s -o /dev/null -w 'login HTTP %{http_code}\n' -m 20 -H 'Content-Type: application/json' -d "{\"email\":\"$EMAIL\",\"password\":\"$PASS\"}" http://127.0.0.1/api/v4/session/tokenStep 5 - Sign in to Cloudreve
Browse to http://<vm-public-ip>/. Cloudreve opens on its sign-in screen. Enter the administrator email from Step 4, select Next, then enter the password.
After you sign in, you land on My Files, your personal storage. In the left navigation you can open the Photos, Videos, Music and Documents views, see what has been shared with you, and open the trash.
Step 6 - Upload files
Select New, then Upload files, or drag files onto the window. Cloudreve uploads in the background and shows the progress of each file in an upload tasks panel.
Everything you upload is stored under the browsed files root on the dedicated data disk.
Step 7 - Create a secure share link
Right-click a file and choose Share to generate a public link. An external collaborator can open or download that specific file through the link without an account.
You can optionally protect the link with a password, set an automatic expiry, or expire it after a single download.
Step 8 - Verify the stack
Confirm that the services are enabled, then check the health endpoint that Azure Load Balancer probes. The ping endpoint returns the running Cloudreve version:
systemctl is-enabled cloudreve nginxcurl -s http://127.0.0.1/api/v4/site/pingThe per-VM credentials file is root-only (0600), so its contents never leave the VM:
ls -l /root/cloudreve-credentials.txtStep 9 - Where your data lives
The configuration, the SQLite database and every uploaded file live on a dedicated Azure data disk mounted at /var/lib/cloudreve, separate from the OS disk. The disk is captured into the image and re-provisioned on every VM. Confirm the mount and the filesystem:
df -h /var/lib/cloudreve | tail -1findmnt -no SOURCE,TARGET,FSTYPE /var/lib/cloudreveSecurity notes
- Encrypt web traffic. Cloudreve serves plain HTTP on port 80. For production, put it behind your own TLS-terminating reverse proxy or an Azure Application Gateway with a certificate for your domain, and restrict port 80 in the NSG to trusted networks.
- Keep the Cloudreve server private. It listens on
127.0.0.1:5212only and is never exposed directly. Only nginx on port 80 faces the network. - Protect the administrator password. Cloudreve has no default login. The image registers the first account, the administrator, on first boot with a unique per-VM password held in /root/cloudreve-credentials.txt, readable only by root. You can change it from your account settings. Keep a copy somewhere safe.
- Use least-privilege accounts. Create separate user accounts for team members rather than sharing the administrator login.
- 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 Cloudreve image or help with your deployment, contact us through the SecureAnyCloud website.
Cloudreve is a trademark of its respective owners. SecureAnyCloud is not affiliated with or endorsed by the Cloudreve project; the name is used only to identify the software that runs on this image.
Deploy on Azure
Launch Cloudreve 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