Difference between revisions of "How to setup a webtrees server on a Debian 9 Proxmox container"
From steamWiki
(Created page with "[https://www.webtrees.net webtrees] is a pretty cool opensource genealogy web server. It allows you to setup a website to display your family history. You can use [https://w...") |
|||
| Line 3: | Line 3: | ||
This article describes how I setup a webtrees server on a [https://www.debian.org/ Debian] 9 based [https://linuxcontainers.org/ Linux Container (LXC)] under [https://www.proxmox.com/en/ Proxmox] and made the page available on the internet using an [https://httpd.apache.org/ Apache2] [https://en.wikipedia.org/wiki/Reverse_proxy Reverse Proxy] | This article describes how I setup a webtrees server on a [https://www.debian.org/ Debian] 9 based [https://linuxcontainers.org/ Linux Container (LXC)] under [https://www.proxmox.com/en/ Proxmox] and made the page available on the internet using an [https://httpd.apache.org/ Apache2] [https://en.wikipedia.org/wiki/Reverse_proxy Reverse Proxy] | ||
| + | =Setup the Container= | ||
#Using the Proxmox web interface, create a new Container using the Debian 9 template. | #Using the Proxmox web interface, create a new Container using the Debian 9 template. | ||
| − | + | #Log into the container, with the root account, using the Proxmox web console | |
| − | + | #Update, Upgrade, and Install a few packages | |
| − | + | ##run ''apt update'' | |
| − | + | ##run ''apt upgrade'' | |
| − | + | ##run ''apt install sudo unzip'' | |
| − | + | #Update the timezone | |
| − | + | ##run ''timedatectl set-timezone America/New_York'' | |
| − | + | ##*change ''America/New_York'' to a location relevant to your physical location using the "TZ database name" in this [https://en.wikipedia.org/wiki/List_of_tz_database_time_zones table] | |
| − | + | #Add a user and give them sudo access | |
| − | + | ##useradd admin | |
| − | + | ##usermod -aG sudo admin | |
| − | + | #Exit the web console and ssh in as the admin user | |
| − | + | =Setup a [https://mariadb.org/ MariaDB] database= | |
| − | + | #install the necessary packages, secure the installation, and log into the mysql database | |
| − | + | ##run ''sudo apt install mariadb-server mariadb-client'' | |
| − | + | ##run ''sudo mysql_secure_installation'' | |
| − | + | ###The current root password is blank | |
| − | + | ###Create a new root password | |
| − | + | ###Answer Yes to all questions | |
| − | + | ##run ''sudo mysql'' to login as root | |
| − | + | #Create a database and user for webtrees | |
| − | + | ##run ''CREATE DATABASE webtreesDB;'' | |
| − | + | ##run ''GRANT ALL PRIVILEGES ON webtreesDB.* TO 'webtrees'@'localhost' IDENTIFIED BY 'webtreespassword';'' | |
| − | + | ##run ''FLUSH PRIVILEGES;'' | |
| − | + | ##run ''exit'' | |
| − | + | =Setup an [https://httpd.apache.org/ Apache2] webserver= | |
| − | + | #run ''sudo apt install apache2'' | |
| − | + | #check http://<containername>/ and you should see the default Apache2 server page | |
| − | + | =Setup [https://www.php.net/ PHP]7= | |
| − | + | #run ''sudo apt install php libapache2-mod-php php-mysql php-apcu php-xml php-gd'' | |
| − | + | #run ''systemctl restart apache2'' | |
| − | + | #run ''sudo nano /var/www/html/info.php'' and type the following in. The save and exit nano. | |
<nowiki><?php | <nowiki><?php | ||
phpinfo(); | phpinfo(); | ||
?></nowiki> | ?></nowiki> | ||
| − | + | #go to ''http://<containername>/info.php and you should see the default PHP info page | |
| − | + | #run ''sudo rm /var/www/html/info.php | |
| − | + | =Setup webtrees= | |
| − | + | #run ''cd /var/www/html'' | |
| − | + | #run ''sudo wget https://github.com/fisharebest/webtrees/releases/download/1.7.13/webtrees-1.7.13.zip'' | |
| − | + | #*You can change the version number at the end of the above command to reflect the latest stable release available at https://github.com/fisharebest/webtrees/releases | |
| − | + | #run ''sudo unzip webtrees-1.7.13.zip'' | |
| − | + | #run ''sudo rm webtrees-1.7.13.zip'' | |
| − | + | #visit http://containername/webtrees/ to finish the setup | |
| − | + | ##fix any server configuration or server capacity problems (there shouldn't be any if the above packages were installed) | |
| − | + | ##for the database login info enter ''webtrees'' as the user and ''webtreespassword'' as the password | |
| − | + | ##for the database name enter ''webtreesDB'' | |
| − | + | ##you can leave the table prefix name ''<blank>'' since this is a container and you probably shouldn't be sharing the database with other webtrees installations | |
| − | + | ##Enter your name, select a username, select a password, and select an email for the next sections. | |
| − | + | ##Sign in to Webtrees using the username and password you just picked out | |
| − | + | ##Create a new family tree named something like "Conan the Barbarian Family Tree" | |
| − | + | ##Give it a short name like "conan" | |
| − | + | ##Under ''Website preferences'' | |
| − | + | ###Select ''America/New_York'' (or whatever your location is) for the timezone | |
| − | + | ###Make sure "Show list of family trees" is set to ''yes'' if you think you'll ever have more than one family tree on your page. | |
| − | + | ##Under ''Sign-in and registration'' | |
| − | + | ###Set ''Welcome text on sign-in page'' to ''Predefined text that states that only family members can request a user account'' (or whatever you want) | |
| − | + | ###Set ''Show acceptable use agreement on "Request a new user account" page'' to ''no'' (or whatever you want) | |
| − | + | ##Under ''Languages'' | |
| − | + | ###uncheck any languages you don't want to support | |
| − | + | ###check any extra languages you do want to support | |
| − | + | =Setup the Reverse Proxy= | |
| − | + | #On your webtrees container modify line 173 of ''/var/www/html/webtrees/includes/sessions.php'' | |
| − | + | ##*'''from''' ''define('WT_BASE_URL', $base_uri);'' | |
| − | + | ##*'''to''' ''define('WT_BASE_URL', 'https://mypublicdomain.com/webtrees/');'' | |
| − | + | #Log into your Reverse Proxy machine/container (assumed to be on Debian 9 with permanent redirects from http to https) | |
| − | + | #If you want to put an htpasswd based password on the front of the site then do the following | |
| − | + | ##run ''sudo htpasswd -c /etc/apache2/.webtrees_htpasswd username'' | |
| − | + | #add the following to ''/etc/apache2/sites-enabled/000-default.conf'' | |
<nowiki>Redirect permanent /webtrees https://steamforge.net/webtrees</nowiki> | <nowiki>Redirect permanent /webtrees https://steamforge.net/webtrees</nowiki> | ||
| − | + | #add the following to ''/etc/apache2/sites-enabled/000-default-ssl.conf'' (leave off the first block about Authentication if you didn't create ''.webtrees_htpasswd'') | |
<nowiki>#webtrees | <nowiki>#webtrees | ||
| − | + | <Location /webtrees> | |
| − | + | AuthType Basic | |
| − | + | AuthName "Enter username/password to access webtrees" | |
| − | + | AuthBasicProvider file | |
| − | + | AuthUserFile "/etc/apache2/.webtrees_htpasswd" | |
| − | + | Require valid-user | |
| − | + | ProxyPreserveHost On | |
| − | + | ProxyPass http://containername/webtrees | |
| − | + | ProxyPassReverse http://containername/webtrees | |
| − | + | </Location></nowiki> | |
Revision as of 20:01, 21 April 2019
webtrees is a pretty cool opensource genealogy web server. It allows you to setup a website to display your family history. You can use webtrees to create your family tree or import a family tree from popular services like Ancestry.com and MyHeritage.com.
This article describes how I setup a webtrees server on a Debian 9 based Linux Container (LXC) under Proxmox and made the page available on the internet using an Apache2 Reverse Proxy
Contents
Setup the Container
- Using the Proxmox web interface, create a new Container using the Debian 9 template.
- Log into the container, with the root account, using the Proxmox web console
- Update, Upgrade, and Install a few packages
- run apt update
- run apt upgrade
- run apt install sudo unzip
- Update the timezone
- run timedatectl set-timezone America/New_York
- change America/New_York to a location relevant to your physical location using the "TZ database name" in this table
- run timedatectl set-timezone America/New_York
- Add a user and give them sudo access
- useradd admin
- usermod -aG sudo admin
- Exit the web console and ssh in as the admin user
Setup a MariaDB database
- install the necessary packages, secure the installation, and log into the mysql database
- run sudo apt install mariadb-server mariadb-client
- run sudo mysql_secure_installation
- The current root password is blank
- Create a new root password
- Answer Yes to all questions
- run sudo mysql to login as root
- Create a database and user for webtrees
- run CREATE DATABASE webtreesDB;
- run GRANT ALL PRIVILEGES ON webtreesDB.* TO 'webtrees'@'localhost' IDENTIFIED BY 'webtreespassword';
- run FLUSH PRIVILEGES;
- run exit
Setup an Apache2 webserver
- run sudo apt install apache2
- check http://<containername>/ and you should see the default Apache2 server page
Setup PHP7
- run sudo apt install php libapache2-mod-php php-mysql php-apcu php-xml php-gd
- run systemctl restart apache2
- run sudo nano /var/www/html/info.php and type the following in. The save and exit nano.
<?php phpinfo(); ?>
- go to http://<containername>/info.php and you should see the default PHP info page
- run sudo rm /var/www/html/info.php
Setup webtrees
- run cd /var/www/html
- run sudo wget https://github.com/fisharebest/webtrees/releases/download/1.7.13/webtrees-1.7.13.zip
- You can change the version number at the end of the above command to reflect the latest stable release available at https://github.com/fisharebest/webtrees/releases
- run sudo unzip webtrees-1.7.13.zip
- run sudo rm webtrees-1.7.13.zip
- visit http://containername/webtrees/ to finish the setup
- fix any server configuration or server capacity problems (there shouldn't be any if the above packages were installed)
- for the database login info enter webtrees as the user and webtreespassword as the password
- for the database name enter webtreesDB
- you can leave the table prefix name <blank> since this is a container and you probably shouldn't be sharing the database with other webtrees installations
- Enter your name, select a username, select a password, and select an email for the next sections.
- Sign in to Webtrees using the username and password you just picked out
- Create a new family tree named something like "Conan the Barbarian Family Tree"
- Give it a short name like "conan"
- Under Website preferences
- Select America/New_York (or whatever your location is) for the timezone
- Make sure "Show list of family trees" is set to yes if you think you'll ever have more than one family tree on your page.
- Under Sign-in and registration
- Set Welcome text on sign-in page to Predefined text that states that only family members can request a user account (or whatever you want)
- Set Show acceptable use agreement on "Request a new user account" page to no (or whatever you want)
- Under Languages
- uncheck any languages you don't want to support
- check any extra languages you do want to support
Setup the Reverse Proxy
- On your webtrees container modify line 173 of /var/www/html/webtrees/includes/sessions.php
- from define('WT_BASE_URL', $base_uri);
- to define('WT_BASE_URL', 'https://mypublicdomain.com/webtrees/');
- Log into your Reverse Proxy machine/container (assumed to be on Debian 9 with permanent redirects from http to https)
- If you want to put an htpasswd based password on the front of the site then do the following
- run sudo htpasswd -c /etc/apache2/.webtrees_htpasswd username
- add the following to /etc/apache2/sites-enabled/000-default.conf
Redirect permanent /webtrees https://steamforge.net/webtrees
- add the following to /etc/apache2/sites-enabled/000-default-ssl.conf (leave off the first block about Authentication if you didn't create .webtrees_htpasswd)
#webtrees
<Location /webtrees>
AuthType Basic
AuthName "Enter username/password to access webtrees"
AuthBasicProvider file
AuthUserFile "/etc/apache2/.webtrees_htpasswd"
Require valid-user
ProxyPreserveHost On
ProxyPass http://containername/webtrees
ProxyPassReverse http://containername/webtrees
</Location>