From 159b745cc2f0b785aa65f163d779a1bfed747608 Mon Sep 17 00:00:00 2001
From: pierreozoux <pierre@ozoux.net>
Date: Thu, 24 Mar 2016 09:51:44 +0000
Subject: [PATCH] Simpler instructions for DO

---
 INSTALL.md         | 111 ++++++++++++++------------------------
 INSTALL_HETZNER.md | 132 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 172 insertions(+), 71 deletions(-)
 create mode 100644 INSTALL_HETZNER.md

diff --git a/INSTALL.md b/INSTALL.md
index 02af7cc..687219b 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,62 +1,16 @@
 # Instructions to install LibrePaaS
 
 ## 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
+## 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.
+You can take it from a cloud provider, like DigitalOcean or Scaleway and choose to spin up a VM with CoreOS already installed on it.
 
-These instructions can also work on any VM/VPS/Hardware.
-
-## Install the system
+You can also buy a baremetal at [Hetzner](https://serverboerse.de/index.php?country=EN) as they are the cheapest options around. Follow these [instructions](INSTALL_HETZNER.md) in this case.
 
 ```
-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
-
-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
-sudo su -
-
-# Add swap
-fallocate -l 8192m /swap
-chmod 600 /swap
-mkswap /swap
-
-cat > /var/lib/coreos-install/user_data << EOF
 #cloud-config
 
 hostname: $hostname
@@ -102,31 +56,46 @@ coreos:
   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: |
+        [Unit]
+        Description=Turn on swap
         [Service]
         Type=oneshot
+        RemainAfterExit=true
+        ExecStartPre=-/bin/bash -euxc ' \
+          fallocate -l 8192m /swap \
+          chmod 600 /swap \
+          mkswap /swap'
         ExecStart=/sbin/swapon /swap
-EOF
-
-# Create Directory structure
-git clone https://github.com/indiehosters/LibrePaaS.git /indiehosters
-mkdir /{data,system}
-mkdir /data/trash
-
-# Install unit-files and utils
-cp /indiehosters/unit-files/* /etc/systemd/system && systemctl daemon-reload
-cp /indiehosters/utils/* /opt/bin/
-
-mkdir -p /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
+        ExecStop=/sbin/swapoff /swap
+        [Install]
+        WantedBy=local.target
+    - name: install-compose.service
+      command: start
+      content: |
+        [unit]
+        Description=Install Docker Compose
+        [Service]
+        Type=oneshot
+        RemainAfterExit=true
+        ExecStart=-/bin/bash -euxc ' \
+          mkdir -p /opt/bin \
+          curl -L `curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r '.assets[].browser_download_url | select(contains("Linux") and contains("x86_64"))'` > /opt/bin/docker-compose \
+          chmod +x /opt/bin/docker-compose'
+    - name: install-indiehosters.service
+      command: start
+      content: |
+        [unit]
+        Description=Install IndieHosters
+        [Service]
+        Type=oneshot
+        RemainAfterExit=true
+        ExecStart=-/bin/bash -euxc ' \
+          git clone https://github.com/indiehosters/LibrePaaS.git /indiehosters \
+          mkdir /{data,system} \
+          mkdir /data/trash \
+          cp /indiehosters/unit-files/* /etc/systemd/system && systemctl daemon-reload \
+          cp /indiehosters/utils/* /opt/bin/'
+```
diff --git a/INSTALL_HETZNER.md b/INSTALL_HETZNER.md
new file mode 100644
index 0000000..02af7cc
--- /dev/null
+++ b/INSTALL_HETZNER.md
@@ -0,0 +1,132 @@
+# Instructions to install LibrePaaS
+
+## 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
+
+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
+sudo su -
+
+# 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
+git clone https://github.com/indiehosters/LibrePaaS.git /indiehosters
+mkdir /{data,system}
+mkdir /data/trash
+
+# Install unit-files and utils
+cp /indiehosters/unit-files/* /etc/systemd/system && systemctl daemon-reload
+cp /indiehosters/utils/* /opt/bin/
+
+mkdir -p /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
-- 
GitLab