diff --git a/README.md b/README.md index b40ac16..dc269b6 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ The server uses: --- -# 1. Create the VPS +# 1. Setup the VPS Recommended: @@ -26,112 +26,15 @@ Recommended: After creation: -```bash -ssh root@SERVER_IP -``` - ---- - -# 2. Bootstrap the server - -Copy the bootstrap script to the server: ```bash -scp bootstrap.sh root@SERVER_IP: -``` - -Connect: - -```bash -ssh root@SERVER_IP -``` - -Run: - -```bash -chmod +x bootstrap.sh +read IP_ADDRESS +scp bootstrap.sh root@$IP_ADDRESS: +ssh root@$IP_ADDRESS ./bootstrap.sh ``` -This installs: - -* Docker CE -* Docker Compose -* Git -* Basic administration tools -* Firewall rules - -Verify: - -```bash -docker --version -docker compose version -``` - ---- - -# 3. Create an administrator user - -Do not run everything as root. - -Create a user: - -```bash -adduser USERNAME -``` - -Add permissions: - -```bash -usermod -aG sudo,docker USERNAME -``` - -Copy SSH keys: - -```bash -mkdir -p /home/USERNAME/.ssh -cp /root/.ssh/authorized_keys /home/USERNAME/.ssh/ -chown -R USERNAME:USERNAME /home/USERNAME/.ssh -chmod 700 /home/USERNAME/.ssh -chmod 600 /home/USERNAME/.ssh/authorized_keys -``` - -Test: - -```bash -ssh USERNAME@SERVER_IP -``` - ---- - -# 4. Clone the server configuration -Clone the configuration repository: - -```bash -git clone https://github.com/tomasriveral/vps-config -cd vps-config -``` - ---- - -# 5. Configure secrets - -Never store passwords or tokens in Git. - -Create: - -```bash -nano .env -``` - -See `.env.example` - -# 6. Init the system -``` -./scripts/init.sh -``` - -# 7. Deploy +# 2. Deploy ``` ./scripts/deploy.sh ``` diff --git a/bootstrap.sh b/bootstrap.sh index 01969ea..7a05b57 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,77 +1,183 @@ #!/usr/bin/env bash set -euo pipefail -echo "== Updating system ==" +################################################################################ +# Configuration +################################################################################ + +REPO="https://github.com/tomasriveral/vps-config" +REPO_DIR="vps-config" + +################################################################################ +# Helpers +################################################################################ + +step() { + echo + echo "==============================================================================" + echo "$1" + echo "==============================================================================" +} + +################################################################################ +# System update +################################################################################ + +step "Updating system" + apt update apt upgrade -y -echo "== Installing base packages ==" +################################################################################ +# Base packages +################################################################################ + +step "Installing base packages" + apt install -y \ - ca-certificates \ - curl \ - gnupg \ - git \ - vim \ - htop \ - unzip \ - rsync \ - rclone \ - jq \ - fail2ban \ - unattended-upgrades \ - ripgrep \ - ufw + ca-certificates \ + curl \ + git \ + gnupg \ + htop \ + jq \ + fail2ban \ + ripgrep \ + rclone \ + rsync \ + ufw \ + unattended-upgrades \ + unzip \ + vim -echo "== Installing Docker repository key ==" -install -m 0755 -d /etc/apt/keyrings +################################################################################ +# Repository +################################################################################ -curl -fsSL https://download.docker.com/linux/debian/gpg \ - -o /etc/apt/keyrings/docker.asc +step "Cloning configuration repository" + +git clone "$REPO" +cd "$REPO_DIR" + +################################################################################ +# Docker +################################################################################ + +step "Installing Docker repository" + +install -d -m 0755 /etc/apt/keyrings + +curl -fsSL \ + https://download.docker.com/linux/debian/gpg \ + -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc -echo "== Adding Docker repository ==" -echo \ - "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \ - https://download.docker.com/linux/debian \ - $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \ - > /etc/apt/sources.list.d/docker.list +cat >/etc/apt/sources.list.d/docker.list <" +echo diff --git a/scripts/init.sh b/scripts/init.sh deleted file mode 100644 index 40e1c7e..0000000 --- a/scripts/init.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash -set -e - -echo "== installing systemd systems" -mkdir -p /opt/server/archivebox/archivebox-data -mkdir -p /mnt/kdrive/ -rclone config - -cp systemd/kdrive-rclone.service /etc/systemd/system/ - -systemctl daemon-reload -systemctl enable kdrive-rclone -systemctl start kdrive-rclone -mountpoint /mnt/kdrive -ls /mnt/kdrive -echo - -echo "== initializing archivebox" -docker compose run --rm archivebox init --setup