Architecture
Client
↓
Port 27017 (MongoDB protocol)
↓
FerretDB container
↓
PostgreSQL container (internal Docker network)
↓
Persistent storage directory
FerretDB traduit en interne les requêtes du protocole wire de MongoDB en requêtes PostgreSQL.
PostgreSQL n’est pas exposé publiquement.
Ports
- 27017/tcp → Point de terminaison public compatible MongoDB
- 5432/tcp → PostgreSQL interne (non exposé à l’extérieur)
Accès
Référence des identifiants : /root/ferretdb/.env
Installez le client si nécessaire :
apt install -y mongodb-mongosh
Connectez-vous avec authentification :
mongosh "mongodb://<USERNAME>:<PASSWORD>@<SERVER_IP>:27017/<DATABASE>?authSource=postgres"
Fichiers et répertoires importants
- Répertoire d'installation :
/root/ferretdb - Fichier Compose :
/root/ferretdb/docker-compose.yml - Fichier d'environnement :
/root/ferretdb/.env - Répertoire de données PostgreSQL :
/root/ferretdb/data
Gestion des services
Vérifier l'état :
docker ps
Voir les logs :
docker compose -f /root/ferretdb/docker-compose.yml logs -f
Redémarrer les services :
docker compose -f /root/ferretdb/docker-compose.yml restart
Commandes MongoDB courantes
Lister les bases de données :
show dbs
Changer de base de données :
use postgres
Lister les collections :
show collections
Afficher les documents :
db.collection_name.find()
Insérer un document :
db.collection_name.insertOne({ name: "example" })
Quitter le shell :
exit
Lier FerretDB à Localhost pour la sécurité
L’authentification est activée, mais les services de base de données exposés restent un risque.
Modifiez : /root/ferretdb/.env
Remplacez HOST=0.0.0.0 to HOST=127.0.0.1
Appliquez ensuite les modifications :
docker compose -f /root/ferretdb/docker-compose.yml up -d
Le service n’est désormais plus accessible depuis l’extérieur.
Accédez-y via la redirection de port SSH.
Depuis votre machine locale :
ssh -L 27017:localhost:27017 root@<SERVER_IP>
Connectez-vous ensuite localement :
mongosh "mongodb://<USERNAME>:<PASSWORD>@localhost:27017/<DATABASE>?authSource=postgres