mirror of
https://github.com/R0m1k3/PleinR.git
synced 2026-10-11 17:27:54 +02:00
Installation VPS sans reverse proxy : Caddy + Let's Encrypt en surcouche Compose
Ajoute docker-compose.caddy.yml et un Caddyfile pour servir le site sur un nom de domaine en 80/443 avec certificat automatique, sans Nginx Proxy Manager. Le port 8413 n'est plus publié dans ce mode et le réseau proxy est créé par Compose. Procédure documentée dans le README et .env.example. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B8UUiQtBWYWNFcsea8spnX
This commit is contained in:
5 files changed
+97
No files matched your search
@@ -39,6 +39,12 @@ SEED_DEMO=false
|
||||
NODE_ENV=production
|
||||
PORT=3000
|
||||
|
||||
# ---- VPS sans reverse proxy : Caddy + Let's Encrypt (voir README) ----
|
||||
# Décommentez pour ajouter docker-compose.caddy.yml (ports 80/443, HTTPS auto).
|
||||
#COMPOSE_FILE=docker-compose.yml:docker-compose.caddy.yml
|
||||
#SITE_DOMAIN=pleinr.example.fr
|
||||
#CADDY_EMAIL=vous@example.fr
|
||||
|
||||
# URL publique du site. Se règle normalement dans Backend › Réseaux sociaux ;
|
||||
# cette variable ne sert que de repli (puis AUTH_URL en dernier recours).
|
||||
NEXT_PUBLIC_SITE_URL=
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
# Reverse proxy Caddy pour Plein R (voir docker-compose.caddy.yml).
|
||||
# Caddy gère seul le certificat Let's Encrypt et la redirection HTTP -> HTTPS.
|
||||
|
||||
{
|
||||
email {$CADDY_EMAIL}
|
||||
}
|
||||
|
||||
{$SITE_DOMAIN} {
|
||||
encode zstd gzip
|
||||
reverse_proxy pleinr-app:3000
|
||||
}
|
||||
@@ -45,6 +45,35 @@ charge des données de démonstration. Ensuite :
|
||||
> **Postgres déjà existant ?** Supprimez le service `postgres` de `docker-compose.yml`
|
||||
> et pointez `DATABASE_URL` vers votre instance.
|
||||
|
||||
## Installation sur un VPS sans reverse proxy (domaine + HTTPS)
|
||||
|
||||
Le `docker-compose.yml` suppose un Nginx Proxy Manager déjà en place. Sur un
|
||||
serveur nu, `docker-compose.caddy.yml` ajoute **Caddy** devant l'application :
|
||||
il écoute en 80 et 443, obtient et renouvelle seul le certificat Let's Encrypt
|
||||
et redirige HTTP vers HTTPS.
|
||||
|
||||
1. Faire pointer le DNS du domaine (enregistrement A / AAAA) vers l'IP du VPS et
|
||||
ouvrir les ports 80 et 443 (`ufw allow 80,443/tcp`).
|
||||
2. Installer Docker : `curl -fsSL https://get.docker.com | sh`
|
||||
3. Cloner le dépôt, copier `.env.example` en `.env` et renseigner :
|
||||
|
||||
```dotenv
|
||||
COMPOSE_FILE=docker-compose.yml:docker-compose.caddy.yml
|
||||
SITE_DOMAIN=pleinr.example.fr
|
||||
CADDY_EMAIL=vous@example.fr
|
||||
AUTH_URL=https://pleinr.example.fr
|
||||
POSTGRES_PASSWORD=un-vrai-mot-de-passe
|
||||
SEED_ADMIN_EMAIL=vous@example.fr
|
||||
```
|
||||
|
||||
4. Lancer : `docker compose up -d --build`
|
||||
5. Récupérer le mot de passe administrateur généré au premier démarrage :
|
||||
`docker logs pleinr-app 2>&1 | grep -i -A2 "mot de passe"`
|
||||
|
||||
Le site est alors servi sur `https://pleinr.example.fr`. Le port 8413 n'est
|
||||
plus publié : tout passe par Caddy. Les certificats vivent dans le volume
|
||||
`caddy_data`. Mise à jour : `git pull && docker compose up -d --build`.
|
||||
|
||||
## Comptes de démonstration (seed)
|
||||
|
||||
| E-mail | Mot de passe | Rôle |
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
# Plein R — variante « VPS sans reverse proxy existant ».
|
||||
#
|
||||
# Ajoute Caddy devant l'application : il écoute en 80 et 443, obtient et
|
||||
# renouvelle tout seul le certificat Let's Encrypt pour SITE_DOMAIN, et
|
||||
# redirige automatiquement HTTP vers HTTPS.
|
||||
#
|
||||
# Utilisation : dans .env, poser
|
||||
# COMPOSE_FILE=docker-compose.yml:docker-compose.caddy.yml
|
||||
# SITE_DOMAIN=pleinr.example.fr
|
||||
# CADDY_EMAIL=vous@example.fr
|
||||
# AUTH_URL=https://pleinr.example.fr
|
||||
# puis `docker compose up -d --build` comme d'habitude.
|
||||
#
|
||||
# Pré-requis : le DNS du domaine pointe vers le VPS et les ports 80/443 sont
|
||||
# ouverts dans le pare-feu.
|
||||
|
||||
services:
|
||||
caddy:
|
||||
image: caddy:2-alpine
|
||||
container_name: pleinr-caddy
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- app
|
||||
environment:
|
||||
SITE_DOMAIN: ${SITE_DOMAIN:?SITE_DOMAIN manquant dans .env}
|
||||
CADDY_EMAIL: ${CADDY_EMAIL:?CADDY_EMAIL manquant dans .env (alertes d expiration Let's Encrypt)}
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "443:443/udp"
|
||||
volumes:
|
||||
- ./Caddyfile:/etc/caddy/Caddyfile:ro
|
||||
- caddy_data:/data
|
||||
- caddy_config:/config
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
app:
|
||||
# L'application n'est plus publiée directement sur l'hôte : tout passe
|
||||
# par Caddy (sinon http://IP:8413 contournerait le HTTPS).
|
||||
ports: !reset []
|
||||
|
||||
volumes:
|
||||
caddy_data:
|
||||
caddy_config:
|
||||
|
||||
networks:
|
||||
# Sans Nginx Proxy Manager, personne ne crée ce réseau : Compose s'en charge.
|
||||
proxy:
|
||||
external: false
|
||||
@@ -93,5 +93,6 @@ networks:
|
||||
proxy:
|
||||
# The reverse proxy's existing network. Must already exist (created by the
|
||||
# NPM/nginx stack). Override the name with PROXY_NETWORK if it differs.
|
||||
# Sans proxy existant : voir docker-compose.caddy.yml (README).
|
||||
external: true
|
||||
name: ${PROXY_NETWORK:-nginx_default}
|
||||
Reference in new issue
Block a user