EGroupware
Overview
EGroupware is a mature open source collaboration and groupware suite. Businesses, public sector bodies, schools and non-profit organizations use it to run shared calendars, contacts, projects and documents on infrastructure they control.
It brings together a group calendar with resource booking, address books, InfoLog for tasks and tickets, a versioned file manager, project manager, time sheet, wiki, bookmarks and news, all behind one sign-in with fine-grained per-group access control. Calendars and contacts synchronize to phones, tablets and desktop clients over CalDAV and CardDAV, and the mail app connects to an IMAP server you already run.
This SecureAnyCloud image ships EGroupware 26 served by Apache and PHP 8.3 on a hardened Ubuntu 24.04 LTS base, patched at build time. A bundled local MariaDB server makes the appliance complete on its own. The installer is pre-completed and the setup console is locked away, so the suite is ready when the instance boots.
What you get:
- EGroupware 26 served by Apache with PHP 8.3, managed by systemd
- A bundled MariaDB server that holds the EGroupware database, already installed and ready, and listens only on the loopback interface (127.0.0.1:3306)
- The installer pre-completed and the setup console denied at the web server, so no installer is ever exposed
- A per-VMadministrator password generated on first boot and recorded in a root-only file
- No default login: every password ships rotated to a discarded random value, and the real per-VM values are 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 EGroupware's file store
- An address-agnostic configuration, so the suite works on the public IP, a private address or your own DNS name with nothing to reconfigure
- Host-only session cookies, so sign-in works whether you browse by IP or by a DNS name
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 team. Move up to Standard_D2s_v3 or larger for many concurrent users, large file stores or heavy calendar use.
Configure the network security group (NSG) to allow inbound 22/tcp from your management network, 80/tcp for the application and 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
Sign in to the Azure portal, choose Create a resource, search for EGroupware 26 Collaboration Suite on Ubuntu 24.04 LTS by SecureAnyCloud, and select Create.
Pick your subscription, resource group and region, and 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 30 GiB data disk for your database and file store, 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:egroupware-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name egroupware \
--image sac1647283583153:egroupware-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 egroupware --port 80,443Step 3 - Confirm the services are running
SSH to the VM as azureuser and confirm that Apache and MariaDB are active. MariaDB is bound to 127.0.0.1:3306 only, while Apache serves on port 80.
systemctl is-active apache2 mariadbThe first-boot service is a one-shot job, not a long-running service. Ask for its result instead of whether it is active. It reports success once it has generated this VM's credentials:
systemctl show egroupware-firstboot --property=Result --valueIt is normal and correct for systemctl is-active egroupware-firstboot to report inactive after the job has run, and especially after a reboot. A sentinel file guards the unit, so it generates your credentials exactly once and never overwrites them on a later boot. Result=success is the answer that matters.
ss -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/egroupware-credentials.txtThis image bakes no address into its configuration. EGroupware uses a relative web server URL, so it works unchanged on the VM's public IP, on its private address, on a DNS name, or behind a TLS-terminating proxy. There is nothing to reconfigure when your address changes.
Step 5 - Sign in
Browse to http://<vm-ip>/egroupware/. Sign in with the username admin and the password from the credentials file. Browsing http://<vm-ip>/ redirects you there.
After you sign in, the suite opens on the calendar, with the application bar and a search box across the top. EGroupware may offer to start a working time entry on your first sign-in. If you do not use the time sheet, answer No or Don't ask again!
Step 6 - Use the calendar
The calendar is EGroupware's centerpiece. It opens on the current day, with a month picker, your favorites and an open tasks panel alongside.
Switch between day, week, month and year views. Book resources and meeting rooms, invite other users and see their free or busy time, and set up recurring appointments.
Calendars are shared according to the access control you grant each group, and they synchronize to phones and desktop clients over CalDAV.
Step 7 - Manage contacts in the address book
Open Address Book to manage your shared and personal contacts, with business and home fields, organizations, distribution lists and categories. A fresh instance contains the administrator's own contact and EGroupware's internal SiteMgr record.
Contacts sync to phones and desktop clients over CardDAV. They link through to InfoLog entries, calendar events and projects.
Step 8 - Track tasks and tickets in InfoLog
Open InfoLog, EGroupware's tracker for tasks, notes, phone calls and tickets. A fresh instance starts empty.
Entries carry a type, status, priority, start and due dates, an owner and a responsible user. Link an entry to a contact, a calendar event or a project so everything about a piece of work stays together.
Use the filters down the page to build and save views, such as your own open tasks or everything due this week.
Step 9 - Connect your own mail server
EGroupware's mail app is a client, not a mail server. This image deliberately ships no SMTP or IMAP daemon, so nothing listens on a mail port and there is no relay to secure.
Sign in as the administrator and go to Admin > Mail accounts. Point the mail app at an IMAP and SMTP server you already run, or at a hosted provider.
The rest of the suite, including the calendar, address book, InfoLog, file manager and project manager, works fully without a mail server. The same Admin area connects EGroupware to LDAP or Active Directory, if you prefer to authenticate against your existing directory instead of the bundled database.
Step 10 - No known or default credentials
This image ships with no usable login. Every password set at build time (the administrator, the database and the setup console credentials) is rotated to a random value that is discarded and never recorded. The first-boot service sets fresh values unique to your VM before EGroupware serves a single request.
The check below confirms that the per-VM administrator authenticates through EGroupware's own authentication path, while a blank password and common weak guesses are all rejected.
sudo mariadb --protocol=socket -uroot -N -e "SELECT CONCAT(account_lid,' (',account_type,')') FROM egroupware.egw_accounts WHERE account_type='u'"sudo bash /usr/local/sbin/egroupware-cred-roundtrip.shThe listing above shows a second account named anonymous alongside admin. This account is not a login for you or your users. EGroupware creates it during installation and uses it internally to serve file manager share links to people who are not signed in.
EGroupware creates it with a random password of its own, and this image rotates that password to a fresh random value unique to your VM on first boot. The check above confirms that it rejects every guessable credential.
admin is the only account intended to sign in on a new instance. Create your real users under Admin > User accounts. After your first sign-in, change the administrator password to one of your own under Preferences > Password.
Step 11 - Verify the stack and where your data lives
Confirm the installed release, the health endpoint and the data disk layout. The MariaDB database and EGroupware's file store, which holds every file your users upload, both live on the dedicated data disk. The disk is bind-mounted into place, so your data stays off the operating system disk.
grep -oE "maintenance_release'\] = '[^']+'" /var/www/egroupware/api/setup/setup.inc.php | sed "s/.*'\(.*\)'/EGroupware \1/"curl -sI http://127.0.0.1/healthz | sed -n 1pfindmnt -no SOURCE,TARGET,FSTYPE,SIZE /data;
findmnt -no SOURCE,TARGET /var/lib/mysql;
findmnt -no SOURCE,TARGET /var/www/egroupware/filesEGroupware reports two version numbers, and both are correct. The release above is the shipped maintenance release. The database records a separate internal schema version that changes only when the table layout does.
Adding your own domain and TLS
Point a DNS A record at the VM's public IP. Then install Certbot and request a certificate for your domain:
sudo apt-get update && sudo apt-get install -y certbot python3-certbot-apache
sudo certbot --apache -d groupware.your-domain.example --agree-tos -m you@your-domain.example --redirectCertbot configures Apache for HTTPS and installs a renewal timer. EGroupware uses a relative web server URL, so nothing changes inside the application. It picks up your domain automatically.
Backing up
Everything worth keeping is on the data disk: the MariaDB database and the file store. For a full machine-level backup, take an Azure snapshot of the data disk. Alternatively, dump the database and archive the file store:
sudo mysqldump --protocol=socket -uroot --single-transaction egroupware > /var/tmp/egroupware-backup.sql
sudo tar -czf /var/tmp/egroupware-files.tar.gz -C /data/egroupware filesStore both off the VM. The simplest scheduled option is an Azure Backup policy on the VM and its data disk. EGroupware also has its own backup export under the setup console, which writes a portable dump of a domain.
Security notes
- The setup console is locked. The web server denies it, so the installer can never be reached or re-run against your instance. If you need it for a major version upgrade, re-enable it temporarily with
sudo a2disconf sac-egroupware-lockdown && sudo systemctl reload apache2, then lock it again immediately afterwards. - Configuration secrets stay private.
header.inc.phpholds the database password and the setup console credentials. The web server denies it, and on disk it is0640 root:www-data, so neither HTTP nor an unprivileged user on the VM can read it. - Uploaded files are protected. The web server denies direct access to EGroupware's file store. The file manager serves uploaded files and applies your access control, so they are never served as static files.
- Keep MariaDB private. The bundled MariaDB listens on
127.0.0.1:3306only. Keep port 3306 closed in your NSG, because nothing outside the VM needs it. - Protect the credentials file. The administrator, database and setup console passwords are unique to your VM and generated on first boot. They are written only to
/root/egroupware-credentials.txtwith0600 root:rootpermissions. - Sessions work by IP or DNS name. Session cookies are host-only, so sign-in behaves correctly whether you browse the instance by IP or through a DNS name.
- Encrypt web traffic. Serve the suite over HTTPS before you put real data in it, and restrict
22/tcpto your management network. - Keep the VM patched. The base OS is fully patched at build time, and unattended security upgrades remain enabled on your VM.
Trademark
EGroupware is a trademark of its respective owner. SecureAnyCloud is not affiliated with, endorsed by, or sponsored by EGroupware GmbH or the EGroupware project. This image packages the open source EGroupware community software, which is distributed under the GNU General Public License version 2 or later, and all product and company names are the property of their respective holders.
Support
SecureAnyCloud provides 24/7 technical support for this image by email (sales@secureanycloud.com) and live chat. Support covers deployment, configuration, upgrades, performance tuning and MariaDB administration. Critical issues receive a one-hour average response time.
Deploy on Azure
Launch EGroupware 26 Collaboration Suite 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
EGroupware is an open source, self-hosted collaboration and groupware suite used by businesses, public sector bodies, schools and non-profit organizations worldwide. From one web interface, your team shares calendars with group scheduling and resource booking, keeps a common address book, tracks tasks and tickets in InfoLog, and stores documents in a versioned file manager. It also runs project management, time sheets, a wiki, bookmarks and news, with CalDAV and CardDAV synchronization to phones, tablets and desktop clients.
This SecureAnyCloud image installs EGroupware natively on Apache, PHP and MariaDB, rather than in the upstream container topology, and SecureAnyCloud supports the appliance directly. EGroupware is licensed under the GNU General Public License version 2 or later.
What you get:
- EGroupware, a PHP application installed under
/var/www/egroupware, served by Apache with mod_php on port 80 at the vendor's default path/egroupware. Browsing to the instance address redirects there automatically. - A MariaDB database whose data directory,
/var/lib/mysql, is bind-mounted onto a dedicated, independently resizable EBS data volume mounted at/data - EGroupware's own file store, which holds uploaded and generated documents, on that same data volume, so all of your collaboration data stays off the operating system disk
- The setup console completed during the build and locked away from the web, so you land directly on a working sign-in page
- The administrator account, the database password and EGroupware's setup and configuration passwords generated on the first boot of every deployed instance, so two instances launched from the same Amazon Machine Image never share a credential
- Credentials written to
/root/egroupware-credentials.txtwith mode 0600, readable only by the root user
Prerequisites
Before you deploy this image, make sure you have:
- 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 EGroupware. 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. 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 initialization takes a few seconds after the instance state becomes Running and the status checks pass. During that time the per-instance administrator, database, setup and configuration passwords are generated.
Launch the instance from the AWS CLI
Run the following command to launch an instance from the SecureAnyCloud EGroupware 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 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=egroupware}]'Connect to your instance
Connect over SSH with 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 was generated on first boot. Read it as root:
sudo cat /root/egroupware-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, and the setup and configuration credentials. Store this file somewhere safe.
Sign in to EGroupware
Apache serves the web interface on port 80 at the vendor path /egroupware. In a browser, go to the instance address, which redirects to the sign-in page:
http://<instance-public-ip>/You can also go straight to http://<instance-public-ip>/egroupware/login.php. Sign in with the user name admin and the password from the credentials file.
EGroupware derives every link from the address you reach it on. It answers correctly whether you browse by public IP, private IP or a custom domain name, and no build-time address is baked in.
Use the calendar
After you sign in, you land on the calendar, the heart of the suite. Switch between day, week, month and list views, and create appointments with participants, resources and reminders.
Group scheduling shows the free and busy times of the people and resources you invite. Appointments synchronize to external clients over CalDAV.
Manage contacts in the address book
Open the Address Book to keep shared and personal contacts. Each contact holds organization, role, phone, email and address details across the Organisation, Private and Details tabs. Contacts synchronize to phones and desktop clients over CardDAV.
Open the application launcher
Select the grid icon at the top left to open the application launcher. It lists every EGroupware module: calendar, mail, address book, InfoLog tasks and tickets, the file manager, project manager, time sheet, wiki, bookmarks, news and administration.
Open any module to start working in it. Open modules appear as tabs across the top, so you can switch between them.
The Mail module connects to your own external IMAP and SMTP server. Configure it under Admin or in the mail account settings. The appliance does not bundle a mail server. The calendar, address book, InfoLog, file manager and project manager all work without one.
Administer the platform
Open Admin to manage the platform. From here you create user accounts and groups, set application permissions, define global categories, manage sessions and the access log, clear caches, and review PHP information and the changelog. The account list shows each user's login, name, email and primary group.
Create a user account for each colleague, place them in groups, and grant each group access to the applications it needs. Your team then signs in with their own credentials instead of the administrator account.
Confirm EGroupware 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 listen 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. The pre-completed setup console at /egroupware/setup/ is denied over HTTP. Confirm that the lockdown returns a 403:
curl -s -o /dev/null -w 'setup console: %{http_code}\n' http://127.0.0.1/egroupware/setup/Check the data volume
The MariaDB database and EGroupware's file store live on a dedicated EBS volume mounted at /data. The database is bind-mounted onto /var/lib/mysql, and the file store is bind-mounted back into the application tree at /var/www/egroupware/files.
This keeps your collaboration data off the operating system disk and lets you resize or snapshot it independently. Confirm the mount:
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 EGroupware application code under /var/www/egroupware 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 your collaboration data are encrypted in transit.
Point a domain name at the instance and obtain a certificate for that domain. For example, use a managed certificate on an Application Load Balancer in front of the instance, or install a certificate tool on the instance. Then configure Apache to listen on 443 with your certificate, exactly as the bundled site does for port 80.
EGroupware derives its base URL from the request, and its stored web server URL is relative. 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, EGroupware 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.
Back up and maintain the instance
Snapshot the /data EBS volume to capture both the database and EGroupware's file store. You can also take a logical backup of the database over the loopback socket:
sudo mysqldump --protocol=socket egroupware > egroupware-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.
The setup console is deliberately locked away over HTTP. To perform a major version upgrade, re-enable it temporarily with sudo a2disconf sac-egroupware-lockdown && sudo systemctl reload apache2. Restore the lockdown with a2enconf and a reload immediately afterwards.
Support
This image is published and supported by SecureAnyCloud. Support covers deployment, user, group and permission setup, connecting your own mail server, LDAP or Active Directory, CalDAV and CardDAV client synchronization, module configuration, version upgrades, performance tuning, the data volume, TLS and backups.
This image runs EGroupware natively on Apache, PHP and MariaDB rather than in the upstream container topology, so SecureAnyCloud supports this appliance directly. To reach SecureAnyCloud, use the support channel listed on the AWS Marketplace listing.
Deploy on AWS
Launch EGroupware on AWS with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com