You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.0 KiB
100 lines
3.0 KiB
#!/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
|