Arsitektur
Client
↓
Port 27017 (MongoDB protocol)
↓
FerretDB container
↓
PostgreSQL container (internal Docker network)
↓
Persistent storage directory
FerretDB menerjemahkan permintaan wire protocol MongoDB menjadi query PostgreSQL secara internal.
PostgreSQL tidak diekspos secara publik.
Pelabuhan
- 27017/tcp → Endpoint publik yang kompatibel dengan MongoDB
- 5432/tcp → PostgreSQL internal (tidak diekspos ke luar)
Akses
Referensi kredensial: /root/ferretdb/.env
Pasang client jika diperlukan:
apt install -y mongodb-mongosh
Hubungkan dengan autentikasi:
mongosh "mongodb://<USERNAME>:<PASSWORD>@<SERVER_IP>:27017/<DATABASE>?authSource=postgres"
File dan Direktori Penting
- Direktori install:
/root/ferretdb - File komposisi:
/root/ferretdb/docker-compose.yml - File environment:
/root/ferretdb/.env - Direktori data PostgreSQL:
/root/ferretdb/data
Manajemen Layanan
Periksa status:
docker ps
Lihat log:
docker compose -f /root/ferretdb/docker-compose.yml logs -f
Mulai ulang layanan:
docker compose -f /root/ferretdb/docker-compose.yml restart
Perintah MongoDB Umum
Daftar database:
show dbs
Beralih database:
use postgres
Daftar collection:
show collections
Lihat dokumen:
db.collection_name.find()
Sisipkan dokumen:
db.collection_name.insertOne({ name: "example" })
Keluar dari shell:
exit
Ikat FerretDB ke Localhost untuk Keamanan
Autentikasi diaktifkan, tetapi layanan database yang terekspos tetap berisiko.
Sunting: /root/ferretdb/.env
Ubah HOST=0.0.0.0 to HOST=127.0.0.1
Lalu terapkan perubahan:
docker compose -f /root/ferretdb/docker-compose.yml up -d
Sekarang layanan tidak dapat diakses dari luar.
Akses menggunakan SSH port forwarding.
Dari mesin lokal Anda:
ssh -L 27017:localhost:27017 root@<SERVER_IP>
Lalu hubungkan secara lokal:
mongosh "mongodb://<USERNAME>:<PASSWORD>@localhost:27017/<DATABASE>?authSource=postgres