Getting Started with Self-Hosted Genealogy
What Is Self-Hosted Genealogy?
Self-hosted genealogy software lets you maintain your family tree on your own server instead of relying on cloud services like Ancestry.com, MyHeritage, or FamilySearch. You get full control over your family’s data, no subscription fees, and the ability to share your tree with relatives on your own terms.
Updated February 2026: Verified with latest Docker images and configurations.
The two main self-hosted options are webtrees (web-based, collaborative) and Gramps Web (web frontend for the desktop Gramps database). Both work with the GEDCOM standard — the universal format for genealogical data.
Prerequisites
- A Linux server (even a Raspberry Pi works for small trees)
- Docker and Docker Compose installed (guide)
- 512 MB of free RAM (minimum)
- 1-5 GB of disk space (depends on photos and documents)
- Your existing family tree data (if migrating from another service)
Understanding GEDCOM
GEDCOM (Genealogical Data Communication) is the standard file format for exchanging family tree data. Every genealogy platform supports importing and exporting GEDCOM files. Key facts:
| Aspect | Details |
|---|---|
| File extension | .ged |
| Format | Plain text |
| Current version | 5.5.1 (most widely used), 7.0 (newest) |
| What it stores | Individuals, families, events, sources, notes |
| What it doesn’t store | Photos, documents (only references to file paths) |
| Size | Typically 100 KB - 10 MB for family trees of 100-10,000 people |
Important: GEDCOM files do NOT include photo files — they only reference file paths. When migrating, you’ll need to export photos separately and re-link them in your self-hosted software.
Choosing Your Platform
| Feature | webtrees | Gramps Web |
|---|---|---|
| Best For | Collaborative family trees shared with relatives | Personal research with powerful desktop tools |
| Architecture | Standalone web application | Web frontend for Gramps desktop database |
| Docker Support | Community images (no official) | Official Docker image |
| User Management | Built-in multi-user with roles | Basic authentication |
| GEDCOM Import | Yes (web interface) | Yes (via Gramps desktop or API) |
| Charts & Reports | Built-in (pedigree, fan, timeline) | Built-in (200+ report types via Gramps) |
| Collaboration | Multiple users edit online | Single researcher, read-only web view |
| Privacy Controls | Per-record privacy settings | Configurable living person filter |
| RAM Usage | ~200 MB | ~300 MB |
| Database | MySQL/MariaDB | SQLite (internal) |
| License | GPL-3.0 | GPL-2.0 |
Recommendation: Choose webtrees if you want relatives to view and contribute to the tree through a web browser. Choose Gramps Web if you do most research in the Gramps desktop application and want a web view for sharing.
Quick Start: webtrees
services:
webtrees:
image: dtjs48jkt/webtrees:2.2.1
container_name: webtrees
ports:
- "8080:80"
environment:
DB_TYPE: mysql
DB_HOST: db
DB_NAME: webtrees
DB_USER: webtrees
DB_PASS: ${DB_PASSWORD}
WT_NAME: "My Family Tree"
WT_ADMIN: admin
WT_ADMINPW: ${ADMIN_PASSWORD}
WT_ADMINEMAIL: [email protected]
volumes:
- webtrees-data:/var/www/html/data
depends_on:
- db
restart: unless-stopped
db:
image: mariadb:11.4
container_name: webtrees-db
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_DATABASE: webtrees
MYSQL_USER: webtrees
MYSQL_PASSWORD: ${DB_PASSWORD}
volumes:
- webtrees-db:/var/lib/mysql
restart: unless-stopped
volumes:
webtrees-data:
webtrees-db:
After docker compose up -d, access webtrees at http://your-server:8080 and log in with your admin credentials.
Quick Start: Gramps Web
services:
gramps-web:
image: ghcr.io/gramps-project/grampsweb:v25.2.1
container_name: gramps-web
ports:
- "5000:5000"
environment:
GRAMPSWEB_TREE: "My Family Tree"
GRAMPSWEB_SECRET_KEY: "${SECRET_KEY}"
volumes:
- gramps-data:/root/.gramps
- gramps-media:/app/media
restart: unless-stopped
volumes:
gramps-data:
gramps-media:
After starting, access Gramps Web at http://your-server:5000. Create your first user through the registration page or import a GEDCOM file.
Migrating from Cloud Services
From Ancestry.com
- Log in to Ancestry.com
- Go to your tree → Tree Settings → Manage Your Tree
- Click Export Tree → download the GEDCOM file
- Note: Photos and documents are NOT included in the export. Download them separately from your Ancestry media gallery
- Import the GEDCOM into webtrees (via Admin → Trees → Import) or Gramps Web
From MyHeritage
- Log in to MyHeritage
- Go to Family Tree → Manage Trees → Export to GEDCOM
- Download the
.gedfile - Export photos separately from the media section
- Import into your self-hosted platform
From FamilySearch
- Log in to FamilySearch.org
- Go to Family Tree → Tree and use the descendancy or pedigree view
- FamilySearch does not offer direct GEDCOM export of the shared tree
- Use a tool like FSFT (FamilySearch Family Tree) to export your portion
- Import the resulting GEDCOM file
Post-Migration Checklist
After importing your GEDCOM:
- Verify the person count matches your source
- Check that dates imported correctly (especially non-standard formats)
- Re-upload photos and link them to the correct individuals
- Review source citations — some formatting may need cleanup
- Set privacy controls for living individuals
- Test the pedigree chart to verify parent-child relationships
Practical Examples
Sharing with Family
Both platforms allow you to share your tree with relatives without giving them edit access:
- webtrees: Create user accounts with “member” or “visitor” roles. Members can see living persons; visitors see only deceased.
- Gramps Web: Share the URL with view-only access. Configure the living person filter to hide sensitive data.
For remote access, set up a reverse proxy with SSL. See Reverse Proxy Setup and Remote Access.
Handling Photos and Documents
Family tree photos can consume significant storage. Plan your storage:
| Collection Size | Estimated Storage |
|---|---|
| 100 photos | 500 MB - 1 GB |
| 1,000 photos | 5-10 GB |
| 10,000+ photos | 50+ GB |
Use named volumes or bind mounts to a dedicated disk. Consider keeping original photos in a separate backup system (like Immich or PhotoPrism) and linking reduced-size copies in your genealogy software.
Common Mistakes
-
Not exporting photos separately from GEDCOM. GEDCOM files only store text data and file path references. You must download media files independently from your cloud service.
-
Ignoring privacy settings. By default, some platforms show all data including living persons. Configure privacy filters before sharing your tree’s URL with anyone.
-
Using a single backup location. Family tree data is irreplaceable. Follow the 3-2-1 backup strategy: 3 copies, 2 media types, 1 offsite.
-
Not verifying GEDCOM import completeness. Always compare person counts and spot-check a few relationships after import.
Next Steps
- Set up your chosen platform: webtrees guide or Gramps Web guide
- Compare the two in detail: webtrees vs Gramps Web
- Learn about the cloud services you’re replacing: Alternatives to Ancestry, Alternatives to MyHeritage, Alternatives to FamilySearch
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments