2 Déploiement
Claude edited this page 2026-05-16 12:31:25 +02:00

Déploiement

Prérequis

  • Docker >= 24 et Docker Compose v2
  • Un domaine avec HTTPS (obligatoire pour les notifications push et le Service Worker PWA)
  • Git

Installation

git clone https://forge.nesquiikhost.fr/NesquiikLab/NoxIRC.git
cd NoxIRC

Créer le fichier .env :

POSTGRES_USER=noxirc
POSTGRES_PASSWORD=motdepasse_securise
POSTGRES_DB=noxirc
SECRET_KEY=64_caracteres_aleatoires_ici
PORT=80
PUBLIC_URL=https://noxirc.example.com
UPLOAD_MAX_SIZE_MB=10

Générer une SECRET_KEY :

openssl rand -hex 32

Variables d'environnement

Variable Défaut Description
POSTGRES_USER noxirc Utilisateur PostgreSQL
POSTGRES_PASSWORD noxirc À changer en production
POSTGRES_DB noxirc Nom de la base de données
SECRET_KEY changeme64chars Clé JWT — 64 caractères aléatoires
PORT 80 Port exposé par le frontend
PUBLIC_URL (vide) URL publique complète (ex: https://noxirc.example.com)
UPLOAD_MAX_SIZE_MB 10.0 Taille maximale d'un fichier uploadé
UPLOAD_ALLOWED_TYPES image/jpeg,image/png,... Types MIME acceptés
ACCESS_TOKEN_EXPIRE_MINUTES 60 Durée de vie de l'access token
REFRESH_TOKEN_EXPIRE_DAYS 7 Durée de vie du refresh token

PUBLIC_URL est nécessaire pour que les URLs des fichiers uploadés soient absolues et accessibles depuis l'extérieur.

Lancement

docker compose up -d --build

Les migrations Alembic s'exécutent automatiquement au démarrage du backend.

# Vérifier que tout tourne
docker compose ps
curl http://localhost/health

Premier compte administrateur

Le premier compte créé n'est pas admin automatiquement. Pour promouvoir le premier admin, se connecter directement à la base de données :

docker compose exec postgres psql -U noxirc -c \
  "UPDATE users SET is_admin = true WHERE username = 'tonpseudo';"

Ensuite, les promotions suivantes se font depuis le panel admin.

Mise à jour

git pull
docker compose up -d --build

Les migrations sont appliquées automatiquement.

Reverse proxy Nginx (HTTPS)

HTTPS est obligatoire pour les notifications push et le Service Worker :

server {
    listen 443 ssl http2;
    server_name noxirc.example.com;

    ssl_certificate     /etc/letsencrypt/live/noxirc.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/noxirc.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
    }
}

server {
    listen 80;
    server_name noxirc.example.com;
    return 301 https://$host$request_uri;
}

Avec Certbot : certbot --nginx -d noxirc.example.com

Volumes persistants

Volume Contenu
postgres_data Base de données
redis_data Cache Redis
uploads Fichiers uploadés par les utilisateurs
plugins_dir Plugins installés