[{"data":1,"prerenderedAt":2439},["ShallowReactive",2],{"wiki-mongodb-setup":3},{"id":4,"title":5,"body":6,"description":2428,"extension":2429,"meta":2430,"navigation":134,"path":2435,"seo":2436,"stem":2437,"__hash__":2438},"wiki/wiki/mongodb-setup.md","Установка и настройка MongoDB на Ubuntu и Debian",{"type":7,"value":8,"toc":2368},"minimark",[9,14,18,23,56,59,63,66,71,213,217,305,309,349,356,372,374,378,385,389,398,402,469,476,482,491,493,497,500,504,528,532,577,588,592,705,707,711,714,729,736,763,766,782,785,831,833,837,848,852,884,887,891,919,934,938,966,973,976,990,992,996,1005,1009,1033,1036,1057,1061,1078,1085,1089,1103,1106,1110,1116,1121,1197,1202,1223,1227,1243,1246,1254,1256,1260,1263,1275,1303,1317,1320,1345,1348,1402,1404,1408,1412,1418,1422,1428,1432,1438,1502,1506,1549,1551,1555,1559,1605,1609,1642,1646,1660,1677,1680,1684,1723,1725,1729,1733,1757,1761,1785,1789,1828,1832,1920,1922,1926,1930,1933,1945,1981,1985,1991,1994,2040,2044,2047,2108,2110,2114,2118,2197,2201,2263,2267,2270,2283,2316,2320,2364],[10,11,13],"h1",{"id":12},"установка-и-настройка-mongodb","Установка и настройка MongoDB",[15,16,17],"p",{},"Полное руководство по установке MongoDB 8.0 на Ubuntu и Debian с нуля. Настроим аутентификацию, создадим пользователей с правильными ролями, защитим порты файрволом (не заблокировав SSH) и настроим бэкапы.",[19,20,22],"h2",{"id":21},"требования","Требования",[24,25,26,34,40,46],"ul",{},[27,28,29,33],"li",{},[30,31,32],"strong",{},"ОС",": Ubuntu 22.04 / 24.04 LTS или Debian 12 (Bookworm)",[27,35,36,39],{},[30,37,38],{},"RAM",": минимум 2 ГБ (рекомендуется 4+ ГБ)",[27,41,42,45],{},[30,43,44],{},"Диск",": SSD (MongoDB активно работает с диском)",[27,47,48,51,52],{},[30,49,50],{},"Доступ",": root или пользователь с ",[53,54,55],"code",{},"sudo",[57,58],"hr",{},[19,60,62],{"id":61},"установка-mongodb-80","Установка MongoDB 8.0",[15,64,65],{},"MongoDB нет в стандартных репозиториях Ubuntu/Debian. Подключаем официальный.",[67,68,70],"h3",{"id":69},"ubuntu-2204-2404","Ubuntu 22.04 / 24.04",[72,73,78],"pre",{"className":74,"code":75,"language":76,"meta":77,"style":77},"language-bash shiki shiki-themes github-dark","# Импорт GPG-ключа\ncurl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \\\n  sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor\n\n# Добавление репозитория\necho \"deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/8.0 multiverse\" | \\\n  sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list\n\n# Установка\nsudo apt update\nsudo apt install -y mongodb-org\n","bash","",[53,79,80,89,111,129,136,142,164,175,180,186,197],{"__ignoreMap":77},[81,82,85],"span",{"class":83,"line":84},"line",1,[81,86,88],{"class":87},"sAwPA","# Импорт GPG-ключа\n",[81,90,92,96,100,104,108],{"class":83,"line":91},2,[81,93,95],{"class":94},"svObZ","curl",[81,97,99],{"class":98},"sDLfK"," -fsSL",[81,101,103],{"class":102},"sU2Wk"," https://www.mongodb.org/static/pgp/server-8.0.asc",[81,105,107],{"class":106},"snl16"," |",[81,109,110],{"class":98}," \\\n",[81,112,114,117,120,123,126],{"class":83,"line":113},3,[81,115,116],{"class":94},"  sudo",[81,118,119],{"class":102}," gpg",[81,121,122],{"class":98}," -o",[81,124,125],{"class":102}," /usr/share/keyrings/mongodb-server-8.0.gpg",[81,127,128],{"class":98}," --dearmor\n",[81,130,132],{"class":83,"line":131},4,[81,133,135],{"emptyLinePlaceholder":134},true,"\n",[81,137,139],{"class":83,"line":138},5,[81,140,141],{"class":87},"# Добавление репозитория\n",[81,143,145,148,151,154,157,160,162],{"class":83,"line":144},6,[81,146,147],{"class":98},"echo",[81,149,150],{"class":102}," \"deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu $(",[81,152,153],{"class":94},"lsb_release",[81,155,156],{"class":98}," -cs",[81,158,159],{"class":102},")/mongodb-org/8.0 multiverse\"",[81,161,107],{"class":106},[81,163,110],{"class":98},[81,165,167,169,172],{"class":83,"line":166},7,[81,168,116],{"class":94},[81,170,171],{"class":102}," tee",[81,173,174],{"class":102}," /etc/apt/sources.list.d/mongodb-org-8.0.list\n",[81,176,178],{"class":83,"line":177},8,[81,179,135],{"emptyLinePlaceholder":134},[81,181,183],{"class":83,"line":182},9,[81,184,185],{"class":87},"# Установка\n",[81,187,189,191,194],{"class":83,"line":188},10,[81,190,55],{"class":94},[81,192,193],{"class":102}," apt",[81,195,196],{"class":102}," update\n",[81,198,200,202,204,207,210],{"class":83,"line":199},11,[81,201,55],{"class":94},[81,203,193],{"class":102},[81,205,206],{"class":102}," install",[81,208,209],{"class":98}," -y",[81,211,212],{"class":102}," mongodb-org\n",[67,214,216],{"id":215},"debian-12","Debian 12",[72,218,220],{"className":74,"code":219,"language":76,"meta":77,"style":77},"# Импорт GPG-ключа\ncurl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \\\n  sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor\n\n# Добавление репозитория\necho \"deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main\" | \\\n  sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list\n\n# Установка\nsudo apt update\nsudo apt install -y mongodb-org\n",[53,221,222,226,238,250,254,258,269,277,281,285,293],{"__ignoreMap":77},[81,223,224],{"class":83,"line":84},[81,225,88],{"class":87},[81,227,228,230,232,234,236],{"class":83,"line":91},[81,229,95],{"class":94},[81,231,99],{"class":98},[81,233,103],{"class":102},[81,235,107],{"class":106},[81,237,110],{"class":98},[81,239,240,242,244,246,248],{"class":83,"line":113},[81,241,116],{"class":94},[81,243,119],{"class":102},[81,245,122],{"class":98},[81,247,125],{"class":102},[81,249,128],{"class":98},[81,251,252],{"class":83,"line":131},[81,253,135],{"emptyLinePlaceholder":134},[81,255,256],{"class":83,"line":138},[81,257,141],{"class":87},[81,259,260,262,265,267],{"class":83,"line":144},[81,261,147],{"class":98},[81,263,264],{"class":102}," \"deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main\"",[81,266,107],{"class":106},[81,268,110],{"class":98},[81,270,271,273,275],{"class":83,"line":166},[81,272,116],{"class":94},[81,274,171],{"class":102},[81,276,174],{"class":102},[81,278,279],{"class":83,"line":177},[81,280,135],{"emptyLinePlaceholder":134},[81,282,283],{"class":83,"line":182},[81,284,185],{"class":87},[81,286,287,289,291],{"class":83,"line":188},[81,288,55],{"class":94},[81,290,193],{"class":102},[81,292,196],{"class":102},[81,294,295,297,299,301,303],{"class":83,"line":199},[81,296,55],{"class":94},[81,298,193],{"class":102},[81,300,206],{"class":102},[81,302,209],{"class":98},[81,304,212],{"class":102},[67,306,308],{"id":307},"запуск-и-автозагрузка","Запуск и автозагрузка",[72,310,312],{"className":74,"code":311,"language":76,"meta":77,"style":77},"sudo systemctl start mongod\nsudo systemctl enable mongod\nsudo systemctl status mongod\n",[53,313,314,327,338],{"__ignoreMap":77},[81,315,316,318,321,324],{"class":83,"line":84},[81,317,55],{"class":94},[81,319,320],{"class":102}," systemctl",[81,322,323],{"class":102}," start",[81,325,326],{"class":102}," mongod\n",[81,328,329,331,333,336],{"class":83,"line":91},[81,330,55],{"class":94},[81,332,320],{"class":102},[81,334,335],{"class":102}," enable",[81,337,326],{"class":102},[81,339,340,342,344,347],{"class":83,"line":113},[81,341,55],{"class":94},[81,343,320],{"class":102},[81,345,346],{"class":102}," status",[81,348,326],{"class":102},[15,350,351,352,355],{},"Если статус ",[53,353,354],{},"active (running)"," — MongoDB запущена. Проверьте подключение:",[72,357,359],{"className":74,"code":358,"language":76,"meta":77,"style":77},"mongosh --eval \"db.runCommand({ ping: 1 })\"\n",[53,360,361],{"__ignoreMap":77},[81,362,363,366,369],{"class":83,"line":84},[81,364,365],{"class":94},"mongosh",[81,367,368],{"class":98}," --eval",[81,370,371],{"class":102}," \"db.runCommand({ ping: 1 })\"\n",[57,373],{},[19,375,377],{"id":376},"создание-администратора","Создание администратора",[15,379,380,381,384],{},"По умолчанию MongoDB запускается ",[30,382,383],{},"без аутентификации"," — любой, кто достучится до порта, получит полный доступ. Это первое, что нужно исправить.",[67,386,388],{"id":387},"подключитесь-к-mongodb","Подключитесь к MongoDB",[72,390,392],{"className":74,"code":391,"language":76,"meta":77,"style":77},"mongosh\n",[53,393,394],{"__ignoreMap":77},[81,395,396],{"class":83,"line":84},[81,397,391],{"class":94},[67,399,401],{"id":400},"создайте-администратора","Создайте администратора",[72,403,407],{"className":404,"code":405,"language":406,"meta":77,"style":77},"language-javascript shiki shiki-themes github-dark","use admin\n\ndb.createUser({\n  user: \"admin\",\n  pwd: passwordPrompt(),  // запросит пароль интерактивно\n  roles: [\n    { role: \"userAdminAnyDatabase\", db: \"admin\" },\n    { role: \"readWriteAnyDatabase\", db: \"admin\" },\n    { role: \"dbAdminAnyDatabase\", db: \"admin\" },\n    { role: \"clusterAdmin\", db: \"admin\" }\n  ]\n})\n","javascript",[53,408,409,414,418,423,428,433,438,443,448,453,458,463],{"__ignoreMap":77},[81,410,411],{"class":83,"line":84},[81,412,413],{},"use admin\n",[81,415,416],{"class":83,"line":91},[81,417,135],{"emptyLinePlaceholder":134},[81,419,420],{"class":83,"line":113},[81,421,422],{},"db.createUser({\n",[81,424,425],{"class":83,"line":131},[81,426,427],{},"  user: \"admin\",\n",[81,429,430],{"class":83,"line":138},[81,431,432],{},"  pwd: passwordPrompt(),  // запросит пароль интерактивно\n",[81,434,435],{"class":83,"line":144},[81,436,437],{},"  roles: [\n",[81,439,440],{"class":83,"line":166},[81,441,442],{},"    { role: \"userAdminAnyDatabase\", db: \"admin\" },\n",[81,444,445],{"class":83,"line":177},[81,446,447],{},"    { role: \"readWriteAnyDatabase\", db: \"admin\" },\n",[81,449,450],{"class":83,"line":182},[81,451,452],{},"    { role: \"dbAdminAnyDatabase\", db: \"admin\" },\n",[81,454,455],{"class":83,"line":188},[81,456,457],{},"    { role: \"clusterAdmin\", db: \"admin\" }\n",[81,459,460],{"class":83,"line":199},[81,461,462],{},"  ]\n",[81,464,466],{"class":83,"line":465},12,[81,467,468],{},"})\n",[15,470,471,472,475],{},"Система попросит ввести пароль. Используйте ",[30,473,474],{},"сложный пароль"," (минимум 20 символов, буквы + цифры + спецсимволы).",[15,477,478,479,481],{},"Выйдите из ",[53,480,365],{},":",[72,483,485],{"className":404,"code":484,"language":406,"meta":77,"style":77},"exit\n",[53,486,487],{"__ignoreMap":77},[81,488,489],{"class":83,"line":84},[81,490,484],{},[57,492],{},[19,494,496],{"id":495},"создание-пользователя-приложения","Создание пользователя приложения",[15,498,499],{},"Никогда не подключайте приложение под администратором. Создайте отдельного пользователя с минимальными правами.",[67,501,503],{"id":502},"подключитесь-как-админ","Подключитесь как админ",[72,505,507],{"className":74,"code":506,"language":76,"meta":77,"style":77},"mongosh -u admin -p --authenticationDatabase admin\n",[53,508,509],{"__ignoreMap":77},[81,510,511,513,516,519,522,525],{"class":83,"line":84},[81,512,365],{"class":94},[81,514,515],{"class":98}," -u",[81,517,518],{"class":102}," admin",[81,520,521],{"class":98}," -p",[81,523,524],{"class":98}," --authenticationDatabase",[81,526,527],{"class":102}," admin\n",[67,529,531],{"id":530},"создайте-базу-и-пользователя-для-приложения","Создайте базу и пользователя для приложения",[72,533,535],{"className":404,"code":534,"language":406,"meta":77,"style":77},"use myapp\n\ndb.createUser({\n  user: \"myapp_user\",\n  pwd: passwordPrompt(),\n  roles: [\n    { role: \"readWrite\", db: \"myapp\" }\n  ]\n})\n",[53,536,537,542,546,550,555,560,564,569,573],{"__ignoreMap":77},[81,538,539],{"class":83,"line":84},[81,540,541],{},"use myapp\n",[81,543,544],{"class":83,"line":91},[81,545,135],{"emptyLinePlaceholder":134},[81,547,548],{"class":83,"line":113},[81,549,422],{},[81,551,552],{"class":83,"line":131},[81,553,554],{},"  user: \"myapp_user\",\n",[81,556,557],{"class":83,"line":138},[81,558,559],{},"  pwd: passwordPrompt(),\n",[81,561,562],{"class":83,"line":144},[81,563,437],{},[81,565,566],{"class":83,"line":166},[81,567,568],{},"    { role: \"readWrite\", db: \"myapp\" }\n",[81,570,571],{"class":83,"line":177},[81,572,462],{},[81,574,575],{"class":83,"line":182},[81,576,468],{},[15,578,579,580,583,584,587],{},"Этот пользователь сможет ",[30,581,582],{},"только"," читать и писать в базу ",[53,585,586],{},"myapp",". Ничего больше.",[67,589,591],{"id":590},"справочник-ролей","Справочник ролей",[593,594,595,611],"table",{},[596,597,598],"thead",{},[599,600,601,605,608],"tr",{},[602,603,604],"th",{},"Роль",[602,606,607],{},"Права",[602,609,610],{},"Когда использовать",[612,613,614,628,641,654,667,680,692],"tbody",{},[599,615,616,622,625],{},[617,618,619],"td",{},[53,620,621],{},"read",[617,623,624],{},"Только чтение",[617,626,627],{},"Аналитика, мониторинг",[599,629,630,635,638],{},[617,631,632],{},[53,633,634],{},"readWrite",[617,636,637],{},"Чтение + запись",[617,639,640],{},"Приложения",[599,642,643,648,651],{},[617,644,645],{},[53,646,647],{},"dbAdmin",[617,649,650],{},"Управление индексами, статистика",[617,652,653],{},"DevOps",[599,655,656,661,664],{},[617,657,658],{},[53,659,660],{},"userAdmin",[617,662,663],{},"Управление пользователями одной БД",[617,665,666],{},"Администрирование",[599,668,669,674,677],{},[617,670,671],{},[53,672,673],{},"userAdminAnyDatabase",[617,675,676],{},"Управление пользователями всех БД",[617,678,679],{},"Суперадмин",[599,681,682,687,690],{},[617,683,684],{},[53,685,686],{},"readWriteAnyDatabase",[617,688,689],{},"Чтение + запись во все БД",[617,691,679],{},[599,693,694,699,702],{},[617,695,696],{},[53,697,698],{},"root",[617,700,701],{},"Абсолютно всё",[617,703,704],{},"Только для экстренных случаев",[57,706],{},[19,708,710],{"id":709},"включение-аутентификации","Включение аутентификации",[15,712,713],{},"Теперь включим обязательную аутентификацию в конфиге MongoDB.",[72,715,717],{"className":74,"code":716,"language":76,"meta":77,"style":77},"sudo nano /etc/mongod.conf\n",[53,718,719],{"__ignoreMap":77},[81,720,721,723,726],{"class":83,"line":84},[81,722,55],{"class":94},[81,724,725],{"class":102}," nano",[81,727,728],{"class":102}," /etc/mongod.conf\n",[15,730,731,732,735],{},"Найдите секцию ",[53,733,734],{},"security"," (она закомментирована) и измените:",[72,737,741],{"className":738,"code":739,"language":740,"meta":77,"style":77},"language-yaml shiki shiki-themes github-dark","security:\n  authorization: enabled\n","yaml",[53,742,743,752],{"__ignoreMap":77},[81,744,745,748],{"class":83,"line":84},[81,746,734],{"class":747},"s4JwU",[81,749,751],{"class":750},"s95oV",":\n",[81,753,754,757,760],{"class":83,"line":91},[81,755,756],{"class":747},"  authorization",[81,758,759],{"class":750},": ",[81,761,762],{"class":102},"enabled\n",[15,764,765],{},"Перезапустите MongoDB:",[72,767,769],{"className":74,"code":768,"language":76,"meta":77,"style":77},"sudo systemctl restart mongod\n",[53,770,771],{"__ignoreMap":77},[81,772,773,775,777,780],{"class":83,"line":84},[81,774,55],{"class":94},[81,776,320],{"class":102},[81,778,779],{"class":102}," restart",[81,781,326],{"class":102},[15,783,784],{},"Проверьте — без пароля доступ закрыт:",[72,786,788],{"className":74,"code":787,"language":76,"meta":77,"style":77},"# Это НЕ должно работать\nmongosh --eval \"show dbs\"\n\n# А это должно\nmongosh -u admin -p --authenticationDatabase admin --eval \"show dbs\"\n",[53,789,790,795,804,808,813],{"__ignoreMap":77},[81,791,792],{"class":83,"line":84},[81,793,794],{"class":87},"# Это НЕ должно работать\n",[81,796,797,799,801],{"class":83,"line":91},[81,798,365],{"class":94},[81,800,368],{"class":98},[81,802,803],{"class":102}," \"show dbs\"\n",[81,805,806],{"class":83,"line":113},[81,807,135],{"emptyLinePlaceholder":134},[81,809,810],{"class":83,"line":131},[81,811,812],{"class":87},"# А это должно\n",[81,814,815,817,819,821,823,825,827,829],{"class":83,"line":138},[81,816,365],{"class":94},[81,818,515],{"class":98},[81,820,518],{"class":102},[81,822,521],{"class":98},[81,824,524],{"class":98},[81,826,518],{"class":102},[81,828,368],{"class":98},[81,830,803],{"class":102},[57,832],{},[19,834,836],{"id":835},"настройка-привязки-к-адресам","Настройка привязки к адресам",[15,838,839,840,843,844,847],{},"По умолчанию MongoDB слушает только ",[53,841,842],{},"127.0.0.1"," (localhost). Это безопасно. Менять нужно ",[30,845,846],{},"только если"," приложение работает на другом сервере.",[67,849,851],{"id":850},"вариант-1-только-локальный-доступ-рекомендуется","Вариант 1: Только локальный доступ (рекомендуется)",[72,853,855],{"className":738,"code":854,"language":740,"meta":77,"style":77},"net:\n  port: 27017\n  bindIp: 127.0.0.1\n",[53,856,857,864,874],{"__ignoreMap":77},[81,858,859,862],{"class":83,"line":84},[81,860,861],{"class":747},"net",[81,863,751],{"class":750},[81,865,866,869,871],{"class":83,"line":91},[81,867,868],{"class":747},"  port",[81,870,759],{"class":750},[81,872,873],{"class":98},"27017\n",[81,875,876,879,881],{"class":83,"line":113},[81,877,878],{"class":747},"  bindIp",[81,880,759],{"class":750},[81,882,883],{"class":98},"127.0.0.1\n",[15,885,886],{},"Приложение должно быть на том же сервере, что и MongoDB.",[67,888,890],{"id":889},"вариант-2-доступ-из-локальной-сети","Вариант 2: Доступ из локальной сети",[72,892,894],{"className":738,"code":893,"language":740,"meta":77,"style":77},"net:\n  port: 27017\n  bindIp: 127.0.0.1,10.0.0.5\n",[53,895,896,902,910],{"__ignoreMap":77},[81,897,898,900],{"class":83,"line":84},[81,899,861],{"class":747},[81,901,751],{"class":750},[81,903,904,906,908],{"class":83,"line":91},[81,905,868],{"class":747},[81,907,759],{"class":750},[81,909,873],{"class":98},[81,911,912,914,916],{"class":83,"line":113},[81,913,878],{"class":747},[81,915,759],{"class":750},[81,917,918],{"class":102},"127.0.0.1,10.0.0.5\n",[15,920,921,922,925,926,929,930,933],{},"Замените ",[53,923,924],{},"10.0.0.5"," на внутренний IP вашего сервера. ",[30,927,928],{},"Никогда"," не ставьте ",[53,931,932],{},"0.0.0.0"," без файрвола.",[67,935,937],{"id":936},"вариант-3-доступ-извне-опасно-только-с-файрволом","Вариант 3: Доступ извне (опасно, только с файрволом)",[72,939,941],{"className":738,"code":940,"language":740,"meta":77,"style":77},"net:\n  port: 27017\n  bindIp: 0.0.0.0\n",[53,942,943,949,957],{"__ignoreMap":77},[81,944,945,947],{"class":83,"line":84},[81,946,861],{"class":747},[81,948,751],{"class":750},[81,950,951,953,955],{"class":83,"line":91},[81,952,868],{"class":747},[81,954,759],{"class":750},[81,956,873],{"class":98},[81,958,959,961,963],{"class":83,"line":113},[81,960,878],{"class":747},[81,962,759],{"class":750},[81,964,965],{"class":98},"0.0.0.0\n",[15,967,968,969,972],{},"Если выбрали этот вариант — настройка файрвола ",[30,970,971],{},"обязательна",". Читайте следующий раздел.",[15,974,975],{},"После изменений:",[72,977,978],{"className":74,"code":768,"language":76,"meta":77,"style":77},[53,979,980],{"__ignoreMap":77},[81,981,982,984,986,988],{"class":83,"line":84},[81,983,55],{"class":94},[81,985,320],{"class":102},[81,987,779],{"class":102},[81,989,326],{"class":102},[57,991],{},[19,993,995],{"id":994},"настройка-файрвола-ufw","Настройка файрвола (UFW)",[997,998,999],"blockquote",{},[15,1000,1001,1004],{},[30,1002,1003],{},"КРИТИЧЕСКИ ВАЖНО",": Всегда сначала разрешайте SSH, и только потом включайте файрвол. Иначе вы потеряете доступ к серверу.",[67,1006,1008],{"id":1007},"шаг-1-разрешите-ssh-сделайте-это-первым","Шаг 1: Разрешите SSH (СДЕЛАЙТЕ ЭТО ПЕРВЫМ!)",[72,1010,1012],{"className":74,"code":1011,"language":76,"meta":77,"style":77},"sudo ufw allow 22/tcp comment 'SSH'\n",[53,1013,1014],{"__ignoreMap":77},[81,1015,1016,1018,1021,1024,1027,1030],{"class":83,"line":84},[81,1017,55],{"class":94},[81,1019,1020],{"class":102}," ufw",[81,1022,1023],{"class":102}," allow",[81,1025,1026],{"class":102}," 22/tcp",[81,1028,1029],{"class":102}," comment",[81,1031,1032],{"class":102}," 'SSH'\n",[15,1034,1035],{},"Если ваш SSH на нестандартном порту:",[72,1037,1039],{"className":74,"code":1038,"language":76,"meta":77,"style":77},"sudo ufw allow 2222/tcp comment 'SSH custom port'\n",[53,1040,1041],{"__ignoreMap":77},[81,1042,1043,1045,1047,1049,1052,1054],{"class":83,"line":84},[81,1044,55],{"class":94},[81,1046,1020],{"class":102},[81,1048,1023],{"class":102},[81,1050,1051],{"class":102}," 2222/tcp",[81,1053,1029],{"class":102},[81,1055,1056],{"class":102}," 'SSH custom port'\n",[67,1058,1060],{"id":1059},"шаг-2-проверьте-правила-до-включения","Шаг 2: Проверьте правила ДО включения",[72,1062,1064],{"className":74,"code":1063,"language":76,"meta":77,"style":77},"sudo ufw show added\n",[53,1065,1066],{"__ignoreMap":77},[81,1067,1068,1070,1072,1075],{"class":83,"line":84},[81,1069,55],{"class":94},[81,1071,1020],{"class":102},[81,1073,1074],{"class":102}," show",[81,1076,1077],{"class":102}," added\n",[15,1079,1080,1081,1084],{},"Убедитесь, что SSH-порт есть в списке. Если его нет — ",[30,1082,1083],{},"не включайте файрвол",".",[67,1086,1088],{"id":1087},"шаг-3-включите-файрвол","Шаг 3: Включите файрвол",[72,1090,1092],{"className":74,"code":1091,"language":76,"meta":77,"style":77},"sudo ufw enable\n",[53,1093,1094],{"__ignoreMap":77},[81,1095,1096,1098,1100],{"class":83,"line":84},[81,1097,55],{"class":94},[81,1099,1020],{"class":102},[81,1101,1102],{"class":102}," enable\n",[15,1104,1105],{},"Система спросит подтверждение. Ваше текущее SSH-соединение не оборвётся, если порт был разрешён.",[67,1107,1109],{"id":1108},"шаг-4-настройте-правила-для-mongodb","Шаг 4: Настройте правила для MongoDB",[15,1111,1112,1115],{},[30,1113,1114],{},"Если MongoDB только для локального доступа"," — ничего добавлять не нужно. Localhost-трафик не фильтруется UFW.",[15,1117,1118],{},[30,1119,1120],{},"Если нужен доступ с конкретных IP:",[72,1122,1124],{"className":74,"code":1123,"language":76,"meta":77,"style":77},"# Разрешить доступ к MongoDB только с IP вашего приложения\nsudo ufw allow from 10.0.0.10 to any port 27017 comment 'MongoDB from app server'\n\n# Или с подсети\nsudo ufw allow from 10.0.0.0/24 to any port 27017 comment 'MongoDB from local network'\n",[53,1125,1126,1131,1162,1166,1171],{"__ignoreMap":77},[81,1127,1128],{"class":83,"line":84},[81,1129,1130],{"class":87},"# Разрешить доступ к MongoDB только с IP вашего приложения\n",[81,1132,1133,1135,1137,1139,1142,1145,1148,1151,1154,1157,1159],{"class":83,"line":91},[81,1134,55],{"class":94},[81,1136,1020],{"class":102},[81,1138,1023],{"class":102},[81,1140,1141],{"class":102}," from",[81,1143,1144],{"class":98}," 10.0.0.10",[81,1146,1147],{"class":102}," to",[81,1149,1150],{"class":102}," any",[81,1152,1153],{"class":102}," port",[81,1155,1156],{"class":98}," 27017",[81,1158,1029],{"class":102},[81,1160,1161],{"class":102}," 'MongoDB from app server'\n",[81,1163,1164],{"class":83,"line":113},[81,1165,135],{"emptyLinePlaceholder":134},[81,1167,1168],{"class":83,"line":131},[81,1169,1170],{"class":87},"# Или с подсети\n",[81,1172,1173,1175,1177,1179,1181,1184,1186,1188,1190,1192,1194],{"class":83,"line":138},[81,1174,55],{"class":94},[81,1176,1020],{"class":102},[81,1178,1023],{"class":102},[81,1180,1141],{"class":102},[81,1182,1183],{"class":102}," 10.0.0.0/24",[81,1185,1147],{"class":102},[81,1187,1150],{"class":102},[81,1189,1153],{"class":102},[81,1191,1156],{"class":98},[81,1193,1029],{"class":102},[81,1195,1196],{"class":102}," 'MongoDB from local network'\n",[15,1198,1199],{},[30,1200,1201],{},"Никогда НЕ делайте так:",[72,1203,1205],{"className":74,"code":1204,"language":76,"meta":77,"style":77},"# ОПАСНО — открывает MongoDB для всего интернета\nsudo ufw allow 27017/tcp\n",[53,1206,1207,1212],{"__ignoreMap":77},[81,1208,1209],{"class":83,"line":84},[81,1210,1211],{"class":87},"# ОПАСНО — открывает MongoDB для всего интернета\n",[81,1213,1214,1216,1218,1220],{"class":83,"line":91},[81,1215,55],{"class":94},[81,1217,1020],{"class":102},[81,1219,1023],{"class":102},[81,1221,1222],{"class":102}," 27017/tcp\n",[67,1224,1226],{"id":1225},"шаг-5-проверьте-итоговые-правила","Шаг 5: Проверьте итоговые правила",[72,1228,1230],{"className":74,"code":1229,"language":76,"meta":77,"style":77},"sudo ufw status verbose\n",[53,1231,1232],{"__ignoreMap":77},[81,1233,1234,1236,1238,1240],{"class":83,"line":84},[81,1235,55],{"class":94},[81,1237,1020],{"class":102},[81,1239,346],{"class":102},[81,1241,1242],{"class":102}," verbose\n",[15,1244,1245],{},"Должно быть примерно так:",[72,1247,1252],{"className":1248,"code":1250,"language":1251},[1249],"language-text","To                         Action      From\n--                         ------      ----\n22/tcp                     ALLOW       Anywhere          # SSH\n27017                      ALLOW       10.0.0.10         # MongoDB from app server\n22/tcp (v6)                ALLOW       Anywhere (v6)     # SSH\n","text",[53,1253,1250],{"__ignoreMap":77},[57,1255],{},[19,1257,1259],{"id":1258},"смена-порта-mongodb-опционально","Смена порта MongoDB (опционально)",[15,1261,1262],{},"Если хотите убрать MongoDB со стандартного порта 27017 (от автосканеров):",[72,1264,1265],{"className":74,"code":716,"language":76,"meta":77,"style":77},[53,1266,1267],{"__ignoreMap":77},[81,1268,1269,1271,1273],{"class":83,"line":84},[81,1270,55],{"class":94},[81,1272,725],{"class":102},[81,1274,728],{"class":102},[72,1276,1278],{"className":738,"code":1277,"language":740,"meta":77,"style":77},"net:\n  port: 27117\n  bindIp: 127.0.0.1\n",[53,1279,1280,1286,1295],{"__ignoreMap":77},[81,1281,1282,1284],{"class":83,"line":84},[81,1283,861],{"class":747},[81,1285,751],{"class":750},[81,1287,1288,1290,1292],{"class":83,"line":91},[81,1289,868],{"class":747},[81,1291,759],{"class":750},[81,1293,1294],{"class":98},"27117\n",[81,1296,1297,1299,1301],{"class":83,"line":113},[81,1298,878],{"class":747},[81,1300,759],{"class":750},[81,1302,883],{"class":98},[72,1304,1305],{"className":74,"code":768,"language":76,"meta":77,"style":77},[53,1306,1307],{"__ignoreMap":77},[81,1308,1309,1311,1313,1315],{"class":83,"line":84},[81,1310,55],{"class":94},[81,1312,320],{"class":102},[81,1314,779],{"class":102},[81,1316,326],{"class":102},[15,1318,1319],{},"Подключение:",[72,1321,1323],{"className":74,"code":1322,"language":76,"meta":77,"style":77},"mongosh --port 27117 -u admin -p --authenticationDatabase admin\n",[53,1324,1325],{"__ignoreMap":77},[81,1326,1327,1329,1332,1335,1337,1339,1341,1343],{"class":83,"line":84},[81,1328,365],{"class":94},[81,1330,1331],{"class":98}," --port",[81,1333,1334],{"class":98}," 27117",[81,1336,515],{"class":98},[81,1338,518],{"class":102},[81,1340,521],{"class":98},[81,1342,524],{"class":98},[81,1344,527],{"class":102},[15,1346,1347],{},"Не забудьте обновить порт в файрволе, если он был открыт:",[72,1349,1351],{"className":74,"code":1350,"language":76,"meta":77,"style":77},"sudo ufw delete allow from 10.0.0.10 to any port 27017\nsudo ufw allow from 10.0.0.10 to any port 27117 comment 'MongoDB custom port'\n",[53,1352,1353,1377],{"__ignoreMap":77},[81,1354,1355,1357,1359,1362,1364,1366,1368,1370,1372,1374],{"class":83,"line":84},[81,1356,55],{"class":94},[81,1358,1020],{"class":102},[81,1360,1361],{"class":102}," delete",[81,1363,1023],{"class":102},[81,1365,1141],{"class":102},[81,1367,1144],{"class":98},[81,1369,1147],{"class":102},[81,1371,1150],{"class":102},[81,1373,1153],{"class":102},[81,1375,1376],{"class":98}," 27017\n",[81,1378,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399],{"class":83,"line":91},[81,1380,55],{"class":94},[81,1382,1020],{"class":102},[81,1384,1023],{"class":102},[81,1386,1141],{"class":102},[81,1388,1144],{"class":98},[81,1390,1147],{"class":102},[81,1392,1150],{"class":102},[81,1394,1153],{"class":102},[81,1396,1334],{"class":98},[81,1398,1029],{"class":102},[81,1400,1401],{"class":102}," 'MongoDB custom port'\n",[57,1403],{},[19,1405,1407],{"id":1406},"строка-подключения-для-приложения","Строка подключения для приложения",[67,1409,1411],{"id":1410},"локальное-приложение-на-том-же-сервере","Локальное приложение (на том же сервере)",[72,1413,1416],{"className":1414,"code":1415,"language":1251},[1249],"mongodb://myapp_user:ПАРОЛЬ@127.0.0.1:27017/myapp\n",[53,1417,1415],{"__ignoreMap":77},[67,1419,1421],{"id":1420},"удалённое-приложение","Удалённое приложение",[72,1423,1426],{"className":1424,"code":1425,"language":1251},[1249],"mongodb://myapp_user:ПАРОЛЬ@10.0.0.5:27017/myapp\n",[53,1427,1425],{"__ignoreMap":77},[67,1429,1431],{"id":1430},"с-параметрами-рекомендуется","С параметрами (рекомендуется)",[72,1433,1436],{"className":1434,"code":1435,"language":1251},[1249],"mongodb://myapp_user:ПАРОЛЬ@127.0.0.1:27017/myapp?authSource=myapp&retryWrites=true&w=majority&maxPoolSize=50&connectTimeoutMS=10000\n",[53,1437,1435],{"__ignoreMap":77},[593,1439,1440,1450],{},[596,1441,1442],{},[599,1443,1444,1447],{},[602,1445,1446],{},"Параметр",[602,1448,1449],{},"Значение",[612,1451,1452,1462,1472,1482,1492],{},[599,1453,1454,1459],{},[617,1455,1456],{},[53,1457,1458],{},"authSource",[617,1460,1461],{},"БД для аутентификации",[599,1463,1464,1469],{},[617,1465,1466],{},[53,1467,1468],{},"retryWrites",[617,1470,1471],{},"Повтор записей при сбое",[599,1473,1474,1479],{},[617,1475,1476],{},[53,1477,1478],{},"w=majority",[617,1480,1481],{},"Подтверждение записи большинством нод",[599,1483,1484,1489],{},[617,1485,1486],{},[53,1487,1488],{},"maxPoolSize",[617,1490,1491],{},"Макс. соединений в пуле",[599,1493,1494,1499],{},[617,1495,1496],{},[53,1497,1498],{},"connectTimeoutMS",[617,1500,1501],{},"Таймаут подключения",[67,1503,1505],{"id":1504},"пример-для-nodejs-mongoose","Пример для Node.js (Mongoose)",[72,1507,1509],{"className":404,"code":1508,"language":406,"meta":77,"style":77},"import mongoose from 'mongoose'\n\nawait mongoose.connect('mongodb://myapp_user:ПАРОЛЬ@127.0.0.1:27017/myapp', {\n  authSource: 'myapp',\n  retryWrites: true,\n  w: 'majority',\n  maxPoolSize: 50,\n})\n",[53,1510,1511,1516,1520,1525,1530,1535,1540,1545],{"__ignoreMap":77},[81,1512,1513],{"class":83,"line":84},[81,1514,1515],{},"import mongoose from 'mongoose'\n",[81,1517,1518],{"class":83,"line":91},[81,1519,135],{"emptyLinePlaceholder":134},[81,1521,1522],{"class":83,"line":113},[81,1523,1524],{},"await mongoose.connect('mongodb://myapp_user:ПАРОЛЬ@127.0.0.1:27017/myapp', {\n",[81,1526,1527],{"class":83,"line":131},[81,1528,1529],{},"  authSource: 'myapp',\n",[81,1531,1532],{"class":83,"line":138},[81,1533,1534],{},"  retryWrites: true,\n",[81,1536,1537],{"class":83,"line":144},[81,1538,1539],{},"  w: 'majority',\n",[81,1541,1542],{"class":83,"line":166},[81,1543,1544],{},"  maxPoolSize: 50,\n",[81,1546,1547],{"class":83,"line":177},[81,1548,468],{},[57,1550],{},[19,1552,1554],{"id":1553},"бэкапы","Бэкапы",[67,1556,1558],{"id":1557},"ручной-бэкап","Ручной бэкап",[72,1560,1562],{"className":74,"code":1561,"language":76,"meta":77,"style":77},"mongodump --uri=\"mongodb://admin:ПАРОЛЬ@127.0.0.1:27017\" \\\n  --authenticationDatabase=admin \\\n  --gzip \\\n  --out=/backups/mongo/$(date +%Y-%m-%d)\n",[53,1563,1564,1577,1584,1591],{"__ignoreMap":77},[81,1565,1566,1569,1572,1575],{"class":83,"line":84},[81,1567,1568],{"class":94},"mongodump",[81,1570,1571],{"class":98}," --uri=",[81,1573,1574],{"class":102},"\"mongodb://admin:ПАРОЛЬ@127.0.0.1:27017\"",[81,1576,110],{"class":98},[81,1578,1579,1582],{"class":83,"line":91},[81,1580,1581],{"class":98},"  --authenticationDatabase=admin",[81,1583,110],{"class":98},[81,1585,1586,1589],{"class":83,"line":113},[81,1587,1588],{"class":98},"  --gzip",[81,1590,110],{"class":98},[81,1592,1593,1596,1599,1602],{"class":83,"line":131},[81,1594,1595],{"class":98},"  --out=/backups/mongo/$(",[81,1597,1598],{"class":94},"date",[81,1600,1601],{"class":102}," +%Y-%m-%d",[81,1603,1604],{"class":98},")\n",[67,1606,1608],{"id":1607},"восстановление","Восстановление",[72,1610,1612],{"className":74,"code":1611,"language":76,"meta":77,"style":77},"mongorestore --uri=\"mongodb://admin:ПАРОЛЬ@127.0.0.1:27017\" \\\n  --authenticationDatabase=admin \\\n  --gzip \\\n  /backups/mongo/2026-02-14\n",[53,1613,1614,1625,1631,1637],{"__ignoreMap":77},[81,1615,1616,1619,1621,1623],{"class":83,"line":84},[81,1617,1618],{"class":94},"mongorestore",[81,1620,1571],{"class":98},[81,1622,1574],{"class":102},[81,1624,110],{"class":98},[81,1626,1627,1629],{"class":83,"line":91},[81,1628,1581],{"class":98},[81,1630,110],{"class":98},[81,1632,1633,1635],{"class":83,"line":113},[81,1634,1588],{"class":98},[81,1636,110],{"class":98},[81,1638,1639],{"class":83,"line":131},[81,1640,1641],{"class":102},"  /backups/mongo/2026-02-14\n",[67,1643,1645],{"id":1644},"автоматические-бэкапы-через-cron","Автоматические бэкапы через cron",[72,1647,1649],{"className":74,"code":1648,"language":76,"meta":77,"style":77},"sudo nano /etc/cron.d/mongodb-backup\n",[53,1650,1651],{"__ignoreMap":77},[81,1652,1653,1655,1657],{"class":83,"line":84},[81,1654,55],{"class":94},[81,1656,725],{"class":102},[81,1658,1659],{"class":102}," /etc/cron.d/mongodb-backup\n",[72,1661,1665],{"className":1662,"code":1663,"language":1664,"meta":77,"style":77},"language-cron shiki shiki-themes github-dark","# Бэкап MongoDB каждый день в 3:00\n0 3 * * * root mongodump --uri=\"mongodb://admin:ПАРОЛЬ@127.0.0.1:27017\" --authenticationDatabase=admin --gzip --out=/backups/mongo/$(date +\\%Y-\\%m-\\%d) && find /backups/mongo/ -type d -mtime +14 -exec rm -rf {} + 2>/dev/null\n","cron",[53,1666,1667,1672],{"__ignoreMap":77},[81,1668,1669],{"class":83,"line":84},[81,1670,1671],{},"# Бэкап MongoDB каждый день в 3:00\n",[81,1673,1674],{"class":83,"line":91},[81,1675,1676],{},"0 3 * * * root mongodump --uri=\"mongodb://admin:ПАРОЛЬ@127.0.0.1:27017\" --authenticationDatabase=admin --gzip --out=/backups/mongo/$(date +\\%Y-\\%m-\\%d) && find /backups/mongo/ -type d -mtime +14 -exec rm -rf {} + 2>/dev/null\n",[15,1678,1679],{},"Это создаёт ежедневный бэкап и удаляет бэкапы старше 14 дней.",[67,1681,1683],{"id":1682},"бэкап-конкретной-базы","Бэкап конкретной базы",[72,1685,1687],{"className":74,"code":1686,"language":76,"meta":77,"style":77},"mongodump --uri=\"mongodb://admin:ПАРОЛЬ@127.0.0.1:27017/myapp\" \\\n  --authenticationDatabase=admin \\\n  --gzip \\\n  --out=/backups/mongo/myapp-$(date +%Y-%m-%d)\n",[53,1688,1689,1700,1706,1712],{"__ignoreMap":77},[81,1690,1691,1693,1695,1698],{"class":83,"line":84},[81,1692,1568],{"class":94},[81,1694,1571],{"class":98},[81,1696,1697],{"class":102},"\"mongodb://admin:ПАРОЛЬ@127.0.0.1:27017/myapp\"",[81,1699,110],{"class":98},[81,1701,1702,1704],{"class":83,"line":91},[81,1703,1581],{"class":98},[81,1705,110],{"class":98},[81,1707,1708,1710],{"class":83,"line":113},[81,1709,1588],{"class":98},[81,1711,110],{"class":98},[81,1713,1714,1717,1719,1721],{"class":83,"line":131},[81,1715,1716],{"class":98},"  --out=/backups/mongo/myapp-$(",[81,1718,1598],{"class":94},[81,1720,1601],{"class":102},[81,1722,1604],{"class":98},[57,1724],{},[19,1726,1728],{"id":1727},"мониторинг","Мониторинг",[67,1730,1732],{"id":1731},"статус-сервера","Статус сервера",[72,1734,1736],{"className":74,"code":1735,"language":76,"meta":77,"style":77},"mongosh -u admin -p --authenticationDatabase admin --eval \"db.serverStatus()\"\n",[53,1737,1738],{"__ignoreMap":77},[81,1739,1740,1742,1744,1746,1748,1750,1752,1754],{"class":83,"line":84},[81,1741,365],{"class":94},[81,1743,515],{"class":98},[81,1745,518],{"class":102},[81,1747,521],{"class":98},[81,1749,524],{"class":98},[81,1751,518],{"class":102},[81,1753,368],{"class":98},[81,1755,1756],{"class":102}," \"db.serverStatus()\"\n",[67,1758,1760],{"id":1759},"активные-соединения","Активные соединения",[72,1762,1764],{"className":74,"code":1763,"language":76,"meta":77,"style":77},"mongosh -u admin -p --authenticationDatabase admin --eval \"db.currentOp()\"\n",[53,1765,1766],{"__ignoreMap":77},[81,1767,1768,1770,1772,1774,1776,1778,1780,1782],{"class":83,"line":84},[81,1769,365],{"class":94},[81,1771,515],{"class":98},[81,1773,518],{"class":102},[81,1775,521],{"class":98},[81,1777,524],{"class":98},[81,1779,518],{"class":102},[81,1781,368],{"class":98},[81,1783,1784],{"class":102}," \"db.currentOp()\"\n",[67,1786,1788],{"id":1787},"статистика-базы","Статистика базы",[72,1790,1792],{"className":74,"code":1791,"language":76,"meta":77,"style":77},"mongosh -u admin -p --authenticationDatabase admin --eval \"\n  use myapp\n  db.stats()\n\"\n",[53,1793,1794,1813,1818,1823],{"__ignoreMap":77},[81,1795,1796,1798,1800,1802,1804,1806,1808,1810],{"class":83,"line":84},[81,1797,365],{"class":94},[81,1799,515],{"class":98},[81,1801,518],{"class":102},[81,1803,521],{"class":98},[81,1805,524],{"class":98},[81,1807,518],{"class":102},[81,1809,368],{"class":98},[81,1811,1812],{"class":102}," \"\n",[81,1814,1815],{"class":83,"line":91},[81,1816,1817],{"class":102},"  use myapp\n",[81,1819,1820],{"class":83,"line":113},[81,1821,1822],{"class":102},"  db.stats()\n",[81,1824,1825],{"class":83,"line":131},[81,1826,1827],{"class":102},"\"\n",[67,1829,1831],{"id":1830},"полезные-команды-мониторинга","Полезные команды мониторинга",[72,1833,1835],{"className":74,"code":1834,"language":76,"meta":77,"style":77},"# Статус службы\nsudo systemctl status mongod\n\n# Логи в реальном времени\nsudo tail -f /var/log/mongodb/mongod.log\n\n# Размер данных на диске\ndu -sh /var/lib/mongodb/\n\n# Проверка порта\nsudo ss -tlnp | grep mongod\n",[53,1836,1837,1842,1852,1856,1861,1874,1878,1883,1894,1898,1903],{"__ignoreMap":77},[81,1838,1839],{"class":83,"line":84},[81,1840,1841],{"class":87},"# Статус службы\n",[81,1843,1844,1846,1848,1850],{"class":83,"line":91},[81,1845,55],{"class":94},[81,1847,320],{"class":102},[81,1849,346],{"class":102},[81,1851,326],{"class":102},[81,1853,1854],{"class":83,"line":113},[81,1855,135],{"emptyLinePlaceholder":134},[81,1857,1858],{"class":83,"line":131},[81,1859,1860],{"class":87},"# Логи в реальном времени\n",[81,1862,1863,1865,1868,1871],{"class":83,"line":138},[81,1864,55],{"class":94},[81,1866,1867],{"class":102}," tail",[81,1869,1870],{"class":98}," -f",[81,1872,1873],{"class":102}," /var/log/mongodb/mongod.log\n",[81,1875,1876],{"class":83,"line":144},[81,1877,135],{"emptyLinePlaceholder":134},[81,1879,1880],{"class":83,"line":166},[81,1881,1882],{"class":87},"# Размер данных на диске\n",[81,1884,1885,1888,1891],{"class":83,"line":177},[81,1886,1887],{"class":94},"du",[81,1889,1890],{"class":98}," -sh",[81,1892,1893],{"class":102}," /var/lib/mongodb/\n",[81,1895,1896],{"class":83,"line":182},[81,1897,135],{"emptyLinePlaceholder":134},[81,1899,1900],{"class":83,"line":188},[81,1901,1902],{"class":87},"# Проверка порта\n",[81,1904,1905,1907,1910,1913,1915,1918],{"class":83,"line":199},[81,1906,55],{"class":94},[81,1908,1909],{"class":102}," ss",[81,1911,1912],{"class":98}," -tlnp",[81,1914,107],{"class":106},[81,1916,1917],{"class":94}," grep",[81,1919,326],{"class":102},[57,1921],{},[19,1923,1925],{"id":1924},"оптимизация-производительности","Оптимизация производительности",[67,1927,1929],{"id":1928},"wiredtiger-cache","WiredTiger Cache",[15,1931,1932],{},"MongoDB использует движок WiredTiger. По умолчанию он занимает ~50% RAM. Для сервера с 4 ГБ RAM:",[72,1934,1935],{"className":74,"code":716,"language":76,"meta":77,"style":77},[53,1936,1937],{"__ignoreMap":77},[81,1938,1939,1941,1943],{"class":83,"line":84},[81,1940,55],{"class":94},[81,1942,725],{"class":102},[81,1944,728],{"class":102},[72,1946,1948],{"className":738,"code":1947,"language":740,"meta":77,"style":77},"storage:\n  wiredTiger:\n    engineConfig:\n      cacheSizeGB: 1.5\n",[53,1949,1950,1957,1964,1971],{"__ignoreMap":77},[81,1951,1952,1955],{"class":83,"line":84},[81,1953,1954],{"class":747},"storage",[81,1956,751],{"class":750},[81,1958,1959,1962],{"class":83,"line":91},[81,1960,1961],{"class":747},"  wiredTiger",[81,1963,751],{"class":750},[81,1965,1966,1969],{"class":83,"line":113},[81,1967,1968],{"class":747},"    engineConfig",[81,1970,751],{"class":750},[81,1972,1973,1976,1978],{"class":83,"line":131},[81,1974,1975],{"class":747},"      cacheSizeGB",[81,1977,759],{"class":750},[81,1979,1980],{"class":98},"1.5\n",[67,1982,1984],{"id":1983},"формула-расчёта-кэша","Формула расчёта кэша",[72,1986,1989],{"className":1987,"code":1988,"language":1251},[1249],"cacheSizeGB = (RAM - 2 ГБ) × 0.5\n",[53,1990,1988],{"__ignoreMap":77},[15,1992,1993],{},"Оставьте минимум 2 ГБ для ОС и других процессов.",[593,1995,1996,2006],{},[596,1997,1998],{},[599,1999,2000,2003],{},[602,2001,2002],{},"RAM сервера",[602,2004,2005],{},"cacheSizeGB",[612,2007,2008,2016,2024,2032],{},[599,2009,2010,2013],{},[617,2011,2012],{},"2 ГБ",[617,2014,2015],{},"0.5",[599,2017,2018,2021],{},[617,2019,2020],{},"4 ГБ",[617,2022,2023],{},"1.0",[599,2025,2026,2029],{},[617,2027,2028],{},"8 ГБ",[617,2030,2031],{},"3.0",[599,2033,2034,2037],{},[617,2035,2036],{},"16 ГБ",[617,2038,2039],{},"7.0",[67,2041,2043],{"id":2042},"индексы","Индексы",[15,2045,2046],{},"Создавайте индексы для полей, по которым часто ищете:",[72,2048,2050],{"className":404,"code":2049,"language":406,"meta":77,"style":77},"// Подключитесь к базе\nuse myapp\n\n// Составной индекс\ndb.users.createIndex({ email: 1 }, { unique: true })\ndb.sessions.createIndex({ userId: 1, createdAt: -1 })\n\n// TTL-индекс (автоудаление документов)\ndb.sessions.createIndex({ expiresAt: 1 }, { expireAfterSeconds: 0 })\n\n// Посмотреть все индексы коллекции\ndb.users.getIndexes()\n",[53,2051,2052,2057,2061,2065,2070,2075,2080,2084,2089,2094,2098,2103],{"__ignoreMap":77},[81,2053,2054],{"class":83,"line":84},[81,2055,2056],{},"// Подключитесь к базе\n",[81,2058,2059],{"class":83,"line":91},[81,2060,541],{},[81,2062,2063],{"class":83,"line":113},[81,2064,135],{"emptyLinePlaceholder":134},[81,2066,2067],{"class":83,"line":131},[81,2068,2069],{},"// Составной индекс\n",[81,2071,2072],{"class":83,"line":138},[81,2073,2074],{},"db.users.createIndex({ email: 1 }, { unique: true })\n",[81,2076,2077],{"class":83,"line":144},[81,2078,2079],{},"db.sessions.createIndex({ userId: 1, createdAt: -1 })\n",[81,2081,2082],{"class":83,"line":166},[81,2083,135],{"emptyLinePlaceholder":134},[81,2085,2086],{"class":83,"line":177},[81,2087,2088],{},"// TTL-индекс (автоудаление документов)\n",[81,2090,2091],{"class":83,"line":182},[81,2092,2093],{},"db.sessions.createIndex({ expiresAt: 1 }, { expireAfterSeconds: 0 })\n",[81,2095,2096],{"class":83,"line":188},[81,2097,135],{"emptyLinePlaceholder":134},[81,2099,2100],{"class":83,"line":199},[81,2101,2102],{},"// Посмотреть все индексы коллекции\n",[81,2104,2105],{"class":83,"line":465},[81,2106,2107],{},"db.users.getIndexes()\n",[57,2109],{},[19,2111,2113],{"id":2112},"частые-ошибки","Частые ошибки",[67,2115,2117],{"id":2116},"failed-to-start-mongodservice","«Failed to start mongod.service»",[72,2119,2121],{"className":74,"code":2120,"language":76,"meta":77,"style":77},"# Проверить логи\nsudo journalctl -u mongod --no-pager -n 50\n\n# Частая причина — права на директорию\nsudo chown -R mongodb:mongodb /var/lib/mongodb\nsudo chown -R mongodb:mongodb /var/log/mongodb\nsudo systemctl start mongod\n",[53,2122,2123,2128,2149,2153,2158,2174,2187],{"__ignoreMap":77},[81,2124,2125],{"class":83,"line":84},[81,2126,2127],{"class":87},"# Проверить логи\n",[81,2129,2130,2132,2135,2137,2140,2143,2146],{"class":83,"line":91},[81,2131,55],{"class":94},[81,2133,2134],{"class":102}," journalctl",[81,2136,515],{"class":98},[81,2138,2139],{"class":102}," mongod",[81,2141,2142],{"class":98}," --no-pager",[81,2144,2145],{"class":98}," -n",[81,2147,2148],{"class":98}," 50\n",[81,2150,2151],{"class":83,"line":113},[81,2152,135],{"emptyLinePlaceholder":134},[81,2154,2155],{"class":83,"line":131},[81,2156,2157],{"class":87},"# Частая причина — права на директорию\n",[81,2159,2160,2162,2165,2168,2171],{"class":83,"line":138},[81,2161,55],{"class":94},[81,2163,2164],{"class":102}," chown",[81,2166,2167],{"class":98}," -R",[81,2169,2170],{"class":102}," mongodb:mongodb",[81,2172,2173],{"class":102}," /var/lib/mongodb\n",[81,2175,2176,2178,2180,2182,2184],{"class":83,"line":144},[81,2177,55],{"class":94},[81,2179,2164],{"class":102},[81,2181,2167],{"class":98},[81,2183,2170],{"class":102},[81,2185,2186],{"class":102}," /var/log/mongodb\n",[81,2188,2189,2191,2193,2195],{"class":83,"line":166},[81,2190,55],{"class":94},[81,2192,320],{"class":102},[81,2194,323],{"class":102},[81,2196,326],{"class":102},[67,2198,2200],{"id":2199},"connection-refused-при-подключении","«connection refused» при подключении",[72,2202,2204],{"className":74,"code":2203,"language":76,"meta":77,"style":77},"# MongoDB запущена?\nsudo systemctl status mongod\n\n# Слушает ли порт?\nsudo ss -tlnp | grep 27017\n\n# Проверьте bindIp в конфиге\ngrep bindIp /etc/mongod.conf\n",[53,2205,2206,2211,2221,2225,2230,2244,2248,2253],{"__ignoreMap":77},[81,2207,2208],{"class":83,"line":84},[81,2209,2210],{"class":87},"# MongoDB запущена?\n",[81,2212,2213,2215,2217,2219],{"class":83,"line":91},[81,2214,55],{"class":94},[81,2216,320],{"class":102},[81,2218,346],{"class":102},[81,2220,326],{"class":102},[81,2222,2223],{"class":83,"line":113},[81,2224,135],{"emptyLinePlaceholder":134},[81,2226,2227],{"class":83,"line":131},[81,2228,2229],{"class":87},"# Слушает ли порт?\n",[81,2231,2232,2234,2236,2238,2240,2242],{"class":83,"line":138},[81,2233,55],{"class":94},[81,2235,1909],{"class":102},[81,2237,1912],{"class":98},[81,2239,107],{"class":106},[81,2241,1917],{"class":94},[81,2243,1376],{"class":98},[81,2245,2246],{"class":83,"line":144},[81,2247,135],{"emptyLinePlaceholder":134},[81,2249,2250],{"class":83,"line":166},[81,2251,2252],{"class":87},"# Проверьте bindIp в конфиге\n",[81,2254,2255,2258,2261],{"class":83,"line":177},[81,2256,2257],{"class":94},"grep",[81,2259,2260],{"class":102}," bindIp",[81,2262,728],{"class":102},[67,2264,2266],{"id":2265},"потеря-ssh-доступа-после-ufw","Потеря SSH-доступа после UFW",[15,2268,2269],{},"Если всё же заблокировали себя:",[2271,2272,2273,2280],"ol",{},[27,2274,2275,2276,2279],{},"Подключитесь через ",[30,2277,2278],{},"консоль панели хостера"," (VNC/IPMI)",[27,2281,2282],{},"Выполните:",[72,2284,2286],{"className":74,"code":2285,"language":76,"meta":77,"style":77},"sudo ufw disable\nsudo ufw allow 22/tcp\nsudo ufw enable\n",[53,2287,2288,2297,2308],{"__ignoreMap":77},[81,2289,2290,2292,2294],{"class":83,"line":84},[81,2291,55],{"class":94},[81,2293,1020],{"class":102},[81,2295,2296],{"class":102}," disable\n",[81,2298,2299,2301,2303,2305],{"class":83,"line":91},[81,2300,55],{"class":94},[81,2302,1020],{"class":102},[81,2304,1023],{"class":102},[81,2306,2307],{"class":102}," 22/tcp\n",[81,2309,2310,2312,2314],{"class":83,"line":113},[81,2311,55],{"class":94},[81,2313,1020],{"class":102},[81,2315,1102],{"class":102},[67,2317,2319],{"id":2318},"authentication-failed","«Authentication failed»",[72,2321,2323],{"className":74,"code":2322,"language":76,"meta":77,"style":77},"# Проверьте, что аутентификация включена\ngrep authorization /etc/mongod.conf\n\n# Подключитесь с явным указанием authSource\nmongosh -u myapp_user -p --authenticationDatabase myapp\n",[53,2324,2325,2330,2339,2343,2348],{"__ignoreMap":77},[81,2326,2327],{"class":83,"line":84},[81,2328,2329],{"class":87},"# Проверьте, что аутентификация включена\n",[81,2331,2332,2334,2337],{"class":83,"line":91},[81,2333,2257],{"class":94},[81,2335,2336],{"class":102}," authorization",[81,2338,728],{"class":102},[81,2340,2341],{"class":83,"line":113},[81,2342,135],{"emptyLinePlaceholder":134},[81,2344,2345],{"class":83,"line":131},[81,2346,2347],{"class":87},"# Подключитесь с явным указанием authSource\n",[81,2349,2350,2352,2354,2357,2359,2361],{"class":83,"line":138},[81,2351,365],{"class":94},[81,2353,515],{"class":98},[81,2355,2356],{"class":102}," myapp_user",[81,2358,521],{"class":98},[81,2360,524],{"class":98},[81,2362,2363],{"class":102}," myapp\n",[2365,2366,2367],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s4JwU, html code.shiki .s4JwU{--shiki-default:#85E89D}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}",{"title":77,"searchDepth":91,"depth":91,"links":2369},[2370,2371,2376,2380,2385,2386,2391,2398,2399,2405,2411,2417,2422],{"id":21,"depth":91,"text":22},{"id":61,"depth":91,"text":62,"children":2372},[2373,2374,2375],{"id":69,"depth":113,"text":70},{"id":215,"depth":113,"text":216},{"id":307,"depth":113,"text":308},{"id":376,"depth":91,"text":377,"children":2377},[2378,2379],{"id":387,"depth":113,"text":388},{"id":400,"depth":113,"text":401},{"id":495,"depth":91,"text":496,"children":2381},[2382,2383,2384],{"id":502,"depth":113,"text":503},{"id":530,"depth":113,"text":531},{"id":590,"depth":113,"text":591},{"id":709,"depth":91,"text":710},{"id":835,"depth":91,"text":836,"children":2387},[2388,2389,2390],{"id":850,"depth":113,"text":851},{"id":889,"depth":113,"text":890},{"id":936,"depth":113,"text":937},{"id":994,"depth":91,"text":995,"children":2392},[2393,2394,2395,2396,2397],{"id":1007,"depth":113,"text":1008},{"id":1059,"depth":113,"text":1060},{"id":1087,"depth":113,"text":1088},{"id":1108,"depth":113,"text":1109},{"id":1225,"depth":113,"text":1226},{"id":1258,"depth":91,"text":1259},{"id":1406,"depth":91,"text":1407,"children":2400},[2401,2402,2403,2404],{"id":1410,"depth":113,"text":1411},{"id":1420,"depth":113,"text":1421},{"id":1430,"depth":113,"text":1431},{"id":1504,"depth":113,"text":1505},{"id":1553,"depth":91,"text":1554,"children":2406},[2407,2408,2409,2410],{"id":1557,"depth":113,"text":1558},{"id":1607,"depth":113,"text":1608},{"id":1644,"depth":113,"text":1645},{"id":1682,"depth":113,"text":1683},{"id":1727,"depth":91,"text":1728,"children":2412},[2413,2414,2415,2416],{"id":1731,"depth":113,"text":1732},{"id":1759,"depth":113,"text":1760},{"id":1787,"depth":113,"text":1788},{"id":1830,"depth":113,"text":1831},{"id":1924,"depth":91,"text":1925,"children":2418},[2419,2420,2421],{"id":1928,"depth":113,"text":1929},{"id":1983,"depth":113,"text":1984},{"id":2042,"depth":113,"text":2043},{"id":2112,"depth":91,"text":2113,"children":2423},[2424,2425,2426,2427],{"id":2116,"depth":113,"text":2117},{"id":2199,"depth":113,"text":2200},{"id":2265,"depth":113,"text":2266},{"id":2318,"depth":113,"text":2319},"Безопасная установка MongoDB 8 на Ubuntu/Debian: создание пользователей, аутентификация, настройка файрвола без блокировки SSH, бэкапы и мониторинг.","md",{"category":2431,"icon":2432,"date":2433,"image":2434},"Базы данных","terminal","2026-02-14","/wiki/mongodb-og.png","/wiki/mongodb-setup",{"title":5,"description":2428},"wiki/mongodb-setup","ikjhCuYv9f4lgNUt6FNP9RBO_hUiWHj3R45rShC7jEA",1773002542793]