{"meta":{"slug":"database-mongo-d-b7","name":"Mongo D B7","category":"nosql","source":"pelican","owner":"pelican-eggs","repo":"database","branch":"main","path":"nosql/mongodb/egg-mongo-d-b7.json","rawUrl":"https://raw.githubusercontent.com/pelican-eggs/database/main/nosql/mongodb/egg-mongo-d-b7.json","indexedAt":1792246788483},"egg":{"_comment":"DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL","meta":{"version":"PTDL_v2","update_url":null},"exported_at":"2024-06-02T14:34:26+00:00","name":"MongoDB 7","author":"parker@parkervcp.com","description":"MongoDB is a general purpose, document-based, distributed database built for modern application developers.","uuid":"dfbe8f8b-a06f-4033-ab21-ae0aab11abb7","features":null,"docker_images":{"MongoDB_7":"ghcr.io/parkervcp/yolks:mongodb_7"},"file_denylist":[],"startup":"mongod --fork --dbpath /home/container/mongodb/ --port ${SERVER_PORT} --bind_ip 0.0.0.0 --logpath /home/container/logs/mongo.log -f /home/container/mongod.conf; until nc -z -v -w5 127.0.0.1 ${SERVER_PORT}; do echo 'Waiting for mongodb connection...'; sleep 5; done; mongosh --username ${MONGO_USER} --password ${MONGO_USER_PASS} --host 127.0.0.1:${SERVER_PORT} && mongosh --eval \"db.getSiblingDB('admin').shutdownServer()\" 127.0.0.1:${SERVER_PORT}","config":{"files":"{\r\n    \"mongod.conf\": {\r\n        \"parser\": \"file\",\r\n        \"find\": {\r\n            \"#security:\": \"security: \\r\\n  authorization: \\\"enabled\\\"\"\r\n        }\r\n    }\r\n}","startup":"{\r\n    \"done\": \"child process started successfully\"\r\n}","logs":"{}","stop":"exit"},"scripts":{"installation":{"script":"#!/bin/bash \r\nif [ ! -d /mnt/server/ ]; then\r\n    mkdir -p /mnt/server/\r\nfi\r\n\r\ncd /mnt/server/\r\n\r\ncp /etc/mongod.conf.orig /mnt/server/mongod.conf\r\n\r\nmkdir mongodb logs\r\n\r\nmongod --port 27017 --dbpath /mnt/server/mongodb/ --logpath /mnt/server/logs/mongo.log --fork\r\n\r\nmongosh --eval \"db.getSiblingDB('admin').createUser({user: '${MONGO_USER}', pwd: '${MONGO_USER_PASS}', roles: ['root']})\"\r\n\r\nmongosh --eval \"db.getSiblingDB('admin').shutdownServer()\"\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"","container":"mongo:7-jammy","entrypoint":"bash"}},"variables":[{"name":"Mongo Admin Username","description":"The MongoDB Admin user","env_variable":"MONGO_USER","default_value":"admin","user_viewable":true,"user_editable":true,"rules":"required|string","sort":null,"field_type":"text"},{"name":"Mongo Admin Password","description":"","env_variable":"MONGO_USER_PASS","default_value":"","user_viewable":true,"user_editable":true,"rules":"required|string","sort":null,"field_type":"text"}]},"readme":"# MongoDB\n\n## From their [Website](https://www.mongodb.com/)\n\nMongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.\n\n### MongoDB free monitoring.\n\nTo disable the message about free monitoring you can run `db.disableFreeMonitoring()`.\n\n## Security\n\nBy default, MongoDB **does not enforce access control**, meaning that even if you set an admin username and password in the settings of your server, **anyone will be able to connect to the database without authentication**, and perform any operation.\n\n> :warning: This is why we recommend to expose your MongoDB database only to your local network, if possible\n\n### Enabling authentication\n\nTo enable authentification, you need to edit the following lines to your `mongod.conf` file:\n\n```yaml\nsecurity:\n  authorization: \"enabled\"\n```\n\n> :closed_lock_with_key: To learn more about MongoDB security, you can read the [MongoDB Security Checklist](https://www.mongodb.com/docs/manual/administration/security-checklist/#security-checklist)\n\n### Notes specific to the MongoDB 6 or 7 egg\n\n**The [MongoDB 6 egg](./egg-mongo-d-b6.json) or [MongoDB 7 egg](./egg-mongo-d-b7.json)  enables access control by default** in the `mongod.conf` file, meaning that even if people will be able to connect to your database as guests, [they will not be able to perform any operation, apart from nonhazardous commands](https://dba.stackexchange.com/a/292175)\n\n### Disabling authentication\n\n**If you know what you are doing** and want to explicitly disable access control, you can edit the following lines to your `mongod.conf` file:\n\n```yaml\nsecurity:\n  authorization: \"disabled\"\n```\n\n## Minimum RAM warning\n\nMongoDB requires approximately 1GB of RAM per 100.000 assets. If the system has to start swapping memory to disk, this will have a severely negative impact on performance, and should be avoided.\n\n## Server Ports\n\nPorts required to run the server in a table format.\n\n| Port    | default |\n|---------|---------|\n| Server  |  27017  |\n"}