Le quartier général privé de votre clan : messagerie, Discord, jeux, branches et news.
523
Le quartier général privé de votre clan de joueurs.
Conclave réunit les membres d'un clan dans un espace privé, auto-hébergé, en français :
L'image contient toute l'application : l'interface Angular, l'API Symfony et le hub temps réel Mercure, servis par FrankenPHP sur le port 80. Il lui faut seulement une base PostgreSQL.
| Tag | Contenu |
|---|---|
latest | Dernière version publiée |
0.1.2 | Démarrage plus lisible (raison d'un échec de connexion à la base) et plus tolérant |
0.1.1 | Première image publiée |
Plateforme : linux/amd64.
compose.yamlDans un dossier vide (par exemple conclave/), créez ce fichier :
# Réglages des deux conteneurs Conclave, pris dans les variables de la stack (.env ou Portainer)
x-conclave-environment: &conclave-environment
CONCLAVE_URL: ${CONCLAVE_URL:?CONCLAVE_URL à renseigner, par ex. http://192.168.1.10:8080}
APP_SECRET: ${APP_SECRET:?APP_SECRET à renseigner (openssl rand -hex 32)}
JWT_PASSPHRASE: ${JWT_PASSPHRASE:?JWT_PASSPHRASE à renseigner (openssl rand -hex 32)}
MERCURE_JWT_SECRET: ${MERCURE_JWT_SECRET:?MERCURE_JWT_SECRET à renseigner (openssl rand -hex 32)}
DATABASE_URL: postgresql://conclave:${POSTGRES_PASSWORD}@database:5432/conclave?serverVersion=16&charset=utf8
services:
conclave:
image: iemperor/conclave:${CONCLAVE_VERSION:-latest}
restart: unless-stopped
ports:
- "${CONCLAVE_PORT:-8080}:80"
environment: *conclave-environment
volumes:
- conclave_data:/data
depends_on:
database:
condition: service_healthy
# Présences et visios Discord (facultatif : Discord se configure dans l'administration)
discord-worker:
image: iemperor/conclave:${CONCLAVE_VERSION:-latest}
restart: unless-stopped
command: ["php", "bin/console", "app:discord:gateway"]
environment:
<<: *conclave-environment
# Publie les événements temps réel via le hub du conteneur web
MERCURE_URL: http://conclave/.well-known/mercure
healthcheck:
disable: true
volumes:
- conclave_data:/data
depends_on:
conclave:
condition: service_healthy
database:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: conclave
POSTGRES_USER: conclave
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD à renseigner}
healthcheck:
test: ["CMD", "pg_isready", "-d", "conclave", "-U", "conclave"]
interval: 5s
timeout: 5s
retries: 10
volumes:
- database_data:/var/lib/postgresql/data
volumes:
conclave_data:
database_data:
En ligne de commande, créez à côté un fichier .env ; avec Portainer, collez le fichier ci-dessus dans
l'éditeur web de la stack et saisissez ces variables dans « Environment variables » (bouton « Advanced mode »
pour les coller d'un bloc). Générez chaque secret avec openssl rand -hex 32 :
# Adresse à laquelle les membres joignent Conclave (schéma, hôte et port, sans / final)
CONCLAVE_URL=http://192.168.1.10:8080
# Port publié sur la machine (doit correspondre à CONCLAVE_URL)
CONCLAVE_PORT=8080
# Tag de l'image : latest, ou une version comme 0.1.2
CONCLAVE_VERSION=latest
# Secrets : à conserver précieusement
APP_SECRET=
JWT_PASSPHRASE=
MERCURE_JWT_SECRET=
POSTGRES_PASSWORD=
docker compose up -d
docker compose exec conclave php bin/console app:setup:code
La seconde commande affiche le code d'installation (avec Portainer : journaux du conteneur conclave,
ou sa console avec la même commande). Ouvrez CONCLAVE_URL dans un navigateur :
l'assistant d'installation vous le demande, puis crée le clan et son premier dirigeant. Le code évite qu'un
inconnu qui atteindrait le site avant vous ne s'en empare ; il figure aussi dans docker compose logs conclave.
Ensuite, depuis l'administration : configurez le service d'e-mail, activez les branches, connectez Discord. Les membres demandent à rejoindre le clan via « S'inscrire » et un dirigeant valide leur compte.
| Variable | Obligatoire | Rôle |
|---|---|---|
CONCLAVE_URL | oui | Adresse publique de Conclave, par ex. http://192.168.1.10:8080 ou https://clan.example.com (hub temps réel, liens des e-mails) |
APP_SECRET | oui | Clé de l'application. Elle chiffre aussi les secrets saisis dans l'administration : la changer les rend illisibles |
JWT_PASSPHRASE | oui | Protège les clés de connexion, générées au premier démarrage |
MERCURE_JWT_SECRET | oui | Signe les jetons du hub temps réel |
DATABASE_URL | oui | Connexion PostgreSQL (fournie par le compose.yaml ci-dessus) |
MERCURE_URL | non | Hub auquel le serveur publie ; par défaut celui du conteneur. Le worker Discord utilise http://conclave/.well-known/mercure |
Les réglages fonctionnels (e-mail SMTP, Discord, clé RAWG) se font dans l'administration et sont stockés chiffrés en base.
/data : avatars, images des news, clés de connexion, historique du hub temps réel..env, surtout APP_SECRET.Sauvegardez les trois. Pour la base : docker compose exec database pg_dump -U conclave conclave > conclave.sql.
L'image sert du HTTP. Pour un accès depuis Internet, placez-la derrière un reverse proxy qui gère le
certificat (Traefik, Caddy, Nginx Proxy Manager…), faites-le pointer vers le port publié, et indiquez
l'adresse https://… dans CONCLAVE_URL.
docker compose pull
docker compose up -d
Les migrations de la base s'appliquent au démarrage. Pour rester sur une version précise, indiquez-la dans
CONCLAVE_VERSION.
dunglas/frankenphp (PHP 8.4, Alpine), utilisateur non root, port 80.GET /api/health, avec 3 minutes de délai au premier démarrage.container conclave-conclave-1 is unhealthy : consultez les journaux du conteneur conclave. Si
la base refuse le mot de passe, POSTGRES_PASSWORD a changé depuis la création du volume de la base :
PostgreSQL garde le premier. Remettez l'ancienne valeur, ou supprimez le volume de la base (ses données
avec) et redéployez.CONCLAVE_URL doit être exactement l'adresse tapée dans le navigateur,
port compris.GET /api/health.docker compose stop). N'en lancez qu'un seul : chaque événement
Discord serait sinon traité en double.Conclave est un projet de fans indépendant, ni affilié à Ubisoft ni approuvé par Ubisoft. Assassin's Creed est une marque d'Ubisoft Entertainment. Icônes : game-icons.net (CC BY 3.0).
Content type
Image
Digest
sha256:790ca8598…
Size
122.3 MB
Last updated
3 days ago
docker pull iemperor/conclave