Deployment guide

Fedora Server

Overview

Fedora Linux is the community distribution sponsored by Red Hat, and it is where a great deal of enterprise Linux technology appears first. This image is built from the official Fedora Cloud Edition base image published by the Fedora Project. It is brought fully up to date at build time, hardened for server use, and configured to keep patching itself once it is yours.

No application is preinstalled. The operating system itself is the product, ready for you to build your own services on. This guide covers deploying and operating Fedora Linux 44 Cloud Edition on Microsoft Azure using SecureAnyCloud's pre-configured virtual machine image from the Azure Marketplace.

Read this before you deploy: Fedora Linux has a short support life. Each Fedora Linux release is maintained for roughly 13 months, not for years. Fedora Linux 44 reaches end of life on 2 June 2027. After that date it stops receiving security updates entirely. Plan to upgrade to a newer Fedora Linux release, or migrate to a long-term supported distribution, before then.

Choose this image when you want current packages and a fast-moving toolchain. Choose an enterprise distribution such as Rocky Linux, AlmaLinux or Red Hat Enterprise Linux when you need a multi-year support window. Step 8 covers the upgrade path.

What you get:

  • Fedora Linux 44 Cloud Edition, x86_64, built from the official Fedora Project cloud image.
  • A system brought fully up to date at build time, with zero pending updates at capture.
  • Automatic security updates armed, so your VM keeps patching itself from first boot.
  • Secure defaults: SELinux in enforcing mode, key-only SSH, password authentication disabled and root login locked.
  • No baked-in credentials and no baked-in SSH host keys, so no two VMs ever share a secret.
  • No swap baked into the image, per Azure image guidance.
  • Azure Linux Agent (waagent) and cloud-init for Azure integration, and chronyd for time synchronisation.
  • Gen2 Hyper-V virtual machine support and a 30 GB btrfs root.
  • 24/7 SecureAnyCloud support.

Platform: Microsoft Azure (Gen2 Hyper-V). Default user: azureuser, created from the SSH key you supply at deploy time.

Prerequisites

Before you deploy this image, make sure you have:

  • An active Microsoft Azure subscription.
  • Access to the Azure Portal or Azure CLI.
  • An SSH key pair for Linux VM access.
  • Familiarity with Azure VM management.

Recommended VM size: Standard_B2s (2 vCPU, 4 GB RAM) or larger. Fedora Linux 44 runs comfortably across the B, D and E series, so scale to suit your workload.

1

Deploy the Virtual Machine

Option A: Azure Portal

  • In the Azure Marketplace, search for "Fedora Linux 44 SecureAnyCloud".
  • Select the image and click Create.
  • Configure the basics:
    • Subscription: your Azure subscription.
    • Resource Group: create a new one or select an existing one.
    • Virtual Machine Name: a name for your VM.
    • Region: your preferred Azure region.
    • Size: Standard_B2s is recommended.
  • Under Administrator Account, select SSH public key and paste your public key. This key becomes the azureuser login. The image ships no password and no preinstalled key.
  • Under Inbound Port Rules, allow SSH (port 22).
  • Click Review + Create, then click Create.

Option B: Azure CLI

az vm image terms accept --urn sac1647283583153:fedora-server:default:latest
az vm create \
  --resource-group myResourceGroup \
  --name my-fedora-vm \
  --image sac1647283583153:fedora-server:default:latest \
  --size Standard_B2s \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_rsa.pub \
  --public-ip-sku Standard

Restrict inbound SSH to your own network rather than leaving it open to the internet.

2

Connect to the Virtual Machine

Connect with the private key matching the public key you supplied at deploy time:

ssh azureuser@<vm-ip>

There is no password to type and no default credential to change, because the image ships neither. Azure creates the azureuser account at provision time from the key you chose, and the account has passwordless sudo.

3

Verify the Operating System Release

Confirm that the VM is running the Fedora Linux release you expect:

cat /etc/fedora-release grep -E 'PRETTY_NAME|VERSION_ID' /etc/os-release uname -r

Expected output:

Fedora release 44 (Forty Four) VERSION_ID=44 PRETTY_NAME="Fedora Linux 44 (Cloud Edition)" 7.1.4-204.fc44.x86_64

Your kernel version will be the same as or newer than the one shown, because the image keeps patching itself after you deploy it.

4

Check for Updates Since the Build

This image is not captured until dnf reports zero pending updates and no pending reboot. Check for updates released since the build:

sudo dnf -q check-update > /dev/null 2>&1; echo "exit=$?"

