Deploying GeneWeb
Introduction
GeneWeb is a free genealogy software with a web interface that allows you to create, manage, and share family trees online. Created by Daniel de Rauglaudre and written in OCaml, GeneWeb has been actively developed since 1997 and is one of the most mature open-source genealogy platforms available.
GeneWeb provides powerful features for genealogical research including relationship calculations, ancestor and descendant trees, birthday calendars, and advanced search capabilities. The software supports GEDCOM import and export, making it compatible with other genealogy software and services.
Key highlights of GeneWeb:
- Web-Based Interface: Access and edit your family tree from any web browser
- GEDCOM Support: Import from and export to the standard genealogy file format
- Relationship Calculation: Automatically compute relationships between individuals
- Tree Visualization: View ancestor and descendant trees in various formats
- Multi-User Access: Share your genealogy with family members
- Birthday Calendar: Track family birthdays and anniversaries
- Advanced Search: Find individuals by name, date, place, or other criteria
- Notes and Sources: Document sources and add notes to individuals
- Multiple Databases: Manage multiple family trees on one installation
- Multi-Language: Interface available in numerous languages
- Open Source: Licensed under GPL
This guide walks through deploying GeneWeb on Klutch.sh using Docker, configuring persistent storage for your genealogy databases, and setting up the application for family collaboration.
Why Deploy GeneWeb on Klutch.sh
Deploying GeneWeb on Klutch.sh provides several advantages for genealogy enthusiasts:
Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds GeneWeb without complex orchestration. Push to GitHub, and your genealogy site deploys automatically.
Persistent Storage: Attach persistent volumes for your genealogy databases. Your family history survives container restarts and redeployments.
HTTPS by Default: Klutch.sh provides automatic SSL certificates, ensuring secure access to your family data from anywhere.
GitHub Integration: Connect your configuration repository directly from GitHub. Updates trigger automatic redeployments.
Scalable Resources: Allocate resources based on your database size and expected family access.
Custom Domains: Assign a custom domain for a family-branded genealogy portal.
Always-On Availability: Your family tree remains accessible 24/7 for relatives around the world.
Family Collaboration: Share access with family members for collaborative research.
Prerequisites
Before deploying GeneWeb on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your GeneWeb configuration
- Basic familiarity with Docker and containerization concepts
- (Optional) A GEDCOM file from existing genealogy software
- (Optional) A custom domain for your GeneWeb instance
Understanding GeneWeb Architecture
GeneWeb uses a straightforward architecture:
OCaml Backend: The core application is written in OCaml, providing efficient data handling and calculation of complex genealogical relationships.
Built-in Web Server: GeneWeb includes its own web server, eliminating the need for external web server configuration.
Proprietary Database Format: GeneWeb uses its own optimized database format for fast queries, with GEDCOM serving as the interchange format.
Setup Interface: A separate setup portal allows database management and configuration.
Preparing Your Repository
To deploy GeneWeb on Klutch.sh, create a GitHub repository containing your Dockerfile.
Repository Structure
geneweb-deploy/├── Dockerfile├── README.md└── .dockerignoreCreating the Dockerfile
Create a Dockerfile in the root of your repository:
FROM jeffernz/geneweb:latest
# Set environment variablesENV LANGUAGE=${LANGUAGE:-en}ENV HOST_IP=0.0.0.0
# Create directories for genealogy dataRUN mkdir -p /usr/local/var/geneweb
# Expose ports# Portal portEXPOSE 2317# Setup portEXPOSE 2316
# The base image includes the default entrypointAdvanced Dockerfile
For more control over your deployment:
FROM jeffernz/geneweb:latest
# Set language preferenceENV LANGUAGE=${LANGUAGE:-en}
# Bind to all interfacesENV HOST_IP=0.0.0.0
# Create data directoriesRUN mkdir -p /usr/local/var/geneweb/bases \ /usr/local/var/geneweb/import \ /usr/local/var/geneweb/backup
# Set permissionsRUN chmod -R 755 /usr/local/var/geneweb
# Expose portsEXPOSE 2316 2317Creating the .dockerignore File
Create a .dockerignore file:
.git.github*.mdREADME.mdLICENSE.gitignore*.log.DS_Store.env.env.localEnvironment Variables Reference
| Variable | Required | Default | Description |
|---|---|---|---|
LANGUAGE | No | en | Interface language (en, fr, de, etc.) |
HOST_IP | No | 0.0.0.0 | IP address to bind to |
Deploying GeneWeb on Klutch.sh
Once your repository is prepared, follow these steps to deploy GeneWeb:
- Select HTTP as the traffic type
- Set the internal port to 2317 (GeneWeb’s portal port)
- Detect your Dockerfile automatically
- Build the container image
- Attach the persistent volumes
- Start the GeneWeb container
- Provision an HTTPS certificate
Prepare Your GEDCOM File (Optional)
If you have existing genealogy data, export it as a GEDCOM file from your current software. You’ll import this after deployment.
Push Your Repository to GitHub
Initialize your repository and push to GitHub:
git initgit add Dockerfile .dockerignore README.mdgit commit -m "Initial GeneWeb deployment configuration"git remote add origin https://github.com/yourusername/geneweb-deploy.gitgit push -u origin mainCreate a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project. Give it a descriptive name like “geneweb” or “family-tree”.
Create a New App
Within your project, create a new app. Connect your GitHub account if you haven’t already, then select the repository containing your GeneWeb Dockerfile.
Configure HTTP Traffic
GeneWeb serves its web interface over HTTP. In the deployment settings:
Set Environment Variables
In the environment variables section, add:
| Variable | Value |
|---|---|
LANGUAGE | Your preferred language (e.g., en, fr, de) |
Attach Persistent Volumes
Persistent storage is essential for your genealogy data. Add the following volumes:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/usr/local/var/geneweb | 5 GB | Genealogy databases and configuration |
Deploy Your Application
Click Deploy to start the build process. Klutch.sh will:
Access GeneWeb
Once deployment completes, access your GeneWeb portal at https://your-app-name.klutch.sh. You’ll see the main GeneWeb interface where you can create or access genealogy databases.
Initial Setup and Configuration
Creating a New Database
To create a new genealogy database:
- Access the GeneWeb setup at port 2316 (you may need to configure additional app access)
- Click Create a new database
- Enter a name for your family tree database
- Click Create
Importing GEDCOM Files
To import existing genealogy data:
- Access the setup interface
- Place your GEDCOM file in the import directory
- Use the import command to create a database from the GEDCOM
- Verify the import was successful
Accessing Your Family Tree
Once a database exists:
- Navigate to the main portal
- Select your database from the list
- Browse your family tree
Using GeneWeb
Navigating the Family Tree
GeneWeb provides multiple navigation options:
| Feature | Description |
|---|---|
| Individual Pages | Detailed view of each person |
| Ancestor Tree | View ancestors in tree format |
| Descendant Tree | View descendants in tree format |
| Relationship | Calculate relationship between two people |
| Search | Find individuals by various criteria |
Adding New Individuals
To add people to your tree:
- Navigate to a related person
- Click the appropriate link (add parent, child, spouse)
- Fill in the details
- Save the entry
Recording Events
Document life events:
- Birth: Date, place, notes
- Marriage: Date, place, spouse
- Death: Date, place, cause
- Other Events: Baptism, graduation, etc.
Adding Sources
Document your research:
- Open an individual’s page
- Click to add notes or sources
- Enter source details
- Link sources to specific facts
Relationship Calculator
Find how people are related:
- Navigate to one person
- Click Relationship
- Enter the other person’s name
- View the relationship path
Sharing Your Genealogy
Public Access
Configure public access:
- Decide what information should be public
- Configure privacy settings for living individuals
- Share the URL with family
Privacy Settings
Protect living individuals:
- Hide birth dates of living people
- Restrict detailed information
- Configure access levels
Exporting Data
GEDCOM Export
Export your data for backup or sharing:
- Access the administration interface
- Select the database to export
- Choose GEDCOM format
- Download the file
Backup Strategy
Protect your family history:
- Regular Exports: Export GEDCOM weekly
- Volume Backups: Back up the persistent volume
- Off-site Storage: Keep backups in multiple locations
Production Best Practices
Security Recommendations
- Access Control: Configure appropriate access restrictions
- Privacy: Protect information about living individuals
- HTTPS: Always use HTTPS (provided by Klutch.sh)
- Backups: Regular backups of genealogy data
Performance Tips
- Database Size: GeneWeb handles large databases well
- Images: Optimize photos before uploading
- Cleanup: Periodically clean up unused entries
Troubleshooting Common Issues
Database Not Loading
Solutions:
- Verify database files exist
- Check file permissions
- Review GeneWeb logs
- Ensure volume is mounted
GEDCOM Import Errors
Solutions:
- Validate GEDCOM file format
- Check character encoding (UTF-8 recommended)
- Review import logs for specific errors
- Try importing in smaller batches
Can’t Access Setup Interface
Solutions:
- Verify port configuration
- Check that setup mode is enabled
- Review container logs
Additional Resources
- Official GeneWeb Website
- GeneWeb Wiki
- GeneWeb GitHub Repository
- GeneWeb Docker Hub
- Klutch.sh Persistent Volumes
- Klutch.sh Deployments
Conclusion
Deploying GeneWeb on Klutch.sh gives you a powerful genealogy platform with automatic builds, persistent storage, and secure HTTPS access. The combination of GeneWeb’s mature feature set and Klutch.sh’s deployment simplicity means you can focus on researching and documenting your family history rather than managing infrastructure.
With GEDCOM compatibility, relationship calculations, and web-based access, GeneWeb provides everything you need for serious genealogical research. Whether you’re just starting to document your family tree or managing generations of research, GeneWeb on Klutch.sh provides a reliable, always-available platform for preserving your family history.