Applications Azure

Meeds on Ubuntu 24.04 on Azure User Guide

| Product: Meeds on Ubuntu 24.04 LTS on Azure

Overview

Meeds is an open source employee engagement platform. People collaborate inside spaces, which are dedicated areas for a team, a project or a topic, sharing posts, files, notes and tasks. A personal profile collects a person's activity, connections and contributions, and a built in quest and kudos system lets colleagues recognise each other's work, complete guided onboarding steps, and earn points for genuine participation.

This image wires the whole stack together and generates every credential fresh on the VM you launch.

What is included:

  • Meeds 7.2.0, the official Tomcat standalone distribution
  • OpenJDK 21
  • PostgreSQL 16 as the application database
  • Elasticsearch 8.14.3 for full text search across posts, spaces and profiles
  • nginx on port 80 as the only public surface
  • Ubuntu 24.04 LTS base, fully patched at build time
  • 24/7 cloudimg support, 24h response SLA

Scope, stated plainly. This image ships no demonstration content and no pre created spaces. It boots to the product's own first run Account Setup, from which the administrator and their password are created on your VM, not baked into the image.

Prerequisites

  1. An active Azure subscription.
  2. An SSH key pair.
  3. A VNet and subnet to deploy into.
  4. A network security group you can edit, to restrict who reaches ports 22 and 80.

Recommended VM size: Standard_B2ms (2 vCPU / 8 GB). Meeds is a Java platform plus PostgreSQL plus Elasticsearch, and this is where the stack has real headroom rather than merely running. The image sizes both the application heap and the Elasticsearch heap automatically from the memory it finds at first boot, so a smaller size does work for evaluation: a Standard_B2s (2 vCPU / 4 GB) runs the full stack end to end, though with a genuinely tight memory margin under load. Treat B2ms as headroom for real teams and concurrent users, not as a hard floor.

Step 1: Deploy from the Azure Portal

Search the Marketplace for Meeds, choose the plan and deploy it into your VNet. In the network security group, allow TCP 22 (SSH) and TCP 80 (the workspace) from your own networks only. In production, put a TLS terminating reverse proxy or an Azure Application Gateway in front of port 80.

Step 2: Deploy from the Azure CLI

RG="meeds-prod"; LOCATION="eastus"; VM_NAME="meeds-01"
GALLERY_IMAGE_ID="/subscriptions/<sub-id>/resourceGroups/azure-cloudimg/providers/Microsoft.Compute/galleries/cloudimgGallery/images/meeds/versions/<version>"
SSH_KEY="$(cat ~/.ssh/id_rsa.pub)"
az group create --name "$RG" --location "$LOCATION"
az network vnet create -g "$RG" --name meeds-vnet --address-prefix 10.106.0.0/16 --subnet-name meeds-subnet --subnet-prefix 10.106.1.0/24
az network nsg create -g "$RG" --name meeds-nsg
az network nsg rule create -g "$RG" --nsg-name meeds-nsg --name allow-ssh --priority 100 \
  --source-address-prefixes "<your-mgmt-cidr>" --destination-port-ranges 22 --access Allow --protocol Tcp
az network nsg rule create -g "$RG" --nsg-name meeds-nsg --name allow-web --priority 110 \
  --source-address-prefixes "<your-mgmt-cidr>" --destination-port-ranges 80 --access Allow --protocol Tcp
az vm create -g "$RG" --name "$VM_NAME" --image "$GALLERY_IMAGE_ID" \
  --size Standard_B2ms --storage-sku StandardSSD_LRS \
  --admin-username azureuser --ssh-key-values "$SSH_KEY" \
  --vnet-name meeds-vnet --subnet meeds-subnet --nsg meeds-nsg --public-ip-sku Standard

Step 3: Connect via SSH

ssh azureuser@<vm-ip>

The first boot detects the VM's memory, sizes the application and search heaps accordingly, creates the PostgreSQL role and database, starts the platform, and completes Account Setup with a password generated for this VM alone. On a Standard_B2ms the stack is ready within a few minutes of the VM reporting running.

Step 4: Verify the Services

for u in postgresql elasticsearch meeds nginx; do printf '%-14s : %s\n' "$u" "$(systemctl is-active $u)"; done
sudo test -f /var/lib/cloudimg/meeds-firstboot.done && echo "first boot     : complete"
sudo ss -tln | grep -E ':8080|:9200|:5432|:80 '

systemctl showing postgresql, elasticsearch, meeds and nginx all active, the firstboot sentinel present, and the application, search index and database bound to loopback while only nginx listens publicly

Only nginx is bound to a public address. The platform (8080), Elasticsearch (9200) and PostgreSQL (5432) all listen on loopback, so nginx is the only way in from outside the VM.

Step 5: Retrieve the Administrator Password

sudo cat /root/meeds-credentials.txt
sudo stat -c '%a %U:%G' /root/meeds-credentials.txt

the per VM credentials file at /root/meeds-credentials.txt with every password masked, mode 600 root root, and confirmation that a fresh login with the generated root password succeeds

