Merge pull request #948 from einervonvielen/3.0RC-fix-homeinstall

3.0 rc fix homeinstall
This commit is contained in:
git-marijus 2018-01-03 19:27:08 +01:00 committed by GitHub
commit 568cf2a9e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 70 additions and 146 deletions

View File

@ -28,23 +28,23 @@ Hardware
Software Software
+ Fresh installation of Debian 9 (Stretch) on your mini-pc + Fresh installation of Debian 9 (Stretch)
+ Router with open ports 80 and 443 for your Debian + Router with open ports 80 and 443 for your Hub
## The basic steps (quick overview) ## The basic steps (quick overview)
+ Register your own domain (for example at selfHOST) or a free subdomain (for example at freeDNS) + Register your own domain (for example at selfHOST) or a free subdomain (for example at freeDNS)
+ Install Debian 9 + Log on to your new debian (server)
+ On your router: Open the ports 80 and 443
+ Log on to your fresh Debian
- apt-get install git - apt-get install git
- mkdir -p /var/www - mkdir -p /var/www
- cd /var/www - cd /var/www
- git clone https://github.com/redmatrix/hubzilla.git html - git clone https://github.com/redmatrix/hubzilla.git html
- cp .homeinstall/hubzilla-config.txt.template .homeinstall/hubzilla-config.txt - cd /html/.homeinstall
- nano .homeinstall/hubzilla-config.txt - cp hubzilla-config.txt.template hubzilla-config.txt
- nano hubzilla-config.txt
- Read the comments carefully - Read the comments carefully
- Enter your values: db pass, domain, values for dyn DNS - Enter your values: db pass, domain, values for dyn DNS
- Make sure your your external drive (for backups) is mounted
- hubzilla-setup.sh as root - hubzilla-setup.sh as root
- ... wait, wait, wait until the script is finised - ... wait, wait, wait until the script is finised
- reboot - reboot
@ -58,24 +58,27 @@ Software
### Recommended: USB Drive for Backups ### Recommended: USB Drive for Backups
The installation will create a daily backup. The installation will create a daily backup written to an external drive.
If the backup process does not find an external device than the backup goes to
the internal disk.
The USB drive must be compatible with the filesystems The USB drive must be compatible with the filesystems
- ext4 (if you do not want to encrypt the USB) - ext4 (if you do not want to encrypt the USB)
- LUKS + ext4 (if you want to encrypt the USB) - LUKS + ext4 (if you want to encrypt the USB)
The backup includes
- Hubzilla DB
- Hubzilla installation /var/www/html
- Certificates for letsencrypt
## Preparations Software ## Preparations Software
### Install Debian Linux on the Mini-PC ### Install Debian Linux on the Mini-PC
Download the stable Debian 9 at https://www.debian.org/ Download the stable Debian at https://www.debian.org/
(Debian 8 is no longer supported.) (Debian 8 is no longer supported.)
Create bootable USB drive with Debian on it. You could use Create bootable USB drive with Debian on it.You could use
- unetbootin, https://en.wikipedia.org/wiki/UNetbootin - unetbootin, https://en.wikipedia.org/wiki/UNetbootin
- or simply the linux command "dd" - or simply the linux command "dd"
@ -109,12 +112,9 @@ You can use subdomains as well
my.cooldomain.org my.cooldomain.org
There are two ways to get a domain There are two ways to get a domain...
- buy a domain, or ### Method 1: Buy a Domain
- register a free subdomain
### Method 1: Buy an own Domain
...for example buy at selfHOST.de ...for example buy at selfHOST.de
@ -122,14 +122,14 @@ The cost are around 10,- € once and 1,50 € per month (2017).
### Method 2 Register a (free) Subdomain ### Method 2 Register a (free) Subdomain
...for example register at freeDNS ...for example register at freedns.afraid.org
Follow the instructions in .homeinstall/hubzilla-config.txt. Follow the instructions in .homeinstall/hubzilla-config.txt.
## Install Hubzilla on your Debian ## Install Hubzilla on your Debian
Login to your Debian Login to your debian
(Provided your username is "you" and the name of the mini pc is "debian". You (Provided your username is "you" and the name of the mini pc is "debian". You
could take the IP address instead of "debian") could take the IP address instead of "debian")
@ -164,6 +164,8 @@ Modify the file "hubzilla-config.txt". Read the instructions there carefully and
nano hubzilla-config.txt nano hubzilla-config.txt
Make sure your external drive (for backups) is plugged in and can be mounted as configured in "hubzilla-config.txt". Otherwise the daily backups will not work.
Run the script Run the script
./hubzilla-setup.sh ./hubzilla-setup.sh
@ -187,11 +189,16 @@ Leave db type "MySQL" untouched.
Follow the instructions in the next pages. Follow the instructions in the next pages.
After the daily script was executed at 05:30 (am)
- look at var/www/html/hubzilla-daily.log
- check your backup on the external drive
- optionally view the daily log under yourdomain.org/admin/logs/
- set the logfile to var/www/html/hubzilla-daily.log
## Note for the Rasperry ## Note for the Rasperry
The script was tested with a Raspberry 3 under Raspian (Debian 9.3, 2017-11-29-raspbian-stretch.img). The script was tested with an Raspberry 3 under Raspian (Debian 9.3, 2017-11-29-raspbian-stretch.img).
Be patient when a page is loaded by your Raspi-Hub for the very first time. Especially the config pages after the install will load very slowly.
It is recommended to deinstall these programms to avoid endless updates. Use... It is recommended to deinstall these programms to avoid endless updates. Use...
@ -202,6 +209,8 @@ It is recommended to run the Raspi without graphical frontend (X-Server). Use...
sudo raspi-config sudo raspi-config
**DO NOT FORGET TO CHANGE THE DEFAULT PASSWORD FOR USER PI!** to boot the Rapsi to the client console.
DO NOT FORGET TO CHANGE THE DEFAULT PASSWORD FOR USER PI!

