Skip to content
INSTALL_HETZNER.md 3.11 KiB
Newer Older
Pierre Ozoux's avatar
Pierre Ozoux committed
# Instructions to install libre.sh
Pierre Ozoux's avatar
Pierre Ozoux committed

## Recommendation
- ssd on /dev/sda
- hdd on /dev/sdb
- hdd on /dev/sdc
- API key on Namecheap (if you want to automatically buy domain name)

# Installation

First, you need a server.
We recommend [Hetzner](https://serverboerse.de/index.php?country=EN) as they are the cheapest options around.
You can filter servers with ssd.

These instructions can also work on any VM/VPS/Hardware.

## Install the system

```
IP=

ssh -o "StrictHostKeyChecking no" root@$IP

hostname=
ssh_public_key=""

fdisk -l #find your ssd

# Setup raid
cat > /etc/mdadm.conf << EOF
MAILADDR dev@null.org
EOF
mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sdb /dev/sdc
mkfs.ext4 /dev/md0

cat > cloud-config.tmp << EOF
#cloud-config

hostname: "$hostname"
ssh_authorized_keys:
  - $ssh_public_key
EOF

OliCat's avatar
OliCat committed
apt-get install gawk
Pierre Ozoux's avatar
Pierre Ozoux committed
wget https://raw.github.com/coreos/init/master/bin/coreos-install
bash coreos-install -d /dev/sda -c cloud-config.tmp

reboot
```

```
ssh core@$IP
OliCat's avatar
OliCat committed

OliCat's avatar
OliCat committed
#configure mdmonitor.
OliCat's avatar
OliCat committed

Pierre Ozoux's avatar
Pierre Ozoux committed
sudo su -

OliCat's avatar
OliCat committed
mdadm --examine --scan > /etc/mdadm.conf
vim /etc/mdadm.conf
#ADD your mail
MAILADDR xxx@xxx.org

# Start service
systemctl start  mdmonitor.service

Pierre Ozoux's avatar
Pierre Ozoux committed
# Add swap
fallocate -l 8192m /swap
chmod 600 /swap
mkswap /swap

cat > /var/lib/coreos-install/user_data << EOF
#cloud-config

hostname: $hostname
ssh_authorized_keys:
  - #your ssh public key here
write_files:
  - path: /etc/sysctl.d/aio-max.conf
    permissions: 0644
    owner: root
    content: "fs.aio-max-nr = 1048576"
  - path: /etc/hosts
    permissions: 0644
    owner: root
    content: |
      127.0.0.1 localhost
      255.255.255.255 broadcasthost
      ::1 localhost
  - path: /etc/environment
    permission: 0644
    owner: root
    content: |
      NAMECHEAP_URL="namecheap.com"
      NAMECHEAP_API_USER="pierreo"
      NAMECHEAP_API_KEY=
      IP=`curl -s http://icanhazip.com/`
      FirstName="Pierre"
      LastName="Ozoux"
      Address="23CalcadaSaoVicente"
      PostalCode="1100-567"
      Country="Portugal"
      Phone="+351.967184553"
      EmailAddress="pierre@ozoux.net"
      City="Lisbon"
      CountryCode="PT"
      BACKUP_DESTINATION=root@xxxxx:port
      MAIL_USER=contact%40indie.host
      MAIL_PASS=
      MAIL_HOST=mail.indie.host
      MAIL_PORT=587
coreos:
  update:
    reboot-strategy: off
  units:
    - name: systemd-sysctl.service
      command: restart
    - name: data.mount
      command: start
      content: |
        [Mount]
        What=/dev/md0
        Where=/data
        Type=ext4
    - name: swap.service
      command: start
      content: |
        [Service]
        Type=oneshot
        ExecStart=/sbin/swapon /swap
EOF

# Create Directory structure
Pierre Ozoux's avatar
Pierre Ozoux committed
git clone https://github.com/indiehosters/libre.sh.git /indiehosters
Pierre Ozoux's avatar
Pierre Ozoux committed
mkdir /{data,system}
mkdir /data/trash

mkdir -p /opt/bin

Pierre Ozoux's avatar
Pierre Ozoux committed
# Install unit-files and utils
cp /indiehosters/unit-files/* /etc/systemd/system && systemctl daemon-reload
cp /indiehosters/utils/* /opt/bin/

DOCKER_COMPOSE_VERSION=1.6.0
curl -L https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-`uname -s`-`uname -m` > /opt/bin/docker-compose
chmod +x /opt/bin/docker-compose