Найти в Дзене
Аналитика данных

Пошаговая инструкция по запуску Telegram-бота на сервере Ubuntu

База данных будет в SQLite, можно также сделать и на PostgreSQL, имя базы данных: mybot.db. Обновление пакетов: sudo apt update && sudo apt upgrade -y Установка Python 3 и pip sudo apt install python3 python3-pip python3-venv -y В этой команде: ⚠ Рекомендуется создать отдельного пользователя для бота sudo adduser telegrambot
sudo su - telegrambot "sudo adduser telegrambot" — создаёт нового пользователя с именем telegrambot. Во время выполнения команды система попросит ввести пароль для нового пользователя и (по желанию) заполнить дополнительные сведения (имя, телефон и т.д. — можно пропустить, нажав Enter). Для пользователя автоматически создаётся домашний каталог /home/telegrambot. "sudo su - telegrambot" — переключает текущую сессию терминала на пользователя telegrambot Ключ - (или --login) означает, что будет загружено пользовательское окружение (например, переменные среды, домашняя директория). После этой команды в терминале становится активный пользователь telegrambot с его домашн
Оглавление
Запуск телеграм-бота на Ubuntu
Запуск телеграм-бота на Ubuntu

Начальные условия

  • куплен сервер Ubuntu,
  • настроен root-доступ (доступ по SSH через программу PuTTY),
  • есть доступ к серверу через SFTP (программа WinSCP),
  • рабочий код в файле app.py,
  • необходимые ключи в .env,
  • есть зарегистрированный бот в @BotFather,
  • есть токен бота,
  • есть Telegram-ID пользователя, который будет администрировать бота
    (узнать свой IDможно в Telegram, например у бота Get My ID или любого другого подобного).

База данных будет в SQLite, можно также сделать и на PostgreSQL, имя базы данных: mybot.db.

1. Подготовка сервера

Обновление пакетов:

sudo apt update && sudo apt upgrade -y

Установка Python 3 и pip

sudo apt install python3 python3-pip python3-venv -y

В этой команде:

  • python3 — интерпретатор языка Python версии 3, необходимый для запуска Python-приложений.
  • python3-pip — менеджер пакетов pip для Python 3, для установки сторонних библиотек.
  • python3-venv — модуль для создания виртуальных окружений Python.

Рекомендуется создать отдельного пользователя для бота

sudo adduser telegrambot
sudo su - telegrambot

"sudo adduser telegrambot" — создаёт нового пользователя с именем telegrambot.

Во время выполнения команды система попросит ввести пароль для нового пользователя и (по желанию) заполнить дополнительные сведения (имя, телефон и т.д. — можно пропустить, нажав Enter).

Для пользователя автоматически создаётся домашний каталог /home/telegrambot.

"sudo su - telegrambot" — переключает текущую сессию терминала на пользователя telegrambot

Ключ - (или --login) означает, что будет загружено пользовательское окружение (например, переменные среды, домашняя директория).

После этой команды в терминале становится активный пользователь telegrambot с его домашней директорией /home/telegrambot.

2. Создание папки проекта

Создаём папку "project"

mkdir project

3. Загрузка проекта на сервер

Копируем в папку проекта "project" готовые файлы (app.py, .env, mybot.db) на сервер через SFTP (или Git, SCP).

4. Создание виртуального окружения и установка зависимостей. Выполняем команды из папки "project"

Переход в папку "project"

cd project

Создание окружения

python3 -m venv venv

Активация окружения

source venv/bin/activate

Ставим нужные зависимости

pip install python-telegram-bot python-dotenv

⚠ Если есть файл requirements.txt, используй: pip install -r requirements.txt.

5. Переменные в файле .env

TELEGRAM_TOKEN=токен_бота
DATABASE=mybot.db
ADMIN_IDS=список telegram_id админов через запятую

⚠ Для ADMIN_IDS в коде нужно будет разбить строку по запятой функцией: split(",")

6. Первый запуск бота (ручной)

Активируем окружение, если ещё не активно

source venv/bin/activate

Запуск бота в screen (чтобы он не остановился при выходе из SSH)

screen -S mybot
python app.py

Чтобы отсоединиться от screen: Ctrl+A, затем D. Вернуться: screen -r mybot.

7. Автозапуск systemd

Если сервер перезагрузится, то нужно будет опять запускать screen. Чтобы перезапускалось всё само можно настроить автозапуск через systemd, например так:

Создать юнит-файл /etc/systemd/system/mybot.service

[Unit]
Description= My Telegram Bot
After=network.target

[Service]
User=telegrambot
WorkingDirectory=/home/telegrambot/project
ExecStart=/home/telegrambot/project/venv/bin/python/home/telegrambot/project/app.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

8. Перезапуск systemd и активация сервиса

sudo systemctl daemon-reload
sudo systemctl enable mybot
sudo systemctl start mybot
sudo systemctl status mybot

На этом всё ☺