#!/bin/bash if [[ $EUID -ne 0 ]]; then echo "Ce script doit être lancé avec les droits root" exit 1 fi pwd=$PWD # Environment variables echo -e "\033[0;32m Création des variables d'environnement \033[0m" echo -e "\033[1;33m Nom d'utilisateur de la base de données \033[0m" read POSTGRES_USER echo -e "\033[1;33m Mot de passe de la base de données \033[0m" read POSTGRES_PASSWORD echo -e "\033[1;33m Nom de la base de données \033[0m" read POSTGRES_DB echo -e "\033[1;33m Clé d'encryption des JWTs \033[0m" read JWT_SECRET echo -e "\033[1;33m Utilisateur Gmail \033[0m" read GMAIL_USER echo -e "\033[1;33m Mot de passe de l'application Gmail \033[0m" read GMAIL_PASSWORD echo -e "\033[1;33m Url du site web \033[0m" read FRONTEND_URL echo -e "\033[1;33m Client ID de l'application Github OAuth \033[0m" read GITHUB_ID echo -e "\033[1;33m Client secret de l'application Github OAuth \033[0m" read GITHUB_PASSWORD touch $pwd/backend/.env echo " POSTGRES_USER=$POSTGRES_USER POSTGRES_PASSWORD=$POSTGRES_PASSWORD POSTGRES_DB=$POSTGRES_DB POSTGRES_HOST=localhost BACKEND_PORT=8000 JWT_SECRET=$JWT_SECRET LOG_FILE=/var/log/freetube/access.log GMAIL_USER=$GMAIL_USER GMAIL_PASSWORD=$GMAIL_PASSWORD FRONTEND_URL=$FRONTEND_URL GITHUB_ID=$GITHUB_ID GITHUB_SECRET=$GITHUB_PASSWORD " > $pwd/backend/.env # Install dependencies (NodeJS 22/PostgreSQL/Nginx) echo -e "\033[0;32m Installation des dépendances... \033[0m" apt install postgresql nginx openssl curl && # Install NVM and NodeJS & NPM curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash && export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" \. "$HOME/.nvm/nvm.sh" && nvm install 22 && # Install node packages for backend echo -e "\033[0;32m Installation des paquets NodeJS \033[0m" cd $pwd/backend && npm install && cd $pwd/frontend && npm install && echo "Construction du frontend" npx vite build cd $pwd # Create Nginx configuration echo -e "\033[0;32m Création de la configuration Nginx \033[0m" mkdir /etc/nginx/ssl/ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx-selfsigned.key -out /etc/nginx/ssl/nginx-selfsigned.crt touch /etc/nginx/conf.d/freetube.conf cat $pwd/default.conf > /etc/nginx/conf.d/freetube.conf echo -e "\033[0;32m Copie des fichiers vers /usr/share/nginx/html \033[0m" rm /usr/share/nginx/html/index.html mv $pwd/frontend/dist/* /usr/share/nginx/html/ # Create PostgreSQL database echo -e "\033[0;32m Création de l'utilisateur $POSTGRES_USER \033[0m" sudo -u postgres psql -c "CREATE USER $POSTGRES_USER WITH PASSWORD '$POSTGRES_PASSWORD';" sudo -u postgres psql -c "CREATE ROLE $POSTGRES_USER WITH PASSWORD '$POSTGRES_PASSWORD';" sudo -u postgres psql -c "CREATE DATABASE $POSTGRES_DB OWNER $POSTGRES_USER;" # Add log file mkdir /var/log/freetube touch /var/log/freetube/access.log systemctl enable nginx systemctl enable postgresql systemctl start nginx systemctl start postgresql