Architectuur
Client
↓
Port 27017 (MongoDB protocol)
↓
FerretDB container
↓
PostgreSQL container (internal Docker network)
↓
Persistent storage directory
FerretDB vertaalt MongoDB wire protocol-verzoeken intern naar PostgreSQL-queries.
PostgreSQL is niet openbaar toegankelijk.
Poorten
- 27017/tcp → Openbaar MongoDB-compatibel endpoint
- 5432/tcp → Interne PostgreSQL (niet extern toegankelijk)
Toegang
Inloggegevens-referentie: /root/ferretdb/.env
Installeer de client indien nodig:
apt install -y mongodb-mongosh
Verbind met authenticatie:
mongosh "mongodb://<USERNAME>:<PASSWORD>@<SERVER_IP>:27017/<DATABASE>?authSource=postgres"
Belangrijke bestanden en mappen
- Installatiemap:
/root/ferretdb - Compose-bestand
/root/ferretdb/docker-compose.yml - Environment-bestand:
/root/ferretdb/.env - PostgreSQL-datamap:
/root/ferretdb/data
Servicebeheer
Status controleren:
docker ps
Logs bekijken:
docker compose -f /root/ferretdb/docker-compose.yml logs -f
Services opnieuw starten:
docker compose -f /root/ferretdb/docker-compose.yml restart
Veelgebruikte MongoDB-commando's
Databases weergeven:
show dbs
Van database wisselen:
use postgres
Collecties weergeven:
show collections
Documenten bekijken:
db.collection_name.find()
Document invoegen:
db.collection_name.insertOne({ name: "example" })
Shell afsluiten:
exit
Bind FerretDB aan localhost voor beveiliging
Authenticatie is ingeschakeld, maar blootgestelde databaseservices vormen nog steeds een risico.
Bewerk: /root/ferretdb/.env
Wijzigen HOST=0.0.0.0 to HOST=127.0.0.1
Pas vervolgens de wijzigingen toe:
docker compose -f /root/ferretdb/docker-compose.yml up -d
Nu is de service niet extern toegankelijk.
Krijg toegang via SSH-portforwarding.
Voer dit uit op je lokale machine:
ssh -L 27017:localhost:27017 root@<SERVER_IP>
Verbind vervolgens lokaal:
mongosh "mongodb://<USERNAME>:<PASSWORD>@localhost:27017/<DATABASE>?authSource=postgres