Deployment guide

uPortal 5

Overview

Apereo uPortal is a free, open-source enterprise portal framework built by and for the higher education community. It aggregates content and self-service applications into a single, personalised dashboard of portlets. It presents content based on group membership and user attributes, integrates with single sign-on, and gives administrators a web console for managing tenants, groups, permissions and the portlet registry.

This SecureAnyCloud image ships the Apache-2.0 licensed uPortal 5.17.9 release, deployed with the official uPortal-start overlay on Apache Tomcat with OpenJDK 11, behind nginx as a reverse proxy. PostgreSQL 17 is the application database, and uPortal's built-in Lucene index provides portal search. Tomcat listens on 127.0.0.1:8080 and PostgreSQL on the loopback interface only, and both are reached through nginx on port 80.

The image is secure by default. uPortal-start seeds a set of well-known demo logins (admin, staff, student, faculty and developer, each with a password equal to the username). The image disables every one of those passwords. On the first boot of every VM, a one-shot service generates a unique administrator password and a unique database password, writes them to /root/uportal-credentials.txt (mode 0600), and only then starts the public web interface. The demo tenant ships intact, so you can sign in to an explorable, portlet-rich portal straight away.

What you get:

  • Apereo uPortal 5.17.9 deployed with the uPortal-start overlay on Apache Tomcat 8.5 with OpenJDK 11
  • An nginx reverse proxy on :80 in front of Tomcat (bound to loopback :8080)
  • PostgreSQL 17 as the application database, bound to loopback only
  • uPortal's built-in Lucene portal search, with no external search service to run
  • A one-shot first-boot service that generates a unique admin password and a unique database password per VM and disables every demo login
  • The uPortal demo tenant: a ready-to-explore dashboard of portlets plus the full administration tools
  • 24/7 SecureAnyCloud support

Recommended VM size: Standard_B2ms (2 vCPU, 8 GiB) or larger. uPortal is a Spring/Tomcat application that runs alongside PostgreSQL, and 8 GiB gives the JVM comfortable headroom under real multi-user load.

Deploy the image

From the Azure Marketplace

  • In the Azure portal, choose Create a resource and search for the SecureAnyCloud uPortal listing.
  • Select the plan, then select Create.
  • Choose a resource group and region, set the VM size to Standard_B2ms or larger, and provide an administrator username (for SSH) and an SSH public key.
  • On the Networking tab, allow inbound SSH (22) and HTTP (80) from the addresses you will manage the portal from.
  • Review and create the VM. When it is running, note its public IP address.

From the Azure CLI

Adjust the resource group, image reference, size, admin username and SSH key path to suit your environment.

# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:uportal-ubuntu-24-04:default:latest
az vm create \
  --resource-group my-uportal-rg \
  --name uportal-vm \
  --image sac1647283583153:uportal-ubuntu-24-04:default:latest \
  --size Standard_B2ms \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_rsa.pub \
  --public-ip-sku Standard
# Open the HTTP port so you can reach the portal
az vm open-port --resource-group my-uportal-rg --name uportal-vm --port 80 --priority 900

On the very first start, the first-boot service takes a minute or two to generate the per-VM secrets and warm up Tomcat. Wait a couple of minutes before you browse to the site.

Confirm the services are running

SSH to the VM as the administrator user you set at deploy time. Confirm that PostgreSQL, uPortal (Tomcat) and nginx are all active:

systemctl is-active postgresql uportal-tomcat nginx

Only nginx is published on the network. Tomcat and PostgreSQL are bound to the loopback interface and are never exposed directly.

sudo ss -tln | grep -E ':80|:8080|:5432'

Retrieve the per-VM administrator login

On the first boot of every VM, uportal-firstboot.service rotates the database password and the uPortal admin password to values unique to that instance. It also disables the shipped demo logins and writes the results to a root-only file. Read the file over SSH:

sudo cat /root/uportal-credentials.txt

The file lists the portal URL, the admin login and its per-VM password, and the database name, user and per-VM database password. Only root can read it.

The shipped default logins no longer work. The well-known admin / admin login is rejected, while the per-VM administrator password authenticates through the real portal login.

First sign-in

Browse to http://<your-vm-public-ip>/. The portal redirects to /uPortal/. Unauthenticated visitors see the public portal, with a set of demo content portlets and a Sign In control at the top right.

Select Sign In and enter admin with the uportal.admin.pass value from /root/uportal-credentials.txt. You land on the administrator dashboard, a grid of portlets and administration tools that you can favourite, search and arrange.

After your first sign-in, change the administrator password from the portal. Create named accounts for your users instead of sharing the administrator login.

Administer the portal

Open uPortal's administration tools from the dashboard. Portlet Administration is the portlet registry, where you register, publish, categorise and manage every portlet in the portal.

Groups Administration manages groups of portlets (by category) and groups of people (by role). These groups control who can see and use each portlet.

From the dashboard you can also reach Permissions, Fragment Administration (shared layout fragments), the Import/Export portlet, Cache Manager and the other tools it lists.

Enable HTTPS (recommended)

For production use, serve the portal over HTTPS. Point a DNS name at the VM's public IP, then use certbot with the nginx plugin to obtain and install a Let's Encrypt certificate:

sudo apt-get update
sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.example.com

certbot edits the nginx site to serve HTTPS and sets up automatic renewal. After you enable TLS, restrict inbound access so that only 443 (and 22 for administration) is reachable from the internet.

Backup and maintenance

The portal state lives in the PostgreSQL uPortal database. Take a logical backup with pg_dump.

sudo -u postgres pg_dump uPortal | gzip > uportal-backup-$(date +%F).sql.gz

Keep the operating system patched with the usual Ubuntu updates.

sudo apt-get update && sudo apt-get upgrade -y

Restart the portal after a configuration change.

sudo systemctl restart uportal-tomcat

Support

SecureAnyCloud maintains this image and provides 24/7 support. For help deploying or operating uPortal on Azure, contact SecureAnyCloud support through the marketplace listing.

Deploy on Azure

Launch uPortal 5 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

Deploy on Azure