Deployment guide

XBackBone

Overview

This guide covers the deployment and configuration of XBackBone on Ubuntu 24.04 on Azure using SecureAnyCloud Azure Marketplace images. XBackBone is a simple, self-hosted, lightweight PHP file manager that supports the instant sharing of images and arbitrary files. It works out of the box with ShareX and the ShareX-compatible clients, and gives you a clean web interface to browse, publish, hide, tag and revoke everything you have uploaded, with inline previews for images, video, audio, text and code.

The SecureAnyCloud image ships XBackBone 3.8.2, the free and open source, AGPL-3.0 licensed server, installed and configured the officially supported way and served by nginx on port 80. The full upstream source ships unmodified under /var/www/xbackbone. Because the upstream project is normally set up through a browser based installation wizard that creates the first administrator, nothing here ships with a known secret: the schema is built and a single administrator account with a random password unique to each VM is generated on first boot, before the app is reachable, and the installation wizard is removed from the image. Backed by 24/7 SecureAnyCloud support.

XBackBone is a trademark of its respective owner. This image is produced by SecureAnyCloud and is not affiliated with, endorsed by, or sponsored by the XBackBone project. It ships the free and open source AGPL-3.0 licensed self hosted software, unmodified.

What is included:

  • XBackBone 3.8.2 (the AGPL-3.0 licensed self-hosted file and screenshot sharing server), full source under /var/www/xbackbone
  • PHP 8.3 with php-fpm and the required extensions (pdo_sqlite, gd, intl, zip, curl, mbstring, dom), served by nginx on port 80
  • A self-contained SQLite database and local file storage, both created empty on first boot
  • php8.3-fpm.service and nginx.service as systemd units, plus a one-shot xbackbone-firstboot.service, enabled and active on boot
  • A single administrator account with a random password generated per VM on first boot, written to a root-only file, never baked into the image
  • The browser installation wizard removed from the image, no default login and an empty database on first boot
  • Uploads accepted up to 512 MB, ready for ShareX, Screencloud and the Linux script client
  • Ubuntu 24.04 LTS base with the latest security patches applied at build time and unattended security upgrades enabled
  • Azure Linux Agent for seamless cloud integration and SSH key injection
  • 24/7 SecureAnyCloud support with guaranteed 24 hour response SLA

Prerequisites

  • An active Azure subscription, an SSH public key, and a VNet with a subnet in the target region
  • A subscription to the XBackBone listing on Azure Marketplace

Recommended virtual machine size: Standard_B2s (2 vCPU, 4 GB RAM) is a sensible starting point for an individual or a small team. For heavier use or many concurrent users, choose Standard_D2s_v5 or larger. Attach a larger OS disk or a dedicated data disk for your uploads.

Configure the network security group (NSG) to allow inbound 22/tcp from your management network and 80/tcp for the web interface from the networks that use it.

1

Deploy from the Azure Portal

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for XBackBone 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).

Select Review + create, then Create.

2

Deploy from the Azure CLI

Run these commands to create the network resources, accept the Marketplace terms and create the VM:

RG="xbackbone-prod"; LOCATION="eastus"; VM_NAME="xbackbone-01" IMAGE_URN="sac1647283583153:xbackbone-ubuntu-24-04:default:latest" SSH_KEY="$(cat ~/.ssh/id_rsa.pub)" az group create --name "$RG" --location "$LOCATION" az network vnet create -g "$RG" --name xbb-vnet --address-prefix 10.100.0.0/16 --subnet-name xbb-subnet --subnet-prefix 10.100.1.0/24 az network nsg create -g "$RG" --name xbb-nsg az network nsg rule create -g "$RG" --nsg-name xbb-nsg --name allow-ssh --priority 100 \
  --source-address-prefixes "<your-mgmt-cidr>" --destination-port-ranges 22 --access Allow --protocol Tcp az network nsg rule create -g "$RG" --nsg-name xbb-nsg --name allow-http --priority 110 \
  --destination-port-ranges 80 --access Allow --protocol Tcp
# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:xbackbone-ubuntu-24-04:default:latest
az vm create -g "$RG" --name "$VM_NAME" --image "$IMAGE_URN" \
  --size Standard_B2s --storage-sku StandardSSD_LRS \
  --admin-username azureuser --ssh-key-values "$SSH_KEY" \
  --vnet-name xbb-vnet --subnet xbb-subnet --nsg xbb-nsg --public-ip-sku Standard
3

Connect to your VM

Connect over SSH as azureuser, the Ubuntu 24.04 login user for this image:

ssh azureuser@<public-ip>
4

Confirm the services are running

nginx serves XBackBone on port 80 in front of php-fpm. Confirm that the units are active and that nginx is listening:

systemctl is-active php8.3-fpm nginx xbackbone-firstboot
ss -tlnp | grep ':80 '

Each unit reports active, and nginx listens on 0.0.0.0:80.

5

Read the per-instance credentials

On first boot, a one-shot service builds the database and creates a single administrator account with a password unique to this VM. It writes the details to a root-only file. Read the file with:

