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