Hostowanie bota Discord 24/7 na serwerze Linux: Wdrożenie z menedżerem procesów PM2
· 5 min czytania
Pisząc bota Discord w bibliotece discord.js (Node.js) lub discord.py (Python), najczęstszym wyzwaniem jest utrzymanie jego stabilnej pracy w tle. Zwykłe uruchomienie procesu w terminalu kończy się wyłączeniem bota w momencie zerwania sesji SSH lub przy pierwszym nieobsłużonym błędzie w kodzie.
1. Czym jest PM2 i dlaczego przewyższa tradycyjne narzędzia jak Screen?
Menedżer procesów PM2 oferuje kompletny ekosystem produkcyjny dla aplikacji webowych i mikroserwisów:
- Automatyczny restart po crashu: Jeśli aplikacja rzuci nieobsługiwany wyjątek (np. błąd API Discorda
500 Internal Server Error), PM2 wznowi proces w ciągu ułamka sekundy. - Autostart po restarcie serwera fizycznego: Integracja z
systemdgwarantuje, że po restarcie maszyny bot podniesie się sam. - Zaawansowany monitoring zasobów: Podgląd zużycia procesora, wycieków pamięci RAM oraz strumieniowanie logów na żywo.
2. Instalacja i konfiguracja środowiska
# Instalacja Node.js LTS oraz PM2 globalnie
sudo apt update && sudo apt install nodejs npm -y
sudo npm install -g pm2
3. Przygotowanie pliku konfiguracyjnego ecosystem.config.js
Zamiast uruchamiać procesy z poziomu komend w konsoli, najlepszą praktyką jest definicja pliku manifestu w katalogu głównym bota:
module.exports = {
apps: [{
name: 'mermiko-discord-bot',
script: 'src/index.js',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '500M',
env: {
NODE_ENV: 'production'
},
error_file: './logs/err.log',
out_file: './logs/out.log',
log_date_format: 'YYYY-MM-DD HH:mm:ss'
}]
};
4. Uruchomienie i konfiguracja autostartu systemowego
Wdrożenie bota ogranicza się do dwóch prostych komend:
# Uruchomienie aplikacji z manifestu
pm2 start ecosystem.config.js
# Zapisanie bieżącej listy procesów
pm2 save
# Wygenerowanie i wdrożenie skryptu systemd
pm2 startup
Od tego momentu stan Twojego bota możesz weryfikować w dowolnej chwili za pomocą komendy pm2 status oraz pm2 logs mermiko-discord-bot.