Setup MongoDB
08. 06. 2023
- Connect to bastion:
ssh -i my-project.pem ubuntu@3.82.141.206
- Copy my-project.pem on the bastion
- Connect to mongo instance:
ssh -i my-project.pem ubuntu@172.18.41.49
- Configure data disk:
sudo -i mkfs.xfs /dev/xvdb mkdir /var/lib/mongodb disk=`blkid | grep xvdb | awk '{print $2}'` echo "$disk /var/lib/mongodb xfs nodev,nosuid,noatime 0 2" >> /etc/fstab mount -a chown mongodb:mongodb /var/lib/mongodb
- Setup mongodb:
apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list apt update apt install -y mongodb-org systemctl enable mongod systemctl restart mongod
- Configure mongo:
Login to mongo:
mongo
Create users (Change “USER“, “PASSWORD“, ‘ADMIN_PASSWORD’on your data):
use admin db.createUser({ user: "USER" , pwd: "PASSWORD", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]})
var role = { role: "mongostatRole", privileges: [ { resource: { cluster: true }, actions: [ "serverStatus" ] } ], roles: [] } var auser = { "user" : 'admin', "pwd" : 'ADMIN_PASSWORD', roles : [ { "role" : "userAdmin", "db" : "admin" }, { "role" : "mongostatRole", "db" : "admin" } ] } use admin db.createRole(role); db.createUser(auser); exit
Configure mongo:
Create mongodb.pem from your wildcard SSL certificate and key
cat cert.crt cert.key > mongodb.pem
Create ca.pem from your wildcard SSL certificate and SSL certificate chain
cat cert.crt cert_chain.pam > ca.pem
Create folder /admin on the server and copy mongodb.pem and ca.pem on it.
Modify /etc/mongod.conf:
storage: dbPath: /var/lib/mongodb journal: enabled: true systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log net: port: 27017 bindIp: 0.0.0.0 ssl: mode: requireSSL PEMKeyFile: /admin/mongodb.pem CAFile: /admin/ca.pem disabledProtocols: "TLS1_0,TLS1_1" allowConnectionsWithoutCertificates: true
Add mongo host to hosts:
echo “127.0.0.1 mongo.your.domain” >> /etc/hosts
Restart mongo:
systemctl restart mongod
Check connections:
mongosh -ssl -host mongo.your.domain -username admin -password ADMIN_PASSWORD -authenticationDatabase admin
*You also need to setup any mongodb backups that are suitable for you.