Admidio
Overview
Admidio is an open source membership management platform for clubs, associations and non-profit organisations. It centres on a member database with freely definable profile fields, and adds groups and roles with granular permissions, events with participant registration, a document and file archive, announcements, photo albums, forums, messages and mailings, an inventory and category-based reporting, all from one web interface.
This SecureAnyCloud image serves Admidio 5 with Apache and PHP 8.3 on a hardened Ubuntu 24.04 LTS base, patched at build time. It includes a bundled local MariaDB server, so the appliance is complete and useful on its own. The installation wizard is already completed and locked away, so the platform is ready the moment the instance boots.
What you get:
- Admidio 5 served by Apache with PHP 8.3, managed by systemd
- A bundled MariaDB server holding the Admidio database, already installed and ready
- The installation wizard pre-completed and locked away, so no setup wizard is ever exposed
- A per-VM administrator password generated on first boot and recorded in a root-only file
- No shipped default login: the administrator password ships rotated to a discarded random value, and the real per-VM password is set on first boot
- MariaDB bound to
127.0.0.1only, never exposed to the network - A dedicated Azure data disk carrying both the MariaDB database and Admidio's uploaded and generated files
- A base URL derived from the request, so the site answers correctly on the public IP, the private IP or any DNS name you point at it
apache2.serviceandmariadb.serviceas enabled systemd units- An unauthenticated
/healthzendpoint 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 for a club or association. Move up to Standard_D2s_v3 for larger memberships or heavy photo use.
Configure the network security group (NSG) to allow inbound 22/tcp from your management network and 80/tcp for the application. Also allow 443/tcp if you terminate TLS on the VM. The bundled MariaDB listens on 127.0.0.1 only, so port 3306 stays off the network.
Step 1 - Deploy from the Azure Marketplace
In the Azure portal, choose Create a resource, search for Admidio 5 Membership Management on Ubuntu 24.04 LTS by SecureAnyCloud, and select Create.
Pick your subscription, resource group and region. Choose the Standard_B2s size, select SSH public key authentication with the username azureuser, and allow inbound ports 22, 80 and 443.
The image attaches its own 20 GiB data disk for your member database and files, so you do not need to add one.
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:admidio-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name admidio \
--image sac1647283583153:admidio-ubuntu-24-04:default:latest \
--size Standard_B2s \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku StandardOpen ports 80 and 443:
az vm open-port --resource-group <your-rg> --name admidio --port 80,443Step 3 - Confirm the services are running
SSH to the VM as azureuser and confirm that Apache, MariaDB and the first-boot service are all active. MariaDB is bound to 127.0.0.1:3306 only, while Apache serves on port 80.
systemctl is-active apache2 mariadb admidio-firstbootss -tlnp | grep -E ':80 |:3306 ' | sed 's/ */ /g'Step 4 - Retrieve the per-VM administrator password
The first-boot service generates an administrator password unique to your VM and writes it to a root-only file. Read it over SSH:
sudo cat /root/admidio-credentials.txtADMIDIO_URL is the VM's own address as seen from inside the VM. Azure does not expose the public IP to the instance, so this is usually the private address.
Browsing the public IP shown in the Azure portal works identically. This image derives Admidio's base URL from the request instead of baking one in at build time.
Step 5 - Sign in
Browse to http://<vm-ip>/ and sign in with the username admin and the password from the credentials file.
You land on the Overview. It shows who is signed in, upcoming birthdays, the calendar, announcements, events and who is online. The module list runs down the left, with the administration section beneath it.
Step 6 - Set up your organisation
The image ships a starter organisation called My Organisation, so the platform is usable immediately. Rename it and set your own details under Administration > Preferences > Organisation. You can set the long name and short name, the administrator email address, your timezone and the default language.
The same Preferences area is where you enable and configure the individual modules (events, photos, documents, forum, messages and the rest). It is also where you set the registration behaviour for new members.
Step 7 - Manage your members
Contacts is the member database. Select Create contact to add a member, Import contacts to bulk load from CSV, and Edit profile fields to define exactly which fields your organisation records.
The list is searchable and sortable, and every change is tracked in the change history.
Step 8 - Organise groups and roles
Open Groups & roles to control who may see and do what. The image ships the standard Administrator, Association's board and Member roles.
Create your own roles for committees, teams or age groups, and assign members to them. Select Show permissions to review exactly which rights each role grants.
Step 9 - Confirm there are no default credentials
This image ships with no usable login. The build-time password of the admin account is rotated to a random value that is discarded and never recorded. The first-boot service then sets a fresh password unique to your VM before Admidio serves a single request.
The admin account is the only account that can sign in. Run the checks below to list it and to confirm that the per-VM password authenticates through the real Admidio login form, while a blank password and common weak guesses are all rejected.
sudo mariadb --protocol=socket -uroot -N -e "SELECT CONCAT(usr_login_name,' (the only account that can sign in)') FROM admidio.adm_users WHERE usr_valid=1 AND usr_login_name IS NOT NULL"sudo bash /usr/local/sbin/admidio-cred-roundtrip.shAfter your first sign-in, change the administrator password to one of your own at My profile > Edit profile > Change password.
Step 10 - Verify the stack and where your data lives
Confirm the installed release, the health endpoint and the data disk layout.
The MariaDB database and Admidio's adm_my_files tree (your uploads, generated files and the configuration) both live on the dedicated data disk, bind-mounted into place. Your data stays off the operating system disk.
sudo mariadb --protocol=socket -uroot -N -e "SELECT CONCAT('Admidio ',com_version) FROM admidio.adm_components WHERE com_name_intern='CORE'"curl -sI http://127.0.0.1/healthz | head -1findmnt -no SOURCE,TARGET,FSTYPE,SIZE /data;
findmnt -no SOURCE,TARGET /var/lib/mysql;
findmnt -no SOURCE,TARGET /var/www/admidio/adm_my_filesAdding your own domain and TLS
Admidio derives its base URL from the request. Point a DNS name at the VM and links and emails use that name, with no configuration change. To terminate TLS on the VM itself, install a certificate with Certbot:
sudo apt-get update && sudo apt-get install -y certbot python3-certbot-apache
sudo certbot --apache -d admidio.your-domain.comCertbot configures the Apache virtual host and renews the certificate automatically. Admidio switches its generated links to https:// on its own once requests arrive over TLS.
To pin one fixed public URL instead of following the request, replace the SecureAnyCloud block at the end of /var/www/admidio/adm_my_files/config.php with a single line, for example $g_root_path = 'https://admidio.your-domain.com';.
Backing up
Everything that matters lives on the data disk: the MariaDB database and the adm_my_files tree. Snapshot the data disk for a complete point-in-time backup, or dump the database and archive the files tree:
sudo mariadb-dump --protocol=socket -uroot --single-transaction --routines admidio > /var/tmp/admidio-backup.sqlsudo tar -czf /var/tmp/admidio-files-backup.tar.gz -C /data/admidio adm_my_filesSecurity notes
- Unique administrator password. It is generated on first boot into a
0600 root:rootfile. No default or shared login ships in the image. - Installer locked. The installation and update wizard is denied from the web (
/installreturns 403). For a major version upgrade, lift the block temporarily withsudo a2disconf sac-admidio-lockdown && sudo systemctl reload apache2, complete the upgrade, then re-enable it. - Files tree protected.
adm_my_files, which holdsconfig.phpand every upload, is denied from the web by Admidio's own shipped.htaccess. Apache honours it because the virtual host setsAllowOverride All. - Database private. MariaDB listens on
127.0.0.1:3306only and is never reachable from the network. On-VM maintenance usessudo mariadbasroot@localhostover the Unix socket, with no password. - Host-only session cookie. It is scoped to exactly the address you browse to.
- Account lockout. Admidio locks an account for 15 minutes after repeated wrong passwords.
- Patched OS. The OS is fully patched at build time, and unattended security upgrades stay enabled on your VM.
- Restrict access and add TLS. Limit
22/tcpto your management network, and put the site behind TLS before inviting members.
Trademark
Admidio is a trademark of its respective owner. SecureAnyCloud is not affiliated with or endorsed by the Admidio project. All product and company names are trademarks or registered trademarks of their respective holders.
Support
SecureAnyCloud provides 24/7 technical support for this image by email (sales@secureanycloud.com) and live chat, with a one-hour average response time for critical issues.
Deploy on Azure
Launch Admidio 5 Membership Management 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
Overview
Admidio is an open source, self-hosted membership management platform for clubs, associations and non-profit organisations. From one web interface you manage a member database with freely definable profile fields, organise members into groups and roles with granular permissions, and run events with participant registration. You also get a document and file archive, announcements, photo albums, messages and mailings, and category-based reports.
This SecureAnyCloud image installs Admidio under /var/www/admidio and serves it with Apache and mod_php on port 80.
What you get:
- A MariaDB database whose data directory,
/var/lib/mysql, is bind-mounted onto a dedicated, independently resizable EBS data volume at/data - Admidio's own files tree, holding its configuration and any uploaded and generated documents, on the same data volume, so your membership data stays off the operating system disk
- The install wizard completed during the build and locked away from the web, so you land directly on a working sign-in page
- An administrator account created on the first boot of every instance, with a freshly generated password, so two instances launched from the same Amazon Machine Image never share a password
- Credentials written to
/root/admidio-credentials.txtwith mode 0600, readable only by the root user
Prerequisites
Before you deploy this image, you need:
- An Amazon Web Services account where you can launch EC2 instances
- IAM permissions to launch instances, create security groups, and subscribe to AWS Marketplace products
- An EC2 key pair in the target Region for SSH access to the instance
- A VPC and subnet in the target Region, with a security group that allows inbound port 22 from your management network and port 80 for the web interface
- The AWS CLI (version 2) installed locally, if you plan to deploy from the command line
Launch the Instance from the AWS Marketplace
Sign in to the AWS Management Console, open the EC2 service, and select Launch instance. Under Application and OS Images, choose AWS Marketplace AMIs and search for Admidio. Select the SecureAnyCloud listing, choose Select, then choose Continue on the subscription summary.
Pick an instance type of m5.large or larger. Choose your EC2 key pair under Key pair (login). Under Network settings, select your VPC and subnet, then create or select a security group that opens port 22 from your management network and port 80 for the web interface. Leave the root volume at the default size or larger.
Select Launch instance. First-boot initialisation takes a few seconds after the instance state becomes Running and the status checks pass. During that time the per-instance administrator and database passwords are generated.
Launch the Instance from the AWS CLI
Run the command below to launch an instance from the SecureAnyCloud Admidio Marketplace AMI into an existing subnet and security group. Replace <ami-id> with the AMI ID shown on the Marketplace listing and <key-name> with your EC2 key pair name. Replace <subnet-id> with your subnet ID and <security-group-id> with a security group that opens ports 22 and 80.
aws ec2 run-instances \
--image-id <ami-id> \
--instance-type m5.large \
--key-name <key-name> \
--subnet-id <subnet-id> \
--security-group-ids <security-group-id> \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=admidio}]'When the instance reaches the Running state and its status checks pass, note its public IP address or DNS name. You can find both in the EC2 console or with aws ec2 describe-instances.
Connect to Your Instance
Connect over SSH using your key pair and the login user for your operating system variant.
OS variant SSH login user
Ubuntu 24.04 ubuntu
ssh -i <key-name>.pem ubuntu@<public-ip>Retrieve the Administrator Password
The administrator password is unique to your instance and is generated on first boot. Read it as root:
sudo cat /root/admidio-credentials.txtThe file lists the web interface URL, the administrator login name (admin) and the generated password. It also lists the MariaDB database name and its application password. Keep this file somewhere safe.
Sign In to Admidio
Apache serves the web interface on port 80. Open the sign-in page in a browser:
http://<instance-public-ip>/system/login.phpSign in with login name admin and the password from the credentials file.
After you sign in, you land on the overview dashboard. It is the starting point for every module: members, groups and roles, events, documents, announcements and reports.
Admidio derives its base URL from the address you reach it on. It answers correctly on the public IP, the private IP or a custom domain name, and there is no build-time address to change.
Confirm Admidio Is Running
Over SSH, confirm that the web server and the database are active and that port 80 is listening:
sudo systemctl is-active apache2 mariadb
sudo ss -tlnp | grep ':80 'Both services should report active, and Apache should be listening on port 80. The health endpoint returns 200:
curl -s -o /dev/null -w 'healthz: %{http_code}\n' http://127.0.0.1/healthzThe MariaDB database listens on the loopback interface only and is never exposed directly.
Create Groups and Roles
Admidio organises members through roles, which are grouped into categories such as General, Groups, Courses and Teams. Open Groups & roles from the menu to see the roles that ship by default (Administrator, Association's board and Member). Each has its own permissions and member list.
Select Create role to add your own, for example a committee, a team or a volunteer group. Give the role a name and description and choose its category. Set who may view its member list and profiles, and tick the permissions the role should carry.
Save the role. It appears immediately in the groups and roles view, ready for you to assign members.
Add Members
Open Contacts to manage your member database. Select Create contact to add a member, and fill in the profile fields your organisation uses. You can define your own profile fields under Preferences, so each member record captures exactly the information you need.
Assign members to the roles you created in the previous step to control what each member can see and do. Use Category report to produce membership reports across your roles and profile fields.
The Data Volume
The MariaDB database and Admidio's own files tree live on a dedicated EBS volume mounted at /data, with the database bind-mounted onto /var/lib/mysql. This keeps your membership data off the operating system disk and lets you resize or snapshot it independently. Confirm the mount with:
df -h /dataTo grow the data store, expand the EBS volume in the AWS console. Then grow the filesystem on the instance with sudo resize2fs on the underlying device. The Admidio application code under /var/www/admidio lives on the root volume.
Enable HTTPS
Apache serves the web interface over plain HTTP on port 80. For production use, place it behind TLS so that the administrator password and member data are encrypted in transit.
Point a domain name at the instance, then obtain a certificate for that domain. You can use a managed certificate on an Application Load Balancer in front of the instance, or Certbot installed on the instance. If you terminate TLS on the instance, configure Apache to listen on 443 with your certificate, exactly as the bundled site does for port 80.
Admidio derives its base URL from the request, so no configuration change is needed when you move to HTTPS. Once a certificate is in front of the instance and you browse to the https:// address, Admidio generates its links over HTTPS automatically.
Restrict the security group so that ports 80 and 443 are reachable only from the networks that need the web interface.
Backup and Maintenance
Back up the application by snapshotting the /data EBS volume. The snapshot captures both the database and Admidio's files tree. You can also take a logical backup of the database over the loopback socket:
sudo mysqldump --protocol=socket admidio > admidio-backup.sqlApply operating system security updates with sudo apt-get update && sudo apt-get upgrade, and reboot when a new kernel is installed. Apache and MariaDB start automatically on boot.
Support
SecureAnyCloud publishes and supports this image. Support covers deployment, profile field and role setup, module and event configuration, version upgrades, performance tuning, the database volume, TLS and backups. Contact SecureAnyCloud through the support channel listed on the AWS Marketplace listing.
All product and company names are trademarks or registered trademarks of their respective holders. Their use does not imply any affiliation with or endorsement by them.
Deploy on AWS
Launch Admidio on AWS with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com