From 0b54cf5641d2cbc5ddfb966716a526652fa19f4d Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob.mottram@codethink.co.uk>
Date: Thu, 7 Jul 2016 17:45:57 +0100
Subject: [PATCH] Make calling database backup to usb simpler

---
 src/freedombone-app-gnusocial | 1235 ++++++++++++++++-----------------
 src/freedombone-app-gogs      |    5 +-
 src/freedombone-app-hubzilla  |    6 +-
 src/freedombone-app-rss       |    6 +-
 src/freedombone-app-searx     |    4 +-
 src/freedombone-app-sip       |    6 +-
 src/freedombone-app-syncthing |    6 +-
 src/freedombone-utils-backup  |    6 +
 8 files changed, 637 insertions(+), 637 deletions(-)

diff --git a/src/freedombone-app-gnusocial b/src/freedombone-app-gnusocial
index 1d02e00c3..321260b61 100755
--- a/src/freedombone-app-gnusocial
+++ b/src/freedombone-app-gnusocial
@@ -50,675 +50,674 @@ SHARINGS_THEME_REPO="http://git.lasindias.club/manuel/SharingsTheme"
 SHARINGS_THEME_COMMIT='7106c7ef03'
 
 function gnusocial_running_script {
-    if ! grep -Fxq "install_gnusocial" $COMPLETION_FILE; then
-        return
-    fi
-
-    # check that the daemon is running
-    echo '#!/bin/bash' > /etc/cron.hourly/gnusocial-daemons
-    echo 'daemon_lines=$(ps aux | grep "scripts/queuedaemon.php" | grep "/var/www")' >> /etc/cron.hourly/gnusocial-daemons
-    echo 'if [[ $daemon_lines != *"/var/www/"* ]]; then' >> /etc/cron.hourly/gnusocial-daemons
-
-    echo "    ADMIN_USER=\$(cat $COMPLETION_FILE | grep 'Admin user' | awk -F ':' '{print \$2}')" >> /etc/cron.hourly/gnusocial-daemons
-    echo '    MY_EMAIL_ADDRESS=$ADMIN_USER@$HOSTNAME' >> /etc/cron.hourly/gnusocial-daemons
-    echo '    echo "Restarting GNU Social daemons" | mail -s "GNU Social daemons not found" $MY_EMAIL_ADDRESS' >> /etc/cron.hourly/gnusocial-daemons
-    echo "    cd /var/www/${MICROBLOG_DOMAIN_NAME}/htdocs" >> /etc/cron.hourly/gnusocial-daemons
-    echo '    scripts/startdaemons.sh' >> /etc/cron.hourly/gnusocial-daemons
-    echo 'fi' >> /etc/cron.hourly/gnusocial-daemons
-    chmod +x /etc/cron.hourly/gnusocial-daemons
+	if ! grep -Fxq "install_gnusocial" $COMPLETION_FILE; then
+		return
+	fi
+
+	# check that the daemon is running
+	echo '#!/bin/bash' > /etc/cron.hourly/gnusocial-daemons
+	echo 'daemon_lines=$(ps aux | grep "scripts/queuedaemon.php" | grep "/var/www")' >> /etc/cron.hourly/gnusocial-daemons
+	echo 'if [[ $daemon_lines != *"/var/www/"* ]]; then' >> /etc/cron.hourly/gnusocial-daemons
+
+	echo "    ADMIN_USER=\$(cat $COMPLETION_FILE | grep 'Admin user' | awk -F ':' '{print \$2}')" >> /etc/cron.hourly/gnusocial-daemons
+	echo '    MY_EMAIL_ADDRESS=$ADMIN_USER@$HOSTNAME' >> /etc/cron.hourly/gnusocial-daemons
+	echo '    echo "Restarting GNU Social daemons" | mail -s "GNU Social daemons not found" $MY_EMAIL_ADDRESS' >> /etc/cron.hourly/gnusocial-daemons
+	echo "    cd /var/www/${MICROBLOG_DOMAIN_NAME}/htdocs" >> /etc/cron.hourly/gnusocial-daemons
+	echo '    scripts/startdaemons.sh' >> /etc/cron.hourly/gnusocial-daemons
+	echo 'fi' >> /etc/cron.hourly/gnusocial-daemons
+	chmod +x /etc/cron.hourly/gnusocial-daemons
 }
 
 function upgrade_gnusocial {
-    if ! grep -Fxq "install_gnusocial_main" $COMPLETION_FILE; then
-        return
-    fi
+	if ! grep -Fxq "install_gnusocial_main" $COMPLETION_FILE; then
+		return
+	fi
 
-    # update to the next commit
-    function_check set_repo_commit
-    set_repo_commit /var/www/$MICROBLOG_DOMAIN_NAME/htdocs "GNU Social commit" "$MICROBLOG_COMMIT" $MICROBLOG_REPO
+	# update to the next commit
+	function_check set_repo_commit
+	set_repo_commit /var/www/$MICROBLOG_DOMAIN_NAME/htdocs "GNU Social commit" "$MICROBLOG_COMMIT" $MICROBLOG_REPO
 
-    function_check gnusocial_running_script
-    gnusocial_running_script
+	function_check gnusocial_running_script
+	gnusocial_running_script
 }
 
 
 function backup_local_gnusocial {
-    MICROBLOG_DOMAIN_NAME='microblog'
-    if grep -q "GNU Social domain" $COMPLETION_FILE; then
-        MICROBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "GNU Social domain" | awk -F ':' '{print $2}')
-    fi
+	MICROBLOG_DOMAIN_NAME='microblog'
+	if grep -q "GNU Social domain" $COMPLETION_FILE; then
+		MICROBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "GNU Social domain" | awk -F ':' '{print $2}')
+	fi
 
-    source_directory=/var/www/${MICROBLOG_DOMAIN_NAME}/htdocs
-    if [ -d $source_directory ]; then
-        dest_directory=gnusocial
-        echo $"Backing up $source_directory to $dest_directory"
+	source_directory=/var/www/${MICROBLOG_DOMAIN_NAME}/htdocs
+	if [ -d $source_directory ]; then
+		dest_directory=gnusocial
+		echo $"Backing up $source_directory to $dest_directory"
 
-        function_check suspend_site
-        suspend_site ${MICROBLOG_DOMAIN_NAME}
+		function_check suspend_site
+		suspend_site ${MICROBLOG_DOMAIN_NAME}
 
-        function_check backup_directory_to_usb
-        backup_directory_to_usb $source_directory $dest_directory
+		function_check backup_directory_to_usb
+		backup_directory_to_usb $source_directory $dest_directory
 
-        function_check backup_database_local
-        backup_database_local gnusocial
-        backup_directory_to_usb /root/tempgnusocialdata gnusocialdata
+		function_check backup_database_to_usb
+		backup_database_to_usb gnusocial
 
-        function_check restart_site
-        restart_site
+		function_check restart_site
+		restart_site
 
