#!/usr/bin/env bash # Eenmalig op de server (na server/setup.sh): Tectum, de configurator, als statische site achter een wachtwoord. # # scp -r server ubuntu@SERVER: # ssh -t ubuntu@SERVER sudo bash server/tectum-setup.sh tectum.voorbeeld.nl jij@voorbeeld.nl [gebruikersnaam] # # Vraagt het wachtwoord als die gebruiker nog niet bestaat; met WACHTWOORD=1 ervoor wijzig je het: # ssh -t ubuntu@SERVER sudo WACHTWOORD=1 bash server/tectum-setup.sh tectum.voorbeeld.nl jij@voorbeeld.nl # Daarna rolt tools/tectum-release.sh (op je eigen machine) een versie uit naar crm@SERVER. # Opnieuw draaien kan: elke stap controleert wat er al is. set -euo pipefail DOMAIN="${1:-}" EMAIL="${2:-}" LOGIN="${3:-vanemous}" ROOT=/srv/www/tectum SITE=tectum HTPASSWD=/etc/nginx/tectum.htpasswd HERE="$(cd "$(dirname "$0")" && pwd)" say() { printf '\033[38;2;185;89;19m▸\033[0m %s\n' "$*"; } fail() { printf 'Fout: %s\n' "$*" >&2; exit 1; } [ "$(id -u)" = 0 ] || fail "draai dit met sudo" [ -n "$DOMAIN" ] && [ -n "$EMAIL" ] || fail "gebruik: sudo bash tectum-setup.sh [gebruikersnaam]" id crm >/dev/null 2>&1 || fail "gebruiker crm bestaat niet; draai eerst server/setup.sh" command -v nginx >/dev/null || fail "nginx ontbreekt; draai eerst server/setup.sh" # --- map: releases komen binnen als crm (zelfde SSH-toegang als de CRM-releases) ---------------- say "map $ROOT" install -d -o root -g root -m 755 /srv/www install -d -o crm -g crm -m 755 "$ROOT" "$ROOT/releases" # --- wachtwoord ---------------------------------------------------------------------------------- touch "$HTPASSWD" chown root:www-data "$HTPASSWD"; chmod 640 "$HTPASSWD" if [ -n "${WACHTWOORD:-}" ] || ! grep -q "^$LOGIN:" "$HTPASSWD"; then say "wachtwoord voor gebruiker $LOGIN" read -rsp "Wachtwoord: " pw1 "$HTPASSWD.new" chown root:www-data "$HTPASSWD.new"; chmod 640 "$HTPASSWD.new" mv "$HTPASSWD.new" "$HTPASSWD" fi # --- nginx ------------------------------------------------------------------------------- say "nginx voor $DOMAIN" if [ ! -f /etc/nginx/sites-available/$SITE ] || ! grep -q "listen 443" /etc/nginx/sites-available/$SITE; then sed "s/__DOMAIN__/$DOMAIN/g" "$HERE/tectum-site.conf" > /etc/nginx/sites-available/$SITE fi ln -sfn /etc/nginx/sites-available/$SITE /etc/nginx/sites-enabled/$SITE nginx -t systemctl reload nginx # --- HTTPS ------------------------------------------------------------------------------- say "certificaat aanvragen (DNS van $DOMAIN moet al naar deze server wijzen)" if certbot --nginx -d "$DOMAIN" -m "$EMAIL" --agree-tos --non-interactive --redirect; then say "HTTPS actief; verlengen gaat automatisch (certbot.timer)" else say "let op: certificaat mislukt. Klopt de DNS? Daarna opnieuw: sudo certbot --nginx -d $DOMAIN -m $EMAIL --agree-tos --redirect" fi say "klaar. Rol nu vanaf je eigen machine een versie uit: tools/tectum-release.sh crm@$DOMAIN"