N'oluyo · Geliştirici Dokümanları · Son güncelleme: · https://noluyo.net/gelistirici

Botu açık tut

Botunu kendi bilgisayarında başlattığında, ekranı indirdiğin, bilgisayarı uyku moduna aldığın ya da internetin kesildiği an program durur ve botun çevrimdışı olur. Botun günün her saati yanıt vermesini istiyorsan onu hiç kapanmayan küçük bir Linux sanal sunucuda (VPS) çalıştırırsın.

Botu açık tut

Botunu kendi bilgisayarında başlattığında, ekranı indirdiğin, bilgisayarı uyku moduna aldığın ya da internetin kesildiği an program durur ve botun çevrimdışı olur. Botun günün her saati yanıt vermesini istiyorsan onu hiç kapanmayan küçük bir Linux sanal sunucuda (VPS) çalıştırırsın.

Bir Linux VPS seçmek

Belirli bir barındırma şirketine ihtiyacın yok; herhangi bir standart Linux sanal sunucu sağlayıcısı işini görür. Seçerken şu ölçütlere bak:

  • İşletim sistemi: Güncel bir Ubuntu LTS ya da Debian kararlı sürümü en sade kurulumu sunar.
  • Bellek ve işlemci: Metin, komut ve buton kullanan normal bir bot için 1 vCPU ve 512 MB – 1 GB RAM fazlasıyla yeterlidir. Ses kanalında ffmpeg ile ses çözen bir bot çalıştıracaksan en az 1–2 GB RAM seç.
  • Ağ: Dışarıya 443 portundan HTTPS ve WebSocket (wss://noluyo.net) çıkışı açık olmalıdır. Etkileşimleri HTTP ile teslim modunda almayacaksan sunucuna dışarıdan port açman bile gerekmez; gateway bağlantısını bot içeriden kendisi başlatır.

Ücretsiz katmanların sınırı

Bazı bulut platformları "ücretsiz web servisi" sunar ama gelen HTTP isteği olmadığında konteyneri 15 dakika sonra uyutur. Uyuyan servis gateway botları için uygun değildir: WebSocket bağlantısı kesilir, bot çevrimdışı düşer ve uyanıp tekrar bağlanana dek sunucudaki mesajları kaçırır (üstelik sürekli baştan identify yaparsa günlük 1000 oturum hakkını da eritir). Yalnızca gerçek anlamda kesintisiz çalışan bir sanal makine kullan ya da etkileşimlerini HTTP ile teslim moduna taşı.

1. Sunucuya SSH ile bağlan ve ayrı kullanıcı aç

Sunucu sağlayıcının verdiği IP adresiyle kendi bilgisayarının terminalinden bağlan:

ssh root@203.0.113.10

Botu root yetkisiyle çalıştırma. Yalnızca bota ait kısıtlı bir sistem kullanıcısı ve klasör oluştur, ayrıca Node.js 22+ veya Python 3.11+ paketlerini kur:

adduser --system --group --home /opt/noluyo-bot botuser
apt update && apt install -y git curl python3 python3-venv python3-pip

*(Ses botu çalıştıracaksan aynı komuta ffmpeg paketini de ekle.)*

2. Dosyaları sunucuya aktar (.env hariç)

Kodunu Git deposunda tutuyorsan (.env dosyasının .gitignore içinde olduğundan emin olarak!) sunucuya çek; Git kullanmıyorsan kendi bilgisayarından scp ile yalnız kod dosyalarını kopyala:

sudo -u botuser git clone https://ornek-git-adresin/ilk-botum.git /opt/noluyo-bot/app
cd /opt/noluyo-bot/app
sudo -u botuser npm ci --omit=dev
# Kendi bilgisayarının terminalinden çalıştır (.env dosyasını kopyalama):
scp package.json package-lock.json bot.mjs root@203.0.113.10:/tmp/
# Sonra sunucuda:
mkdir -p /opt/noluyo-bot/app
mv /tmp/package.json /tmp/package-lock.json /tmp/bot.mjs /opt/noluyo-bot/app/
chown -R botuser:botuser /opt/noluyo-bot/app
cd /opt/noluyo-bot/app && sudo -u botuser npm ci --omit=dev

Python kullanıyorsan /opt/noluyo-bot/app içinde sudo -u botuser python3 -m venv .venv ve sudo -u botuser .venv/bin/pip install -r requirements.txt çalıştır.

3. Sunucuda .env dosyasını oluştur ve kilitle

Token'ı sunucuda doğrudan /opt/noluyo-bot/app/.env içine yaz ve dosya izinlerini yalnız botuser okuyabilecek şekilde (chmod 600) kilitle:

nano /opt/noluyo-bot/app/.env

İçine BOT_TOKEN=... satırını yapıştırıp kaydet (Ctrl + O, Enter, Ctrl + X), ardından izinleri sıkılaştır:

chown botuser:botuser /opt/noluyo-bot/app/.env
chmod 600 /opt/noluyo-bot/app/.env

chmod 600 sayesinde aynı sunucudaki başka kullanıcılar .env dosyasını okuyamaz.

4. systemd servisi ile arka planda çalıştır

Botu SSH penceresinin içinde düz node bot.mjs ile bırakırsan SSH bağlantın koptuğunda süreç kapanır. Linux'un yerleşik systemd yöneticisi ise botu arka planda başlatır, sunucu yeniden başlarsa kendiliğinden açar ve beklenmeyen bir hatada birkaç saniye bekleyip yeniden kaldırır.

/etc/systemd/system/noluyo-bot.service dosyasını oluştur:

[Unit]
Description=N'oluyo Bot
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=botuser
Group=botuser
WorkingDirectory=/opt/noluyo-bot/app
EnvironmentFile=/opt/noluyo-bot/app/.env
ExecStart=/usr/bin/node /opt/noluyo-bot/app/bot.mjs
Restart=on-failure
RestartSec=10
NoNewPrivileges=true
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Servisi etkinleştir ve başlat:

systemctl daemon-reload
systemctl enable --now noluyo-bot

5. Durumu ve canlı logları izlemek

Botun çalışıp çalışmadığını ve console.log / hata çıktılarını görmek için:

# Anlık durum (active (running) görmelisin)
systemctl status noluyo-bot

# Canlı akan loglar (çıkmak için Ctrl + C)
journalctl -u noluyo-bot -f

# Son 100 log satırı
journalctl -u noluyo-bot -n 100 --no-pager

6. Güncellemek, yeniden başlatmak ve durdurmak

Kodunda değişiklik yaptığında sunucuda yeni kodu çekip servisi yeniden başlatman yeterlidir:

cd /opt/noluyo-bot/app
sudo -u botuser git pull
sudo -u botuser npm ci --omit=dev
systemctl restart noluyo-bot

Bu sayfayı yapay zekaya verirsen

Sırada ne var

  • Güvenlik: token sızıntılarını önlemek, izinleri en azda tutmak ve imza doğrulamak
  • Sık hatalar: 4011, 4014, 4004 ve bağlantı sorunlarını teşhis etmek
  • Doğrulama: botun 100 sunucuya yaklaştığında doğrulama başvurusu yapmak