-        echo $"Backup to $dest_directory complete"
-    fi
+		echo $"Backup to $dest_directory complete"
+	fi
 }
 
 function backup_remote_gnusocial {
-    echo -n ''
+	echo -n ''
 }
 
 function remove_gnusocial {
-    if ! grep -Fxq "install_gnusocial" $COMPLETION_FILE; then
-        return
-    fi
-    nginx_dissite $MICROBLOG_DOMAIN_NAME
-    if [ -d /var/www/$MICROBLOG_DOMAIN_NAME ]; then
-        rm -rf /var/www/$MICROBLOG_DOMAIN_NAME
-    fi
-    if [ -f /etc/nginx/sites-available/$MICROBLOG_DOMAIN_NAME ]; then
-        rm /etc/nginx/sites-available/$MICROBLOG_DOMAIN_NAME
-    fi
-    function_check drop_database
-    drop_database gnusocial
-    function_check remove_onion_service
-    remove_onion_service microblog ${MICROBLOG_ONION_PORT}
-    sed -i '/install_gnusocial/d' $COMPLETION_FILE
-    sed -i '/GNU Social /d' $COMPLETION_FILE
+	if ! grep -Fxq "install_gnusocial" $COMPLETION_FILE; then
+		return
+	fi
+	nginx_dissite $MICROBLOG_DOMAIN_NAME
+	if [ -d /var/www/$MICROBLOG_DOMAIN_NAME ]; then
+		rm -rf /var/www/$MICROBLOG_DOMAIN_NAME
+	fi
+	if [ -f /etc/nginx/sites-available/$MICROBLOG_DOMAIN_NAME ]; then
+		rm /etc/nginx/sites-available/$MICROBLOG_DOMAIN_NAME
+	fi
+	function_check drop_database
+	drop_database gnusocial
+	function_check remove_onion_service
+	remove_onion_service microblog ${MICROBLOG_ONION_PORT}
+	sed -i '/install_gnusocial/d' $COMPLETION_FILE
+	sed -i '/GNU Social /d' $COMPLETION_FILE
 }
 
 function install_gnusocial_main {
-    if [ ! $MICROBLOG_DOMAIN_NAME ]; then
-        echo $'No domain name was given for the microblog'
-        exit 7359
-    fi
-
-    if grep -Fxq "install_gnusocial_main" $COMPLETION_FILE; then
-        return
-    fi
-
-    function_check gnusocial_running_script
-    gnusocial_running_script
-
-    function_check install_mariadb
-    install_mariadb
-
-    function_check get_mariadb_password
-    get_mariadb_password
-
-    function_check repair_databases_script
-    repair_databases_script
-
-    apt-get -y install php-gettext php5-curl php5-gd php5-mysql git curl php-xml-parser
-    apt-get -y install php5-memcached
-
-    if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME ]; then
-        mkdir /var/www/$MICROBLOG_DOMAIN_NAME
-    fi
-    if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs ]; then
-        function_check git_clone
-        git_clone $MICROBLOG_REPO /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
-        if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs ]; then
-            echo $'Unable to clone gnusocial repo'
-            exit 87525
-        fi
-    fi
-
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
-    git checkout $MICROBLOG_COMMIT -b $MICROBLOG_COMMIT
-    if ! grep -q "GNU Social commit" $COMPLETION_FILE; then
-        echo "GNU Social commit:$MICROBLOG_COMMIT" >> $COMPLETION_FILE
-    else
-        sed -i "s/GNU Social commit.*/GNU Social commit:$MICROBLOG_COMMIT/g" $COMPLETION_FILE
-    fi
-
-    chmod a+w /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
-    chown www-data:www-data /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
-    chmod +x /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/scripts/maildaemon.php
-
-    function_check get_mariadb_gnusocial_admin_password
-    get_mariadb_gnusocial_admin_password
-    if [ ! $MICROBLOG_ADMIN_PASSWORD ]; then
-        if [ -f $IMAGE_PASSWORD_FILE ]; then
-            MICROBLOG_ADMIN_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
-        else
-            MICROBLOG_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
-        fi
-    fi
-
-    function_check create_database
-    create_database gnusocial "$MICROBLOG_ADMIN_PASSWORD" $MY_USERNAME
-
-    if [ ! -f "/etc/aliases" ]; then
-        touch /etc/aliases
-    fi
-    if ! grep -q "www-data: root" /etc/aliases; then
-        echo 'www-data: root' >> /etc/aliases
-    fi
-    if ! grep -q "/var/www/$MICROBLOG_DOMAIN_NAME/htdocs/scripts/maildaemon.php" /etc/aliases; then
-        echo "*: /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/scripts/maildaemon.php" >> /etc/aliases
-    fi
-
-    function_check add_ddns_domain
-    add_ddns_domain $MICROBLOG_DOMAIN_NAME
-
-    microblog_nginx_site=/etc/nginx/sites-available/$MICROBLOG_DOMAIN_NAME
-    if [[ $ONION_ONLY == "no" ]]; then
-        function_check nginx_http_redirect
-        nginx_http_redirect $MICROBLOG_DOMAIN_NAME
-        echo 'server {' >> $microblog_nginx_site
-        echo '  listen 443 ssl;' >> $microblog_nginx_site
-        echo "  server_name $MICROBLOG_DOMAIN_NAME;" >> $microblog_nginx_site
-        echo '' >> $microblog_nginx_site
-        echo '  # Security' >> $microblog_nginx_site
-        function_check nginx_ssl
-        nginx_ssl $MICROBLOG_DOMAIN_NAME
-
-        function_check nginx_disable_sniffing
-        nginx_disable_sniffing $MICROBLOG_DOMAIN_NAME
-
-        function_check nginx_limits
-        nginx_limits $MICROBLOG_DOMAIN_NAME '15m'
-        echo '  add_header Strict-Transport-Security max-age=15768000;' >> $microblog_nginx_site
-        echo '' >> $microblog_nginx_site
-        echo '  # Logs' >> $microblog_nginx_site
-        echo '  access_log off;' >> $microblog_nginx_site
-        echo '  error_log off;' >> $microblog_nginx_site
-        echo '' >> $microblog_nginx_site
-        echo '  # Root' >> $microblog_nginx_site
-        echo "  root /var/www/$MICROBLOG_DOMAIN_NAME/htdocs;" >> $microblog_nginx_site
-        echo '' >> $microblog_nginx_site
-        echo '  # Index' >> $microblog_nginx_site
-        echo '  index index.php;' >> $microblog_nginx_site
-        echo '' >> $microblog_nginx_site
-        echo '  # PHP' >> $microblog_nginx_site
-        echo '  location ~ \.php {' >> $microblog_nginx_site
-        echo '    include snippets/fastcgi-php.conf;' >> $microblog_nginx_site
-        echo '    fastcgi_pass unix:/var/run/php5-fpm.sock;' >> $microblog_nginx_site
-        echo '  }' >> $microblog_nginx_site
-        echo '' >> $microblog_nginx_site
-        echo '  # Location' >> $microblog_nginx_site
-        echo '  location / {' >> $microblog_nginx_site
-        echo '    try_files $uri $uri/ @gnusocial;' >> $microblog_nginx_site
-        echo '  }' >> $microblog_nginx_site
-        echo '' >> $microblog_nginx_site
-        echo '  # Fancy URLs' >> $microblog_nginx_site
-        echo '  location @gnusocial {' >> $microblog_nginx_site
-        echo '    rewrite ^(.*)$ /index.php?p=$1 last;' >> $microblog_nginx_site
-        echo '  }' >> $microblog_nginx_site
-        echo '' >> $microblog_nginx_site
-        echo '  # Restrict access that is unnecessary anyway' >> $microblog_nginx_site
-        echo '  location ~ /\.(ht|git) {' >> $microblog_nginx_site
-        echo '    deny all;' >> $microblog_nginx_site
-        echo '  }' >> $microblog_nginx_site
-        echo '}' >> $microblog_nginx_site
-    else
-        echo -n '' > $microblog_nginx_site
-    fi
-    echo 'server {' >> $microblog_nginx_site
-    echo "    listen 127.0.0.1:$MICROBLOG_ONION_PORT default_server;" >> $microblog_nginx_site
-    echo "    server_name $MICROBLOG_DOMAIN_NAME;" >> $microblog_nginx_site
-    echo '' >> $microblog_nginx_site
-    function_check nginx_disable_sniffing
-    nginx_disable_sniffing $MICROBLOG_DOMAIN_NAME
-    function_check nginx_limits
-    nginx_limits $MICROBLOG_DOMAIN_NAME '15m'
-    echo '' >> $microblog_nginx_site
-    echo '  # Logs' >> $microblog_nginx_site
-    echo '  access_log off;' >> $microblog_nginx_site
-    echo '  error_log off;' >> $microblog_nginx_site
-    echo '' >> $microblog_nginx_site
-    echo '  # Root' >> $microblog_nginx_site
-    echo "  root /var/www/$MICROBLOG_DOMAIN_NAME/htdocs;" >> $microblog_nginx_site
-    echo '' >> $microblog_nginx_site
-    echo '  # Index' >> $microblog_nginx_site
-    echo '  index index.php;' >> $microblog_nginx_site
-    echo '' >> $microblog_nginx_site
-    echo '  # PHP' >> $microblog_nginx_site
-    echo '  location ~ \.php {' >> $microblog_nginx_site
-    echo '    include snippets/fastcgi-php.conf;' >> $microblog_nginx_site
-    echo '    fastcgi_pass unix:/var/run/php5-fpm.sock;' >> $microblog_nginx_site
-    echo '  }' >> $microblog_nginx_site
-    echo '' >> $microblog_nginx_site
-    echo '  # Location' >> $microblog_nginx_site
-    echo '  location / {' >> $microblog_nginx_site
-    echo '    try_files $uri $uri/ @gnusocial;' >> $microblog_nginx_site
-    echo '  }' >> $microblog_nginx_site
-    echo '' >> $microblog_nginx_site
-    echo '  # Fancy URLs' >> $microblog_nginx_site
-    echo '  location @gnusocial {' >> $microblog_nginx_site
-    echo '    rewrite ^(.*)$ /index.php?p=$1 last;' >> $microblog_nginx_site
-    echo '  }' >> $microblog_nginx_site
-    echo '' >> $microblog_nginx_site
-    echo '  # Restrict access that is unnecessary anyway' >> $microblog_nginx_site
-    echo '  location ~ /\.(ht|git) {' >> $microblog_nginx_site
-    echo '    deny all;' >> $microblog_nginx_site
-    echo '  }' >> $microblog_nginx_site
-    echo '}' >> $microblog_nginx_site
-
-    function_check configure_php
-    configure_php
-
-    function_check create_site_certificate
-    create_site_certificate $MICROBLOG_DOMAIN_NAME 'yes'
-
-    # Ensure that the database gets backed up locally, if remote
-    # backups are not being used
-    function_check backup_databases_script_header
-    backup_databases_script_header
-
-    function_check backup_database_local
-    backup_database_local gnusocial
-
-    function_check nginx_ensite
-    nginx_ensite $MICROBLOG_DOMAIN_NAME
-
-    # NOTE: For the typical case always enable SSL and only
-    # disable it if in onion only mode. This is due to complexities
-    # with the way URLs are generated by GNU Social
-    gnusocial_ssl='always'
-    if [[ $ONION_ONLY != 'no' ]]; then
-        gnusocial_ssl='never'
-    fi
-
-    MICROBLOG_ONION_HOSTNAME=$(add_onion_service microblog 80 ${MICROBLOG_ONION_PORT})
-
-    MICROBLOG_SERVER=${MICROBLOG_DOMAIN_NAME}
-    if [[ $ONION_ONLY != 'no' ]]; then
-        MICROBLOG_SERVER=${MICROBLOG_ONION_HOSTNAME}
-    fi
-
-    # Create the configuration
-    gnusocial_installer=/var/www/${MICROBLOG_DOMAIN_NAME}/htdocs/scripts/install_cli.php
-    if [ ! -f $gnusocial_installer ]; then
-        echo $'No GNU Social commandline installer found'
-        exit 53026
-    fi
-    ${gnusocial_installer} --server "${MICROBLOG_SERVER}" \
-                           --host="localhost" --database="gnusocial" \
-                           --dbtype=mysql --username="root" -v \
-                           --password="$MARIADB_PASSWORD" \
-                           --sitename=$"GNU Social" --fancy='yes' \
-                           --admin-nick="$MY_USERNAME" \
-                           --admin-pass="$MICROBLOG_ADMIN_PASSWORD" \
-                           --site-profile="community" \
-                           --ssl=${gnusocial_ssl}
-    # There can be a lot of warnings here so the return value check is disabled
-    #if [ ! "$?" = "0" ]; then
-    #    # failed to install
-    #    echo $'Could not install GNU Social'
-    #    exit 72357
-    #fi
-
-    # check microblog has a config file
-    microblog_config_file=/var/www/$MICROBLOG_DOMAIN_NAME/htdocs/config.php
-    if [ ! -f $microblog_config_file ]; then
-        echo $'Microblog config.php not found'
-        exit 87586
-    fi
-
-    # Some useful settings
-    if ! grep -q "Recommended GNU social settings" $microblog_config_file; then
-        echo "" >> $microblog_config_file
-        echo "// Recommended GNU social settings" >> $microblog_config_file
-        echo "\$config['thumbnail']['maxsize'] = 3000;" >> $microblog_config_file
-        echo "\$config['profile']['delete'] = true;" >> $microblog_config_file
-        echo "\$config['profile']['changenick'] = true;" >> $microblog_config_file
-        echo "\$config['public']['localonly'] = false;" >> $microblog_config_file
-        echo "addPlugin('StoreRemoteMedia');" >> $microblog_config_file
-        echo "\$config['queue']['enabled'] = true;" >> $microblog_config_file
-        echo "\$config['queue']['daemon'] = true;" >> $microblog_config_file
-        echo "\$config['ostatus']['hub_retries'] = 3;" >> $microblog_config_file
-    fi
-
-    # This improves performance
-    sed -i "s|//\$config\['db'\]\['schemacheck'\].*|\$config\['db'\]\['schemacheck'\] = 'script';|g" $microblog_config_file
-
-    systemctl restart php5-fpm
-    systemctl restart nginx
-
-    ${PROJECT_NAME}-addemail -u $MY_USERNAME -e "noreply@$MICROBLOG_DOMAIN_NAME" -g gnusocial --public no
-
-    # some post-install instructions for the user
-    if ! grep -q $"Microblog administrator" /home/$MY_USERNAME/README; then
-        echo '' >> /home/$MY_USERNAME/README
-        echo '' >> /home/$MY_USERNAME/README
-        echo $'Microblog' >> /home/$MY_USERNAME/README
-        echo '=========' >> /home/$MY_USERNAME/README
-        echo $"Microblog administrator nickname: $MY_USERNAME" >> /home/$MY_USERNAME/README
-        echo $"Microblog administrator password: $MICROBLOG_ADMIN_PASSWORD" >> /home/$MY_USERNAME/README
-        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
-        chmod 600 /home/$MY_USERNAME/README
-    fi
-
-    if ! grep -q "Microblog onion domain" /home/$MY_USERNAME/README; then
-        echo $"Microblog onion domain: ${MICROBLOG_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
-        echo '' >> /home/$MY_USERNAME/README
-        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
-        chmod 600 /home/$MY_USERNAME/README
-    fi
-    echo "GNU Social onion domain:${MICROBLOG_ONION_HOSTNAME}" >> $COMPLETION_FILE
-
-    echo "GNU Social domain:$MICROBLOG_DOMAIN_NAME" >> $COMPLETION_FILE
-    echo 'install_gnusocial_main' >> $COMPLETION_FILE
+	if [ ! $MICROBLOG_DOMAIN_NAME ]; then
+		echo $'No domain name was given for the microblog'
+		exit 7359
+	fi
+
+	if grep -Fxq "install_gnusocial_main" $COMPLETION_FILE; then
+		return
+	fi
+
+	function_check gnusocial_running_script
+	gnusocial_running_script
+
+	function_check install_mariadb
+	install_mariadb
+
+	function_check get_mariadb_password
+	get_mariadb_password
+
+	function_check repair_databases_script
+	repair_databases_script
+
+	apt-get -y install php-gettext php5-curl php5-gd php5-mysql git curl php-xml-parser
+	apt-get -y install php5-memcached
+
+	if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME ]; then
+		mkdir /var/www/$MICROBLOG_DOMAIN_NAME
+	fi
+	if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs ]; then
+		function_check git_clone
+		git_clone $MICROBLOG_REPO /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
+		if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs ]; then
+			echo $'Unable to clone gnusocial repo'
+			exit 87525
+		fi
+	fi
+
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
+	git checkout $MICROBLOG_COMMIT -b $MICROBLOG_COMMIT
+	if ! grep -q "GNU Social commit" $COMPLETION_FILE; then
+		echo "GNU Social commit:$MICROBLOG_COMMIT" >> $COMPLETION_FILE
+	else
+		sed -i "s/GNU Social commit.*/GNU Social commit:$MICROBLOG_COMMIT/g" $COMPLETION_FILE
+	fi
+
+	chmod a+w /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
+	chown www-data:www-data /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
+	chmod +x /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/scripts/maildaemon.php
+
+	function_check get_mariadb_gnusocial_admin_password
+	get_mariadb_gnusocial_admin_password
+	if [ ! $MICROBLOG_ADMIN_PASSWORD ]; then
+		if [ -f $IMAGE_PASSWORD_FILE ]; then
+			MICROBLOG_ADMIN_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
+		else
+			MICROBLOG_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
+		fi
+	fi
+
+	function_check create_database
+	create_database gnusocial "$MICROBLOG_ADMIN_PASSWORD" $MY_USERNAME
+
+	if [ ! -f "/etc/aliases" ]; then
+		touch /etc/aliases
+	fi
+	if ! grep -q "www-data: root" /etc/aliases; then
+		echo 'www-data: root' >> /etc/aliases
+	fi
+	if ! grep -q "/var/www/$MICROBLOG_DOMAIN_NAME/htdocs/scripts/maildaemon.php" /etc/aliases; then
+		echo "*: /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/scripts/maildaemon.php" >> /etc/aliases
+	fi
+
+	function_check add_ddns_domain
+	add_ddns_domain $MICROBLOG_DOMAIN_NAME
+
+	microblog_nginx_site=/etc/nginx/sites-available/$MICROBLOG_DOMAIN_NAME
+	if [[ $ONION_ONLY == "no" ]]; then
+		function_check nginx_http_redirect
+		nginx_http_redirect $MICROBLOG_DOMAIN_NAME
+		echo 'server {' >> $microblog_nginx_site
+		echo '  listen 443 ssl;' >> $microblog_nginx_site
+		echo "  server_name $MICROBLOG_DOMAIN_NAME;" >> $microblog_nginx_site
+		echo '' >> $microblog_nginx_site
+		echo '  # Security' >> $microblog_nginx_site
+		function_check nginx_ssl
+		nginx_ssl $MICROBLOG_DOMAIN_NAME
+
+		function_check nginx_disable_sniffing
+		nginx_disable_sniffing $MICROBLOG_DOMAIN_NAME
+
+		function_check nginx_limits
+		nginx_limits $MICROBLOG_DOMAIN_NAME '15m'
+		echo '  add_header Strict-Transport-Security max-age=15768000;' >> $microblog_nginx_site
+		echo '' >> $microblog_nginx_site
+		echo '  # Logs' >> $microblog_nginx_site
+		echo '  access_log off;' >> $microblog_nginx_site
+		echo '  error_log off;' >> $microblog_nginx_site
+		echo '' >> $microblog_nginx_site
+		echo '  # Root' >> $microblog_nginx_site
+		echo "  root /var/www/$MICROBLOG_DOMAIN_NAME/htdocs;" >> $microblog_nginx_site
+		echo '' >> $microblog_nginx_site
+		echo '  # Index' >> $microblog_nginx_site
+		echo '  index index.php;' >> $microblog_nginx_site
+		echo '' >> $microblog_nginx_site
+		echo '  # PHP' >> $microblog_nginx_site
+		echo '  location ~ \.php {' >> $microblog_nginx_site
+		echo '    include snippets/fastcgi-php.conf;' >> $microblog_nginx_site
+		echo '    fastcgi_pass unix:/var/run/php5-fpm.sock;' >> $microblog_nginx_site
+		echo '  }' >> $microblog_nginx_site
+		echo '' >> $microblog_nginx_site
+		echo '  # Location' >> $microblog_nginx_site
+		echo '  location / {' >> $microblog_nginx_site
+		echo '    try_files $uri $uri/ @gnusocial;' >> $microblog_nginx_site
+		echo '  }' >> $microblog_nginx_site
+		echo '' >> $microblog_nginx_site
+		echo '  # Fancy URLs' >> $microblog_nginx_site
+		echo '  location @gnusocial {' >> $microblog_nginx_site
+		echo '    rewrite ^(.*)$ /index.php?p=$1 last;' >> $microblog_nginx_site
+		echo '  }' >> $microblog_nginx_site
+		echo '' >> $microblog_nginx_site
+		echo '  # Restrict access that is unnecessary anyway' >> $microblog_nginx_site
+		echo '  location ~ /\.(ht|git) {' >> $microblog_nginx_site
+		echo '    deny all;' >> $microblog_nginx_site
+		echo '  }' >> $microblog_nginx_site
+		echo '}' >> $microblog_nginx_site
+	else
+		echo -n '' > $microblog_nginx_site
+	fi
+	echo 'server {' >> $microblog_nginx_site
+	echo "    listen 127.0.0.1:$MICROBLOG_ONION_PORT default_server;" >> $microblog_nginx_site
+	echo "    server_name $MICROBLOG_DOMAIN_NAME;" >> $microblog_nginx_site
+	echo '' >> $microblog_nginx_site
+	function_check nginx_disable_sniffing
+	nginx_disable_sniffing $MICROBLOG_DOMAIN_NAME
+	function_check nginx_limits
+	nginx_limits $MICROBLOG_DOMAIN_NAME '15m'
+	echo '' >> $microblog_nginx_site
+	echo '  # Logs' >> $microblog_nginx_site
+	echo '  access_log off;' >> $microblog_nginx_site
+	echo '  error_log off;' >> $microblog_nginx_site
+	echo '' >> $microblog_nginx_site
+	echo '  # Root' >> $microblog_nginx_site
+	echo "  root /var/www/$MICROBLOG_DOMAIN_NAME/htdocs;" >> $microblog_nginx_site
+	echo '' >> $microblog_nginx_site
+	echo '  # Index' >> $microblog_nginx_site
+	echo '  index index.php;' >> $microblog_nginx_site
+	echo '' >> $microblog_nginx_site
+	echo '  # PHP' >> $microblog_nginx_site
+	echo '  location ~ \.php {' >> $microblog_nginx_site
+	echo '    include snippets/fastcgi-php.conf;' >> $microblog_nginx_site
+	echo '    fastcgi_pass unix:/var/run/php5-fpm.sock;' >> $microblog_nginx_site
+	echo '  }' >> $microblog_nginx_site
+	echo '' >> $microblog_nginx_site
+	echo '  # Location' >> $microblog_nginx_site
+	echo '  location / {' >> $microblog_nginx_site
+	echo '    try_files $uri $uri/ @gnusocial;' >> $microblog_nginx_site
+	echo '  }' >> $microblog_nginx_site
+	echo '' >> $microblog_nginx_site
+	echo '  # Fancy URLs' >> $microblog_nginx_site
+	echo '  location @gnusocial {' >> $microblog_nginx_site
+	echo '    rewrite ^(.*)$ /index.php?p=$1 last;' >> $microblog_nginx_site
+	echo '  }' >> $microblog_nginx_site
+	echo '' >> $microblog_nginx_site
+	echo '  # Restrict access that is unnecessary anyway' >> $microblog_nginx_site
+	echo '  location ~ /\.(ht|git) {' >> $microblog_nginx_site
+	echo '    deny all;' >> $microblog_nginx_site
+	echo '  }' >> $microblog_nginx_site
+	echo '}' >> $microblog_nginx_site
+
+	function_check configure_php
+	configure_php
+
+	function_check create_site_certificate
+	create_site_certificate $MICROBLOG_DOMAIN_NAME 'yes'
+
+	# Ensure that the database gets backed up locally, if remote
+	# backups are not being used
+	function_check backup_databases_script_header
+	backup_databases_script_header
+
+	function_check backup_database_local
+	backup_database_local gnusocial
+
+	function_check nginx_ensite
+	nginx_ensite $MICROBLOG_DOMAIN_NAME
+
+	# NOTE: For the typical case always enable SSL and only
+	# disable it if in onion only mode. This is due to complexities
+	# with the way URLs are generated by GNU Social
+	gnusocial_ssl='always'
+	if [[ $ONION_ONLY != 'no' ]]; then
+		gnusocial_ssl='never'
+	fi
+
+	MICROBLOG_ONION_HOSTNAME=$(add_onion_service microblog 80 ${MICROBLOG_ONION_PORT})
+
+	MICROBLOG_SERVER=${MICROBLOG_DOMAIN_NAME}
+	if [[ $ONION_ONLY != 'no' ]]; then
+		MICROBLOG_SERVER=${MICROBLOG_ONION_HOSTNAME}
+	fi
+
+	# Create the configuration
+	gnusocial_installer=/var/www/${MICROBLOG_DOMAIN_NAME}/htdocs/scripts/install_cli.php
+	if [ ! -f $gnusocial_installer ]; then
+		echo $'No GNU Social commandline installer found'
+		exit 53026
+	fi
+	${gnusocial_installer} --server "${MICROBLOG_SERVER}" \
+						   --host="localhost" --database="gnusocial" \
+						   --dbtype=mysql --username="root" -v \
+						   --password="$MARIADB_PASSWORD" \
+						   --sitename=$"GNU Social" --fancy='yes' \
+						   --admin-nick="$MY_USERNAME" \
+						   --admin-pass="$MICROBLOG_ADMIN_PASSWORD" \
+						   --site-profile="community" \
+						   --ssl=${gnusocial_ssl}
+	# There can be a lot of warnings here so the return value check is disabled
+	#if [ ! "$?" = "0" ]; then
+	#    # failed to install
+	#    echo $'Could not install GNU Social'
+	#    exit 72357
+	#fi
+
+	# check microblog has a config file
+	microblog_config_file=/var/www/$MICROBLOG_DOMAIN_NAME/htdocs/config.php
+	if [ ! -f $microblog_config_file ]; then
+		echo $'Microblog config.php not found'
+		exit 87586
+	fi
+
+	# Some useful settings
+	if ! grep -q "Recommended GNU social settings" $microblog_config_file; then
+		echo "" >> $microblog_config_file
+		echo "// Recommended GNU social settings" >> $microblog_config_file
+		echo "\$config['thumbnail']['maxsize'] = 3000;" >> $microblog_config_file
+		echo "\$config['profile']['delete'] = true;" >> $microblog_config_file
+		echo "\$config['profile']['changenick'] = true;" >> $microblog_config_file
+		echo "\$config['public']['localonly'] = false;" >> $microblog_config_file
+		echo "addPlugin('StoreRemoteMedia');" >> $microblog_config_file
+		echo "\$config['queue']['enabled'] = true;" >> $microblog_config_file
+		echo "\$config['queue']['daemon'] = true;" >> $microblog_config_file
+		echo "\$config['ostatus']['hub_retries'] = 3;" >> $microblog_config_file
+	fi
+
+	# This improves performance
+	sed -i "s|//\$config\['db'\]\['schemacheck'\].*|\$config\['db'\]\['schemacheck'\] = 'script';|g" $microblog_config_file
+
+	systemctl restart php5-fpm
+	systemctl restart nginx
+
+	${PROJECT_NAME}-addemail -u $MY_USERNAME -e "noreply@$MICROBLOG_DOMAIN_NAME" -g gnusocial --public no
+
+	# some post-install instructions for the user
+	if ! grep -q $"Microblog administrator" /home/$MY_USERNAME/README; then
+		echo '' >> /home/$MY_USERNAME/README
+		echo '' >> /home/$MY_USERNAME/README
+		echo $'Microblog' >> /home/$MY_USERNAME/README
+		echo '=========' >> /home/$MY_USERNAME/README
+		echo $"Microblog administrator nickname: $MY_USERNAME" >> /home/$MY_USERNAME/README
+		echo $"Microblog administrator password: $MICROBLOG_ADMIN_PASSWORD" >> /home/$MY_USERNAME/README
+		chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
+		chmod 600 /home/$MY_USERNAME/README
+	fi
+
+	if ! grep -q "Microblog onion domain" /home/$MY_USERNAME/README; then
+		echo $"Microblog onion domain: ${MICROBLOG_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
+		echo '' >> /home/$MY_USERNAME/README
+		chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
+		chmod 600 /home/$MY_USERNAME/README
+	fi
+	echo "GNU Social onion domain:${MICROBLOG_ONION_HOSTNAME}" >> $COMPLETION_FILE
+
+	echo "GNU Social domain:$MICROBLOG_DOMAIN_NAME" >> $COMPLETION_FILE
+	echo 'install_gnusocial_main' >> $COMPLETION_FILE
 }
 
 function install_gnusocial_plugin_sharings {
-    if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins ]; then
-        echo $'No local/plugins directory found for the microblog'
-        exit 72945
-    fi
-
-    # update to the next commit
-    function_check set_repo_commit
-    set_repo_commit /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins "GNU Social sharings plugin commit" "$SHARINGS_COMMIT" $SHARINGS_REPO
-
-    if grep -Fxq "install_gnusocial_plugin_sharings" $COMPLETION_FILE; then
-        return
-    fi
-
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins
-    function_check git_clone
-    git_clone $SHARINGS_REPO Sharings
-    if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Sharings ]; then
-        echo $'Unable to clone microblog sharings plugin'
-        exit 36738
-    fi
-
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Sharings
-    git stash
-    git checkout master
-    git branch -D $SHARINGS_COMMIT
-    git checkout $SHARINGS_COMMIT -b $SHARINGS_COMMIT
-
-    # enable the plugin
-    if ! grep -q "addPlugin('Sharings');" /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/config.php; then
-        echo "addPlugin('Sharings');" >> /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/config.php
-    fi
-
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
-    php scripts/checkschema.php
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Sharings
-    php scripts/seedsharings.php
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
-    php scripts/checkschema.php
-
-    # Languages
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Sharings/locale/en/LC_MESSAGES
-    msgfmt -o Sharings.mo Sharings.po
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Sharings/locale/en_GB/LC_MESSAGES
-    msgfmt -o Sharings.mo Sharings.po
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Sharings/locale/en_US/LC_MESSAGES
-    msgfmt -o Sharings.mo Sharings.po
-
-    chown -R www-data:www-data /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
-
-    if ! grep -q "GNU Social sharings plugin commit" $COMPLETION_FILE; then
-        echo "GNU Social sharings plugin commit:$SHARINGS_COMMIT" >> $COMPLETION_FILE
-    else
-        sed -i "s|GNU Social sharings plugin commit.*|GNU Social sharings plugin commit:$SHARINGS_COMMIT|g" $COMPLETION_FILE
-    fi
-    echo 'install_gnusocial_plugin_sharings' >> $COMPLETION_FILE
+	if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins ]; then
+		echo $'No local/plugins directory found for the microblog'
+		exit 72945
+	fi
+
+	# update to the next commit
+	function_check set_repo_commit
+	set_repo_commit /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins "GNU Social sharings plugin commit" "$SHARINGS_COMMIT" $SHARINGS_REPO
+
+	if grep -Fxq "install_gnusocial_plugin_sharings" $COMPLETION_FILE; then
+		return
+	fi
+
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins
+	function_check git_clone
+	git_clone $SHARINGS_REPO Sharings
+	if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Sharings ]; then
+		echo $'Unable to clone microblog sharings plugin'
+		exit 36738
+	fi
+
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Sharings
+	git stash
+	git checkout master
+	git branch -D $SHARINGS_COMMIT
+	git checkout $SHARINGS_COMMIT -b $SHARINGS_COMMIT
+
+	# enable the plugin
+	if ! grep -q "addPlugin('Sharings');" /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/config.php; then
+		echo "addPlugin('Sharings');" >> /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/config.php
+	fi
+
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
+	php scripts/checkschema.php
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Sharings
+	php scripts/seedsharings.php
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
+	php scripts/checkschema.php
+
+	# Languages
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Sharings/locale/en/LC_MESSAGES
+	msgfmt -o Sharings.mo Sharings.po
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Sharings/locale/en_GB/LC_MESSAGES
+	msgfmt -o Sharings.mo Sharings.po
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Sharings/locale/en_US/LC_MESSAGES
+	msgfmt -o Sharings.mo Sharings.po
+
+	chown -R www-data:www-data /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
+
+	if ! grep -q "GNU Social sharings plugin commit" $COMPLETION_FILE; then
+		echo "GNU Social sharings plugin commit:$SHARINGS_COMMIT" >> $COMPLETION_FILE
+	else
+		sed -i "s|GNU Social sharings plugin commit.*|GNU Social sharings plugin commit:$SHARINGS_COMMIT|g" $COMPLETION_FILE
+	fi
+	echo 'install_gnusocial_plugin_sharings' >> $COMPLETION_FILE
 }
 
 function install_gnusocial_plugin_sharings_theme {
-    if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins ]; then
-        echo $'No local/plugins directory found for the microblog'
-        exit 74458
-    fi
-
-    # update to the next commit
-    function_check set_repo_commit
-    set_repo_commit /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins "GNU Social sharings theme plugin commit" "$SHARINGS_THEME_COMMIT" $SHARINGS_THEME_REPO
-
-    if grep -Fxq "install_gnusocial_plugin_sharings_theme" $COMPLETION_FILE; then
-        return
-    fi
-
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins
-    function_check git_clone
-    git_clone $SHARINGS_THEME_REPO SharingsTheme
-    if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/SharingsTheme ]; then
-        echo $'Unable to clone microblog sharings plugin theme'
-        exit 639253
-    fi
-
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/SharingsTheme
-    git stash
-    git checkout master
-    git branch -D $SHARINGS_THEME_COMMIT
-    git checkout $SHARINGS_THEME_COMMIT -b $SHARINGS_THEME_COMMIT
-
-    # enable the plugin
-    if ! grep -q "addPlugin('SharingsTheme');" /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/config.php; then
-        echo "addPlugin('SharingsTheme');" >> /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/config.php
-    fi
-
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
-    php scripts/checkschema.php
-
-    chown -R www-data:www-data /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
-
-    if ! grep -q "GNU Social sharings plugin theme commit" $COMPLETION_FILE; then
-        echo "GNU Social sharings plugin theme commit:$SHARINGS_THEME_COMMIT" >> $COMPLETION_FILE
-    else
-        sed -i "s|GNU Social sharings plugin theme commit.*|GNU Social sharings plugin theme commit:$SHARINGS_THEME_COMMIT|g" $COMPLETION_FILE
-    fi
-    echo 'install_gnusocial_plugin_sharings_theme' >> $COMPLETION_FILE
+	if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins ]; then
+		echo $'No local/plugins directory found for the microblog'
+		exit 74458
+	fi
+
+	# update to the next commit
+	function_check set_repo_commit
+	set_repo_commit /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins "GNU Social sharings theme plugin commit" "$SHARINGS_THEME_COMMIT" $SHARINGS_THEME_REPO
+
+	if grep -Fxq "install_gnusocial_plugin_sharings_theme" $COMPLETION_FILE; then
+		return
+	fi
+
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins
+	function_check git_clone
+	git_clone $SHARINGS_THEME_REPO SharingsTheme
+	if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/SharingsTheme ]; then
+		echo $'Unable to clone microblog sharings plugin theme'
+		exit 639253
+	fi
+
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/SharingsTheme
+	git stash
+	git checkout master
+	git branch -D $SHARINGS_THEME_COMMIT
+	git checkout $SHARINGS_THEME_COMMIT -b $SHARINGS_THEME_COMMIT
+
+	# enable the plugin
+	if ! grep -q "addPlugin('SharingsTheme');" /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/config.php; then
+		echo "addPlugin('SharingsTheme');" >> /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/config.php
+	fi
+
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
+	php scripts/checkschema.php
+
+	chown -R www-data:www-data /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
+
+	if ! grep -q "GNU Social sharings plugin theme commit" $COMPLETION_FILE; then
+		echo "GNU Social sharings plugin theme commit:$SHARINGS_THEME_COMMIT" >> $COMPLETION_FILE
+	else
+		sed -i "s|GNU Social sharings plugin theme commit.*|GNU Social sharings plugin theme commit:$SHARINGS_THEME_COMMIT|g" $COMPLETION_FILE
+	fi
+	echo 'install_gnusocial_plugin_sharings_theme' >> $COMPLETION_FILE
 }
 
 function expire_gnusocial_posts {
-    # To prevent the database size from growing endlessly this script expires posts
-    # after a number of months
-    if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs ]; then
-        return
-    fi
-
-    gnusocial_expire_script=/usr/bin/gnusocial-expire
-
-    echo '<?php' > $gnusocial_expire_script
-    echo '' >> $gnusocial_expire_script
-    echo '// GNU Social post expiry script, based on StatExpire by Tony Baldwin' >> $gnusocial_expire_script
-    echo '// https://github.com/tonybaldwin/statexpire' >> $gnusocial_expire_script
-    echo '' >> $gnusocial_expire_script
-    echo '$oldate=date(("Y-m-d"), strtotime("-3 months"));' >> $gnusocial_expire_script
-    echo '$username="root";' >> $gnusocial_expire_script
-    echo "\$password=trim(file_get_contents(\"$DATABASE_PASSWORD_FILE\"));" >> $gnusocial_expire_script
-    echo '$database="gnusocial";' >> $gnusocial_expire_script
-    echo '' >> $gnusocial_expire_script
-    echo 'if (!$link = mysql_connect("localhost", $username, $password)) {' >> $gnusocial_expire_script
-    echo '    echo "Could not connect to mariadb";' >> $gnusocial_expire_script
-    echo '    exit;' >> $gnusocial_expire_script
-    echo '}' >> $gnusocial_expire_script
-    echo '' >> $gnusocial_expire_script
-    echo 'if (!mysql_select_db($database, $link)) {' >> $gnusocial_expire_script
-    echo '    echo "Could not select gnusocial database";' >> $gnusocial_expire_script
-    echo '    exit;' >> $gnusocial_expire_script
-    echo '}' >> $gnusocial_expire_script
-    echo '' >> $gnusocial_expire_script
-    echo "\$notice_query=\"DELETE FROM notice WHERE created <= '\$oldate 01:01:01'\";" >> $gnusocial_expire_script
-    echo "\$conversation_query=\"DELETE FROM conversation WHERE created <= '$oldate 01:01:01'\";" >> $gnusocial_expire_script
-    echo "\$reply_query=\"DELETE FROM reply WHERE modified <= '\$oldate 01:01:01'\";" >> $gnusocial_expire_script
-    echo '' >> $gnusocial_expire_script
-    echo 'mysql_query($notice_query);' >> $gnusocial_expire_script
-    echo '$rowaff1=mysql_affected_rows();' >> $gnusocial_expire_script
-    echo 'mysql_query($conversation_query);' >> $gnusocial_expire_script
-    echo '$rowaff2=mysql_affected_rows();' >> $gnusocial_expire_script
-    echo 'mysql_query($reply_query);' >> $gnusocial_expire_script
-    echo '$rowaff3=mysql_affected_rows();' >> $gnusocial_expire_script
-    echo 'mysql_close();' >> $gnusocial_expire_script
-    echo '' >> $gnusocial_expire_script
-    echo 'echo "Expire GNU Social posts: $rowaff1 notices, $rowaff2 conversations, and $rowaff3 replies deleted from database.\n";' >> $gnusocial_expire_script
-    chmod +x $gnusocial_expire_script
-
-    # Add a cron job
-    if ! grep -q "$gnusocial_expire_script" /etc/crontab; then
-        echo "10 3 5   *   *   root /usr/bin/timeout 500 /usr/bin/php $gnusocial_expire_script" >> /etc/crontab
-    fi
-
-    # remove old expire script
-    if [ -f /etc/cron.weekly/clear-microblog-database ]; then
-        rm /etc/cron.weekly/clear-microblog-database
-    fi
+	# To prevent the database size from growing endlessly this script expires posts
+	# after a number of months
+	if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs ]; then
+		return
+	fi
+
+	gnusocial_expire_script=/usr/bin/gnusocial-expire
+
+	echo '<?php' > $gnusocial_expire_script
+	echo '' >> $gnusocial_expire_script
+	echo '// GNU Social post expiry script, based on StatExpire by Tony Baldwin' >> $gnusocial_expire_script
+	echo '// https://github.com/tonybaldwin/statexpire' >> $gnusocial_expire_script
+	echo '' >> $gnusocial_expire_script
+	echo '$oldate=date(("Y-m-d"), strtotime("-3 months"));' >> $gnusocial_expire_script
+	echo '$username="root";' >> $gnusocial_expire_script
+	echo "\$password=trim(file_get_contents(\"$DATABASE_PASSWORD_FILE\"));" >> $gnusocial_expire_script
+	echo '$database="gnusocial";' >> $gnusocial_expire_script
+	echo '' >> $gnusocial_expire_script
+	echo 'if (!$link = mysql_connect("localhost", $username, $password)) {' >> $gnusocial_expire_script
+	echo '    echo "Could not connect to mariadb";' >> $gnusocial_expire_script
+	echo '    exit;' >> $gnusocial_expire_script
+	echo '}' >> $gnusocial_expire_script
+	echo '' >> $gnusocial_expire_script
+	echo 'if (!mysql_select_db($database, $link)) {' >> $gnusocial_expire_script
+	echo '    echo "Could not select gnusocial database";' >> $gnusocial_expire_script
+	echo '    exit;' >> $gnusocial_expire_script
+	echo '}' >> $gnusocial_expire_script
+	echo '' >> $gnusocial_expire_script
+	echo "\$notice_query=\"DELETE FROM notice WHERE created <= '\$oldate 01:01:01'\";" >> $gnusocial_expire_script
+	echo "\$conversation_query=\"DELETE FROM conversation WHERE created <= '$oldate 01:01:01'\";" >> $gnusocial_expire_script
+	echo "\$reply_query=\"DELETE FROM reply WHERE modified <= '\$oldate 01:01:01'\";" >> $gnusocial_expire_script
+	echo '' >> $gnusocial_expire_script
+	echo 'mysql_query($notice_query);' >> $gnusocial_expire_script
+	echo '$rowaff1=mysql_affected_rows();' >> $gnusocial_expire_script
+	echo 'mysql_query($conversation_query);' >> $gnusocial_expire_script
+	echo '$rowaff2=mysql_affected_rows();' >> $gnusocial_expire_script
+	echo 'mysql_query($reply_query);' >> $gnusocial_expire_script
+	echo '$rowaff3=mysql_affected_rows();' >> $gnusocial_expire_script
+	echo 'mysql_close();' >> $gnusocial_expire_script
+	echo '' >> $gnusocial_expire_script
+	echo 'echo "Expire GNU Social posts: $rowaff1 notices, $rowaff2 conversations, and $rowaff3 replies deleted from database.\n";' >> $gnusocial_expire_script
+	chmod +x $gnusocial_expire_script
+
+	# Add a cron job
+	if ! grep -q "$gnusocial_expire_script" /etc/crontab; then
+		echo "10 3 5   *   *   root /usr/bin/timeout 500 /usr/bin/php $gnusocial_expire_script" >> /etc/crontab
+	fi
+
+	# remove old expire script
+	if [ -f /etc/cron.weekly/clear-microblog-database ]; then
+		rm /etc/cron.weekly/clear-microblog-database
+	fi
 }
 
 function install_gnusocial_theme {
-    # update to the next commit
-    function_check set_repo_commit
-    set_repo_commit /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Qvitter "GNU Social theme commit" "$MICROBLOG_THEME_COMMIT" $MICROBLOG_THEME_REPO
-
-    # customise with project logo
-    if [ -f /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Qvitter/img/sprite.png ]; then
-        if [ -f ~/freedombone/img/gnusocial_sprite.png ]; then
-            cp ~/freedombone/img/gnusocial_sprite.png /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Qvitter/img/sprite.png
-        fi
-    fi
-
-    if grep -Fxq "install_gnusocial_theme" $COMPLETION_FILE; then
-        return
-    fi
-
-    apt-get -y install wget
-
-    if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins ]; then
-        mkdir -p /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins
-    fi
-
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins
-    function_check git_clone
-    git_clone $MICROBLOG_THEME_REPO Qvitter
-    cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Qvitter
-    git checkout $MICROBLOG_THEME_COMMIT -b $MICROBLOG_THEME_COMMIT
-
-    # download a custom background image
-    MICROBLOG_BACKGROUND_IMAGE_URL_EXT=
-    if [ $MICROBLOG_BACKGROUND_IMAGE_URL ]; then
-        if [[ $$MICROBLOG_BACKGROUND_IMAGE_URL == *".jpeg" || $$MICROBLOG_BACKGROUND_IMAGE_URL == *".jpg" ]]; then
-            MICROBLOG_BACKGROUND_IMAGE_URL_EXT="jpg"
-        fi
-        if [[ $$MICROBLOG_BACKGROUND_IMAGE_URL == *".png" ]]; then
-            MICROBLOG_BACKGROUND_IMAGE_URL_EXT="png"
-        fi
-        if [[ $$MICROBLOG_BACKGROUND_IMAGE_URL == *".gif" ]]; then
-            MICROBLOG_BACKGROUND_IMAGE_URL_EXT="gif"
-        fi
-        if [ $MICROBLOG_BACKGROUND_IMAGE_URL_EXT ]; then
-            wget $MICROBLOG_BACKGROUND_IMAGE_URL -O img/custom.${MICROBLOG_BACKGROUND_IMAGE_URL_EXT}
-            if [ ! -f img/custom.${MICROBLOG_BACKGROUND_IMAGE_URL_EXT} ]; then
-                echo "$MICROBLOG_BACKGROUND_IMAGE_URL"
-                echo $'Custom background image for microblog could not be downloaded'
-                exit 87524
-            fi
-        fi
-    fi
-
-    microblog_config_file=/var/www/$MICROBLOG_DOMAIN_NAME/htdocs/config.php
-    if ! grep -q "addPlugin('Qvitter')" $microblog_config_file; then
-        MICROBLOG_WELCOME_MESSAGE=$(echo $MICROBLOG_WELCOME_MESSAGE | sed "s|\$MICROBLOG_DOMAIN_NAME|$MICROBLOG_DOMAIN_NAME|g")
-        echo "" >> $microblog_config_file
-        echo "// Qvitter settings" >> $microblog_config_file
-        echo "addPlugin('Qvitter');" >> $microblog_config_file
-        echo "\$config['site']['qvitter']['enabledbydefault'] = true;" >> $microblog_config_file
-        echo "\$config['site']['qvitter']['defaultbackgroundcolor'] = '#f4f4f4';" >> $microblog_config_file
-        echo "\$config['site']['qvitter']['defaultlinkcolor'] = '#0084B4';" >> $microblog_config_file
-        echo "\$config['site']['qvitter']['timebetweenpolling'] = 30000; // 30 secs" >> $microblog_config_file
-        echo "\$config['site']['qvitter']['urlshortenerapiurl'] = 'http://qttr.at/shortener.php';" >> $microblog_config_file
-        echo "\$config['site']['qvitter']['urlshortenersignature'] = 'b6afeec983';" >> $microblog_config_file
-        if [ $MICROBLOG_BACKGROUND_IMAGE_URL ]; then
-            echo "\$config['site']['qvitter']['sitebackground'] = 'img/custom.${MICROBLOG_BACKGROUND_IMAGE_URL_EXT}';" >> $microblog_config_file
-        else
-            echo "\$config['site']['qvitter']['sitebackground'] = 'img/vagnsmossen.jpg';" >> $microblog_config_file
-        fi
-        echo "\$config['site']['qvitter']['favicon'] = 'img/favicon.ico?v=4';" >> $microblog_config_file
-        echo "\$config['site']['qvitter']['sprite'] = Plugin::staticPath('Qvitter', '').'img/sprite.png?v=40';" >> $microblog_config_file
-        echo "\$config['site']['qvitter']['enablewelcometext'] = true;" >> $microblog_config_file
-        echo "\$config['site']['qvitter']['customwelcometext']['en'] = '$MICROBLOG_WELCOME_MESSAGE';" >> $microblog_config_file
-        echo "\$config['site']['qvitter']['customwelcometext']['de'] = '$MICROBLOG_WELCOME_MESSAGE';" >> $microblog_config_file
-        echo "\$config['site']['qvitter']['customwelcometext']['fr'] = '$MICROBLOG_WELCOME_MESSAGE';" >> $microblog_config_file
-        echo "\$config['site']['qvitter']['customwelcometext']['es'] = '$MICROBLOG_WELCOME_MESSAGE';" >> $microblog_config_file
-        echo "\$config['site']['qvitter']['blocked_ips'] = array();" >> $microblog_config_file
-    else
-        if [ $MICROBLOG_BACKGROUND_IMAGE_URL_EXT ]; then
-            if [ -f img/custom.${MICROBLOG_BACKGROUND_IMAGE_URL_EXT} ]; then
-                sed -i "s|\$config['site']['qvitter']['sitebackground'].*|\$config['site']['qvitter']['sitebackground'] = 'img/custom.${MICROBLOG_BACKGROUND_IMAGE_URL_EXT}';|g" $microblog_config_file
-            fi
-        fi
-    fi
-
-    # customise with project logo
-    if [ -f /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Qvitter/img/sprite.png ]; then
-        if [ -f ~/freedombone/img/gnusocial_sprite.png ]; then
-            cp ~/freedombone/img/gnusocial_sprite.png /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Qvitter/img/sprite.png
-        fi
-    fi
-
-    if ! grep -q "GNU Social theme commit" $COMPLETION_FILE; then
-        echo "GNU Social theme commit:$MICROBLOG_THEME_COMMIT" >> $COMPLETION_FILE
-    fi
-
-    chown -R www-data:www-data /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
-
-    echo 'install_gnusocial_theme' >> $COMPLETION_FILE
+	# update to the next commit
+	function_check set_repo_commit
+	set_repo_commit /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Qvitter "GNU Social theme commit" "$MICROBLOG_THEME_COMMIT" $MICROBLOG_THEME_REPO
+
+	# customise with project logo
+	if [ -f /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Qvitter/img/sprite.png ]; then
+		if [ -f ~/freedombone/img/gnusocial_sprite.png ]; then
+			cp ~/freedombone/img/gnusocial_sprite.png /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Qvitter/img/sprite.png
+		fi
+	fi
+
+	if grep -Fxq "install_gnusocial_theme" $COMPLETION_FILE; then
+		return
+	fi
+
+	apt-get -y install wget
+
+	if [ ! -d /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins ]; then
+		mkdir -p /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins
+	fi
+
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins
+	function_check git_clone
+	git_clone $MICROBLOG_THEME_REPO Qvitter
+	cd /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Qvitter
+	git checkout $MICROBLOG_THEME_COMMIT -b $MICROBLOG_THEME_COMMIT
+
+	# download a custom background image
+	MICROBLOG_BACKGROUND_IMAGE_URL_EXT=
+	if [ $MICROBLOG_BACKGROUND_IMAGE_URL ]; then
+		if [[ $$MICROBLOG_BACKGROUND_IMAGE_URL == *".jpeg" || $$MICROBLOG_BACKGROUND_IMAGE_URL == *".jpg" ]]; then
+			MICROBLOG_BACKGROUND_IMAGE_URL_EXT="jpg"
+		fi
+		if [[ $$MICROBLOG_BACKGROUND_IMAGE_URL == *".png" ]]; then
+			MICROBLOG_BACKGROUND_IMAGE_URL_EXT="png"
+		fi
+		if [[ $$MICROBLOG_BACKGROUND_IMAGE_URL == *".gif" ]]; then
+			MICROBLOG_BACKGROUND_IMAGE_URL_EXT="gif"
+		fi
+		if [ $MICROBLOG_BACKGROUND_IMAGE_URL_EXT ]; then
+			wget $MICROBLOG_BACKGROUND_IMAGE_URL -O img/custom.${MICROBLOG_BACKGROUND_IMAGE_URL_EXT}
+			if [ ! -f img/custom.${MICROBLOG_BACKGROUND_IMAGE_URL_EXT} ]; then
+				echo "$MICROBLOG_BACKGROUND_IMAGE_URL"
+				echo $'Custom background image for microblog could not be downloaded'
+				exit 87524
+			fi
+		fi
+	fi
+
+	microblog_config_file=/var/www/$MICROBLOG_DOMAIN_NAME/htdocs/config.php
+	if ! grep -q "addPlugin('Qvitter')" $microblog_config_file; then
+		MICROBLOG_WELCOME_MESSAGE=$(echo $MICROBLOG_WELCOME_MESSAGE | sed "s|\$MICROBLOG_DOMAIN_NAME|$MICROBLOG_DOMAIN_NAME|g")
+		echo "" >> $microblog_config_file
+		echo "// Qvitter settings" >> $microblog_config_file
+		echo "addPlugin('Qvitter');" >> $microblog_config_file
+		echo "\$config['site']['qvitter']['enabledbydefault'] = true;" >> $microblog_config_file
+		echo "\$config['site']['qvitter']['defaultbackgroundcolor'] = '#f4f4f4';" >> $microblog_config_file
+		echo "\$config['site']['qvitter']['defaultlinkcolor'] = '#0084B4';" >> $microblog_config_file
+		echo "\$config['site']['qvitter']['timebetweenpolling'] = 30000; // 30 secs" >> $microblog_config_file
+		echo "\$config['site']['qvitter']['urlshortenerapiurl'] = 'http://qttr.at/shortener.php';" >> $microblog_config_file
+		echo "\$config['site']['qvitter']['urlshortenersignature'] = 'b6afeec983';" >> $microblog_config_file
+		if [ $MICROBLOG_BACKGROUND_IMAGE_URL ]; then
+			echo "\$config['site']['qvitter']['sitebackground'] = 'img/custom.${MICROBLOG_BACKGROUND_IMAGE_URL_EXT}';" >> $microblog_config_file
+		else
+			echo "\$config['site']['qvitter']['sitebackground'] = 'img/vagnsmossen.jpg';" >> $microblog_config_file
+		fi
+		echo "\$config['site']['qvitter']['favicon'] = 'img/favicon.ico?v=4';" >> $microblog_config_file
+		echo "\$config['site']['qvitter']['sprite'] = Plugin::staticPath('Qvitter', '').'img/sprite.png?v=40';" >> $microblog_config_file
+		echo "\$config['site']['qvitter']['enablewelcometext'] = true;" >> $microblog_config_file
+		echo "\$config['site']['qvitter']['customwelcometext']['en'] = '$MICROBLOG_WELCOME_MESSAGE';" >> $microblog_config_file
+		echo "\$config['site']['qvitter']['customwelcometext']['de'] = '$MICROBLOG_WELCOME_MESSAGE';" >> $microblog_config_file
+		echo "\$config['site']['qvitter']['customwelcometext']['fr'] = '$MICROBLOG_WELCOME_MESSAGE';" >> $microblog_config_file
+		echo "\$config['site']['qvitter']['customwelcometext']['es'] = '$MICROBLOG_WELCOME_MESSAGE';" >> $microblog_config_file
+		echo "\$config['site']['qvitter']['blocked_ips'] = array();" >> $microblog_config_file
+	else
+		if [ $MICROBLOG_BACKGROUND_IMAGE_URL_EXT ]; then
+			if [ -f img/custom.${MICROBLOG_BACKGROUND_IMAGE_URL_EXT} ]; then
+				sed -i "s|\$config['site']['qvitter']['sitebackground'].*|\$config['site']['qvitter']['sitebackground'] = 'img/custom.${MICROBLOG_BACKGROUND_IMAGE_URL_EXT}';|g" $microblog_config_file
+			fi
+		fi
+	fi
+
+	# customise with project logo
+	if [ -f /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Qvitter/img/sprite.png ]; then
+		if [ -f ~/freedombone/img/gnusocial_sprite.png ]; then
+			cp ~/freedombone/img/gnusocial_sprite.png /var/www/$MICROBLOG_DOMAIN_NAME/htdocs/local/plugins/Qvitter/img/sprite.png
+		fi
+	fi
+
+	if ! grep -q "GNU Social theme commit" $COMPLETION_FILE; then
+		echo "GNU Social theme commit:$MICROBLOG_THEME_COMMIT" >> $COMPLETION_FILE
+	fi
+
+	chown -R www-data:www-data /var/www/$MICROBLOG_DOMAIN_NAME/htdocs
+
+	echo 'install_gnusocial_theme' >> $COMPLETION_FILE
 }
 
 function install_gnusocial_markdown {
-    MICROBLOG_PATH=/var/www/$MICROBLOG_DOMAIN_NAME/htdocs
+	MICROBLOG_PATH=/var/www/$MICROBLOG_DOMAIN_NAME/htdocs
 
-    # update to the next commit
-    function_check set_repo_commit
-    set_repo_commit $MICROBLOG_PATH/local/plugins/Markdown "GNU Social Markdown commit" "$MICROBLOG_MARKDOWN_COMMIT" $MICROBLOG_MARKDOWN_REPO
+	# update to the next commit
+	function_check set_repo_commit
+	set_repo_commit $MICROBLOG_PATH/local/plugins/Markdown "GNU Social Markdown commit" "$MICROBLOG_MARKDOWN_COMMIT" $MICROBLOG_MARKDOWN_REPO
 
-    if grep -Fxq "install_gnusocial_markdown" $COMPLETION_FILE; then
-        return
-    fi
+	if grep -Fxq "install_gnusocial_markdown" $COMPLETION_FILE; then
+		return
+	fi
 
-    if [ -d $MICROBLOG_PATH/local/plugins/Markdown ]; then
-        rm -rf $MICROBLOG_PATH/local/plugins/Markdown
-    fi
+	if [ -d $MICROBLOG_PATH/local/plugins/Markdown ]; then
+		rm -rf $MICROBLOG_PATH/local/plugins/Markdown
+	fi
 
-    if [ ! -d $MICROBLOG_PATH/local/plugins ]; then
-        mkdir -p $MICROBLOG_PATH/local/plugins
-    fi
+	if [ ! -d $MICROBLOG_PATH/local/plugins ]; then
+		mkdir -p $MICROBLOG_PATH/local/plugins
+	fi
 
-    cd $MICROBLOG_PATH/local/plugins
-    function_check git_clone
-    git_clone $MICROBLOG_MARKDOWN_REPO Markdown
-    cd $MICROBLOG_PATH/local/plugins/Markdown
-    git checkout $MICROBLOG_MARKDOWN_COMMIT -b $MICROBLOG_MARKDOWN_COMMIT
+	cd $MICROBLOG_PATH/local/plugins
+	function_check git_clone
+	git_clone $MICROBLOG_MARKDOWN_REPO Markdown
+	cd $MICROBLOG_PATH/local/plugins/Markdown
+	git checkout $MICROBLOG_MARKDOWN_COMMIT -b $MICROBLOG_MARKDOWN_COMMIT
 
-    microblog_config_file=$MICROBLOG_PATH/config.php
-    if ! grep -q "addPlugin('Markdown'" $microblog_config_file; then
-        echo "" >> $microblog_config_file
-        echo "// Markdown settings" >> $microblog_config_file
-        echo "addPlugin('Markdown');" >> $microblog_config_file
-    fi
+	microblog_config_file=$MICROBLOG_PATH/config.php
+	if ! grep -q "addPlugin('Markdown'" $microblog_config_file; then
+		echo "" >> $microblog_config_file
+		echo "// Markdown settings" >> $microblog_config_file
+		echo "addPlugin('Markdown');" >> $microblog_config_file
+	fi
 
-    if ! grep -q "GNU Social Markdown commit" $COMPLETION_FILE; then
-        echo "GNU Social Markdown commit:$MICROBLOG_MARKDOWN_COMMIT" >> $COMPLETION_FILE
-    fi
+	if ! grep -q "GNU Social Markdown commit" $COMPLETION_FILE; then
+		echo "GNU Social Markdown commit:$MICROBLOG_MARKDOWN_COMMIT" >> $COMPLETION_FILE
+	fi
 
-    chown -R www-data:www-data $MICROBLOG_PATH
+	chown -R www-data:www-data $MICROBLOG_PATH
 
-    echo 'install_gnusocial_markdown' >> $COMPLETION_FILE
+	echo 'install_gnusocial_markdown' >> $COMPLETION_FILE
 }
 
 function install_gnusocial {
-    if grep -Fxq "install_gnusocial" $COMPLETION_FILE; then
-        return
-    fi
-    install_gnusocial_main
-    expire_gnusocial_posts
-    install_gnusocial_theme
-    install_gnusocial_markdown
-    install_gnusocial_plugin_sharings
-    install_gnusocial_plugin_sharings_theme
-    echo 'install_gnusocial' >> $COMPLETION_FILE
+	if grep -Fxq "install_gnusocial" $COMPLETION_FILE; then
+		return
+	fi
+	install_gnusocial_main
+	expire_gnusocial_posts
+	install_gnusocial_theme
+	install_gnusocial_markdown
+	install_gnusocial_plugin_sharings
+	install_gnusocial_plugin_sharings_theme
+	echo 'install_gnusocial' >> $COMPLETION_FILE
 }
 
 # NOTE: deliberately there is no "exit 0"
