Deployment guide

Genealogy

Overview

Genealogy is a free, open source web application for building and managing a family tree. You record people with their names, genders, dates and places of birth and death, photos and documents. You link parents, partners and children, then explore the family through ancestor and descendant charts, timelines and printable datasheets.

Data is organized into multi-user teams, so a family, a group of researchers or a local-history archive can collaborate on shared trees. GEDCOM import and export move data in and out.

The SecureAnyCloud image delivers Genealogy fully installed and configured on Ubuntu 24.04. It is a Laravel 13 application (Jetstream teams, Livewire, TallStackUI) on PHP 8.4 with OPcache, served by nginx over HTTPS and backed by MariaDB. Database migrations are already applied and sample family trees are pre-loaded, so you land on a working install and can start exploring straight away. Backed by 24/7 SecureAnyCloud support.

What you get:

  • Genealogy 6.1.0 (MIT licensed), served from /var/www/genealogy/public
  • nginx (HTTPS on :443 with a per-VM self-signed certificate; :80 redirects to :443), PHP 8.4 (php8.4-fpm with OPcache) and MariaDB, from Ubuntu 24.04 with PHP from the ondrej/php PPA
  • Front-end assets compiled at build time with Vite, so no Node or composer toolchain ships in the image
  • A per-VM administrator password, MariaDB password and Laravel APP_KEY, all generated at first boot and written to a root-only file. No default login ships in the image
  • Pre-loaded sample family trees (the British Royals and the Kennedy family) so the interface is populated on first sign-in
  • nginx.service, php8.4-fpm.service and mariadb.service as enabled and active systemd units
  • A plain-HTTP liveness endpoint at http://<vm>/up returning ok
  • 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 good starting point. Scale up for very large trees or many concurrent editors.

In the network security group (NSG), allow inbound 22/tcp from your management network. Allow 443/tcp from your users, plus 80/tcp for the HTTP to HTTPS redirect.

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Genealogy by SecureAnyCloud, and select Create.

On the Basics tab, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22), HTTP (80) and HTTPS (443).

Select Review + create, then Create.

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:genealogy-ubuntu-24-04:default:latest
az vm create \
  --resource-group <your-rg> \
  --name genealogy \
  --image sac1647283583153:genealogy-ubuntu-24-04:default:latest \
  --size Standard_B2s \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_ed25519.pub \
  --vnet-name <your-vnet> --subnet <your-subnet> \
  --public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name genealogy --port 443 --priority 1010
az vm open-port --resource-group <your-rg> --name genealogy --port 80 --priority 1011

Step 3 - Connect to your VM

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the services are running

The three services that back Genealogy should all report active. A plain-HTTP liveness endpoint answers on /up and never touches the app or the database. The site itself is served over HTTPS:

systemctl is-active nginx php8.4-fpm mariadb curl -s http://127.0.0.1/up curl -ks -o /dev/null -w 'https / -> HTTP %{http_code}\n' https://127.0.0.1/

Expect three lines of active, then ok, then HTTP 200.

Step 5 - Retrieve your administrator credentials

On the first boot of every VM, a one-shot service (genealogy-firstboot.service) generates credentials that are unique to that VM: a fresh Laravel application key, a fresh MariaDB password, and a fresh administrator password. It sets the VM's own address as the application URL and generates a per-VM self-signed TLS certificate.

No shared or default credentials ship in the image. Every seeded account's password is scrambled at build time, and the administrator's password is set only on first boot.

sudo cat /root/genealogy-credentials.txt

The file (mode 0600, root-only) contains the administrator email (genealogy.admin.user, which is administrator@genealogy.test), the administrator password (genealogy.admin.pass), the site URL and the database credentials. Genealogy signs in by email.

Step 6 - Sign in

Browse to https://<vm-public-ip>/ and sign in with the administrator email and password from the credentials file.

The VM ships a per-VM self-signed certificate, so your browser shows a one-time security warning the first time. Accept it to continue. Step 9 shows how to install a trusted domain certificate.

After you sign in, you land on the people list of the administrator's current team, already populated with the pre-loaded British Royals sample family.

You can also check the login round trip from the VM's own shell. The command below reads the per-VM credentials, fetches a CSRF token and posts a real sign-in over HTTPS. A successful Genealogy login answers HTTP 302:

ADMIN_USER=$(sudo grep '^genealogy.admin.user=' /root/genealogy-credentials.txt | cut -d= -f2-)
ADMIN_PASS=$(sudo grep '^genealogy.admin.pass=' /root/genealogy-credentials.txt | cut -d= -f2-)
CJ=$(mktemp)
TOK=$(curl -ks -c "$CJ" https://127.0.0.1/login | grep -oE 'name="_token" value="[^"]+"' | head -1 | sed 's/.*value="//;s/"//')
curl -ks -o /dev/null -w 'login HTTP %{http_code}\n' -b "$CJ" -c "$CJ" \
  -d "_token=$TOK" --data-urlencode "email=$ADMIN_USER" --data-urlencode "password=$ADMIN_PASS" \
  https://127.0.0.1/login rm -f "$CJ"

Step 7 - Explore and build your family tree

The Search page lists everyone in the currently selected team. Use the team switcher in the top right to move between teams. The image ships with the British Royals and Kennedy samples.

Select a person to open their datasheet. It shows names, biological sex and gender identity, dates and places of birth and death, and immediate family. Quick links let you add a father, mother, partner or child, and edit contact details, photos and files.

Choose Family chart (or Ancestors / Descendants) on any person to see the tree laid out across generations. This is the heart of Genealogy: grandparents, parents, the person, their partners, children and grandchildren, all navigable in one view.

To start your own tree, use the team switcher to create a new team. Then select Add person and link relationships as you go. GEDCOM import and export are available from the team menu, so you can bring in data from other genealogy software or take your data with you.

Step 8 - Confirm the application stack

Laravel's about command summarizes the running application: version, PHP, environment and the configured drivers.

sudo -u www-data php /var/www/genealogy/artisan about

The output shows Genealogy on Laravel 13 / PHP 8.4, environment production, debug OFF, the mysql database driver and the file cache driver.

Step 9 - Install a trusted HTTPS certificate (recommended for production)

The image ships a per-VM self-signed certificate, so the site is encrypted from first boot. For production, point a DNS name at the VM and replace the certificate with a free 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 installs the certificate into the nginx site and sets up automatic renewal. Afterwards, update APP_URL in /var/www/genealogy/.env to your https://your-domain.example.com address.

Administration from the CLI

Run admin tasks with Laravel's artisan as the www-data user. For example, list the available commands or clear caches:

sudo -u www-data php /var/www/genealogy/artisan list

The MariaDB database is named genealogy, and its per-VM password is in /root/genealogy-credentials.txt.

The Laravel scheduler runs every minute from /etc/cron.d/genealogy-scheduler. It drives backups (spatie/laravel-backup) and activity-log maintenance.

Maintenance

  • OS updates: unattended-upgrades is enabled, so security patches apply automatically. To apply the full set of updates, run sudo apt-get update && sudo apt-get -y dist-upgrade.
  • Upgrading Genealogy: back up the database and /var/www/genealogy, then follow the project's update notes.
  • Backups: back up the genealogy MariaDB database and the /var/www/genealogy/storage tree (uploaded photos and files).

Support

Every SecureAnyCloud deployment includes 24/7 support. SecureAnyCloud is not affiliated with, endorsed by, or sponsored by the Genealogy project or its author; all product names are the property of their respective owners.

Deploy on Azure

Launch Genealogy 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