# Installation de VX BOT sur Ubuntu 24.04

Le projet est prévu pour être installé dans :

```text
/var/www/html/vxgamesbot
```

Le panneau sera accessible à :

```text
https://vixon.fr/vxgamesbot/
```

## 1. Préparer l'application Discord

Dans le Discord Developer Portal :

1. Crée une application nommée **VX BOT**.
2. Ouvre l'onglet **Bot**, crée le bot et récupère son token.
3. Active **Server Members Intent**.
4. Ouvre **OAuth2 > General**.
5. Ajoute cette Redirect URI exacte :

```text
https://vixon.fr/vxgamesbot/auth/callback
```

6. Récupère le **Client ID** et le **Client Secret**.

Le projet ne nécessite pas l'intent **Message Content** dans sa version actuelle.

## 2. Copier les fichiers

```bash
sudo mkdir -p /var/www/html/vxgamesbot
sudo cp -a /CHEMIN/VERS/vxgamesbot/. /var/www/html/vxgamesbot/
cd /var/www/html/vxgamesbot
```

## 3. Lancer l'installation automatique

```bash
sudo bash scripts/install-ubuntu.sh
```

Le script :

- installe Node.js 24, Nginx et les dépendances système nécessaires ;
- installe et compile VX BOT ;
- crée l'utilisateur système `vxbot` ;
- crée et active le service `vxbot.service` ;
- prépare la route Nginx `/vxgamesbot/` ;
- sauvegarde la configuration Nginx avant toute modification ;
- restaure automatiquement la sauvegarde si `nginx -t` détecte une erreur.

## 4. Configurer les secrets

```bash
sudo nano /var/www/html/vxgamesbot/.env
```

Exemple :

```env
DISCORD_BOT_TOKEN=TOKEN_DU_BOT
DISCORD_CLIENT_ID=CLIENT_ID
DISCORD_CLIENT_SECRET=CLIENT_SECRET
PUBLIC_URL=https://vixon.fr/vxgamesbot
BASE_PATH=/vxgamesbot
PORT=3100
SESSION_SECRET=UNE_CLE_LONGUE_ET_ALEATOIRE
DATABASE_PATH=./data/vxbot.sqlite
NODE_ENV=production
```

Génère le secret de session avec :

```bash
openssl rand -hex 32
```

Puis protège le fichier :

```bash
sudo chown vxbot:vxbot /var/www/html/vxgamesbot/.env
sudo chmod 600 /var/www/html/vxgamesbot/.env
```

## 5. Déployer les commandes Discord

```bash
cd /var/www/html/vxgamesbot
sudo -u vxbot npm run deploy:commands
```

## 6. Démarrer VX BOT

```bash
sudo systemctl restart vxbot
sudo systemctl status vxbot --no-pager
```

Journaux en direct :

```bash
sudo journalctl -u vxbot -f
```

## 7. Installer le bot sur Discord

Connecte-toi à :

```text
https://vixon.fr/vxgamesbot/
```

Le panneau propose automatiquement le bouton d'installation si le bot n'est présent sur aucun serveur administrable.

## Mise à jour ultérieure

```bash
cd /var/www/html/vxgamesbot
sudo systemctl stop vxbot
sudo -u vxbot npm ci
sudo -u vxbot npm run build
sudo systemctl start vxbot
```

La base SQLite reste dans `data/vxbot.sqlite` et n'est pas écrasée par une mise à jour du code.