diff --git a/src/freedombone-app-gogs b/src/freedombone-app-gogs
index f4944f857..7eddbe41e 100755
--- a/src/freedombone-app-gogs
+++ b/src/freedombone-app-gogs
@@ -56,11 +56,10 @@ function backup_local_gogs {
 
 			echo $"Backing up gogs"
 
-			function_check backup_database_local
-			backup_database_local gogs
+			function_check backup_database_to_usb
+			backup_database_to_usb gogs
 
 			function_check backup_directory_to_usb
-			backup_directory_to_usb /root/tempgogsdata gogsdata
 			backup_directory_to_usb $GOPATH/src/github.com/gogits/gogs/custom gogs
 			backup_directory_to_usb /home/git/gogs-repositories gogsrepos
 			backup_directory_to_usb /home/git/.ssh gogsssh
diff --git a/src/freedombone-app-hubzilla b/src/freedombone-app-hubzilla
index 18523b249..1d1faca75 100755
--- a/src/freedombone-app-hubzilla
+++ b/src/freedombone-app-hubzilla
@@ -66,11 +66,9 @@ function backup_local_hubzilla {
 			HUBZILLA_DOMAIN_NAME='hubzilla'
 			HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
 
-			function_check backup_database_local
-			backup_database_local hubzilla
+			function_check backup_database_to_usb
+			backup_database_to_usb hubzilla
 
-			function_check backup_directory_to_usb
-			backup_directory_to_usb /root/temphubzilladata hubzilladata
 			backup_directory_to_usb /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs hubzilla
 
 			echo $"Hubzilla backup complete"
diff --git a/src/freedombone-app-rss b/src/freedombone-app-rss
index 77e5736f2..e3f26ab52 100755
--- a/src/freedombone-app-rss
+++ b/src/freedombone-app-rss
@@ -87,11 +87,9 @@ function backup_local_rss {
 
 			echo $"Backing up ttrss"
 
-			function_check backup_database_local
-			backup_database_local ttrss
+			function_check backup_database_to_usb
+			backup_database_to_usb ttrss
 
-			function_check backup_directory_to_usb
-			backup_directory_to_usb /root/tempttrssdata ttrssdata
 			backup_directory_to_usb /etc/share/tt-rss ttrss
 
 			echo $"ttrss backup complete"
diff --git a/src/freedombone-app-searx b/src/freedombone-app-searx
index 0a7ff61b4..a201b1914 100755
--- a/src/freedombone-app-searx
+++ b/src/freedombone-app-searx
@@ -64,11 +64,11 @@ function upgrade_searx {
 }
 
 function backup_local_searx {
-	echo ''
+	echo -n ''
 }
 
 function backup_remote_searx {
-	echo ''
+	echo -n ''
 }
 
 function remove_searx {
diff --git a/src/freedombone-app-sip b/src/freedombone-app-sip
index 0f94c97a4..c3d1eba3a 100755
--- a/src/freedombone-app-sip
+++ b/src/freedombone-app-sip
@@ -38,15 +38,15 @@ VOIP_TURN_TLS_PORT=5349
 VOIP_TURN_NONCE=
 
 function upgrade_sip {
-    echo ''
+    echo -n ''
 }
 
 function backup_local_sip {
-	echo ''
+	echo -n ''
 }
 
 function backup_remote_sip {
-	echo ''
+	echo -n ''
 }
 
 function remove_sip {
diff --git a/src/freedombone-app-syncthing b/src/freedombone-app-syncthing
index 2fcf5d315..78737524c 100755
--- a/src/freedombone-app-syncthing
+++ b/src/freedombone-app-syncthing
@@ -40,15 +40,15 @@ SYNCTHING_SHARED_DATA=/var/lib/syncthing/SyncShared
 SYNCTHING_USER_IDS_FILE='.syncthingids'
 
 function upgrade_syncthing {
-    echo ''
+    echo -n ''
 }
 
 function backup_local_syncthing {
-    echo ''
+    echo -n ''
 }
 
 function backup_remote_syncthing {
-    echo ''
+    echo -n ''
 }
 
 function remove_syncthing {
diff --git a/src/freedombone-utils-backup b/src/freedombone-utils-backup
index 4ebb5cd7d..3236b210a 100755
--- a/src/freedombone-utils-backup
+++ b/src/freedombone-utils-backup
@@ -261,4 +261,10 @@ function backup_directory_to_usb {
 	fi
 }
 
+function backup_database_to_usb {
+	database_name=$1
+	backup_database_local $database_name
+	backup_directory_to_usb /root/temp${database_name}data ${database_name}data
+}
+
 # NOTE: deliberately no exit 0
-- 
GitLab