xref: /webtrees/README.md (revision e089a239f035f375eebfb541a1f1483d645b9d9f)
1c05183b1SGreg Roach![Latest version)](https://img.shields.io/github/v/release/fisharebest/webtrees?sort=semver)
20098f575SGreg Roach![Licence](https://img.shields.io/github/license/fisharebest/webtrees)
3*e089a239SGreg Roach[![Unit tests](https://github.com/fisharebest/webtrees/actions/workflows/phpunit.yaml/badge.svg)](https://github.com/fisharebest/webtrees/actions/workflows/phpunit.yaml)
443fdb97cSGreg Roach[![Coverage Status](https://coveralls.io/repos/github/fisharebest/webtrees/badge.svg?branch=main)](https://coveralls.io/github/fisharebest/webtrees?branch=main)
5ba2c9f9fSGreg Roach[![Translation status](https://weblate.iet.open.ac.uk/widgets/webtrees/-/svg-badge.svg)](https://weblate.iet.open.ac.uk/projects/webtrees/webtrees/)
6968bcb2bSGreg Roach[![SymfonyInsight](https://insight.symfony.com/projects/78a5ba19-7ddf-4a58-8262-1c8a149f38de/mini.svg)](https://insight.symfony.com/projects/78a5ba19-7ddf-4a58-8262-1c8a149f38de)
743fdb97cSGreg Roach[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/fisharebest/webtrees/badges/quality-score.png?b=main)](https://scrutinizer-ci.com/g/fisharebest/webtrees/?branch=main)
882f63a0eSGreg Roach[![Code Climate](https://codeclimate.com/github/fisharebest/webtrees/badges/gpa.svg)](https://codeclimate.com/github/fisharebest/webtrees)
943fdb97cSGreg Roach[![StyleCI](https://github.styleci.io/repos/11836349/shield?branch=main)](https://github.styleci.io/repos/11836349?branch=main)
106ccdf4f0SGreg Roach# webtrees - online collaborative genealogy
11fac25c68SRico Sonntag
12fac25c68SRico Sonntag## Contents
13fac25c68SRico Sonntag
14fac25c68SRico Sonntag* [License](#license)
156ccdf4f0SGreg Roach* [Coding styles and standards](#coding-styles-and-standards)
16fac25c68SRico Sonntag* [Introduction](#introduction)
1726a22ad2SJustCarmen* [System requirements](#system-requirements)
18bd82e704SDavid Drury* [Internet browser compatibility](#internet-browser-compatibility)
19fac25c68SRico Sonntag* [Installation](#installation)
20fac25c68SRico Sonntag* [Upgrading](#upgrading)
21bd82e704SDavid Drury* [Building and developing](#building-and-developing)
2226a22ad2SJustCarmen* [Gedcom (family tree) files](#gedcom-family-tree-files)
23fac25c68SRico Sonntag* [Security](#security)
24fac25c68SRico Sonntag* [Backup](#backup)
25fac25c68SRico Sonntag
26b4ef7f82SRico Sonntag
276ccdf4f0SGreg Roach## License
28fac25c68SRico Sonntag
29a25f0a04SGreg Roach* **webtrees: online genealogy**
30d60df704Smrqd9* Copyright 2021 webtrees development team
31fac25c68SRico Sonntag
32a25f0a04SGreg RoachThis program is free software: you can redistribute it and/or modify
33a25f0a04SGreg Roachit under the terms of the GNU General Public License as published by
34a25f0a04SGreg Roachthe Free Software Foundation, either version 3 of the License, or
35a25f0a04SGreg Roach(at your option) any later version.
36fac25c68SRico Sonntag
37a25f0a04SGreg RoachThis program is distributed in the hope that it will be useful,
38a25f0a04SGreg Roachbut WITHOUT ANY WARRANTY; without even the implied warranty of
39a25f0a04SGreg RoachMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
40a25f0a04SGreg RoachGNU General Public License for more details.
41fac25c68SRico Sonntag
42a25f0a04SGreg RoachYou should have received a copy of the GNU General Public License
43ad3143ccSGreg Roachalong with this program. If not, see <https://www.gnu.org/licenses/>.
44fac25c68SRico Sonntag
456ccdf4f0SGreg Roach## Coding styles and standards
46fac25c68SRico Sonntag
476ccdf4f0SGreg Roachwebtrees follows the [PHP Standards Recommendations](https://www.php-fig.org/psr).
486ccdf4f0SGreg Roach
496ccdf4f0SGreg Roach* [PSR-1](https://www.php-fig.org/psr/psr-1) - Basic Coding Standard
506ccdf4f0SGreg Roach* [PSR-2](https://www.php-fig.org/psr/psr-2) - Coding Style Guide
516ccdf4f0SGreg Roach* [PSR-4](https://www.php-fig.org/psr/psr-4) - Autoloading Stardard
52c692965aSGreg Roach* [PSR-6](https://www.php-fig.org/psr/psr-6) - Cache
536ccdf4f0SGreg Roach* [PSR-7](https://www.php-fig.org/psr/psr-7) - HTTP Message Interface
546ccdf4f0SGreg Roach* [PSR-11](https://www.php-fig.org/psr/psr-11) - Container Interface
55cb55cd99SGreg Roach* [PSR-12](https://www.php-fig.org/psr/psr-12) - Extended Coding Style Guide
566ccdf4f0SGreg Roach* [PSR-15](https://www.php-fig.org/psr/psr-15) - HTTP Handlers
576ccdf4f0SGreg Roach* [PSR-17](https://www.php-fig.org/psr/psr-17) - HTTP Factories
586ccdf4f0SGreg Roach
59cb55cd99SGreg RoachWe do not currently use [PSR-3 (logging)](https://www.php-fig.org/psr/psr-3) - but we plan to do so in the future.
606ccdf4f0SGreg Roach
613fd17b7aSGreg RoachFor JavaScript, we use [semistandard](https://github.com/standard/semistandard).
623fd17b7aSGreg Roach
636ccdf4f0SGreg Roach## Introduction
64fac25c68SRico Sonntag
65fac25c68SRico Sonntag**webtrees** is the web's leading online collaborative genealogy application.
66fac25c68SRico Sonntag
67fac25c68SRico Sonntag* It works from standard GEDCOM files, and is therefore compatible with every
68fac25c68SRico Sonntagmajor desktop application.
69fac25c68SRico Sonntag* It aims to to be efficient and effective by using the right combination of
70fac25c68SRico Sonntagthird-party tools, design techniques and open standards.
71fac25c68SRico Sonntag
72fac25c68SRico Sonntag**webtrees** allows you to view and edit your genealogy on your website. It has
73e667f3d4SGreg Roachfull editing capabilities, full privacy functions, and supports imedia such as
74fac25c68SRico Sonntagphotos and document images. As an online program, it fosters extended family
75fac25c68SRico Sonntagparticipation and good ancestral recording habits, as it simplifies the process
76fac25c68SRico Sonntagof collaborating with others working on your family lines. Your latest information
77fac25c68SRico Sonntagis always on your web site and available for others to see, defined by viewing
78fac25c68SRico Sonntagrules you set. For more information and to see working demos, visit
79cdc90107SGreg Roach[webtrees.net](https://webtrees.net/).
80fac25c68SRico Sonntag
81fac25c68SRico Sonntag**webtrees** is Open Source software that has been produced by people from many
82fac25c68SRico Sonntagcountries freely donating their time and talents to the project. All service,
83fac25c68SRico Sonntagsupport, and future development is dependent on the time developers are willing
84fac25c68SRico Sonntagto donate to the project, often at the expense of work, recreation, and family.
85fac25c68SRico SonntagBeyond the few donations received from users, developers receive no compensation
86fac25c68SRico Sonntagfor the time they spend working on the project. There is also no outside source
87fac25c68SRico Sonntagof revenue to support the project. Please consider these circumstances when
88fac25c68SRico Sonntagmaking support requests and consider volunteering your own time and skills to make
89fac25c68SRico Sonntagthe project even stronger and better.
90fac25c68SRico Sonntag
91fac25c68SRico Sonntag
926ccdf4f0SGreg Roach## System requirements
93fac25c68SRico Sonntag
94fac25c68SRico SonntagTo install **webtrees**, you need:
95fac25c68SRico Sonntag
9656379645SGreg Roach* A webserver. Apache, NGINX and IIS are the most common types. To use “Pretty URLs”, you will need to configure URL rewriting"
9756379645SGreg Roach* A database.  MySQL is recommended, although PostgreSQL, SQL-Server and SQLite can be used.  Some features rely on MySQL for collation.  Other database might not sort names according to local rules.  **webtrees** uses a prefix for its table names, so you can install several instances of webtrees in the same database.
9856379645SGreg Roach* Approximately 100MB of disk space for the application files, plus whatever is
99e667f3d4SGreg Roach  needed for your media files, GEDCOM files and database.
10056379645SGreg Roach* PHP 7.1 - 7.4.  Servers with PHP 5.3 - 7.0 can use **webtrees** 1.7.
101fac25c68SRico Sonntag   * PHP should be configured to allow sufficient server resources (memory and
102fac25c68SRico Sonntag     execution time) for the size of your system. Typical requirements are:
103e667f3d4SGreg Roach      * Small systems (500 individuals): 16–32 MB, 10–20 seconds
104e667f3d4SGreg Roach      * Medium systems (5,000 individuals): 32–64 MB, 20–40 seconds
105e667f3d4SGreg Roach      * Large systems (50,000 individuals): 64–128 MB, 40–80 seconds
1063606202eSDavid Drury
10756379645SGreg Roach## Browser compatibility
1083606202eSDavid Drury
10956379645SGreg Roach  **webtrees** is tested on recent versions of popular browsers such as Edge, Firefox,
11056379645SGreg Roach  Chrome, and Safari.  Support for other browsers and older versions is on a case-by-case basis.
111fac25c68SRico Sonntag
1126ccdf4f0SGreg Roach## Installation
113fac25c68SRico Sonntag
11456379645SGreg Roach1. Download the .ZIP file for latest stable version from [github.com](https://github.com/fisharebest/webtrees/releases/latest)
11556379645SGreg Roach2. Unzip the files and then upload them to an empty folder on your web server.
116fac25c68SRico Sonntag3. Open your web browser and type the URL for your **webtrees** site (for example,
117ad3143ccSGreg Roach   ``https://www.yourserver.com/webtrees`` into the address bar.
11856379645SGreg Roach4. The **webtrees** setup wizard will start automatically.
119fac25c68SRico Sonntag
12056379645SGreg RoachYour first task will be to create a family tree.
121fac25c68SRico Sonntag
12256379645SGreg RoachIf you have a GEDCOM file, you can import it into the tree.  If not, just start
12356379645SGreg Roachentering your family tree.
124fac25c68SRico Sonntag
12556379645SGreg RoachThere are lots of configuration options. You'll probably want to review the
126fac25c68SRico Sonntagprivacy settings first. Don't worry too much about all the other options - the
12756379645SGreg Roachdefaults are good for most people. If you get stuck, you can get friendly help
12856379645SGreg Roachand advice from the [help](https://webtrees.net/forums) forum.
129fac25c68SRico Sonntag
130fac25c68SRico Sonntag
1316ccdf4f0SGreg Roach## Upgrading
132b4ef7f82SRico Sonntag
133fac25c68SRico SonntagUpgrading **webtrees** is quick and easy. It is strongly recommended that you
134fac25c68SRico Sonntagupgrade your installation whenever a new version is made available. Even minor
135fac25c68SRico Sonntag**webtrees** version updates usually contain a significant number of bug fixes
1363606202eSDavid Druryas well as interface improvements and program enhancements.
137fac25c68SRico Sonntag
138f0195b90SDavid Drury* **Automatic upgrade**
139f0195b90SDavid Drury
1403606202eSDavid Drury  **webtrees** has an automatic upgrade facility. An administrator upon logging in
1413606202eSDavid Drurywill receive notification when a new version is available and an option to start
1423606202eSDavid Drurythe automatic upgrade. If for some reason the automatic upgrade should fail
1433606202eSDavid Drurythen a manual upgrade should be performed.
1443606202eSDavid Drury
145f0195b90SDavid Drury* **Manual upgrade**
146f0195b90SDavid Drury
147fac25c68SRico Sonntag  1. Now would be a good time to make a [backup](#backup).
148fac25c68SRico Sonntag  2. Download the latest version of **webtrees** available from
149cdc90107SGreg Roach   [webtrees.net](https://webtrees.net/)
150243bf6b4SGreg Roach  3. While you are in the middle of uploading the new files,
151fac25c68SRico Sonntag   a visitor to your site would encounter a mixture of new and old files.  This
152b3a775f6SGreg Roach   could cause unpredictable behavior or errors.  To prevent this, create the
153fac25c68SRico Sonntag   file **data/offline.txt**.  While this file exists, visitors will see a
154243bf6b4SGreg Roach   “site unavailable - come back later” message.
155fac25c68SRico Sonntag  4. Unzip the .ZIP file, and upload the files to your web server, overwriting the existing files.
156fac25c68SRico Sonntag  5. Delete the file **data/offline.txt**
157fac25c68SRico Sonntag
1583606202eSDavid Drury
1596ccdf4f0SGreg Roach### Note for Macintosh users
160b4ef7f82SRico Sonntag
161fac25c68SRico SonntagStep 4 assumes you are using a copy tool that **merges** directories rather than
162b3a775f6SGreg Roachreplaces them. (**Merge** is standard behavior on Windows and Linux.) If you use
163fac25c68SRico Sonntagthe Macintosh Finder or other similar tool to perform step 3, it will **replace**
164fac25c68SRico Sonntagyour configuration, media and other directories with the empty/default ones from
165fac25c68SRico Sonntagthe installation. This would be very bad (but you did take a backup in step 1,
166fac25c68SRico Sonntagdidn't you!). Further details and recommendations for suitable tools can be found
167ad3143ccSGreg Roachby searching [google.com](https://google.com).
168fac25c68SRico Sonntag
169fac25c68SRico Sonntag
1706ccdf4f0SGreg Roach## Building and developing
171bd82e704SDavid Drury
172bd82e704SDavid DruryIf you want to build webtrees from source, or modify the code, you'll need to install
173bd82e704SDavid Drurya couple of tools first.
174bd82e704SDavid Drury
175bd82e704SDavid DruryYou will need [composer](https://getcomposer.org/) to install the PHP dependencies.
176bd82e704SDavid DruryThen run this command::
177bd82e704SDavid Drury
178bd82e704SDavid Drury* php composer.phar install
179bd82e704SDavid Drury
180bd82e704SDavid DruryYou will need [npm](https://www.npmjs.com/get-npm) to install the Javascript dependencies.
181bd82e704SDavid DruryThen run the commands:
182bd82e704SDavid Drury
183bd82e704SDavid Drury* npm install
1849845ccc6SRico Sonntag* npm run production
185bd82e704SDavid Drury
186bd82e704SDavid DruryYou will need to re-run the second of these any time you modify the file `webtrees.js`.
187fac25c68SRico Sonntag
1886ccdf4f0SGreg Roach## Gedcom (family tree) files
189fac25c68SRico Sonntag
19056379645SGreg RoachWhen you import a family tree (GEDCOM) file in **webtrees** the
1913606202eSDavid Drurydata from the file is transferred to the database tables. The file itself
192f0195b90SDavid Druryremains in the **webtrees/data** folder and is no longer used or required
193f0195b90SDavid Druryby **webtrees**. Any subsequent editing of the **webtrees** data
1943606202eSDavid Drurywill not change this file
195fac25c68SRico Sonntag
196fac25c68SRico SonntagWhen or if you change your genealogy data outside of **webtrees**, it is not
197fac25c68SRico Sonntagnecessary to delete your GEDCOM file or database from **webtrees** and start
198fac25c68SRico Sonntagover. Follow these steps to update a GEDCOM that has already been imported:
199fac25c68SRico Sonntag
2003606202eSDavid Drury* Go to ``Control panel`` -> ``Manage family trees`` On the line relating to this particular family tree (GEDCOM)
2013606202eSDavid Drury  file (or a new one) select IMPORT.
202243bf6b4SGreg Roach* Take careful note of the media items option (_“If you have created media objects
203ed1bbedbSGreg Roach  in **webtrees**, and have edited your data off-line using software that
204fac25c68SRico Sonntag  deletes media objects, then tick this box to merge the current media objects
205243bf6b4SGreg Roach  with the new GEDCOM.”_) In most cases you should leave this box **UNCHECKED**.
206243bf6b4SGreg Roach* Click “SAVE”. **webtrees** will validate the GEDCOM again before importing.
207fac25c68SRico Sonntag  During this process, **webtrees** copies your entire family tree (GEDCOM file)
208fac25c68SRico Sonntag  to a 'chunk' table within your database. Depending on the coding of your file,
209fac25c68SRico Sonntag  its file size and the capabilities of your server and the supporting software,
210fac25c68SRico Sonntag  this may take some time. **No progress bar will show while the data is being
211fac25c68SRico Sonntag  copied** and should you navigate away from this page, the process is suspended.
212fac25c68SRico Sonntag  It will start again when you return to the Family Tree management page.
213fac25c68SRico Sonntag
214fac25c68SRico Sonntag
2156ccdf4f0SGreg Roach### Gedcom file Formats
216fac25c68SRico Sonntag
217fac25c68SRico SonntagEvery Family History program has its own method of creating GEDCOM files, and
218fac25c68SRico Sonntagdiffering output format options to select from. **webtrees'** import routines
219fac25c68SRico Sonntagcan read many different formats, but not necessarily all. If your software has
220243bf6b4SGreg Roacha “UTF8” option you should always use that. However, **webtrees** has been
221fac25c68SRico Sonntagtested with these alternative formats:
222fac25c68SRico Sonntag
223fac25c68SRico Sonntag* ANSI
224fac25c68SRico Sonntag   * imports OK, but is slow due to the translation into UTF8 as part
225fac25c68SRico Sonntag     of the import process.
226fac25c68SRico Sonntag* MAC
227fac25c68SRico Sonntag   * imports OK, but is slow due to the translation into UTF8 as part
228fac25c68SRico Sonntag     of the import process.
229fac25c68SRico Sonntag* DOS
230fac25c68SRico Sonntag   * imports OK, but is slow due to the translation into UTF8 as part
231fac25c68SRico Sonntag     of the import process.
232fac25c68SRico Sonntag* ANSEL
233243bf6b4SGreg Roach   * currently will not import. Gives warning *Error: cannot convert
234243bf6b4SGreg Roach     GEDCOM file from ANSEL encoding to UTF-8 encoding*. Later releases
2353606202eSDavid Drury     of **webtrees** may include the facility to translate from ANSEL to UTF8,
2363606202eSDavid Drury     but for now a standalone utility [is available here](https://dev.webtrees.net/ansel/)
2373606202eSDavid Drury     and should be used to convert the format to UTF-8 prior to importing.
238fac25c68SRico Sonntag
239fac25c68SRico Sonntag
2406ccdf4f0SGreg Roach## Security
241fac25c68SRico Sonntag
242fac25c68SRico Sonntag**Security** in _webtrees_ means ensuring your site is safe from unwanted
243fac25c68SRico Sonntagintrusions, hacking, or access to data and configuration files. The developers
244fac25c68SRico Sonntagof _webtrees_ regard security as an extremely important part of its development
245fac25c68SRico Sonntagand have made every attempt to ensure your data is safe.
246fac25c68SRico Sonntag
2473606202eSDavid DruryThe area most at risk of intrusion would be the **/data** folder that contains your
248fac25c68SRico Sonntagconfig.ini.php file, and various temporary files. If you are concerned there
249bd82e704SDavid Drurymay be a risk there is a very simple test you can do: try to fetch the file
250bd82e704SDavid Druryconfig.ini.php by typing **``url_to_your_server/data/config.ini.php``** in your web
251fac25c68SRico Sonntagbrowser.
252fac25c68SRico Sonntag
253243bf6b4SGreg RoachThe most likely result is an “access denied” message like this:
254fac25c68SRico Sonntag
255fac25c68SRico Sonntag    Forbidden
256fac25c68SRico Sonntag
257f0195b90SDavid Drury    You don't have permission to access /data/config.ini.php on this server.
258fac25c68SRico Sonntag
259fac25c68SRico SonntagThis indicates that the protection built into **webtrees** is working, and no
260fac25c68SRico Sonntagfurther action is required.
261fac25c68SRico Sonntag
262fac25c68SRico SonntagIn the unlikely event you do fetch the file (you will just see a semicolon),
263fac25c68SRico Sonntagthen that protection is not working on your site and you should take some further
264fac25c68SRico Sonntagaction.
265fac25c68SRico Sonntag
2663606202eSDavid DruryIf your server runs PHP in CGI mode, then change the permission of the **/data**
2673606202eSDavid Druryfolder to 700 instead of 777. This will block access to the httpd process,
268fac25c68SRico Sonntagwhile still allowing access to PHP scripts.
269fac25c68SRico Sonntag
270fac25c68SRico SonntagThis will work for perhaps 99% of all users. Only the remaining 1% should consider
2713606202eSDavid Drurythe most complex solution, moving the **/data** folder out of accessible web
272fac25c68SRico Sonntagspace. (**_Note:_** In many shared hosting environments this is not an option anyway.)
273fac25c68SRico Sonntag
274fac25c68SRico SonntagIf you do find it necessary, following is an example of the process required:
275fac25c68SRico Sonntag
2763606202eSDavid DruryIf your home folder is something like **/home/username**,
2773606202eSDavid Druryand the root folder for your web site is **/home/username/public_html**,
2783606202eSDavid Druryand you have installed **webtrees** in the **public_html/webtrees** folder,
2793606202eSDavid Drurythen you would create a new **data** folder in your home folder at the same
2803606202eSDavid Drurylevel as your public_html folder, such as **/home/username/private/data**,
281fac25c68SRico Sonntagand place your GEDCOM (family tree) file there.
282fac25c68SRico Sonntag
2833606202eSDavid DruryThen change the **Data folder** setting on the ``Control panel`` ->
2843606202eSDavid Drury``Website`` -> ``Website preferences`` page from the default **data/** to the new
285fac25c68SRico Sonntaglocation **/home/username/private/data**
286fac25c68SRico Sonntag
287fac25c68SRico SonntagYou will have **two** data directories:
288fac25c68SRico Sonntag
289fac25c68SRico Sonntag* [path to webtrees]/data - just needs to contain config.ini.php
290fac25c68SRico Sonntag* /home/username/private/data - contains everything else
291fac25c68SRico Sonntag
292fac25c68SRico Sonntag
2936ccdf4f0SGreg Roach## Backup
294fac25c68SRico Sonntag
295fac25c68SRico SonntagBackups are good. Whatever problem you have, it can always be fixed from a good
296fac25c68SRico Sonntagbackup.
297fac25c68SRico Sonntag
2983606202eSDavid DruryTo make a backup of **webtrees**, you need to make a copy of the following
299fac25c68SRico Sonntag
3003606202eSDavid Drury1. The files in the *webtrees/data* folder.
3013606202eSDavid Drury2. The files in the *webtrees/media* folder.
302fac25c68SRico Sonntag3. The tables in the database. Freely available tools such as
303ad3143ccSGreg Roach   [phpMyAdmin](https://www.phpmyadmin.net) allow you to do this in one click.
304fac25c68SRico Sonntag
305fac25c68SRico SonntagRemember that most web hosting services do NOT backup your data, and this is
306fac25c68SRico Sonntagyour responsibility.
307