An exit code of 0 means the VM is fully patched. An exit code of 100 means updates are pending. This is normal on any VM that has been running for a while, because Fedora Linux publishes updates continuously.

Check whether a reboot is needed to activate what is already installed:

sudo dnf needs-restarting -r; echo "exit=$?"

An exit code of 0 means no reboot is outstanding.

To apply everything currently available, then reboot on your own schedule, run:

sudo dnf -y upgrade --refresh sudo systemctl reboot
5

Review the Default Security Posture

This image is hardened before capture. Verify each control with these commands:

getenforce
sudo sshd -T | grep -E '^(passwordauthentication|permitrootlogin)'
sudo passwd -S root | awk '{print $1, $2}' swapon --show; echo "(no output above means no swap)"

Expected output:

Enforcing permitrootlogin prohibit-password passwordauthentication no root L (no output above means no swap)

Each line of the output means the following:

  • Enforcing: SELinux is active and enforcing policy. This is the Fedora Linux default, and the image deliberately preserves it. Do not set it to permissive unless you are diagnosing a specific denial.
  • permitrootlogin prohibit-password: root cannot log in over SSH with a password. The value is read from the running daemon with sshd -T, so it reflects what SSH actually does rather than what a config file claims.
  • passwordauthentication no: SSH accepts keys only.
  • root L: the root password is locked. There is no root password to guess or leak.
  • no swap: see Step 7 if you want swap on this VM.

Confirm that nothing beyond SSH is listening on a routable address:

ss -tulnH | awk '{print $1, $5}' | sort -u

Only sshd on port 22 should appear on a non-loopback address. The image disables the Fedora Cloud default of LLMNR name resolution, which listens on every interface on port 5355.

Per-VM identity: host keys and machine-id

Every VM launched from this image generates its own SSH host keys and its own /etc/machine-id on first boot. Nothing is inherited from the machine the image was built on, so no two customer VMs share a host key or a systemd identity. Verify this with:

sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub cat /etc/machine-id

If you launch a second VM from the same image, it shows different values.

6

Automatic Security Updates

Fedora Linux moves quickly, so this image arms automatic security updates before capture. Your VM does not silently fall behind. Verify the setup with:

systemctl is-enabled dnf5-automatic.timer grep -E 'upgrade_type|apply_updates|reboot' /etc/dnf/automatic.conf
systemctl list-timers dnf5-automatic.timer --no-pager

Expected output:

enabled apply_updates = yes upgrade_type = security reboot = never

This configuration downloads and applies security updates automatically, and it never reboots on its own. Kernel and core library updates install automatically but only take effect when you reboot, so you stay in control of downtime. Check whether a reboot is outstanding with sudo dnf needs-restarting -r.

To change the policy, edit /etc/dnf/automatic.conf and restart the timer. This file overrides the packaged defaults in /usr/share/dnf5/dnf5-plugins/automatic.conf. To apply all updates rather than security updates only, set upgrade_type = default.

To disable automatic updates entirely, run:

sudo systemctl disable --now dnf5-automatic.timer
7

Swap

This image ships with no swap, which follows Azure guidance that swap should not live on the OS disk. Fedora Linux normally enables a compressed RAM swap device through zram-generator, but the image disables it.

If your workload benefits from swap, the recommended option on Azure is compressed RAM swap. It costs no disk and no cloud storage IOPS:

sudo dnf -y install zram-generator-defaults printf '[zram0]\nzram-size = min(ram / 2, 4096)\n' | sudo tee /etc/systemd/zram-generator.conf
sudo systemctl daemon-reload
sudo systemctl start systemd-zram-setup@zram0.service

Alternatively, have the Azure Linux Agent place a swap file on the ephemeral resource disk (/mnt) rather than the OS disk. Set ResourceDisk.EnableSwap=y and ResourceDisk.SwapSizeMB in /etc/waagent.conf, then restart waagent. Never place swap on the OS disk.

8

Fedora Linux Lifecycle and Upgrading

Fedora Linux releases arrive roughly every six months. Each release is supported for about 13 months, which is around one month after the release of the second subsequent version.

  • Fedora Linux 44: current, shipped by this image. End of life: 2 June 2027.
  • Fedora Linux 43: maintained. End of life: 2 December 2026.

Plan your upgrade before the end of life date. After that date, no further security updates are published for the release, and you should treat the VM as unsupported.

To move a running VM to the next Fedora Linux release in place, use the system upgrade plugin. Snapshot the OS disk first, and expect a reboot:

