# Hubzilla at Home next to your Router

Run hubzilla-setup.sh for an unattended installation of hubzilla.

The script is known to work with Debian stable (Jessie).

# Step-by-Step Overwiew

## Preconditions

Hardware

+ Internet connection and router at home
+ Mini-pc connected to your router
+ USB drive for backups

Software

+ Fresh installation of Debian on your mini-pc
+ Router with open ports 80 and 443 for your Debian

## The basic steps

+ Register your own domain (for example at selfHOST) or a free subdomain (for example at freeDNS)
+ Clone hubzilla to /var/www/html
+ Copy hubzilla-config.txt and hubzilla-setup.sh to your Debian (future hub)
+ Edit hubzilla-config.txt. Enter your values there: db pass, domain, values for dyn DNS
+ Run hubzilla-setup.sh as root ... wait, wait, wait until the script is finised
+ Open your domain with a browser and step throught the initial configuration of hubzilla.

# Step-by-Step in Detail

## Preparations Hardware

### Mini-PC

### Recommended: USB Drive for Backups

The installation will create a daily backup.

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 an encrpyted filesystem LUKS + ext4.

## Preparations Software

### Install Debian Linux on the Mini-PC

Download the stable Debian at https://www.debian.org/

Create bootable USB drive with Debian on it. You could use the programm
unetbootin, https://en.wikipedia.org/wiki/UNetbootin

Switch of your mini pc, plug in your USB drive and start the mini pc from the
stick. Install Debian. Follow the instructions of the installation.

### Configure your Router

Open the ports 80 and 443 on your router for your Debian

## Preparations Dynamic IP Address

Your Hubzilla must be reachable by a domain that you can type in your browser

    cooldomain.org

You can use subdomains as well

    my.cooldomain.org

There are two way to get a domain

- buy a domain (recommended) or
- register a free subdomain

### Method 1: Get yourself an own Domain (recommended)

### Method 2 Register a (free) Subdomain

Register a free subdomain for example at

- freeDNS
- selfHOST

WATCH THIS: A free subdomain is not the prefered way to get a domain name. Why?

Let's encrpyt issues a limited number of certificates each
day. Possibly other users of this domain will try to issue a certificate
at the same day as you do. So make sure you choose a domain with as less subdomains as
possible.

## Install Hubzilla on your Debian

Login to your debian
(Provided your username is "you" and the name of the mini pc is "debian". You
could take the IP address instead of "debian")

    ssh -X you@debian

Change to root user

    su -l

Install git

    apt-get install git

Make the directory for apache and change diretory to it

    mkdir /var/www
    cd /var/www/

Clone hubzilla from git ("git pull" will update it later)

    git clone https://github.com/redmatrix/hubzilla html

Change to the install script

    cd html/.homeinstall/

Change the file "hubzilla-config.txt". Enter your values there.

    nano hubzilla-config.txt

Run the script

     ./hubzilla-setup.sh

Wait... The script should not finish with an error message.

In a webbrowser open your domain.
Expected: A test page of hubzilla is shown. All checks there shoulg be
successfull. Go on...
Expected: A page for the Hubzilla server configuration shows up.

Leave db server name "127.0.0.1" and port "0" untouched.

Enter

- DB user name = hubzilla
- DB pass word = This is the password you entered in "hubzilla-config.txt"
- DB name = hubzilla

Leave db type "MySQL" untouched.

Follow the instructions in the next pages.

# The Script explained

This chapter shows you

- What the script does exactly
- Explanations on technical details. May be this will encourage you to play with bash scripts?

