#!/bin/sh # setup.rempart.dev — met une machine neuve dans le tailnet rempart, et rien de plus. # # curl -fsSL https://setup.rempart.dev | sh # # Aucun secret ici, et aucun n'est demandé : le script installe de quoi joindre # le tailnet, lance `tailscale up --ssh` et attend qu'on valide la connexion # depuis un appareil déjà dedans. C'est cet appareil qui installe la suite # (bin/onboard, docs/onboarding.md dans le dépôt rempart). # # Il se lit d'une traite parce qu'on le pipe dans sh : tout tient dans les # trois fonctions ci-dessous, appelées à la toute dernière ligne. set -eu say() { printf '\n==> %s\n' "$*"; } # Root n'a pas toujours sudo (une Debian minimale). SUDO=sudo [ "$(id -u)" -eq 0 ] && SUDO= macos() { $SUDO -v # Avant Nix : nix-darwin pilote Homebrew mais ne l'installe pas, et il # refuse de tourner en root — c'est donc ici, avec l'utilisateur au clavier. if [ ! -x /opt/homebrew/bin/brew ]; then say "Homebrew (installe aussi les Command Line Tools)" NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" /var/log/tailscaled.log 2>&1 &" else say "Tailscale (paquet officiel)" curl -fsSL https://tailscale.com/install.sh | sh ts=/usr fi } main() { case "$(uname -s)" in Darwin) macos ;; Linux) linux ;; *) echo "Système non pris en charge : $(uname -s)" >&2; exit 1 ;; esac i=0 until $SUDO "$ts/bin/tailscale" status --json >/dev/null 2>&1; do i=$((i + 1)) [ "$i" -le 30 ] || { echo "tailscaled ne répond pas après 30 s" >&2; exit 1; } sleep 1 done say "Validation" cat < EOF $SUDO "$ts/bin/tailscale" up --ssh --qr say "Machine dans le tailnet. La suite se fait depuis bin/onboard." } main