Ниже приведен фрагмент compose-docker, который работает отлично, он также запускает оба Unifi Controller. Контейнер MongoDB... но работает только тогда, когда на стороне MongoDB нет типа аутентификации....хорошо, это хорошо, но с точки зрения безопасности это не так хорошо....поэтому я хотел включить аутентификацию в базе данных MongoDB и заставить Unifi Controller выполнять аутентификацию по ней.
- Я запускаю этот фрагмент через портейнер, как вы можете видеть, моя единственная среда в unifi-контроллере — это >>>> "DB_URI: mongodb://unifi:12345678@test_mongo/unifi
STATDB_URI: mongodb://unifi:12345678@test_mongo/unifi_stat
DB_NAME: unifi - После запуска этого фрагмента unifi_controller пытаюсь использовать эти учетные записи для входа в базу данных mongo, это невозможно, и это нормально, потому что я не создавал эти учетные записи тем не менее, в mongo db.....mongo db работает нормально без какой-либо аутентификации, в данный момент я проверил через Compass и могу войти в БД
- собираюсь создать те учетные записи, которые указаны в среде unifi_controller при запуске docker-compose.... сначала я создал учетную запись root в «admin», после этого я создал две учетные записи для базы данных «unifi» и второй для "unifi_stat"....
Код: Выделить всё
db.createUser({
user: "root",
pwd: "12345678", // Replace with a strong passwordd
roles: [{ role: "root", db: "admin" }]
});
"
db.createUser({
user: "unifi",
pwd: "12345678", // Replace with a strong password
roles: [
{ role: "dbOwner", db: "unifi" },
{ role: "readWrite", db: "unifi" }
{ role: "userAdmin", db: "unifi" },
{ role: "listCollectionsRole", db: "unifi" }, #custom role ]
});
db.createUser({
user: "unifi",
pwd: "12345678", // Replace with a strong password
roles: [
{ role: "dbOwner", db: "unifi_stat" },
{ role: "readWrite", db: "unifi_stat" }
{ role: "userAdmin", db: "unifi" },
{ role: "listCollectionsRole", db: "unifi" }, #custom role
]
});
- < li>окей, на данный момент все хорошо, unifi_controller удалось войти в систему с этими учетными данными и автоматически создавать базы данных "unifi" и "unifi stats"..... но я "аутентификация в данный момент все еще отключена"
- в portainer перешел в контейнер «mongo» и в поле команды добавил «--auth», и теперь он выглядит так: «mongod» «--auth»......
- перезапустил контейнер mongo, контроллер unifi может успешно войти в систему и аутентифицироваться, что я вижу в журналах Mongo.
Код: Выделить всё
Caused by: com.mongodb.MongoCommandException: Command failed with error 13 (Unauthorized): 'not authorized on unifi_stat to execute command { listCollections: 1, cursor: {}, nameOnly: true, $db: "unifi_stat", lsid: { id: UUID("ae95edea-70d5-4427-9780-3549e80deecb") } }' on server test_mongo:27017. The full response is {"ok": 0.0, "errmsg": "not authorized on unifi_stat to execute command { listCollections: 1, cursor: {}, nameOnly: true, $db: \"unifi_stat\", lsid: { id: UUID(\"ae95edea-70d5-4427-9780-3549e80deecb\") } }", "code": 13, "codeName": "Unauthorized"}Код: Выделить всё
[conn105] Unauthorized: not authorized on unifi_stat to execute command { listCollections: 1, cursor: {}, nameOnly: true, $db: "unifi_stat", lsid: { id: UUID("0461caa4-467a-4234-bb71-07d41a1218ad") } }Код: Выделить всё
version: '2.3'
services:
mongo:
image: mongo:3.6
container_name: ${COMPOSE_PROJECT_NAME}_mongo
restart: always
volumes:
- db:/data/db
- dbcfg:/data/configdb
controller:
image: "jacobalberty/unifi:${TAG:-latest}"
container_name: ${COMPOSE_PROJECT_NAME}_controller
depends_on:
- mongo
init: true
restart: always
volumes:
- dir:/unifi
- data:/unifi/data
- log:/unifi/log
- cert:/unifi/cert
- init:/unifi/init.d
- run:/var/run/unifi
# Mount local folder for backups and autobackups
- ./backup:/unifi/data/backup
user: unifi
sysctls:
net.ipv4.ip_unprivileged_port_start: 0
environment:
DB_URI: mongodb://unifi:12345678@test_mongo/unifi?authSource=unifi
STATDB_URI: mongodb://unifi:12345678@test_mongo/unifi_stat?authSource=unifi_stat
DB_NAME: unifi
ports:
- "3478:3478/udp" # STUN
- "6789:6789/tcp" # Speed test
- "8080:8080/tcp" # Device/ controller comm.
- "8443:8443/tcp" # Controller GUI/API as seen in a web browser
- "8880:8880/tcp" # HTTP portal redirection
- "8843:8843/tcp" # HTTPS portal redirection
- "10001:10001/udp" # AP discovery
logs:
image: bash
container_name: ${COMPOSE_PROJECT_NAME}_logs
depends_on:
- controller
command: bash -c 'tail -F /unifi/log/*.log'
restart: always
volumes:
- log:/unifi/log
volumes:
db:
dbcfg:
data:
log:
cert:
init:
dir:
run:
Подробнее здесь: https://stackoverflow.com/questions/792 ... -container