Table of Contents

MongoDB - príručka pre začiatočníkov

MongoDB je dokumentovo orientovaná NoSQL databáza navrhnutá pre flexibilitu a škálovateľnosť. Namiesto tabuliek a riadkov ukladá dáta ako dokumenty podobné JSON – ideálne pre aplikácie s meniacou sa štruktúrou dát. Server obsahuje plne nakonfigurovaný MongoDB 8.0 s heslom administrátora, ktoré ste zadali pri objednávke. Na správu databáz cez web je k dispozícii mongo-express.


Krok 1 – Overte, že MongoDB funguje

IP adresa a heslo root vášho servera sú uvedené na stránke Server Details v klientskom paneli. mongo-express je webové administračné rozhranie pre MongoDB. Otvorte http://your.server.ip/mongo-express v prehliadači a overte, že funguje.

Prihlásenie administrátora MongoDB:

  • Používateľské meno: admin
  • Heslo: MongoDB Admin Password, ktoré ste zadali pri objednávke

V mongo-express môžete prechádzať databázy, zobrazovať a upravovať dokumenty, spúšťať dopyty a spravovať kolekcie bez príkazového riadka.

Databázové servery nepotrebujú verejný prístup z internetu. Na bezpečný prístup umiestnite server do privátnej siete za router VyOS a k MongoDB a mongo-express sa pripájajte cez VPN na privátnu IP servera.


Krok 2 – Vzdialené pripojenie k MongoDB

MongoDB je nakonfigurovaný na prijímanie vzdialených pripojení s overovaním. Pripojiť sa môžete z ľubovoľnej aplikácie alebo nástroja:

mongosh "mongodb://admin:your_admin_password@your.server.ip:27017/admin"

Údaje na pripojenie z grafických nástrojov MongoDB (MongoDB Compass, Studio 3T atď.):

Parameter Hodnota
Hostiteľyour.server.ip
Port27017
Používateľské menoadmin
HesloAdmin Password (z objednávky)
Auth Databaseadmin

Formát pripojovacieho reťazca:

mongodb://admin:your_admin_password@your.server.ip:27017/admin

Poznámka: Port 27017 je protokol MongoDB, nie HTTP – v prehliadači ho otvoriť nemožno. Použite databázového klienta alebo príkaz vyššie.


Krok 3 – Zapnutie SSL pre mongo-express (voliteľné)

Ak na tento server smeruje vaša doména, môžete pre mongo-express zapnúť HTTPS s bezplatným certifikátom Let’s Encrypt. Pripojte sa cez SSH a spustite:

ssh root@your.server.ip
/opt/setup/get-ssl.sh db.yourdomain.com

Skript overí DNS, získa certifikát a automaticky nastaví Apache pre HTTPS. Po dokončení je mongo-express dostupný na https://db.yourdomain.com/mongo-express.

Poznámka: Pred spustením skriptu sa uistite, že A záznam vašej domény smeruje na IP servera. SSL je voliteľné – mongo-express funguje bez problémov cez HTTP s prístupom cez IP adresu.


Správa databáz

Vytváranie ďalších databáz a používateľov

Ďalšie databázy a používateľov môžete vytvoriť cez mongo-express alebo SSH:

mongosh -u admin -p --authenticationDatabase admin

use newdb
db.createUser({
    user: "newuser",
    pwd: "strong_password",
    roles: [{ role: "readWrite", db: "newdb" }]
})

Import a export

Cez mongo-express: Webové rozhranie použite na zobrazenie a úpravu jednotlivých dokumentov.

Cez príkazový riadok (odporúčané pre hromadné operácie):

# Export entire database
mongodump -u admin -p your_admin_password --authenticationDatabase admin -d your_database -o /tmp/backup/

# Import database
mongorestore -u admin -p your_admin_password --authenticationDatabase admin -d your_database /tmp/backup/your_database/

# Export single collection to JSON
mongoexport -u admin -p your_admin_password --authenticationDatabase admin -d your_database -c your_collection -o collection.json

# Import JSON into collection
mongoimport -u admin -p your_admin_password --authenticationDatabase admin -d your_database -c your_collection --file collection.json

Po inštalácii

Fail2Ban – ochrana proti útokom hrubou silou

Váš server obsahuje Fail2Ban predkonfigurovaný na ochranu SSH aj mongo-express proti útokom hrubou silou.

Pravidlo Max. počet pokusov Doba blokovania
SSH5 neúspešných prihlásení10 minút
mongo-express5 neúspešných prihlásení1 hodina

Užitočné príkazy:

# Check banned IPs
fail2ban-client status mongo-express
fail2ban-client status sshd

# Unban an IP
fail2ban-client set mongo-express unbanip 1.2.3.4

Ak sa omylom zablokujete, pripojte sa cez konzolu VNC v klientskom paneli a odblokujte svoju IP.

Správa služieb

MongoDB, mongo-express a Apache bežia cez systemd. Bežné príkazy:

# Check service status
systemctl status mongod
systemctl status mongo-express
systemctl status apache2

# Restart MongoDB
systemctl restart mongod

# View MongoDB logs
journalctl -u mongod -n 100

Ladenie výkonu MongoDB

Cache WiredTiger sa pri prvom štarte automaticky nastaví na 50 % RAM. Aktuálnu hodnotu zistíte takto:

mongosh -u admin -p --authenticationDatabase admin --eval "db.serverStatus().wiredTiger.cache"

Na ručnú úpravu upravte /etc/mongod.conf (v sekcii storage.wiredTiger.engineConfig.cacheSizeGB) a reštartujte MongoDB:

systemctl restart mongod

Prihlasovacie údaje servera

Prihlasovacie údaje MongoDB a mongo-express sú uložené v /root/.mongo_credentials.

Čo je predkonfigurované

  • Overovanie: Autorizácia MongoDB zapnutá so SCRAM-SHA-256. Používateľ admin má oprávnenia root
  • Vzdialený prístup: MongoDB prijíma pripojenia z ľubovoľnej IP na porte 27017
  • Cache WiredTiger: Automaticky nastavená na 50 % dostupnej RAM pri prvom štarte
  • Webové rozhranie: mongo-express beží za reverznou proxy Apache na /mongo-express

Zahrnutý softvér

Komponent Verzia
Ubuntu24.04 LTS
MongoDB8.0 Community
mongoshsúčasť MongoDB
mongo-expressNajnovšia
Apache2.4 (reverse proxy)
CertbotNajnovšia
Fail2Ban1.0

Riešenie problémov

Problém Riešenie
Nedá sa vzdialene pripojiť k MongoDB Skontrolujte, či port 27017 neblokuje firewall. Overte, že používateľ existuje a má správnu authenticationDatabase
mongo-express hlási 401 Unauthorized Použite používateľské meno admin a Admin Password z objednávky. Prihlasovacie údaje sú v /root/.mongo_credentials
Stránka mongo-express sa nenačíta Kontrola služby: systemctl status mongo-express. Reštart: systemctl restart mongo-express
Overenie zlyhalo Nezabudnite zadať --authenticationDatabase admin. Používateľ admin sa overuje voči databáze admin
MongoDB sa nespustí Kontrola logov: journalctl -u mongod -n 50. Častá príčina: plný disk (df -h /) alebo neplatný YAML v mongod.conf
Zabudnuté heslo administrátora MongoDB Pripojte sa cez SSH a skontrolujte /root/.mongo_credentials
Zablokované službou Fail2Ban Odblokujte svoju IP cez konzolu VNC v klientskom paneli
Zabudnuté heslo root Obnovte ho cez konzolu VNC v klientskom paneli