Build and Deploy Your Family Tree for Free

Have you ever wished you had your family tree online so you could share it with friends, or just so you could view it from anywhere in the world ... perhaps while on the toilet ... for free?

Cheap bastards that we are (and ladies), we don't want to fork over our hard earned cash if we don't have to, right? In this article, I'll describe (in detail) how to do so quickly and efficiently without having to know how to write code or run a web server. Once you go through the setup I describe, the processes of updating your tree will be a 3-step process - export, build, deploy.

If you already have your own hosting service, and are not looking to change, but came here for details how to build and deploy a database, jump to Build Your Family Tree in HTML. Building and deploying a database follows from there.

Setup Your Free Web Hosting Service

The first thing you will need is a web hosting service that is reliable and completely free. The only one that I am currently aware of, and the one that hosts this website and several others I operate is HelioHost. Follow the link and sign up for an account on their Johnny server.

"Free signups open on the Johnny server at midnight and noon UTC, and usually fill pretty fast. Tommy has just finished being rebuilt, and is blazing fast for all of our donors. If you don't want to wait for free signups to open, you can get an account on Tommy immediately for as little as $1. Morty is also getting closer to being released. If you need help deciding which plan to go with don't hesitate to ask using the Discord chat icon in the bottom right corner. We look forward to having you join the HelioHost community."

If there are no free slots available, you can pay a flat fee of $1.00 (US) to join the Tommy server, which gives you 6 GB storage. Johnny limits you to 1 GB.

Techinal stuff: HelioHost works nearly identical to GoDaddy, Bluehost and other popular hosting services, but unlike other free hosting services like InfinityFree, it includes seamless SSL certificates, which if you've never had to manage these yourself, consider yourself lucky. HelioHost also uses Plesk as a CPanel replacement, which is extremely easy to use. They also have an embedded Discord server that allows you to ask questions of the admins, and they are remarkably responsive and helpful. I have on several occasions needed help in setting up services such as adding a subdomain or domain alias and they did it for me. For the purposes of setting up your family tree though, you shouldn't need this extra help.

Once you've created an account, sign-in and select the big Plesk button located on the Dashboard. This will take you to the Websites & Domains page (the purple icon in the lower right is the Discord server mentioned above in the technical details). If your domain is not already expanded, click the down arrow next to your domain name (e.g. nnnn.heliohost.us), where nnnn is probably your username, however, some users get domain names that look different than this. Your domain name will be needed in your configuration later.

Heliohost Websites & Domains
Heliohost Websites & Domains

Configure Your Free Web Hosting Service

To configure HelioHost, you will need to enable SSL certificates and set your log rotation. On the Websites & Domains page, select SSL/TLS Certificates under Security on the Dashboard tab, and set your configuration options to match those below, then click the back button on your browser to return to the Websites & Domain page.

Heliohost SSL/TLS Certificates
Heliohost SSL/TLS Certificates

Next select the Hosting & DNS tab and click on the Hosting button. Set your SSL/TLS Support settings to match those below, and save it. Click the back button on your browser to return to the Websites & Domain page.

Heliohost Hosting & DNS
Heliohost Hosting & DNS
Heliohost Hosting Settings
Heliohost Hosting Settings

Next, select Logs under Dev Tools and click the Log Rotation button along the top of the page. You must setup log rotation, or the server logs will eventually grow so large that they use up all of your alloted hard disk space, at which point the admins will take your website offline and you'll need to work with them to restore it ... like I did. Once you've set your log rotation, click OK to save it.

Heliohost Log Rotation
Heliohost Log Rotation

Now choose the Files option from the menu on the left. You should see a screen that looks something like this.

Heliohost File Directory
Heliohost File Directory

Build Your Family Tree in HTML

The first step in creating your family tree is to export a file from the genealogy application you use to hold your master data (e.g. Ancestry, RootsMagic, Family Tree Maker, etc.), and save into any folder on your computer. Next you will need to download , the free family tree website generator that I have been developing over the span of 25 years. It is fast, efficient and uses some of the latest web technologies so that your website will behave well in all popular web browsers. There are lots of cool family tree generators out there, but Gigatrees sets itself apart in many ways, not least of which are its many unique web pages such as its compact census tables, DNA tables and charts, origin maps, integrated blog and photo gallery. The list goes on. With Gigatrees you can also build your website as static HTML files so that you can view in on your laptop before deployment, and then again as a SQLite3 database, so that you can host your website online, which will be our next step. Downloading is easy; no registration is necessary. Gigatrees does not collects any personal information on its users.

Once you've downloaded the Gigatrees ZIP file, extract it. It will create a subfolder ( gigatrees5 ) where it will save its files. Gigatrees runs on both Windows and Mac OS. It is a Windows x64 console application, but can run on a Mac in a BootCamp partition. Gigatrees has no install process, so does not modify your system registry, nor does it modify any other files. You can move it to another folder without affecting operation. To uninstall, simply delete the subfolder.

Once extracted, open the user configuration file ( /gigatrees5/user.xml ) with any text editor and set the $GEDCOM$ placeholder to point to your GEDCOM file. You can use an absolute or relative file path ( i.e myfamily.ged, C:\gedcom\myfamily.ged, ..\gedcom\myfamily.ged ). You will also want to set your $SITE_TITLE$.

  <Placeholders>
    <Placeholder> <Name> $GEDCOM$     </Name> <Content> myfamily.ged </Content> </Placeholder>
    <Placeholder> <Name> $SITE_TITLE$ </Name> <Content> My Family    </Content> </Placeholder>
  </Placeholders>

