Docker
Lancez socAdmin en conteneur à côté de vos bases de données existantes, avec une seule commande ou quelques lignes de Compose.
Démarrage rapide
docker run -d \
-p 8080:8080 \
-v socadmin-data:/data \
-e ADMIN_EMAIL=admin@example.com \
-e ADMIN_PASSWORD='MyStr0ng!Pass' \
soleilclems/socadminOuvrez http://localhost:8080 et connectez-vous avec l’email et le mot de passe ci-dessus.
-v socadmin-data:/dataconserve les comptes, les paramètres et les clés de chiffrement entre les redémarrages. Montez-le toujours.ADMIN_EMAILetADMIN_PASSWORDcréent le premier compte administrateur au démarrage. Sans eux, la première personne à s’inscrire devient l’administrateur.
Docker Compose
Ajoutez socAdmin au fichier Compose qui lance votre base de données. Les variables *_HOST pré-configurent la connexion, pour que les utilisateurs n’aient pas à saisir l’adresse du serveur. Utilisez le nom du service comme hôte.
services:
socadmin:
image: soleilclems/socadmin
ports:
- "8080:8080"
volumes:
- socadmin-data:/data
environment:
- ADMIN_EMAIL=admin@example.com
- ADMIN_PASSWORD=MyStr0ng!Pass
- MYSQL_HOST=mysql
- MYSQL_USER=root
- MYSQL_PASSWORD=secret
depends_on:
mysql:
condition: service_healthy
mysql:
image: mysql:8
environment:
- MYSQL_ROOT_PASSWORD=secret
volumes:
- mysql-data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 5s
timeout: 3s
retries: 10
volumes:
socadmin-data:
mysql-data:services:
socadmin:
image: soleilclems/socadmin
ports:
- "8080:8080"
volumes:
- socadmin-data:/data
environment:
- ADMIN_EMAIL=admin@example.com
- ADMIN_PASSWORD=MyStr0ng!Pass
- POSTGRES_HOST=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=secret
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:16-alpine
environment:
- POSTGRES_PASSWORD=secret
volumes:
- pg-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 3s
retries: 10
volumes:
socadmin-data:
pg-data:services:
socadmin:
image: soleilclems/socadmin
ports:
- "8080:8080"
volumes:
- socadmin-data:/data
environment:
- ADMIN_EMAIL=admin@example.com
- ADMIN_PASSWORD=MyStr0ng!Pass
- MONGO_HOST=mongo
depends_on:
mongo:
condition: service_healthy
mongo:
image: mongo:7
volumes:
- mongo-data:/data/db
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
interval: 5s
timeout: 3s
retries: 10
volumes:
socadmin-data:
mongo-data:services:
socadmin:
image: soleilclems/socadmin
ports:
- "8080:8080"
volumes:
- socadmin-data:/data
environment:
- ADMIN_EMAIL=admin@example.com
- ADMIN_PASSWORD=MyStr0ng!Pass
- JWT_SECRET=change-me-to-a-random-string-at-least-32-chars
- MYSQL_HOST=mysql
- MYSQL_USER=root
- MYSQL_PASSWORD=secret
- POSTGRES_HOST=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=secret
- MONGO_HOST=mongo
depends_on:
mysql:
condition: service_healthy
postgres:
condition: service_healthy
mongo:
condition: service_healthy
restart: unless-stopped
mysql:
image: mysql:8
environment:
- MYSQL_ROOT_PASSWORD=secret
volumes:
- mysql-data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 5s
timeout: 3s
retries: 10
postgres:
image: postgres:16-alpine
environment:
- POSTGRES_PASSWORD=secret
volumes:
- pg-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 3s
retries: 10
mongo:
image: mongo:7
volumes:
- mongo-data:/data/db
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
interval: 5s
timeout: 3s
retries: 10
volumes:
socadmin-data:
mysql-data:
pg-data:
mongo-data:Puis démarrez le tout :
docker compose up -dConnexion aux bases de données hors Compose
À l’intérieur d’un conteneur, socAdmin bloque les connexions aux adresses IP privées et de bouclage par défaut (127.0.0.1, 10.x, 172.16-31.x, 192.168.x). Cela empêche l’interface d’être utilisée pour sonder votre réseau interne.
Les noms de services comme mysql ou db.internal ne sont pas concernés. Si vous devez atteindre une base de données par IP privée, par exemple une sur la machine hôte, activez l’option :
-e ALLOW_PRIVATE_NETWORKS=trueLes adresses de métadonnées cloud (169.254.x.x) restent bloquées dans tous les cas.
Le volume de données
Tout ce que socAdmin conserve se trouve dans un seul fichier SQLite, /data/socadmin.db :
- Les comptes socAdmin, rôles et paramètres
- Les identifiants de base de données sauvegardés, chiffrés
- La clé de chiffrement de ces identifiants, générée au premier démarrage
- Le secret de signature JWT, quand
JWT_SECRETn’est pas défini
Si vous perdez le volume, tous les comptes et connexions sauvegardées sont perdus. Sauvegardez-le comme n’importe quelle autre base de données.
Les logs d’audit (connexions, accès aux bases, requêtes exécutées) sont écrits sur la sortie standard, consultez-les avec docker logs. Ils ne contiennent jamais de mots de passe, de texte de requête ni de données de lignes.
Détails de l’image
- Basée sur
alpine:3.21, environ 30 Mo. - S’exécute en tant qu’utilisateur non-root
socadmin. - Health check intégré sur
/. - Architecture :
linux/amd64. - Écoute sur le port
8080. Modifiez-le avecPORT.
Ensuite, placez-le derrière HTTPS : Mise en production.