FreedomBox on Debian 12 on Azure User Guide
Overview
FreedomBox is a private personal server, built as a Debian Pure Blend, that you administer entirely through a friendly web console called Plinth. Instead of renting services from a cloud provider, you run your own: file sharing and backups, a personal VPN, a website and blog, contact and calendar sync, chat, and a growing catalogue of other self hosted applications, all enabled and managed from one dashboard without editing configuration files by hand. The cloudimg image installs FreedomBox 23.6.2 on Debian 12, with the Plinth web interface served over HTTPS on port 443 (and port 80 redirecting to it) behind Apache. Every listed application is Free Software.
FreedomBox has no default login. The first time you open the console, a secure first run setup wizard asks for a one time setup secret that is generated uniquely on the first boot of every VM, and only then do you create your own administrator account. This design prevents anyone else on the network from claiming the admin account before you do. The cloudimg image writes that per VM secret to a root only credentials file so you can retrieve it over SSH. Backed by 24/7 cloudimg support.
What is included:
- FreedomBox 23.6.2 on Debian 12, managed by systemd
- The Plinth web administration console on HTTPS port 443, fronted by Apache, with port 80 redirecting to HTTPS
- A large catalogue of self hosted apps ready to enable from the console (file sharing, VPN, chat, wiki, media, and more)
- No default login: a unique setup secret generated on first boot and recorded in a root only file, so you create the first administrator yourself
plinth.serviceandapache2.serviceas systemd units, enabled and active- A fully patched Debian 12 base with unattended security upgrades enabled
- 24/7 cloudimg support
Prerequisites
An active Azure subscription, an SSH key pair, and a VNet plus subnet in the target region. Standard_B2s (2 vCPU / 4 GiB RAM) is a comfortable starting point. NSG inbound rules: allow 22/tcp from your management network for SSH, and 443/tcp (and optionally 80/tcp) so you can reach the Plinth web console. Plinth serves over HTTPS with a self signed certificate by default; for production, configure a domain and a Let's Encrypt certificate from within FreedomBox (see Maintenance).
Step 1 - Deploy from the Azure Marketplace
Sign in to the Azure Portal, choose Create a resource, search the Marketplace for FreedomBox by cloudimg, and select Create. On Basics 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 HTTPS (443). Then Review + create -> Create.
Step 2 - Deploy from the Azure CLI
az vm create \
--resource-group <your-rg> \
--name freedombox \
--image <marketplace-image-urn> \
--size Standard_B2s \
--admin-username azureuser \
--ssh-key-values ~/.ssh/id_ed25519.pub \
--vnet-name <your-vnet> --subnet <your-subnet> \
--public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name freedombox --port 443 --priority 1010
Step 3 - Connect to your VM
ssh azureuser@<vm-public-ip>
Step 4 - Confirm the services are running
FreedomBox runs the Plinth console as a systemd service, fronted by Apache on HTTPS port 443. Confirm both are active and that the HTTP port redirects to HTTPS:
systemctl is-active plinth.service apache2.service
curl -sk -o /dev/null -w "plinth https: %{http_code}\n" https://127.0.0.1/plinth/

Step 5 - Retrieve the per VM setup secret
FreedomBox has no default login. A one time setup secret is generated on the first boot of every VM and written to a root only credentials file. Retrieve it over SSH:
sudo cat /root/freedombox-credentials.txt
The file contains the console URL and the setup_secret value you will enter in the setup wizard. The same secret can also be read directly from FreedomBox at any time:
sudo cat /var/lib/plinth/firstboot-wizard-secret

Step 6 - Complete the secure setup wizard
Open https://<vm-public-ip>/plinth/ in your browser. Because Plinth uses a self signed certificate by default, your browser will warn you the first time; accept the warning to continue. The first screen is the FreedomBox first run wizard, which asks for the setup secret from Step 5.

Paste the setup_secret value and select Start Setup. FreedomBox then asks you to create the first administrator account. Choose your own username and a strong password - this account is the administrator and is added to the FreedomBox admin group.

Step 7 - Explore the app catalogue
After the wizard completes, you land in the Plinth console. The Apps page is the heart of FreedomBox: a catalogue of self hosted applications - file sharing, a personal VPN, chat and messaging, a wiki, media streaming, and more - each of which you can enable and configure from the console.

The System section holds server wide settings - networking, users and groups, security, backups, certificates and diagnostics.

Step 8 - Verify there is no default login
The setup secret is what gates the wizard, so no one can create the administrator account without it. You can confirm the mechanism directly: a wrong secret is rejected by the wizard, while the real per VM secret is accepted and advances to account creation.

Maintenance
- HTTPS with your own domain. In the Plinth console, open System -> Configure to set your domain name, then use System -> Let's Encrypt to obtain and auto renew a trusted certificate so browsers no longer warn on the self signed default.
- Enable apps as you need them. Every application in the Apps catalogue is disabled until you enable it. Enable only what you use to keep the attack surface small.
- Users and groups. Manage additional accounts under System -> Users and Groups; add users to the
admingroup only when they need administrative access. - Backups. Use System -> Backups to schedule and export backups of your FreedomBox configuration and app data.
- Security updates. The Debian 12 base ships with unattended security upgrades enabled, so security patches are applied automatically. FreedomBox can also manage distribution updates from System -> Software Update.
Support
This image is maintained by cloudimg with 24/7 support. If you have any questions about deploying or operating FreedomBox on Azure, contact support@cloudimg.co.uk.