Egg Repository

Pterodactyl Community Egg Repository

MongoDB 8

MongoDB Server is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.

Read Me

MongoDB

From their Website

MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.

MongoDB free monitoring.

To disable the message about free monitoring you can run db.disableFreeMonitoring().

Security

By default, MongoDB does not enforce access control, meaning that even if you set an admin username and password in the settings of your Pterodactyl server, anyone will be able to connect to the database without authentication, and perform any operation.

⚠️ This is why we recommend to expose your MongoDB database only to your local network, if possible

Enabling authentication

To enable authentification, you need to edit the following lines to your mongod.conf file:

security:
  authorization: "enabled"

🔐 To learn more about MongoDB security, you can read the MongoDB Security Checklist

Notes specific to the MongoDB 6+

MongoDB 6+ eggs enable 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

Disabling authentication

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:

security:
  authorization: "disabled"

Minimum RAM warning

MongoDB 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.

Server Ports

Ports required to run the server in a table format.

Portdefault
Server27017
Yolks
NameTag
MongoDB_8ghcr.io/ptero-eggs/yolks:mongodb_8
Variables and Startup

Startup Command

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 --username ${MONGO_USER} --password ${MONGO_USER_PASS} --host 127.0.0.1:${SERVER_PORT} --eval "db.getSiblingDB('admin').shutdownServer()"

Variables

Mongo Admin Username

The MongoDB Admin user

Environment Variable: MONGO_USER
Default Value: admin
User Viewable:
User Editable:
Mongo Admin Password

Environment Variable: MONGO_USER_PASS
Default Value:
User Viewable:
User Editable:
Install Script
#!/bin/bash 
if [ ! -d /mnt/server/ ]; then
    mkdir -p /mnt/server/
fi

cd /mnt/server/

cp /etc/mongod.conf.orig /mnt/server/mongod.conf

mkdir mongodb logs

mongod --port 27017 --dbpath /mnt/server/mongodb/ --logpath /mnt/server/logs/mongo.log --fork

mongosh --eval "db.getSiblingDB('admin').createUser({user: '${MONGO_USER}', pwd: '${MONGO_USER_PASS}', roles: ['root']})"

mongosh --eval "db.getSiblingDB('admin').shutdownServer()"

## install end
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"
Installation Imagemongo:8-nobleInstallation Entrypointbash