Deploying Admidio
Introduction
Admidio is a free, open-source membership management system designed for organizations, clubs, and associations. It provides a comprehensive web-based platform for managing members, organizing events, handling communications, and maintaining organizational structure.
Built with PHP and supporting MySQL/MariaDB databases, Admidio offers a full-featured solution that grows with your organization. From small community groups to large associations, Admidio provides the tools needed for effective membership management.
Key highlights of Admidio:
- Member Management: Complete member database with custom profile fields
- Role System: Flexible role and permission management
- Event Management: Create and manage events with registration
- Email & Messaging: Built-in email and message system
- Document Management: Upload and organize documents
- Photo Gallery: Image galleries for events and activities
- Lists & Reports: Generate member lists and reports
- Guestbook: Member guestbook functionality
- Calendar: Shared calendar for organization activities
- Announcements: News and announcement system
- Multi-Language: Support for multiple languages
- Plugin System: Extend functionality with plugins
This guide walks through deploying Admidio on Klutch.sh using Docker, providing your organization with a self-hosted membership management solution.
Why Deploy Admidio on Klutch.sh
Deploying Admidio on Klutch.sh provides several advantages for organizations:
Data Privacy: Keep member data secure on infrastructure you control.
HTTPS by Default: Automatic SSL certificates for secure member access.
Always Available: Members can access the system 24/7 from anywhere.
Persistent Storage: Reliable storage for member data, documents, and photos.
Custom Domains: Use your organization’s domain for a professional presence.
GitHub Integration: Deploy updates automatically when you push changes.
Prerequisites
Before deploying Admidio on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your configuration
- Basic understanding of Docker and containerization
- (Optional) A custom domain for your organization
Understanding Admidio Architecture
Admidio consists of several components:
PHP Application: The core web application handling all functionality.
MySQL/MariaDB: Database for storing member data and configuration.
File Storage: Local storage for documents, photos, and uploads.
Theme Engine: Customizable themes for organization branding.
Preparing Your Repository
Create a GitHub repository for your Admidio deployment.
Repository Structure
admidio-deploy/├── Dockerfile├── config/│ └── config.php└── .dockerignoreCreating the Dockerfile
Create a Dockerfile for Admidio:
FROM php:8.2-apache
# Install dependenciesRUN apt-get update && apt-get install -y \ libpng-dev \ libjpeg-dev \ libfreetype6-dev \ libzip-dev \ unzip \ wget \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install gd mysqli pdo pdo_mysql zip \ && rm -rf /var/lib/apt/lists/*
# Enable Apache modulesRUN a2enmod rewrite
# Download and install AdmidioWORKDIR /var/www/htmlRUN wget https://www.admidio.org/download/latest -O admidio.zip \ && unzip admidio.zip \ && mv admidio-*/* . \ && rm -rf admidio.zip admidio-*
# Set permissionsRUN chown -R www-data:www-data /var/www/html \ && chmod -R 755 /var/www/html
# Environment variablesENV ADMIDIO_DB_HOST=${ADMIDIO_DB_HOST}ENV ADMIDIO_DB_NAME=${ADMIDIO_DB_NAME:-admidio}ENV ADMIDIO_DB_USER=${ADMIDIO_DB_USER:-admidio}ENV ADMIDIO_DB_PASSWORD=${ADMIDIO_DB_PASSWORD}
# Expose portEXPOSE 80
# Start ApacheCMD ["apache2-foreground"]Environment Variables Reference
| Variable | Required | Default | Description |
|---|---|---|---|
ADMIDIO_DB_HOST | Yes | - | Database hostname |
ADMIDIO_DB_NAME | No | admidio | Database name |
ADMIDIO_DB_USER | No | admidio | Database username |
ADMIDIO_DB_PASSWORD | Yes | - | Database password |
ADMIDIO_ROOT_PATH | No | - | Root URL path |
Deploying Admidio on Klutch.sh
- Select HTTP as the traffic type
- Set the internal port to 80
Generate Database Password
Create a secure database password:
openssl rand -base64 24Save this password for configuration.
Push Your Repository to GitHub
Initialize and push your configuration to GitHub.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project named “admidio” or “membership”.
Create a New App
Within your project, create a new app and connect your GitHub repository.
Configure HTTP Traffic
Set up HTTP for the web interface:
Set Environment Variables
Configure the following:
| Variable | Value |
|---|---|
ADMIDIO_DB_HOST | Database hostname |
ADMIDIO_DB_NAME | admidio |
ADMIDIO_DB_USER | admidio |
ADMIDIO_DB_PASSWORD | Your generated password |
Attach Persistent Volumes
Add storage for uploads and data:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/var/www/html/adm_my_files | 10 GB | User uploads and files |
/var/www/html/adm_themes | 1 GB | Custom themes |
Deploy Your Application
Click Deploy to build and start Admidio.
Complete Installation
Access your instance and complete the web-based installation wizard.
Initial Configuration
Installation Wizard
- Navigate to your Admidio URL
- Follow the installation wizard:
- Select language
- Check requirements
- Configure database connection
- Create admin account
- Configure organization
- Complete installation
Organization Setup
Configure your organization:
- Log in as administrator
- Navigate to Administration > Organization
- Set organization name and details
- Configure default settings
Creating Roles
Set up organizational roles:
- Navigate to Administration > Roles
- Create roles for your organization structure
- Configure role permissions
- Assign members to roles
Member Management
Adding Members
Add new members to your organization:
- Navigate to Members
- Click “Create member”
- Fill in member details
- Assign to appropriate roles
- Save member profile
Custom Profile Fields
Create organization-specific fields:
- Navigate to Administration > Profile Fields
- Add custom fields for your needs
- Set field visibility and requirements
- Organize field categories
Member Import
Import members from external sources:
- Navigate to Members > Import
- Prepare CSV file with member data
- Map columns to profile fields
- Complete import process
Event Management
Creating Events
Organize events for your members:
- Navigate to Events
- Click “Create event”
- Set event details, date, and location
- Configure registration options
- Publish event
Event Registration
Manage event attendance:
- Enable registration for events
- Set participant limits
- Track registrations
- Send reminders to participants
Communication
Email System
Send emails to members:
- Navigate to Email
- Select recipients by role or criteria
- Compose message
- Send or schedule delivery
Announcements
Post organizational news:
- Navigate to Announcements
- Create new announcement
- Set visibility and dates
- Publish to members
Customization
Themes
Customize the appearance:
- Upload custom themes to
/adm_themes - Select theme in Administration > Preferences
- Customize colors and branding
Modules
Enable or disable features:
- Navigate to Administration > Modules
- Enable modules your organization needs
- Configure module settings
Troubleshooting Common Issues
Database Connection Failed
Solutions:
- Verify database credentials
- Check database server is accessible
- Confirm database exists and user has permissions
Upload Errors
Solutions:
- Check file size limits in PHP configuration
- Verify storage volume permissions
- Review PHP error logs
Email Not Sending
Solutions:
- Configure SMTP settings in Administration
- Verify email credentials
- Check spam folder for test emails
Additional Resources
Conclusion
Deploying Admidio on Klutch.sh gives your organization a comprehensive membership management system under your control. With features for managing members, events, communications, and documents, Admidio provides everything needed to run an efficient organization while keeping member data private and secure.