Архітектура
Client
↓
Port 27017 (MongoDB protocol)
↓
FerretDB container
↓
PostgreSQL container (internal Docker network)
↓
Persistent storage directory
FerretDB внутрішньо перекладає запити протоколу MongoDB у запити PostgreSQL.
PostgreSQL не має публічного доступу.
Порти
- 27017/tcp → Публічна кінцева точка, сумісна з MongoDB
- 5432/tcp → Внутрішній PostgreSQL (без зовнішнього доступу)
Доступ
Довідка щодо облікових даних: /root/ferretdb/.env
Встановіть клієнт за потреби:
apt install -y mongodb-mongosh
Підключіться з автентифікацією:
mongosh "mongodb://<USERNAME>:<PASSWORD>@<SERVER_IP>:27017/<DATABASE>?authSource=postgres"
Важливі файли та директорії
- Директорія встановлення:
/root/ferretdb - Файл складання:
/root/ferretdb/docker-compose.yml - Файл середовища:
/root/ferretdb/.env - Каталог даних PostgreSQL:
/root/ferretdb/data
Керування сервісом
Перевірити стан:
docker ps
Переглянути логи:
docker compose -f /root/ferretdb/docker-compose.yml logs -f
Перезапустити служби:
docker compose -f /root/ferretdb/docker-compose.yml restart
Поширені команди MongoDB
Список баз даних:
show dbs
Перемкнути базу даних:
use postgres
Список колекцій:
show collections
Переглянути документи:
db.collection_name.find()
Вставити документ:
db.collection_name.insertOne({ name: "example" })
Вийти з оболонки:
exit
Прив'яжіть FerretDB до Localhost для безпеки
Автентифікацію ввімкнено, але відкриті служби бази даних усе ще становлять ризик.
Редагувати: /root/ferretdb/.env
Змінити HOST=0.0.0.0 to HOST=127.0.0.1
Потім застосуйте зміни:
docker compose -f /root/ferretdb/docker-compose.yml up -d
Тепер служба недоступна ззовні.
Отримайте доступ за допомогою переспрямування портів SSH.
З вашої локальної машини:
ssh -L 27017:localhost:27017 root@<SERVER_IP>
Потім підключіться локально:
mongosh "mongodb://<USERNAME>:<PASSWORD>@localhost:27017/<DATABASE>?authSource=postgres