View File

@ -13,10 +13,10 @@ db_pass=
# This script automates installation of an SSL certificate from # This script automates installation of an SSL certificate from
# Let's Encrypt (https://letsencrypt.org) # Let's Encrypt (https://letsencrypt.org)
# #
# Please give the domain name of your hub. Examples: # Please give the domain name of your hub
# #
# le_domain=my.cooldomain.org # Example: my.cooldomain.org
# le_domain=cooldomain.org # Example: cooldomain.org
# #
# Email is optional # Email is optional
# #
@ -25,7 +25,7 @@ le_domain=
le_email= le_email=
############################################### ###############################################
### OPTIONAL - dynamic IP address - selfHOST ## ### OPTIONAL - selfHOST - dynamic IP address ##
# #
# 1. Register a domain at selfhost.de # 1. Register a domain at selfhost.de
# - choose offer "DOMAIN dynamisch" 1,50€/mon at 08.01.2016 # - choose offer "DOMAIN dynamisch" 1,50€/mon at 08.01.2016
@ -42,7 +42,7 @@ selfhost_user=
selfhost_pass= selfhost_pass=
############################################### ###############################################
### OPTIONAL - dynamic IP address - FreeDNS ### ### OPTIONAL - FreeDNS - dynamic IP address ###
# #
# Please give the alpha-numeric-key of freedns # Please give the alpha-numeric-key of freedns
# #

View File