sudo dnf -y upgrade --refresh sudo dnf -y install dnf5-plugin-system-upgrade
sudo dnf system-upgrade download --releasever=45 sudo dnf system-upgrade reboot

Many teams prefer to deploy a fresh VM from the newer SecureAnyCloud image and migrate their workload across. This avoids the risk of an in-place upgrade entirely.

9

Azure Platform Integration

The image is configured for Azure rather than merely running on it. Check the agent and time services:

systemctl is-active waagent
systemctl is-active chronyd cloud-init status

All three should report a healthy state (active, active and status: done).

  • Provisioning: the Azure Linux Agent and cloud-init create your azureuser account, inject your SSH public key and set the hostname you chose in the portal. This is exercised on every boot from this image.
  • Serial console: the kernel is configured with console=ttyS0, so the Azure serial console and boot diagnostics work when you need to recover a VM that will not accept SSH. Confirm the setting with cat /proc/cmdline.
  • Ephemeral resource disk: Azure attaches a temporary disk that the agent mounts at /mnt. The disk is not durable, because it is wiped on deallocation and on host maintenance. Use it for scratch data and caches only, never for data you need to keep.
  • VM extensions: the agent is present and enabled, so Azure extensions such as the Custom Script Extension, Azure Monitor Agent and backup extensions install normally.
10

Installing Software

The standard Fedora repositories are enabled, so the full Fedora Linux package set is available:

dnf repolist --enabled
sudo dnf -y install nginx
sudo systemctl enable --now nginx

Open the matching port in your Azure network security group, and in any host firewall you choose to add. This image installs no host firewall, because the Azure network security group is the primary control. Install and configure firewalld if you want defence in depth:

sudo dnf -y install firewalld
sudo systemctl enable --now firewalld

The Cockpit web console from Fedora Server Edition is not preinstalled in this Cloud Edition-based image. To add it, run:

sudo dnf -y install cockpit
sudo systemctl enable --now cockpit.socket

Troubleshooting

Cannot SSH in. Check that the Azure network security group allows port 22 from your address. Check that you are using the private key that matches the public key you supplied at deploy time, and that the user is azureuser. There is no password login: PasswordAuthentication is no, so a password prompt means your key was not offered.

A service will not start and the logs mention permission denied. SELinux is enforcing. Check for denials with sudo ausearch -m avc -ts recent or sudo journalctl -t setroubleshoot. The correct fix is almost always a policy adjustment or a file context correction with sudo restorecon -Rv <path>, not disabling SELinux.

dnf reports pending updates. This is expected on a running VM, because Fedora Linux publishes updates continuously. Automatic security updates install them. Run sudo dnf -y upgrade --refresh to apply everything, and reboot if sudo dnf needs-restarting -r says so.

A reboot never seems to clear needs-restarting. Some updates install after your last reboot. Run the upgrade, reboot, then check again.

Out of memory on a small VM. This image ships no swap by design. Either move to a larger VM size or enable compressed RAM swap as shown in Step 7.

Disk is full. The root filesystem is btrfs. Check usage with df -h / and sudo btrfs filesystem usage /. Grow the OS disk in the Azure portal, then extend the filesystem with sudo btrfs filesystem resize max /.

Support

SecureAnyCloud provides 24/7 support for this image, covering deployment, Azure integration and image-specific questions.

Support for the Fedora Linux operating system itself is community-based. See the Fedora Project for documentation, forums and mailing lists.

Licence and Trademarks

Fedora Linux is free and open source software. It is not distributed under a single licence. It is a collection of many thousands of packages under a wide range of predominantly free and open source licences, including the GPL, LGPL, MIT, BSD and Apache licences.

The licence that applies to any individual package is the licence of that package. You can inspect it with rpm -qi <package> or in /usr/share/licenses/. No subscription or paid entitlement is required to use Fedora Linux.

This image contains Fedora software obtained from the official Fedora Project repositories. It is provided by SecureAnyCloud and is not provided, endorsed or supported by the Fedora Project or Red Hat, Inc. Official, unmodified Fedora software is available from the Fedora Project at https://fedoraproject.org/.

Fedora and the Infinity design logo are trademarks of Red Hat, Inc. Linux is a registered trademark of Linus Torvalds. SecureAnyCloud is not affiliated with, sponsored by or endorsed by Red Hat, Inc. or the Fedora Project.

Deploy on Azure

Launch Fedora Linux 44 Cloud Edition 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