MAATRIX / Блог / VPS для бота с БД: PostgreSQL и Redis рядом с ботом

VPS для бота с БД: PostgreSQL и Redis рядом с ботом

Блог MAATRIX · 2026-07-07

Как только боту нужно хранить состояние пользователей, историю или очереди — появляется база. Держать её на том же VPS, что и бот, — быстро и дёшево: локальное соединение через сокет без сетевых задержек. Разберём PostgreSQL для данных и Redis для кэша и очередей.

Когда боту нужна база, а когда Redis

['PostgreSQL — для постоянных данных: профили пользователей, заказы, история сообщений, всё, что должно пережить перезапуск. Redis — для быстрого доступа: кэш, счётчики, rate-limit, очереди задач и хранение FSM-состояний диалога.', 'Часто их используют вместе: Postgres как источник истины, Redis как быстрый слой поверх. Типичный сценарий — профиль пользователя лежит в Postgres, а его текущее состояние в диалоге и счётчики антифлуда держит Redis с автоматическим истечением по TTL. На одном VPS обе базы прекрасно соседствуют с ботом: соединение идёт через локальный сокет, без сетевой задержки и без выхода трафика наружу.', '
  • PostgreSQL — надёжное хранение, транзакции, сложные запросы.
  • Redis — миллисекундный доступ, кэш, очереди, TTL.
  • Локально — соединение через сокет без сетевой задержки.
']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для бота с БД

Установка PostgreSQL и отдельная роль

['Ставим сервер БД и сразу создаём отдельную роль и базу под бота — не работайте от суперпользователя postgres.', '
sudo apt update && sudo apt install -y postgresql postgresql-contrib\nsudo systemctl enable --now postgresql
', "
sudo -u postgres psql <<'SQL'\nCREATE ROLE botuser WITH LOGIN PASSWORD 'strong_password_here';\nCREATE DATABASE botdb OWNER botuser;\nSQL
", 'Строка подключения для бота — через localhost, база наружу не торчит:', '
DATABASE_URL=postgresql://botuser:strong_password_here@127.0.0.1:5432/botdb
']

Установка Redis и базовая защита

['Redis по умолчанию слушает только localhost — это правильно. Проверим и при необходимости зададим пароль.', '
sudo apt install -y redis-server\nsudo systemctl enable --now redis-server\nredis-cli ping   # ожидаем PONG
', 'Для дополнительной защиты задайте пароль в конфиге и убедитесь, что bind ограничен локальным адресом:', "
sudo sed -i 's/^# requirepass .*/requirepass strong_redis_pass/' /etc/redis/redis.conf\nsudo grep -E '^bind' /etc/redis/redis.conf   # должно быть 127.0.0.1\nsudo systemctl restart redis-server
"]

Подключение из бота и пул соединений

['Не открывайте новое соединение на каждый запрос — используйте пул. Для Python это asyncpg или psycopg_pool, для Node — pg.Pool.', "
import asyncpg, os\npool = await asyncpg.create_pool(\n    dsn=os.environ['DATABASE_URL'],\n    min_size=2, max_size=10,\n)\nasync with pool.acquire() as conn:\n    row = await conn.fetchrow('SELECT count(*) FROM users')\n    print(row[0])
", 'Redis-подключение из бота столь же просто:', "
import redis.asyncio as redis\nr = redis.Redis(host='127.0.0.1', port=6379, password='strong_redis_pass')\nawait r.set('user:100500:state', 'menu', ex=3600)
"]

Бэкапы и обслуживание

['База без бэкапа — вопрос времени до потери данных. Настроим ежедневный дамп PostgreSQL:', '
mkdir -p ~/backups\npg_dump -U botuser -h 127.0.0.1 botdb | gzip > ~/backups/botdb_$(date +%F).sql.gz
', 'Заведём таймер systemd, чтобы дамп снимался каждую ночь, и удаляем архивы старше 14 дней:', "
find ~/backups -name 'botdb_*.sql.gz' -mtime +14 -delete
", 'Восстановление из дампа:', '
gunzip -c ~/backups/botdb_2026-07-09.sql.gz | psql -U botuser -h 127.0.0.1 botdb
']

Где брать сервер и частые ошибки

['Бот с PostgreSQL и Redis чувствителен к скорости диска — база активно пишет и читает. На тарифах MAATRIX это NVMe + AMD EPYC от $8/мес: быстрый диск заметно ускоряет запросы и снятие дампов. Плюс ежедневные бэкапы уровня хостинга поверх ваших pg_dump — двойная страховка. Локации UK и США, оплата картой РФ, СБП, криптой или токеном MAAT.', '
  • БД слушает 0.0.0.0 — сканеры найдут открытый порт; держите bind на 127.0.0.1.
  • Соединение на каждый запрос — исчерпание лимита connections; используйте пул.
  • Работа от роли postgres/root БД — заведите отдельную роль с минимумом прав.
  • Нет бэкапов — потеря данных при любом сбое; автоматизируйте pg_dump.
']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для бота с БД

Частые вопросы

PostgreSQL и Redis на одном VPS — это нормально?

Да, для большинства ботов это оптимально: локальное соединение через сокет быстрее сети, а ресурсов одной машины хватает. Разносить их стоит лишь под высокой нагрузкой.

Сколько RAM нужно боту с базой?

Боту с PostgreSQL и Redis комфортно от 2 ГБ. Redis держит данные в памяти, поэтому объём зависит от размера кэша.

Как не потерять данные при переезде?

Снимите pg_dump, скопируйте архив на новый сервер и восстановите через psql. Redis дампит состояние в RDB-файл dump.rdb, который тоже можно перенести.