MongoDB URL Authentication
    • Dark
      Light
    • PDF

    MongoDB URL Authentication

    • Dark
      Light
    • PDF

    Article summary

    The connection between Rocket.Chat and MongoDB instance is achieved using a MongoDB connection string URL. MongoDB authentication is done with the username and password.

    Adding the following snippet to your .env file does the trick:

    MONGO_URL=mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

    In your container, pass MONGO_URL and MONGO_OPLOG_URL with the right values for connection.

    Depending on the password you're using, you might need to escape some characters. Refer to the MongoDB documentation for more information

    Your docker-compose.yml file should look like this:

    environment:
          - "MONGO_URL=mongodb://rctestuser:mymongopassword@mongo:27017/rocketchat?authSource=admin"
          - "MONGO_OPLOG_URL=mongodb://rctestuser:mymongopassword@mongo:27017/local?authSource=admin"

    If you are using docker run, it should look like this:

    docker run \                                                                                                                                                                                                                   -e "MONGO_URL=mongodb://rctestuser:mymongopassword@mongo:27017/rocketchat?authSource=admin" \
    -e "MONGO_OPLOG_URL=mongodb://rctestuser:mymongopassword@mongo:27017/local?authSource=admin" \
    rocketchat/rocket.chat:X.X.X

    MongoDB authentication role

    If you are using MongoDB authentication, you might also need to add the clusterMonitor role to your user. The clusterMonitor role gives users read-only access to MongoDB monitoring tools. This is a requirement for your instance to be able to use change streams. Change streams allow your workspace to react to real-time changes in data

    Execute the following command, replacing the users with that selected for your users:

    admin = db.getSiblingDB("admin");
    admin.grantRolesToUser('OPLOGUSER',[{ role: "clusterMonitor", db: "admin" }])
    admin.grantRolesToUser('ROCKETUSER',[{ role: "clusterMonitor", db: "admin" }])


    Was this article helpful?

    ESC

    Eddy AI, facilitating knowledge discovery through conversational intelligence