Once you've set these two fields, you can run the user batch file ( /gigatrees5/user.bat ) to build your website in HTML. The website will be built using the a basic configuration. Later you can look through the documentation at the hundreds of options available to you, but for now let's keep this as simple as possible. Your HTML files will be saved into the existing user folder ( /gigatrees5/user ). When the build is complete, you can double-click the user.html file to load your website into your default browser to review it.

If your build does not complete, crashes or some other critical issues occurs preventing your website from being built properly, please leave a comment on the Gigatrees Comments page, or send me a direct message on Bluesky, so that I can work to fix the issue. I cannot always predict how GEDCOM files exported from dozens of different applications will behave with every configuration scenerio, so on occasion a few users run into issues.

Build Your Family Tree Database

The next step is to build your website as a database for deployment on your web server. To do this, you will need to modify additional placeholders in your user configuration file. First you will need to set the $HOST$ to the web server's domain name ( i.e. nnnn.heliohost.us ). You will then need to set the $SUBFOLDER$ placeholder to the subfolder of your domain where you want your family tree to be located ( i.e. myfamily ). By default, this name will also be used for your database.

  <Placeholders>	
    <Placeholder> <Name> $HOST$      </Name> <Content> nnnn.heliohost.us </Content> </Placeholder>
    <Placeholder> <Name> $SUBFOLDER$ </Name> <Content> myfamily          </Content> </Placeholder>
  </Placeholders>

Now that you've set your placeholders for building a database, you can run the user database batch file ( /gigatrees5/user-db.bat ) to build it. Gigatrees will save your database and its support files into the subfolder you specified ( i.e. /gigatrees5/myfamily ). If the folder does not already exist, Gigatrees will ask your permission to create it. Your database is now built and ready to deploy.

Deploying Your Database

The next step is to copy your files to the web server. Select the public_html folder in the Home Directory of your server's file system, and drag and drop the entire output folder ( i.e. /gigatrees5/myfamily ) to it.

Once that is done, the folder structure on your server should look like the following:

/home/nnnn.heliohost.us
    /public_html
        /myfamily
            .htaccess
            includes.php
            myfamily.sqlite
            pdodriver.php
            router.php
            /plugins

Cleanup

That's it, you are done. You can access your family tree online via your domain ( https://nnnn.heliohost.us/myfamily ).

If you have or will be obtaining a personal domain name, such as myfamily.com, you will need to update your Domain Name Service to have it point to HelioHost's name servers, ns1.heliohost.org and ns2.heliohost.org, and you will need to setup a domain alias. Heliohost does not yet expose this option to its users, so you will need to use the Discord chat (purple button, lower right) to request the admins do this for you. If you do not have your own personal domain name and would like to obtain one, I can recommend Namecheap. I use them for all my DNS services and they are indeed cheap, costing my about $13/year per domain name. You can also transfer existing domains to their service. New users are often offered steep discounts.

Once you have a domain name, you will need to edit your user configuration file to update the $DOMAIN$ placeholder, rebuild and deploy.

  <Placeholders>	
    <Placeholder> <Name> $DOMAIN$ </Name> <Content> https://myfamily.com </Content> </Placeholder>
  </Placeholders>

Okay, now you're done.

As a bonus, you can modify your <Database> configuration to compress your database if needed to save space on your web server. You can also setup a visitor log and 'password' protect your entire website by adding user authentication for any number of users. In this way, only those persons you designate will be able to view it.

  <Database>
    <CopySupportFiles>     true                                         </CopySupportFiles>    
    <ZlibCompression>      true                                         </ZlibCompression>    
    <VisitorLogPath>       $SERVER/_logs/$DATABASE$.log </VisitorLogPath>   
    <SigninRequired>       true                                         </SigninRequired>    
    <User><Username> guest           </Username> <AccessCode> apple   </AccessCode></User>     
    <User><Username> guest1          </Username> <AccessCode> banana  </AccessCode></User>     
    <User><Username> guest@email.com </Username> <AccessCode> cookie  </AccessCode></User>  
  </Database>

If you are not going to 'password' protect your website, be sure to modify your <Security> settings to privatize your website so that any GEDCOM fields marked as private, such as copyrighted information are hidden. While you're there, you will also want to hide living persons, which will remove all their data except family relationships, and then obfuscate their names.

Updating Your Family Tree

Updating your website is now a 3-step process:

  1. export a new GEDCOM file
  2. rebuild your database
  3. drag-and-drop your database onto your web server.

    A note on the support files: Gigatrees requires several support files for deployment. Virtually every website on the Internet does something similar, so it's worthwhile to provide a brief explanation on what they are used for and how they work. The first support file is the HTACCESS file ( /includes/.htaccess ). This file is always the first file loaded when you access a URL on the Internet. The purpose of this file is to route your request to the appropriate handler; in this case the ROUTER ( /includes/router.php ). I've added additional code to HTACCESS to prevent visitors from accessing and downloading certain types of files, such as your database, configuration files and directory-level error logs, or from reading your server's directories directly. It also forces the use of https and removes www. from the start of URLs. The INCLUDES file ( includes.php ) is generated by Gigatrees and its sole purpose is to store the location of your database file for use by the ROUTER. The PDODRIVER file ( /includes/pdodriver.php ) includes the functions needed by the ROUTER to read data from your database file. It also includes some utility functions, such as writing to your visitor log. Finally the ROUTER does the remainder of the housekeeping. Its primary role is to parse the requested URL in order to find the page being requested, read the page from your database, assemble it and then present it to the requesting browser. Some of its secondary roles are to handle user authentication, decompress pages, log visitors, display alerts and replace any placeholders still remaining. It should not be necessary to modify any of these files.

    If this tutorial was helpful (or not), please leave a message in the comments section below.

Comments