BYTEBOOK
Bytebook Docs • MongoDB 7.x / NoSQL Database
← Înapoi la Bytebook
PATH: DOCS / MONGODB_GUIDE.HTML _
[00:00:00] DOCS_READY
DEMOS Main Archive JAVA LABS Enterprise PY LABS Neural Assets NODE LABS Async Runtime INFRA Control Center
DATABASE GUIDES • MONGODB COMMUNITY EDITION

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

  1. Conectează-te la VPS prin SSH:
    ssh root@63.250.40.142
  2. 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
  3. 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
  4. Actualizează indexul de pachete și instalează mongodb-org:
    apt update && apt install -y mongodb-org
  5. 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:

  1. 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
  2. Configurare Namecheap: Adaugă un A Record (Host: mongo, Value: 63.250.40.142).
  3. Adaugă blocul în Caddyfile (nano /etc/caddy/Caddyfile):
    mongo.bytebook.xyz {
        reverse_proxy localhost:8081
    }
  4. 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

Creare Backup (mongodump):
mongodump --username=admin --password=ParolaTaSecurizataMongo123! --authenticationDatabase=admin --db=appdb --out=/var/backups/db_backups/mongo/
Restaurare Backup (mongorestore):
mongorestore --username=admin --password=ParolaTaSecurizataMongo123! --authenticationDatabase=admin --db=appdb /var/backups/db_backups/mongo/appdb/
Verificare utilizare memorie și spațiu din mongosh:
db.stats()