Files
django-relay-controller/etc/2-mkcert-install.sh
T
2026-03-10 13:10:32 +01:00

82 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
echo "Mkcert Installation: # $0" 1>&2
echo
sudo apt-get -y install ca-certificates libnss3-tools
ROOT="$(pwd)"
get_primary_ip() {
# Test eth0 first
if ip -4 addr show dev eth0 >/dev/null 2>&1; then
ip -4 -o addr show dev eth0 | awk '{print $4}' | cut -d/ -f1 | head -n1
else
ip -4 -o addr show scope global | awk '{print $4 " " $2}' | grep -v lo | head -n1 | cut -d/ -f1
fi
}
IP="$(get_primary_ip)"
CERTS="${ROOT}/certs"
DOMAIN_SERVER="relay.local"
MKCERT_VERSION="v1.4.4"
LOCAL_DOMAINS="127.0.0.1 localhost $IP ${DOMAIN_SERVER}"
# --- mkcert installation ---
echo "==== mkcert installation ===="
# Déduire URL binaire selon architecture
ARCH="$(uname -m)"
case "$ARCH" in
aarch64|arm64) ARCH_TAG="linux-arm64" ;;
armv7l|armv7) ARCH_TAG="linux-arm" ;;
x86_64) ARCH_TAG="linux-amd64" ;;
*) ARCH_TAG="linux-amd64" ;;
esac
MKCERT_BINARY_NAME="mkcert-${MKCERT_VERSION}-${ARCH_TAG}"
#https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-arm64
MKCERT_URL="https://github.com/FiloSottile/mkcert/releases/download/${MKCERT_VERSION}/${MKCERT_BINARY_NAME}"
echo "Téléchargement: $MKCERT_URL"
wget "$MKCERT_URL"
sudo mv "$MKCERT_BINARY_NAME" /usr/local/bin/mkcert
chmod +x /usr/local/bin/mkcert
# Installer racine mkcert si nécessaire
if ! mkcert -CAROOT >/dev/null 2>&1; then
mkcert -install || true
fi
echo "==== Génération des certificats pour: $LOCAL_DOMAINS ===="
mkdir -p "$CERTS"
pushd "$CERTS" >/dev/null
# mkcert supporte listes d'arguments ; on passe en tant que mots
# Note: si trop long, mkcert créera wildcard/local CA selon besoin
mkcert -cert-file "${DOMAIN_SERVER}.pem" -key-file "${DOMAIN_SERVER}-key.pem" $LOCAL_DOMAINS
popd >/dev/null
echo "==== Copier certificat racine local pour navigateur ===="
LOCAL_CERTS_PATH="$HOME/.local/share/mkcert/rootCA.pem"
if [ -f "$LOCAL_CERTS_PATH" ]; then
cp "$LOCAL_CERTS_PATH" "$CERTS/${DOMAIN_SERVER}-root-cert.pem"
echo "Certificat copié: $CERTS/${DOMAIN_SERVER}-root-cert.pem"
else
echo "Root CA mkcert introuvable à $LOCAL_CERTS_PATH"
fi
echo "==== Mise à jour /etc/hosts ===="
# On ajoute une ligne unique contenant IP puis tous les domaines
HOSTS_LINE="$IP $DOMAIN_SERVER"
if ! grep -qE "^${IP}[[:space:]]+${DOMAIN_SERVER}(\s|$)" /etc/hosts; then
printf "%s\n" "$HOSTS_LINE" | sudo tee -a /etc/hosts >/dev/null
echo "/etc/hosts mis à jour"
else
echo "/etc/hosts contient déjà une entrée pour $IP"
fi