sudo cat /root/xbackbone-credentials.txt

The file records the instance URL, the admin login name and the generated password. These credentials are unique to this VM and are never baked into the image.

6

Verify the security model

The login page is public, but the dashboard requires authentication. Run these commands to check both. An unauthenticated request to the dashboard is redirected to the login page:

curl -s -o /dev/null -w 'login page: HTTP %{http_code}\n' http://127.0.0.1/login
curl -s -o /dev/null -w 'dashboard: HTTP %{http_code} -> %{redirect_url}\n' http://127.0.0.1/home

The login page returns 200. The dashboard returns 302 and redirects to /login, which shows that the backend is protected.

7

Confirm the generated credentials authenticate

The generated administrator password logs in with a 302 redirect to /home, while a wrong password is sent back to /login. The first command reads the real password from the credentials file:

PW=$(sudo grep '^xbackbone.admin.pass=' /root/xbackbone-credentials.txt | cut -d= -f2-)
curl -s -o /dev/null -w 'correct password: HTTP %{http_code} -> %{redirect_url}\n' \
  --data-urlencode "username=admin" --data-urlencode "password=$PW" http://127.0.0.1/login
curl -s -o /dev/null -w 'wrong password: HTTP %{http_code} -> %{redirect_url}\n' \
  --data-urlencode "username=admin" --data-urlencode "password=wrong-password" http://127.0.0.1/login
8

Open the web interface and sign in

Browse to http://<public-ip>/. Sign in at http://<public-ip>/login with the username admin and the generated password from Step 5.

9

Browse and manage your uploads

After you sign in, the home dashboard lists every upload with an inline preview, filename, size, public flag, owner and date. Per-item actions let you open, download, copy the link, embed, star or delete. Use the search and order controls to find items quickly.

10

Upload files from the browser

Open the Upload page, which accepts files up to 512 MB. Drag and drop, click to choose a file, or paste an image or video. Each upload returns an instant shareable link.

11

Configure your ShareX client

Open your profile from the top-right menu. There you can set your email and password, generate an upload token and choose the copy URL mode. You can also download a ready-made client configuration for ShareX, Screencloud or the Linux script.

Import the downloaded configuration into your client, and every capture uploads straight to your server.

12

Add users

As an administrator, open the Users menu to create additional users. Each user has their own upload token, storage quota and admin flag, so a whole team can share one server while keeping uploads separate.

13

Server components

The image runs a lean PHP stack:

  • nginx serves the front controller on port 80. It denies direct access to the application files, the SQLite database, the storage directory and the configuration file.
  • php8.3-fpm runs the XBackBone application, tuned to accept uploads up to 512 MB.
  • SQLite stores users, uploads and settings in a single file under /var/www/xbackbone/resources/database.
  • Local storage keeps uploaded files under /var/www/xbackbone/storage. XBackBone can also use S3, Google Cloud, Azure Blob, Dropbox or FTP, configured in the System settings.

To confirm the installed version at any time, run:

jq -r '"XBackBone " + .version' /var/www/xbackbone/composer.json
14

Managing the service

Restart the stack and read the nginx logs with:

sudo systemctl restart php8.3-fpm nginx
journalctl -u nginx --no-pager | tail -n 20

Restart the stack after configuration changes. Review the nginx logs when you troubleshoot.

15

Use your own domain and HTTPS (production)

For production, point a DNS record at your VM and put the site behind HTTPS. Set base_url in /var/www/xbackbone/config.php to your https:// domain with no trailing slash. Then install a certificate with certbot and reload nginx:

sudo certbot --nginx -d files.your-domain.com

After the certificate is issued, edit base_url to https://files.your-domain.com and reload nginx. Links and the ShareX configuration then use your domain.

16

Security recommendations

  • Restrict network access. Limit 22/tcp to your management network in the NSG. Expose 80/tcp, and 443/tcp once TLS is configured, only to the networks that need it.
  • Change the administrator password. Sign in after first launch and set a new password. Create individual non-admin users for day-to-day uploads.
  • Use HTTPS. Put the site behind HTTPS with your own domain before you share links publicly.
  • Keep the OS current. Unattended security upgrades are enabled by default.
  • Back up your data. Back up /var/www/xbackbone/resources/database (the SQLite database) and /var/www/xbackbone/storage (your files).
17

Support and Licensing

XBackBone is free and open source software distributed under the GNU Affero General Public License v3.0 (AGPL-3.0). The full source ships unmodified on the image under /var/www/xbackbone. This image is produced by SecureAnyCloud and is not affiliated with or endorsed by the XBackBone project. SecureAnyCloud provides 24/7 support for the image and its deployment with a guaranteed 24 hour response SLA.

Deploy on Azure

Launch XBackBone on Ubuntu 24.04 from the Azure Marketplace or with the Azure CLI as shown above, and you will have a private, self-hosted file and screenshot sharing server in minutes.

Deploy on Azure

Launch XBackBone 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

Deploy on Azure