Arkitektur
Client
↓
Port 27017 (MongoDB protocol)
↓
FerretDB container
↓
PostgreSQL container (internal Docker network)
↓
Persistent storage directory
FerretDB oversætter internt MongoDB wire protocol-forespørgsler til PostgreSQL-forespørgsler.
PostgreSQL er ikke offentligt eksponeret.
Havne
- 27017/tcp → Offentligt MongoDB-kompatibelt endpoint
- 5432/tcp → Intern PostgreSQL (ikke eksponeret eksternt)
Adgang
Reference til loginoplysninger: /root/ferretdb/.env
Installer klienten om nødvendigt:
apt install -y mongodb-mongosh
Opret forbindelse med autentificering:
mongosh "mongodb://<USERNAME>:<PASSWORD>@<SERVER_IP>:27017/<DATABASE>?authSource=postgres"
Vigtige filer og mapper
- Installationsmappe:
/root/ferretdb - Kompositionsfil:
/root/ferretdb/docker-compose.yml - Environment-fil:
/root/ferretdb/.env - PostgreSQL-datamappe:
/root/ferretdb/data
Service-håndtering
Tjek status:
docker ps
Se logs:
docker compose -f /root/ferretdb/docker-compose.yml logs -f
Genstart tjenester:
docker compose -f /root/ferretdb/docker-compose.yml restart
Almindelige MongoDB-kommandoer
Vis databaser:
show dbs
Skift database:
use postgres
Vis collections:
show collections
Vis dokumenter:
db.collection_name.find()
Indsæt dokument:
db.collection_name.insertOne({ name: "example" })
Afslut shell:
exit
Bind FerretDB til localhost for sikkerhed
Autentificering er aktiveret, men eksponerede databasetjenester er stadig en risiko.
Rediger: /root/ferretdb/.env
Ændring HOST=0.0.0.0 to HOST=127.0.0.1
Anvend derefter ændringerne:
docker compose -f /root/ferretdb/docker-compose.yml up -d
Nu er tjenesten ikke tilgængelig eksternt.
Få adgang via SSH-port forwarding.
Fra din lokale maskine:
ssh -L 27017:localhost:27017 root@<SERVER_IP>
Opret derefter forbindelse lokalt:
mongosh "mongodb://<USERNAME>:<PASSWORD>@localhost:27017/<DATABASE>?authSource=postgres