Architektura
Client
↓
Port 27017 (MongoDB protocol)
↓
FerretDB container
↓
PostgreSQL container (internal Docker network)
↓
Persistent storage directory
FerretDB interně překládá požadavky protokolu MongoDB wire na dotazy PostgreSQL.
PostgreSQL není veřejně vystaveno.
Přístavy
- 27017/tcp → Veřejný koncový bod kompatibilní s MongoDB
- 5432/tcp → Interní PostgreSQL (není vystaveno externě)
Přístup
Odkaz na přihlašovací údaje: /root/ferretdb/.env
V případě potřeby nainstalujte klienta:
apt install -y mongodb-mongosh
Připojte se s ověřením:
mongosh "mongodb://<USERNAME>:<PASSWORD>@<SERVER_IP>:27017/<DATABASE>?authSource=postgres"
Důležité soubory a adresáře
- Instalační adresář:
/root/ferretdb - Soubor Compose:
/root/ferretdb/docker-compose.yml - Soubor s prostředím:
/root/ferretdb/.env - Datový adresář PostgreSQL:
/root/ferretdb/data
Správa služeb
Zkontrolovat stav:
docker ps
Zobrazit logy:
docker compose -f /root/ferretdb/docker-compose.yml logs -f
Restartovat služby:
docker compose -f /root/ferretdb/docker-compose.yml restart
Běžné příkazy MongoDB
Vypsat databáze:
show dbs
Přepnout databázi:
use postgres
Vypsat kolekce:
show collections
Zobrazit dokumenty:
db.collection_name.find()
Vložit dokument:
db.collection_name.insertOne({ name: "example" })
Ukončit shell:
exit
Z důvodu bezpečnosti navažte FerretDB na localhost
Ověřování je zapnuté, ale vystavené databázové služby stále představují riziko.
Upravit: /root/ferretdb/.env
Změnit HOST=0.0.0.0 to HOST=127.0.0.1
Poté aplikujte změny:
docker compose -f /root/ferretdb/docker-compose.yml up -d
Nyní není služba přístupná externě.
Přistupujte pomocí přesměrování portu SSH.
Z vašeho lokálního počítače:
ssh -L 27017:localhost:27017 root@<SERVER_IP>
Poté se připojte lokálně:
mongosh "mongodb://<USERNAME>:<PASSWORD>@localhost:27017/<DATABASE>?authSource=postgres