The file is mode 0600 and readable only by root. It contains the workspace URL, the built in super user root and a password unique to this VM, a companion personal account admin, and the PostgreSQL application password.

Meeds ships no baked in demonstration login at all. Rather than creating a known account and rotating its password, this image drives the product's own first run Account Setup on your VM, submitting a password generated fresh for that boot. The historic community demonstration credential (root / gtn) is therefore never live, not even for a moment. You can confirm it is refused:

/usr/local/sbin/meeds-roundtrip.sh

nginx as the only public listener returning HTTP 200 for the login page, and the historic community demo password gtn being rejected while the freshly generated password succeeds

Step 6: Sign In to the Workspace

Browse to http://<vm-ip>/ and sign in as root with the password from /root/meeds-credentials.txt.

the Meeds sign in page, branded World of Meeds, with username and password fields and a Sign In button

The dashboard is the workspace home: a place to post an update, see suggested onboarding quests, and pick up tasks.

the My Workspace dashboard after signing in, showing the Welcome onboard panel with Add a post, Congratulate others and Join spaces, plus a Tasks widget and a Suggested Quests panel listing Add a profile picture, Receive Kudos and Send Kudos each with a point value

The Suggested Quests panel is the recognition system in action: completing genuine actions such as adding a profile picture, sending or receiving Kudos, or starting a space earns real points, shown next to each quest.

Step 7: Browse Spaces

Spaces, in the left navigation, lists every collaboration space you can see. On a freshly launched VM this is genuinely empty, with a prompt to create the first one:

the Spaces directory showing zero spaces listed, an Add button, and a No results found panel prompting the user to create a space

Selecting Add opens the space creation panel, where a name, description and visibility (open, private or hidden) define a new collaboration area for a team or a project.

Step 8: View a Profile

Every account has a profile page collecting its identity, its activity and its connections:

the profile page for Root Root showing the cover photo, avatar, an About yourself panel, a Your contact informations panel with full name and email, and a Your activity panel showing zero spaces and zero connections on a freshly launched VM

The Your activity panel is a live count, not static text: joining a space or making a connection changes the numbers shown here.

Step 9: Server Components

java -version
head -2 /opt/meeds/LICENSE.txt
sudo -u postgres psql -tAc 'select version()'

the OpenJDK 21 version, the first two lines of the LGPL 3.0 licence text shipped inside the product's own archive, and the PostgreSQL server version

Component Path
Meeds home /opt/meeds
Configuration /opt/meeds/conf/server.xml, /opt/meeds/gatein/conf/exo.properties
Application data /opt/meeds/gatein/data
Elasticsearch data /var/lib/elasticsearch
nginx site /etc/nginx/sites-available/meeds
Credentials /root/meeds-credentials.txt (mode 0600)
Firstboot sentinel /var/lib/cloudimg/meeds-firstboot.done
Port Bound to Purpose
80 all interfaces nginx, the only public surface
8080 127.0.0.1 Tomcat: the Meeds platform
9200 127.0.0.1 Elasticsearch
5432 127.0.0.1 PostgreSQL

Step 10: Managing the Service

sudo systemctl restart elasticsearch.service
sudo systemctl restart meeds.service
sudo journalctl -u meeds.service --no-pager -n 50

Restart Elasticsearch before Meeds if you restart both: the platform expects the search index to already be reachable during its own startup checks. A fresh restart takes a couple of minutes to become fully ready, in line with the first boot timing in Step 3 — the command below waits for it rather than checking once:

for i in $(seq 1 30); do
  CODE=$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1/portal/login)
  [ "$CODE" = "200" ] && { echo "login page: HTTP $CODE"; break; }
  sleep 5
done

Step 11: Security Recommendations

  • Change the administrator password from the account menu once signed in, and store the new value in your own secret manager.
  • Restrict the network security group so that ports 22 and 80 only accept traffic from networks you control.
  • Terminate TLS in front of nginx. The image serves plain HTTP on port 80 so that it makes no assumptions about your certificate authority. Put an Application Gateway, a load balancer or a TLS reverse proxy in front of it before real company data goes in.
  • Create named accounts for every person who signs in, rather than sharing the root login.
  • Back up PostgreSQL and the application data directory together. The database and /opt/meeds/gatein/data are a matched pair: a backup of one without the other does not restore cleanly.
  • Keep the OS patched with sudo apt-get update && sudo apt-get upgrade, and reboot for kernel updates.

Step 12: Support and Licensing

Meeds is published under the LGPL-3.0 licence, read verbatim from the licence file inside the official distribution. cloudimg provides commercial support for the image itself, separately from the upstream project.

  • Email: support@cloudimg.co.uk
  • Website: www.cloudimg.co.uk
  • Support hours: 24/7, 24h response SLA

Deploy on Azure

Launch Meeds on Ubuntu 24.04 with 24/7 support from cloudimg.

View on Marketplace

Need Help?

Our support team is available 24/7. support@cloudimg.co.uk