NamelessMC on Ubuntu 24.04 on Azure User Guide
Overview
NamelessMC is a free and open source community website platform: a content management system with a built in discussion forum, member registration and profiles, groups and a granular permission system. It gives a community a public site and a forum behind one login, and it is widely used by game server communities because of its optional in game account integration. That integration is entirely optional and is configured after launch, so this appliance runs completely standalone: no game server is required, and nothing on the image depends on one.
The cloudimg image ships NamelessMC 2.2.5 served by nginx and PHP 8.3 FPM on a hardened, fully patched Ubuntu 24.04 LTS base, together with a bundled local MariaDB server so the appliance is complete on its own. The bundled MariaDB listens only on the loopback interface (127.0.0.1:3306). A unique administrator password and a unique database password are generated on the first boot of every VM. Backed by 24/7 cloudimg support.
The installation wizard is already closed. NamelessMC normally ships an installer whose first account becomes the site owner, which is a takeover risk on any image that exposes it. On this image the wizard was completed at build time over the loopback interface and permanently closed, and nginx does not bind port 80 at all until the per VM first boot has minted your credentials.
What is included:
- NamelessMC 2.2.5 served by nginx and PHP 8.3 FPM, managed by systemd
- The Core, Forum, Members, Discord Integration and Cookie Consent modules, installed and enabled
- A bundled MariaDB 10.11 server holding the NamelessMC database, already migrated and ready
- A per VM administrator password and a per VM database password generated on first boot into a root only file
- No shipped default login: the installer is closed and no known or blank credential authenticates
- nginx held shut until first boot completes, so the site never serves a request before your credentials exist
- MariaDB bound to
127.0.0.1only, never exposed to the network - Friendly URLs, the upstream recommended nginx rewrite and deny rules, and an unauthenticated
/healthzendpoint for Azure Load Balancer health probes nginx.service,php8.3-fpm.serviceandmariadb.serviceas enabled systemd units- 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 sensible starting point; size up for larger or busier communities. NSG inbound: allow 22/tcp from your management network and 80/tcp for the site. NamelessMC serves plain HTTP on port 80; for production, terminate TLS in front of it with your own domain. The bundled MariaDB is never exposed: it listens on 127.0.0.1 only, so port 3306 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 NamelessMC 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 HTTP (80). Then Review + create followed by Create.
Step 2 - Deploy from the Azure CLI
az vm create \
--resource-group <your-rg> \
--name namelessmc \
--image <marketplace-image-urn> \
--size Standard_B2s \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku Standard
Then open port 80 to the site:
az vm open-port --resource-group <your-rg> --name namelessmc --port 80
Step 3 - Confirm the services are running
SSH in as azureuser and confirm nginx, PHP FPM and MariaDB are all active. Note that MariaDB listens only on 127.0.0.1:3306 while nginx serves the site on port 80. The namelessmc-firstboot unit reports active once it has finished its one shot run.
systemctl is-active nginx php8.3-fpm mariadb namelessmc-firstboot
ss -tlnp | grep -E ':80 |:3306 '

Step 4 - Retrieve your per VM credentials
Every VM generates its own administrator password and its own database password on first boot and writes them to a root only file. Nothing is shared between deployments and nothing is recoverable from the published image.
sudo cat /root/namelessmc-credentials.txt

Step 5 - Open your community site
Browse to http://<your-vm-public-ip>/. The public front page shows your site name, the navigation for Home, Forum and Members, the welcome announcement, and Log In / Register buttons. This is what your visitors see before they sign in.

Step 6 - Sign in as the administrator
Click Log In. Sign in with the user admin (or the administrator e-mail from the credentials file) and the password from /root/namelessmc-credentials.txt. Both work: this image sets the login method to e-mail or username.

Step 7 - Use the forum
Choose Forum in the navigation. The forum index lists your categories and forums with their topic and post counts, and the most recent topic in each. The shipped site starts with one category, one forum, and the NamelessMC welcome topic, so you can post a reply immediately and then rename or replace the defaults from the Staff CP.