@ -114,7 +114,11 @@ function check_sanity {
fi fi
if [ ! -f /etc/debian_version ] if [ ! -f /etc/debian_version ]
then then
die "Ubuntu is not supported" die "Debian is supported only"
fi
if ! grep -q 'Linux 9' /etc/issue
then
die "Linux 9 (stretch) is supported only"x
fi fi
} }
@ -253,11 +257,11 @@ function install_sendmail {
} }
function install_php { function install_php {
# openssl and mbstring are included in libapache2-mod-php5 # openssl and mbstring are included in libapache2-mod-php
# to_to: php5-suhosin
print_info "installing php..." print_info "installing php..."
nocheck_install "libapache2-mod-php5 php5 php-pear php5-xcache php5-curl php5-mcrypt php5-gd" nocheck_install "libapache2-mod-php php php-pear php-curl php-mcrypt php-gd"
php5enmod mcrypt sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 100M/g" /etc/php/7.0/apache2/php.ini
sed -i "s/^post_max_size =.*/post_max_size = 100M/g" /etc/php/7.0/apache2/php.ini
} }
function install_mysql { function install_mysql {
@ -277,18 +281,17 @@ function install_mysql {
# want to be prompted for it then this can be arranged by preseeding the # want to be prompted for it then this can be arranged by preseeding the
# DebConf database with the required information. # DebConf database with the required information.
# #
# echo mysql-server-5.5 mysql-server/root_password password xyzzy | debconf-set-selections # echo mysql-server mysql-server/root_password password xyzzy | debconf-set-selections
# echo mysql-server-5.5 mysql-server/root_password_again password xyzzy | debconf-set-selections # echo mysql-server mysql-server/root_password_again password xyzzy | debconf-set-selections
# #
print_info "installing mysql..." print_info "installing mysql..."
if [ -z "$mysqlpass" ] if [ -z "$mysqlpass" ]
then then
die "mysqlpass not set in $configfile" die "mysqlpass not set in $configfile"
fi fi
echo mysql-server-5.5 mysql-server/root_password password $mysqlpass | debconf-set-selections echo mysql-server mysql-server/root_password password $mysqlpass | debconf-set-selections
echo mysql-server-5.5 mysql-server/root_password_again password $mysqlpass | debconf-set-selections echo mysql-server mysql-server/root_password_again password $mysqlpass | debconf-set-selections
nocheck_install "php5-mysql mysql-server mysql-client" nocheck_install "php-mysql mysql-server mysql-client"
php5enmod mcrypt
} }
function install_phpmyadmin { function install_phpmyadmin {
@ -327,6 +330,7 @@ function install_phpmyadmin {
echo "Include /etc/phpmyadmin/apache.conf" >> /etc/apache2/apache2.conf echo "Include /etc/phpmyadmin/apache.conf" >> /etc/apache2/apache2.conf
fi fi
service apache2 restart service apache2 restart
/etc/init.d/mysql start
} }
function create_hubzilla_db { function create_hubzilla_db {
@ -455,11 +459,6 @@ function configure_cron_selfhost {
fi fi
} }
function install_git {
print_info "installing git..."
nocheck_install "git"
}
function install_letsencrypt { function install_letsencrypt {
print_info "installing let's encrypt ..." print_info "installing let's encrypt ..."
# check if user gave domain # check if user gave domain
@ -511,6 +510,8 @@ END
then then
die "Failed to load $url_http" die "Failed to load $url_http"
fi fi
# accept terms of service of letsencrypt
./dehydrated --register --accept-terms
# run script dehydrated # run script dehydrated
# #
./dehydrated --cron --config $le_dir/config.sh ./dehydrated --cron --config $le_dir/config.sh
@ -564,17 +565,13 @@ function check_https {
} }
function install_hubzilla { function install_hubzilla {
print_info "installing hubzilla..." print_info "installing hubzilla addons..."
# rm -R /var/www/html/ # for "stand alone" usage cd /var/www/html/
cd /var/www/ util/add_addon_repo https://github.com/redmatrix/hubzilla-addons.git hzaddons
# git clone https://github.com/redmatrix/hubzilla html # for "stand alone" usage
cd html/
git clone https://github.com/redmatrix/hubzilla-addons addon
mkdir -p "store/[data]/smarty3" mkdir -p "store/[data]/smarty3"
chmod -R 777 store chmod -R 777 store
touch .htconfig.php touch .htconfig.php
chmod ou+w .htconfig.php chmod ou+w .htconfig.php
install_hubzilla_plugins
cd /var/www/ cd /var/www/
chown -R www-data:www-data html chown -R www-data:www-data html
chown root:www-data /var/www/html/ chown root:www-data /var/www/html/
@ -589,73 +586,6 @@ function install_hubzilla {
print_info "installed hubzilla" print_info "installed hubzilla"
} }
function install_hubzilla_plugins {
print_info "installing hubzilla plugins..."
cd /var/www/html
plugin_install=.homeinstall/plugin_install.txt
theme_install=.homeinstall/theme_install.txt
# overwrite script to update the plugin and themes
rm -f $plugins_update
echo "cd /var/www/html" >> $plugins_update
###################
# write plugin file
if [ ! -f "$plugin_install" ]
then
echo "# To install a plugin" >> $plugin_install
echo "# 1. add the plugin in a new line and run" >> $plugin_install
echo "# 2. run" >> $plugin_install
echo "# cd /var/www/html/.homeinstall" >> $plugin_install
echo "# ./hubzilla-setup.sh" >> $plugin_install
echo "https://gitlab.com/zot/ownmapp.git ownMapp" >> $plugin_install
echo "https://gitlab.com/zot/hubzilla-chess.git chess" >> $plugin_install
fi
# install plugins
while read -r line; do
[[ "$line" =~ ^#.*$ ]] && continue
p_url=$(echo $line | awk -F' ' '{print $1}')
p_name=$(echo $line | awk -F' ' '{print $2}')
# basic check of format
if [ ${#p_url} -ge 1 ] && [ ${#p_name} -ge 1 ]
then
# install addon
util/add_addon_repo $line
util/update_addon_repo $p_name # not sure if this line is neccessary
echo "util/update_addon_repo $p_name" >> $plugins_update
else
print_info "skipping installation of a plugin from file $plugin_install - something wrong with format in line: $line"
fi
done < "$plugin_install"
###################
# write theme file
if [ ! -f "$theme_install" ]
then
echo "# To install a theme" >> $theme_install
echo "# 1. add the theme in a new line and run" >> $theme_install
echo "# 2. run" >> $theme_install
echo "# cd /var/www/html/.homeinstall" >> $theme_install
echo "# ./hubzilla-setup.sh" >> $theme_install
echo "https://github.com/DeadSuperHero/hubzilla-themes.git DeadSuperHeroThemes" >> $theme_install
fi
# install plugins
while read -r line; do
[[ "$line" =~ ^#.*$ ]] && continue
p_url=$(echo $line | awk -F' ' '{print $1}')
p_name=$(echo $line | awk -F' ' '{print $2}')
# basic check of format
if [ ${#p_url} -ge 1 ] && [ ${#p_name} -ge 1 ]
then
# install addon
util/add_theme_repo $line
util/update_theme_repo $p_name # not sure if this line is neccessary
echo "util/update_theme_repo $p_name" >> $plugins_update
else
print_info "skipping installation of a theme from file $theme_install - something wrong with format in line: $line"
fi
done < "$theme_install"
print_info "installed hubzilla plugins and themes"
}
function rewrite_to_https { function rewrite_to_https {
print_info "configuring apache to redirect http to httpS ..." print_info "configuring apache to redirect http to httpS ..."
htaccessfile=/var/www/html/.htaccess htaccessfile=/var/www/html/.htaccess
@ -675,25 +605,19 @@ function rewrite_to_https {
function install_rsnapshot { function install_rsnapshot {
print_info "installing rsnapshot..." print_info "installing rsnapshot..."
nocheck_install "rsnapshot" nocheck_install "rsnapshot"
# internal disk # internal disk
cp -f /etc/rsnapshot.conf $snapshotconfig cp -f /etc/rsnapshot.conf $snapshotconfig
sed -i "/hourly/s/retain/#retain/" $snapshotconfig
sed -i "/monthly/s/#retain/retain/" $snapshotconfig
sed -i "s/^cmd_cp/#cmd_cp/" $snapshotconfig sed -i "s/^cmd_cp/#cmd_cp/" $snapshotconfig
sed -i "s/^backup/#backup/" $snapshotconfig sed -i "s/^backup/#backup/" $snapshotconfig
if [ -z "`grep 'letsencrypt' $snapshotconfig`" ] echo "backup /var/lib/mysql/ localhost/" >> $snapshotconfig
then echo "backup /var/www/html/ localhost/" >> $snapshotconfig
echo "backup /var/lib/mysql/ localhost/" >> $snapshotconfig echo "backup /var/www/letsencrypt/ localhost/" >> $snapshotconfig
echo "backup /var/www/html/ localhost/" >> $snapshotconfig
echo "backup /var/www/letsencrypt/ localhost/" >> $snapshotconfig
fi
# external disk # external disk
if [ -n "$backup_device_name" ] && [ -n "$backup_device_pass" ] if [ -n "$backup_device_name" ]
then then
cp -f /etc/rsnapshot.conf $snapshotconfig_external_device cp -f /etc/rsnapshot.conf $snapshotconfig_external_device
sed -i "s#snapshot_root.*#snapshot_root $backup_mount_point#" $snapshotconfig_external_device sed -i "s#snapshot_root.*#snapshot_root $backup_mount_point#" $snapshotconfig_external_device
sed -i "/hourly/s/retain/#retain/" $snapshotconfig_external_device sed -i "/alpha/s/6/30/" $snapshotconfig_external_device
sed -i "/monthly/s/#retain/retain/" $snapshotconfig_external_device
sed -i "s/^cmd_cp/#cmd_cp/" $snapshotconfig_external_device sed -i "s/^cmd_cp/#cmd_cp/" $snapshotconfig_external_device
sed -i "s/^backup/#backup/" $snapshotconfig_external_device sed -i "s/^backup/#backup/" $snapshotconfig_external_device
if [ -z "`grep 'letsencrypt' $snapshotconfig_external_device`" ] if [ -z "`grep 'letsencrypt' $snapshotconfig_external_device`" ]
@ -767,9 +691,7 @@ echo " if mount $backup_device_name $backup_mount_point" >> /var/www/$hub
echo " then" >> /var/www/$hubzilladaily echo " then" >> /var/www/$hubzilladaily
echo " device_mounted=1" >> /var/www/$hubzilladaily echo " device_mounted=1" >> /var/www/$hubzilladaily
echo " echo \"device $backup_device_name is now mounted. Starting backup...\"" >> /var/www/$hubzilladaily echo " echo \"device $backup_device_name is now mounted. Starting backup...\"" >> /var/www/$hubzilladaily
echo " rsnapshot -c $snapshotconfig_external_device daily" >> /var/www/$hubzilladaily echo " rsnapshot -c $snapshotconfig_external_device alpha" >> /var/www/$hubzilladaily
echo " rsnapshot -c $snapshotconfig_external_device weekly" >> /var/www/$hubzilladaily
echo " rsnapshot -c $snapshotconfig_external_device monthly" >> /var/www/$hubzilladaily
echo " echo \"\$(date) - disk sizes...\"" >> /var/www/$hubzilladaily echo " echo \"\$(date) - disk sizes...\"" >> /var/www/$hubzilladaily
echo " df -h" >> /var/www/$hubzilladaily echo " df -h" >> /var/www/$hubzilladaily
echo " echo \"\$(date) - db size...\"" >> /var/www/$hubzilladaily echo " echo \"\$(date) - db size...\"" >> /var/www/$hubzilladaily
@ -788,28 +710,22 @@ echo " fi" >> /var/www/$hubzilladaily
echo "fi" >> /var/www/$hubzilladaily echo "fi" >> /var/www/$hubzilladaily
echo "if [ \$device_mounted == 0 ]" >> /var/www/$hubzilladaily echo "if [ \$device_mounted == 0 ]" >> /var/www/$hubzilladaily
echo "then" >> /var/www/$hubzilladaily echo "then" >> /var/www/$hubzilladaily
echo " echo \"device could not be mounted $backup_device_name. Using internal disk for backup...\"" >> /var/www/$hubzilladaily echo " echo \"device could not be mounted $backup_device_name. No backup written.\"" >> /var/www/$hubzilladaily
echo " rsnapshot -c $snapshotconfig daily" >> /var/www/$hubzilladaily
echo " rsnapshot -c $snapshotconfig weekly" >> /var/www/$hubzilladaily
echo " rsnapshot -c $snapshotconfig monthly" >> /var/www/$hubzilladaily
echo "fi" >> /var/www/$hubzilladaily echo "fi" >> /var/www/$hubzilladaily
echo "#" >> /var/www/$hubzilladaily echo "#" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - db size...\"" >> /var/www/$hubzilladaily echo "echo \"\$(date) - db size...\"" >> /var/www/$hubzilladaily
echo "du -h /var/cache/rsnapshot/ | grep mysql/hubzilla" >> /var/www/$hubzilladaily echo "du -h /var/lib/mysql/ | grep mysql/hubzilla" >> /var/www/$hubzilladaily
echo "#" >> /var/www/$hubzilladaily echo "#" >> /var/www/$hubzilladaily
echo "# update" >> /var/www/$hubzilladaily echo "# update" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - updating dehydrated...\"" >> /var/www/$hubzilladaily echo "echo \"\$(date) - updating dehydrated...\"" >> /var/www/$hubzilladaily
echo "git -C /var/www/letsencrypt/ pull" >> /var/www/$hubzilladaily echo "git -C /var/www/letsencrypt/ pull" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - updating hubhilla core...\"" >> /var/www/$hubzilladaily echo "echo \"\$(date) - updating hubhilla core...\"" >> /var/www/$hubzilladaily
echo "git -C /var/www/html/ pull" >> /var/www/$hubzilladaily echo "(cd /var/www/html/ ; util/udall)" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - updating hubhilla addons...\"" >> /var/www/$hubzilladaily
echo "git -C /var/www/html/addon/ pull" >> /var/www/$hubzilladaily
echo "bash /var/www/html/$plugins_update" >> /var/www/$hubzilladaily
echo "chown -R www-data:www-data /var/www/html/ # make all accessable for the webserver" >> /var/www/$hubzilladaily echo "chown -R www-data:www-data /var/www/html/ # make all accessable for the webserver" >> /var/www/$hubzilladaily
echo "chown root:www-data /var/www/html/.htaccess" >> /var/www/$hubzilladaily echo "chown root:www-data /var/www/html/.htaccess" >> /var/www/$hubzilladaily
echo "chmod 0644 /var/www/html/.htaccess # www-data can read but not write it" >> /var/www/$hubzilladaily echo "chmod 0644 /var/www/html/.htaccess # www-data can read but not write it" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - updating linux...\"" >> /var/www/$hubzilladaily echo "echo \"\$(date) - updating linux...\"" >> /var/www/$hubzilladaily
echo "apt-get -q -y update && apt-get -q -y dist-upgrade # update linux and upgrade" >> /var/www/$hubzilladaily echo "apt-get -q -y update && apt-get -q -y dist-upgrade && apt-get -q -y autoremove # update linux and upgrade" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - Backup hubzilla and update linux finished. Rebooting...\"" >> /var/www/$hubzilladaily echo "echo \"\$(date) - Backup hubzilla and update linux finished. Rebooting...\"" >> /var/www/$hubzilladaily
echo "#" >> /var/www/$hubzilladaily echo "#" >> /var/www/$hubzilladaily
echo "reboot" >> /var/www/$hubzilladaily echo "reboot" >> /var/www/$hubzilladaily
@ -894,7 +810,6 @@ install_run_selfhost
ping_domain ping_domain
configure_cron_freedns configure_cron_freedns
configure_cron_selfhost configure_cron_selfhost
install_git
install_letsencrypt install_letsencrypt
configure_apache_for_https configure_apache_for_https
check_https check_https