Ghid Instalare, Securizare și Utilizare MongoDB pe VPS
Acest ghid descrie pas cu pas cum instalezi, configurezi, securizezi și folosești baza de date NoSQL MongoDB Community Edition pe VPS-ul Ubuntu (63.250.40.142), alături de administrare grafică și exemple de conectare.
1. Instalarea MongoDB pe VPS
- Conectează-te la VPS prin SSH:
ssh root@63.250.40.142 - Instalează dependențele și importă cheia GPG oficială MongoDB:
apt update && apt install -y gnupg curl curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \ gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor - Adaugă repository-ul oficial MongoDB în sursele sistemului:
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-7.0.list - Actualizează indexul de pachete și instalează
mongodb-org:apt update && apt install -y mongodb-org - Pornește și activează serviciul la boot:
systemctl daemon-reload systemctl enable mongod systemctl start mongod systemctl status mongod
2. Securizarea MongoDB (Creare Administrator și Autentificare)
Din fabrică, MongoDB permite conectarea fără parolă. Să configurăm un utilizator admin și să activăm securitatea.
A. Conectare la mongosh și creare utilizatori
mongosh
use admin
db.createUser({
user: "admin",
pwd: "ParolaTaSecurizataMongo123!",
roles: [ { role: "root", db: "admin" } ]
})
use appdb
db.createUser({
user: "appuser",
pwd: "ParolaAppUserMongo123!",
roles: [ { role: "readWrite", db: "appdb" } ]
})
exit
B. Activare securitate în mongod.conf
nano /etc/mongod.conf
security:
authorization: "enabled"
net:
port: 27017
bindIp: 127.0.0.1
C. Repornire și testare autentificare
systemctl restart mongod
mongosh -u admin -p ParolaTaSecurizataMongo123! --authenticationDatabase admin
3. Administrare Grafică — Mongo Express prin Docker & Caddy
Pentru un panou vizual, poți rula Mongo Express și să îl expuni pe mongo.bytebook.xyz:
- Rulează containerul Docker:
docker run -d \ --name mongo-express \ --net=host \ -e ME_CONFIG_MONGODB_SERVER="127.0.0.1" \ -e ME_CONFIG_MONGODB_PORT="27017" \ -e ME_CONFIG_MONGODB_ADMINUSERNAME="admin" \ -e ME_CONFIG_MONGODB_ADMINPASSWORD="ParolaTaSecurizataMongo123!" \ -e ME_CONFIG_BASICAUTH_USERNAME="admin" \ -e ME_CONFIG_BASICAUTH_PASSWORD="ParolaWebMongo123!" \ --restart always \ mongo-express - Configurare Namecheap: Adaugă un A Record (Host:
mongo, Value:63.250.40.142). - Adaugă blocul în
Caddyfile(nano /etc/caddy/Caddyfile):mongo.bytebook.xyz { reverse_proxy localhost:8081 } - Reîncarcă Caddy:
systemctl reload caddy
4. Testare Interactivă CLI (Operațiuni CRUD)
mongosh -u appuser -p ParolaAppUserMongo123! --authenticationDatabase appdb
use appdb
// Insert (Create)
db.utilizatori.insertOne({
nume: "Alin",
email: "alin@bytebook.xyz",
rol: "Developer",
data_creare: new Date()
})
// Read
db.utilizatori.find()
db.utilizatori.find({ rol: "Developer" })
// Update
db.utilizatori.updateOne(
{ nume: "Alin" },
{ $set: { status: "activ" } }
)
// Delete
db.utilizatori.deleteOne({ nume: "Alin" })
5. Conectarea MongoDB la Aplicațiile Tale
Connection String standard: mongodb://appuser:ParolaAppUserMongo123!@127.0.0.1:27017/appdb?authSource=appdb
A. Java Spring Boot (application.properties)
spring.data.mongodb.uri=mongodb://appuser:ParolaAppUserMongo123!@localhost:27017/appdb?authSource=appdb
B. Python FastAPI (pymongo)
Instalează biblioteca: pip install pymongo
from pymongo import MongoClient
client = MongoClient("mongodb://appuser:ParolaAppUserMongo123!@localhost:27017/appdb?authSource=appdb")
db = client["appdb"]
collection = db["utilizatori"]
collection.insert_one({"nume": "FastAPI User", "status": "active"})
user = collection.find_one({"nume": "FastAPI User"})
print(user)
C. Node.js Express (mongoose)
Instalează pachetul: npm install mongoose
const mongoose = require('mongoose');
const mongoURI = 'mongodb://appuser:ParolaAppUserMongo123!@127.0.0.1:27017/appdb?authSource=appdb';
mongoose.connect(mongoURI)
.then(() => console.log('Conectat cu succes la MongoDB pe VPS!'))
.catch(err => console.error('Eroare conexiune MongoDB:', err));
const UserSchema = new mongoose.Schema({ nume: String, email: String });
const User = mongoose.model('User', UserSchema);
async function createDemoUser() {
const newUser = new User({ nume: 'NodeJS Express', email: 'node@bytebook.xyz' });
await newUser.save();
console.log('Utilizator salvat!');
}
createDemoUser();
6. Comenzi Utile de Administrare și Backup
mongodump --username=admin --password=ParolaTaSecurizataMongo123! --authenticationDatabase=admin --db=appdb --out=/var/backups/db_backups/mongo/
mongorestore --username=admin --password=ParolaTaSecurizataMongo123! --authenticationDatabase=admin --db=appdb /var/backups/db_backups/mongo/appdb/
db.stats()