Mise en production
Lancez socAdmin derrière HTTPS avec un secret fixe, un conteneur verrouillé et l'inscription désactivée.
socAdmin donne accès à vos bases de données : traitez-le comme un panneau d’administration et ne l’exposez jamais directement sur internet.
Checklist
- Définissez
JWT_SECRETavec une chaîne aléatoire d’au moins 32 caractères. Générez-en une avecopenssl rand -base64 32. - Utilisez un
ADMIN_PASSWORDrobuste. - Définissez
REGISTRATION_ENABLED=falsepour que seuls les administrateurs puissent ajouter des utilisateurs. - Servez socAdmin en HTTPS, via un reverse proxy ou avec
TLS_CERT/TLS_KEY. - Définissez
SECURE_COOKIES=truelorsque le HTTPS se termine au niveau du proxy. - Définissez
TRUSTED_PROXYavec l’IP ou le sous-réseau de votre proxy pour que le rate limiting voie les vraies IP clientes. - Ne publiez pas le port
8080sur internet. Liez-le à127.0.0.1ou gardez-le sur le réseau interne. - Montez
/datasur un volume persistant et sauvegardez-le.
Fichier Compose recommandé
Cette configuration lance le conteneur avec un système de fichiers en lecture seule et ne l’expose qu’à l’hôte lui-même, pour un reverse proxy sur la même machine.
services:
socadmin:
image: soleilclems/socadmin
read_only: true
tmpfs:
- /tmp
ports:
- "127.0.0.1:8080:8080"
volumes:
- socadmin-data:/data
environment:
- JWT_SECRET=${JWT_SECRET:?Set a random string of at least 32 characters}
- ADMIN_EMAIL=${ADMIN_EMAIL}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
- REGISTRATION_ENABLED=false
- SECURE_COOKIES=true
# Requests from a proxy on the host reach the container through the Docker bridge
- TRUSTED_PROXY=172.16.0.0/12
restart: unless-stopped
volumes:
socadmin-data:Placez les secrets dans un fichier .env à côté du Compose, pas directement dans le fichier Compose.
Derrière Nginx
server {
listen 443 ssl;
server_name db.example.com;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Derrière Traefik
services:
socadmin:
image: soleilclems/socadmin
labels:
- "traefik.enable=true"
- "traefik.http.routers.socadmin.rule=Host(`db.example.com`)"
- "traefik.http.routers.socadmin.tls.certresolver=letsencrypt"
- "traefik.http.services.socadmin.loadbalancer.server.port=8080"
volumes:
- socadmin-data:/data
environment:
- JWT_SECRET=${JWT_SECRET}
- ADMIN_EMAIL=${ADMIN_EMAIL}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
- REGISTRATION_ENABLED=false
- SECURE_COOKIES=trueHTTPS sans proxy
socAdmin peut servir du HTTPS directement. Montez le certificat et la clé, puis pointez vers eux :
-e TLS_CERT=/data/certs/cert.pem \
-e TLS_KEY=/data/certs/key.pemAvec TLS activé, socAdmin démarre également un listener qui redirige le HTTP simple vers HTTPS, sur le port 80 par défaut. Le conteneur s’exécute en tant qu’utilisateur non-root et ne peut pas se lier au port 80 : définissez HTTP_REDIRECT_PORT avec un port supérieur à 1024 (par exemple 8081) et publiez-le.
Restreindre par IP
Les administrateurs peuvent activer une whitelist IP depuis les paramètres de sécurité de socAdmin. Lorsqu’elle est activée, seules les adresses IP listées peuvent accéder à l’interface. Derrière un proxy, définissez d’abord TRUSTED_PROXY, sinon la whitelist ne voit que l’adresse du proxy.