#!/bin/bash # Farger for tilbakemelding GREEN='\033[0;32m' RED='\033[0;31m' NC='\033[0m' echo -e "${GREEN}==> Starter Homelab Bootstrap (Linux)${NC}" # 1. Sjekk om vi er root if [ "$EUID" -ne 0 ]; then echo -e "${RED}Feil: Vennligst kjør som root (bruk sudo)${NC}" exit 1 fi # 2. Finn IP-adresse med en gang (viktig for registrering) # Vi prøver først hostname -I, hvis ikke det funker bruker vi ip route IP_ADDR=$(hostname -I | awk '{print $1}') if [ -z "$IP_ADDR" ]; then IP_ADDR=$(ip route get 1.1.1.1 | grep -oP 'src \K\S+') fi # 3. Installer nødvendige pakker echo -e "==> Installerer basispakker..." apt-get update && apt-get install -y sudo python3 curl # 4. Fjern eventuell github-runner-nøkkel fra root (rensning) if [ -f /root/.ssh/authorized_keys ]; then echo -e "==> Fjerner github-runner-nøkkel fra root..." sed -i '/github-runner@/d' /root/.ssh/authorized_keys chmod 600 /root/.ssh/authorized_keys fi # 5. Opprett github-runner bruker if ! id "github-runner" &>/dev/null; then echo -e "==> Oppretter bruker: github-runner" useradd -m -s /bin/bash github-runner else echo -e "==> Bruker 'github-runner' finnes allerede." fi # 6. Sett opp passordløs sudo echo -e "==> Konfigurerer passordløs sudo..." echo "github-runner ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/github-runner chmod 0440 /etc/sudoers.d/github-runner # 7. Legg til SSH-nøkkel fra felles CI-runner (192.168.1.14) echo -e "==> Setter opp SSH-nøkkel for github-runner..." USER_HOME="/home/github-runner" mkdir -p "$USER_HOME/.ssh" chmod 700 "$USER_HOME/.ssh" chown github-runner:github-runner "$USER_HOME/.ssh" cat > "$USER_HOME/.ssh/authorized_keys" <<'EOF' ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEtKIfNI3Fvj5BFxEDX6JP+zyfxL8pvV72NUNxSQ/jys github-runner EOF chown github-runner:github-runner "$USER_HOME/.ssh/authorized_keys" chmod 600 "$USER_HOME/.ssh/authorized_keys" # 8. Send info hjem til Cloudflare (NÅ har vi IP_ADDR!) echo -e "==> Registrerer server i Ansible inventory..." curl -s -X POST https://bootstrap.nroen.cloud \ -H "Content-Type: application/json" \ -d "{\"ip\": \"$IP_ADDR\", \"hostname\": \"$(hostname)\"}" # 9. Ferdig! echo -e "${GREEN}--------------------------------------------------${NC}" echo -e "${GREEN}BOOTSTRAP FERDIG!${NC}" echo -e "Serveren er nå klar for Ansible." echo -e "Logg inn med: ${GREEN}ssh github-runner@$IP_ADDR${NC}" echo -e "${GREEN}--------------------------------------------------${NC}"