Initial commit
This commit is contained in:
+132
@@ -0,0 +1,132 @@
|
||||
#!/usr/bin/env bash
|
||||
# =============================================================================
|
||||
# server-setup.sh — Installation initiale du CT Proxmox
|
||||
#
|
||||
# À exécuter UNE SEULE FOIS en root sur le CT (Debian/Ubuntu)
|
||||
# après avoir cloné le repo ou transféré ce script.
|
||||
#
|
||||
# Pré-requis : CT Proxmox avec accès internet
|
||||
# =============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
REPO_URL="${1:-}" # ex: git@github.com:toi/crowdlending-app.git
|
||||
APP_DIR="/opt/crowdlending-app"
|
||||
GH_USER="${SUDO_USER:-root}"
|
||||
|
||||
echo ""
|
||||
echo "========================================"
|
||||
echo " Setup serveur — Crowdlending App"
|
||||
echo "========================================"
|
||||
|
||||
# 1. Dépendances système
|
||||
echo ""
|
||||
echo "📦 Installation des dépendances système..."
|
||||
apt-get update -qq
|
||||
apt-get install -y --no-install-recommends \
|
||||
git \
|
||||
curl \
|
||||
ca-certificates \
|
||||
gnupg \
|
||||
sqlite3 \
|
||||
ufw
|
||||
|
||||
# 2. Docker (méthode officielle)
|
||||
echo ""
|
||||
echo "🐋 Installation de Docker..."
|
||||
if ! command -v docker &>/dev/null; then
|
||||
install -m 0755 -d /etc/apt/keyrings
|
||||
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||
chmod a+r /etc/apt/keyrings/docker.gpg
|
||||
echo \
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
|
||||
https://download.docker.com/linux/debian \
|
||||
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
|
||||
> /etc/apt/sources.list.d/docker.list
|
||||
apt-get update -qq
|
||||
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||
systemctl enable --now docker
|
||||
echo " ✓ Docker installé : $(docker --version)"
|
||||
else
|
||||
echo " ✓ Docker déjà présent : $(docker --version)"
|
||||
fi
|
||||
|
||||
# 3. Clé SSH pour GitHub (si pas encore présente)
|
||||
echo ""
|
||||
echo "🔑 Clé SSH..."
|
||||
if [ ! -f ~/.ssh/id_ed25519 ]; then
|
||||
ssh-keygen -t ed25519 -C "crowdlending-deploy" -f ~/.ssh/id_ed25519 -N ""
|
||||
echo ""
|
||||
echo " ┌─────────────────────────────────────────────────────────┐"
|
||||
echo " │ Ajoute cette clé publique dans ton repo GitHub/Gitea │"
|
||||
echo " │ (Settings → Deploy keys → Add deploy key) │"
|
||||
echo " └─────────────────────────────────────────────────────────┘"
|
||||
echo ""
|
||||
cat ~/.ssh/id_ed25519.pub
|
||||
echo ""
|
||||
read -r -p " Appuie sur Entrée une fois la clé ajoutée dans GitHub..."
|
||||
else
|
||||
echo " ✓ Clé SSH déjà présente"
|
||||
fi
|
||||
|
||||
# 4. Clone du repo
|
||||
echo ""
|
||||
echo "📂 Clonage du repo..."
|
||||
if [ -d "$APP_DIR/.git" ]; then
|
||||
echo " ✓ Repo déjà cloné dans $APP_DIR"
|
||||
else
|
||||
if [ -z "$REPO_URL" ]; then
|
||||
read -r -p " URL du repo Git (ex: git@github.com:toi/crowdlending-app.git) : " REPO_URL
|
||||
fi
|
||||
git clone "$REPO_URL" "$APP_DIR"
|
||||
echo " ✓ Repo cloné dans $APP_DIR"
|
||||
fi
|
||||
|
||||
cd "$APP_DIR"
|
||||
|
||||
# 5. Fichier .env
|
||||
echo ""
|
||||
echo "⚙ Configuration .env..."
|
||||
if [ ! -f ".env" ]; then
|
||||
cp .env.example .env
|
||||
# Générer un JWT_SECRET aléatoire
|
||||
JWT_SECRET=$(openssl rand -hex 32)
|
||||
sed -i "s/change-me-in-production/$JWT_SECRET/" .env
|
||||
echo ""
|
||||
echo " ┌──────────────────────────────────────────────────────────┐"
|
||||
echo " │ Fichier .env créé avec un JWT_SECRET aléatoire. │"
|
||||
echo " │ Vérifie et adapte si besoin : nano $APP_DIR/.env │"
|
||||
echo " └──────────────────────────────────────────────────────────┘"
|
||||
else
|
||||
echo " ✓ .env déjà présent"
|
||||
fi
|
||||
|
||||
# 6. Permissions du script de déploiement
|
||||
chmod +x "$APP_DIR/deploy.sh"
|
||||
|
||||
# 7. Pare-feu (UFW)
|
||||
echo ""
|
||||
echo "🔒 Configuration du pare-feu (UFW)..."
|
||||
ufw allow OpenSSH
|
||||
ufw allow 8080/tcp comment "crowdlending frontend"
|
||||
ufw --force enable
|
||||
echo " ✓ Ports ouverts : SSH + 8080"
|
||||
|
||||
# 8. Premier build et démarrage
|
||||
echo ""
|
||||
echo "🚀 Premier build et démarrage..."
|
||||
docker compose build
|
||||
docker compose up -d
|
||||
|
||||
echo ""
|
||||
echo "============================================"
|
||||
echo " ✅ Installation terminée !"
|
||||
echo ""
|
||||
echo " App disponible sur : http://$(hostname -I | awk '{print $1}'):8080"
|
||||
echo ""
|
||||
echo " Commandes utiles :"
|
||||
echo " cd $APP_DIR"
|
||||
echo " ./deploy.sh → déployer une mise à jour"
|
||||
echo " docker compose logs -f → suivre les logs"
|
||||
echo " docker compose ps → état des containers"
|
||||
echo "============================================"
|
||||
Reference in New Issue
Block a user