Mimari
Client
↓
Port 27017 (MongoDB protocol)
↓
FerretDB container
↓
PostgreSQL container (internal Docker network)
↓
Persistent storage directory
FerretDB, MongoDB wire protokolü isteklerini dahili olarak PostgreSQL sorgularına çevirir.
PostgreSQL herkese açık değildir.
Portlar
- 27017/tcp → Herkese açık MongoDB uyumlu uç nokta
- 5432/tcp → Dahili PostgreSQL (dışarıya açık değil)
Erişim
Kimlik bilgileri referansı: /root/ferretdb/.env
Gerekirse istemciyi kurun:
apt install -y mongodb-mongosh
Kimlik doğrulamasıyla bağlanın:
mongosh "mongodb://<USERNAME>:<PASSWORD>@<SERVER_IP>:27017/<DATABASE>?authSource=postgres"
Önemli Dosyalar ve Dizinler
- Kurulum dizini:
/root/ferretdb - Compose dosyası:
/root/ferretdb/docker-compose.yml - Environment dosyası:
/root/ferretdb/.env - PostgreSQL veri dizini:
/root/ferretdb/data
Servis Yönetimi
Durumu kontrol edin:
docker ps
Logları göster:
docker compose -f /root/ferretdb/docker-compose.yml logs -f
Hizmetleri yeniden başlatın:
docker compose -f /root/ferretdb/docker-compose.yml restart
Yaygın MongoDB Komutları
Veritabanlarını listeleyin:
show dbs
Veritabanını değiştirin:
use postgres
Koleksiyonları listeleyin:
show collections
Belgeleri görüntüleyin:
db.collection_name.find()
Belge ekleyin:
db.collection_name.insertOne({ name: "example" })
Kabuktan çıkın:
exit
Güvenlik için FerretDB'yi Localhost'a Bağlayın
Kimlik doğrulama etkindir, ancak dışarıya açık veritabanı hizmetleri yine de bir risktir.
Düzenle: /root/ferretdb/.env
Değiştir HOST=0.0.0.0 to HOST=127.0.0.1
Ardından değişiklikleri uygulayın:
docker compose -f /root/ferretdb/docker-compose.yml up -d
Artık hizmete dışarıdan erişilemez.
SSH port yönlendirmesi kullanarak erişin.
Yerel makinenizden:
ssh -L 27017:localhost:27017 root@<SERVER_IP>
Ardından yerel olarak bağlanın:
mongosh "mongodb://<USERNAME>:<PASSWORD>@localhost:27017/<DATABASE>?authSource=postgres