
Building Your Portfolio Experience
Loading Tariqul Islam's projects...
Loading Tariqul Islam's projects...
A complete step-by-step guide to install, secure, and configure MongoDB on a VPS. Includes local and S3 backup automation for production.
Hostinger VPS (Ubuntu 22.04 or later)
MongoDB installed
Optional: AWS CLI configured for backup
ssh root@your-vps-ip
sudo apt update && sudo apt upgrade -y
sudo apt-get install gnupg curl
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
sudo apt-get update && sudo apt-get install -y mongodb-org
sudo systemctl start mongod && sudo systemctl enable mongod
Create Admin & App Users
mongosh
use admin
db.createUser({user: "admin", pwd: passwordPrompt(), roles: ["root"]})
use database_name
db.createUser({
user: "appuser",
pwd: passwordPrompt(),
roles: [{role: "readWrite", db: "database_name"}]
})
exit
sudo nano /etc/mongod.conf
Add:
security:
authorization: enabled
Restart MongoDB:
sudo systemctl restart mongod
Edit:
sudo nano /etc/mongod.conf
In net
section:
bindIp: 127.0.0.1,vps_ip
sudo ufw enable
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw deny 27017
mongosh admin -u admin -p --authenticationDatabase admin
Local Backup Script~/backups/mongodb_backup_database_name.sh
#!/bin/bash
BACKUP_DIR=~/backups/mongodb
DB_NAME=database_name
TIMESTAMP=$(date +%F-%H-%M-%S)
BACKUP_NAME="backup-$DB_NAME-$TIMESTAMP.gz"
mongodump --db $DB_NAME \
--authenticationDatabase database_name \
-u database_user \
-p your_secure_password \
--archive=$BACKUP_DIR/$BACKUP_NAME --gzip
ls -t $BACKUP_DIR/backup-$DB_NAME-*.gz | tail -n +6 | xargs -I {} rm {}
Make it executable:
chmod +x ~/backups/mongodb_backup_database_name.sh
Optional AWS S3 Upload
aws s3 cp $BACKUP_DIR/$BACKUP_NAME s3://your-bucket-name/$BACKUP_NAME
Automate with Cron
crontab -e
0 * * * * ~/backups/mongodb_backup_database_name.sh
sudo ufw allow 27017
Compass Connection String:
mongodb://admin:yourpassword@your_server_ip:27017/database_name?authSource=admin
In Compass:
General Tab
Hostname: 127.0.0.1
Mark: Direct Connection
Authentication Tab
Method: Username/Password
Username: admin
Password: admin
Authentication Database: admin
Authentication Mechanism: Default
Proxy/SSH Tab
Method: SSH with Password
SSH Hostname: your_server_ip
SSH Port: 22
SSH Username: root
SSH Password: your_root_password
MongoDB is secured
Admin & App user created
Network access restricted
Automated backups
Remote connection possible via Direct / SSH Tunnel