Applications AWS

Admidio Membership Management on AWS User Guide

| Product: Admidio on AWS

Overview

This image runs Admidio, the open source, self hosted membership management platform used by clubs, associations and non profit organisations worldwide. From one web interface you manage a member database with freely definable profile fields, organise members into groups and roles with granular permissions, run events with participant registration, keep a document and file archive, publish announcements and photo albums, send messages and mailings, and produce category based reports.

Admidio is a PHP application installed under /var/www/admidio and served by the Apache web server with mod_php on port 80. The application data lives in a MariaDB database whose data directory, /var/lib/mysql, is bind mounted onto a dedicated, independently resizable EBS data volume mounted at /data. Admidio's own files tree, holding its configuration and any uploaded and generated documents, is kept on that same data volume, so all of your membership data stays off the operating system disk.

The install wizard is completed during the build and locked away from the web, so you land directly on a working sign in page. The administrator account is created on the first boot of every deployed instance, and its password is generated freshly on each instance, so two instances launched from the same Amazon Machine Image never share a password. The credentials are written to /root/admidio-credentials.txt with mode 0600 so that only the root user can read them.

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 allowing 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

Step 1: 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 cloudimg listing and choose Select, then 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, and either 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, while the per instance administrator and database passwords are generated.

Step 2: Launch the Instance from the AWS CLI

The following block launches an instance from the cloudimg Admidio Marketplace AMI into an existing subnet and security group. Replace <ami-id> with the AMI ID shown on the Marketplace listing, <key-name> with your EC2 key pair name, <subnet-id> with your subnet ID, and <security-group-id> with a security group that opens ports 22 and 80 as described above.

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 from the EC2 console or with aws ec2 describe-instances.

Step 3: 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>

Step 4: Retrieve the Administrator Password

The administrator password is unique to your instance and was generated on first boot. Read it as root:

sudo cat /root/admidio-credentials.txt

The file lists the web interface URL, the administrator login name (admin) and the generated password, along with the MariaDB database name and its application password. Keep this file somewhere safe.

Step 5: Sign In to Admidio

The web interface is served on port 80 by Apache. In a browser, go to the sign in page:

http://<instance-public-ip>/system/login.php

Sign in with login name admin and the password from the credentials file.

The Admidio sign in page

After signing in you land on the overview dashboard, the starting point for every module: members, groups and roles, events, documents, announcements and reports.

The Admidio overview dashboard after signing in

Admidio derives its base URL from the address you reach it on, so it answers correctly whether you browse by public IP, private IP or a custom domain name, and there is no baked in build time address to change.

Step 6: Confirm Admidio Is Running

Over SSH, confirm 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 '

You should see both services reported as active and Apache listening on port 80. The health endpoint returns 200:

curl -s -o /dev/null -w 'healthz: %{http_code}\n' http://127.0.0.1/healthz

The MariaDB database listens on the loopback interface only and is never exposed directly.

Step 7: Create Groups and Roles

Admidio organises members through roles, 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 with its own permissions and member list.

The Admidio groups and roles view

Select Create role to add your own, for example a committee, a team or a volunteer group. Give the role a name and description, choose its category, set who may view its member list and profiles, and tick the permissions the role should carry. Save the role and it appears immediately in the groups and roles view, ready for you to assign members.

Step 8: Add Members

Open Contacts to manage your member database. Select Create contact to add a member, filling in the profile fields your organisation uses. You can define your own profile fields under Preferences, so the 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, and use Category report to produce membership reports across your roles and profile fields.

Step 9: 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 /data

To 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.

Step 10: Enable HTTPS

The web interface is served over plain HTTP on port 80 by Apache. 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, for example with a managed certificate on an Application Load Balancer in front of the instance, or with Certbot installed on the instance, and configure Apache to listen on 443 with your certificate exactly as the bundled site does for port 80.

Because Admidio derives its base URL from the request, 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 to reach the web interface.

Step 11: Backup and Maintenance

Back up the application by snapshotting the /data EBS volume, which 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.sql

Apply 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

This image is published and supported by cloudimg. Support covers deployment, profile field and role setup, module and event configuration, version upgrades, performance tuning, the database volume, TLS and backups. Contact cloudimg through the support channel listed on the AWS Marketplace listing.

All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.