Step 8 - Open the Staff CP
Click the blue gear icon in the top right. NamelessMC protects the Staff CP with a second password prompt even when you are already signed in, so enter your administrator password again when it asks you to re authenticate. The dashboard then shows your user, topic and post counters, an activity chart, and the full administration menu down the left: Configuration, Communications, Integrations, Layout, Modules, Custom Pages, Groups, User Management, Security, Update, and the Forum settings.

Step 9 - Manage groups and permissions
Open Groups in the Staff CP. NamelessMC ships with Admin, Moderator, Member and Unconfirmed Member, each with a staff flag and its own permission set. Select a group to edit its permissions, or use New Group to add your own. This is where you decide who can read, post, moderate and administer.

Step 10 - Verify the security posture
Three things are worth confirming on your own VM. First, the installation wizard is permanently closed, so nobody can claim your site by reaching an installer. Second, the administrator created at first boot is the only account that can sign in. Third, the credential round trip proves that the per VM password works through the real sign in form and that a blank password and the common weak guesses are all rejected:
curl -s http://127.0.0.1/install.php | grep -o 'already been installed'
sudo bash /usr/local/sbin/namelessmc-cred-roundtrip.sh

Step 11 - Verify the stack and the first boot gate
Confirm the NamelessMC version and the health endpoint, and look at the gate that keeps the site shut until your credentials exist. nginx.service carries a ConditionPathExists on the first boot sentinel, so at a fresh boot systemd skips nginx entirely; the first boot service mints your credentials, writes the sentinel and only then starts nginx:
curl -sI http://127.0.0.1/healthz | head -1
grep -h ConditionPathExists /etc/systemd/system/nginx.service.d/*.conf; ls -l /var/lib/cloudimg/

Optional - connect a game server
NamelessMC's game server integration is optional and is not required for anything on this image. To enable it, open the Staff CP, choose Integrations, and configure the integration you want; then install the matching plugin on your game server and point it at your site. Nothing on this appliance depends on a game server being present, so you can run the site as a general purpose community forum and add the integration later, or never.
Where your data lives
The NamelessMC application tree is at /var/www/namelessmc, owned by www-data. Its configuration, including the database credentials and your site host, is at /var/www/namelessmc/core/config.php. Uploads (avatars, banners, images) live under /var/www/namelessmc/uploads, and the application cache under /var/www/namelessmc/cache. The MariaDB database nameless holds every user, group, permission, forum, topic and post, in its default datadir at /var/lib/mysql. Take a VM level snapshot or a mysqldump of the nameless database to back the site up.
sudo mariadb --protocol=socket -uroot -N -e "SELECT COUNT(*) AS users FROM nameless.nl2_users"
Adding your own domain and TLS
The appliance serves plain HTTP on port 80. For production, front it with your own domain and a TLS certificate, then tell NamelessMC its public address by setting hostname in /var/www/namelessmc/core/config.php (and force_https to true if you terminate TLS in front of it). Clear the cache afterwards so the change takes effect:
sudo bash /usr/local/sbin/namelessmc-rebuild-module-cache.sh
You can terminate TLS with Azure Application Gateway, an nginx or Caddy reverse proxy, or a managed load balancer with a certificate for your domain.
Note on clearing the cache by hand. NamelessMC stores its enabled module list in the on disk cache, so emptying
/var/www/namelessmc/cacheon its own would silently disable the Forum and Members modules. The helper above rebuilds that list from the database, which is why it is the supported way to clear the cache on this image.
Security notes
- The installation wizard is permanently closed on this image and
install.phponly ever renders an inert notice. Nobody can claim your site by reaching an installer. - nginx does not bind port 80 until the first boot service has written your per VM credentials, so the site never serves a request before it is yours.
- The administrator password and the database password are unique per VM and no known or blank credential authenticates. Keep
/root/namelessmc-credentials.txtprotected and change the password from within NamelessMC if you share access. - The bundled MariaDB listens on
127.0.0.1only and is never reachable from the network. Administer it over SSH withsudo mariadb. - NamelessMC serves plain HTTP on port 80. For anything beyond a trusted network, put it behind your own TLS terminating reverse proxy or Azure Application Gateway with a certificate for your domain.
- Restrict inbound
80/tcpin your NSG to the networks that need the site.
Support
This image is maintained by cloudimg with 24/7 support. If you need help deploying or operating NamelessMC on Azure, contact us at cloudimg.co.uk.