Виртуальный сервер
Заказываем VPS сервер, для бота вполне достаточно и тарифа VPS mini и выбрать Ubuntu 20 как ОС сервера.
Получаем доступы на почту и подключаем к серверу по ssh
Подключение к виртуальной машине
ssh root@айпи сервера
Вводим пароль пользователя root, обратите внимание что пароль при вводе не показывает и не показывает движение курсора, но он вводиться.
Фактически в слепую, это для обеспечения безопасности.
Подготовка сервера
Первым делом обновляем пакеты командами:apt-get update -yapt-get upgrade -y
Дожидаемся установки и обновления пакетов
Загрузка и запуск бота
Перейдите в каталог home и создайте папку для вашего проекта выполнив команды.
cd /homemkdir ramziv_botcd ramziv_bot
Этими командами, мы переходим в каталог /home далее создаем каталог ramziv_bot и переходим в этот каталог.
Подключаем по sftp используя filezilla (бесплатный фтп клиент)
В поле сервер пишем
sftp://IP-сервера
пользователь root
пароль пользователя root из письма
Порт 22

Подключаемся и переходим в каталог /home/ramziv_bot
Загрузите файлы вашего проекта на сервер, в моем случаи это только один файл main.py
Установите зависимости вашего проекта, и запустите бота.
Примечание: Ubuntu 20.04 поставляется с установленной Python 3.8 из коробки, если для вашего проекта нужна другая версия, установите ее или используйте другую версию дистрибутива.apt install python3-pip -y pip install pyTelegramBotAPIpython3 main.py

Авто запуск и перезапуск телеграм бота
Создайте systemd службу для бота.
sudo nano /lib/systemd/system/ramziv_bot.service
С конфигурацией:
[Unit]Description=Ramziv - Telegram BotAfter=syslog.targetAfter=network.target
[Service]Type=simpleWorkingDirectory=/home/ramziv_bot/ExecStart=/usr/bin/python3 /home/ramziv_bot/main.pyRestartSec=60Restart=always
[Install]WantedBy=multi-user.target
Нажмите CTRL+S и CTRL+X что бы сохранить и выйти.
Выполните эти две команды что бы запустить службу.
sudo systemctl enable ramziv_botsudo systemctl start ramziv_bot
Ваш бот запущен. Перейдите в Телеграм и убедитесь в этом.
Заключение
Ваш бот будет всегда запускаться при старте системы, и перезапускается при возникновении ошибки. Для примера вы можете специально вызвать исключения в одной из функций обернутой обработчиком, и отследить ее в журнале командой:
sudo journalctl -u ramziv_bot.service
#Вывод
#Jun 13 12:35:31 objmnuqxoa python3[1069]: File "/home/ramziv_bot/main.py", line 7, in send_welcome
#Jun 13 12:35:31 objmnuqxoa python3[1069]: number = 1/0
#Jun 13 12:35:31 objmnuqxoa python3[1069]: ZeroDivisionError: division by zero
