İçeriğe atla

Operasyonlar

Bir süreç yöneticisi altında çalıştır

Host'u açılışta başlatın, hata durumunda yeniden başlatın ve systemd, PM2 veya Docker ile düzgün şekilde durdurun.

Bir süreç yöneticisi, hostunuz çökerse yeniden başlatır ve makine kapatıldığında düzgün şekilde durdurur. Süreç içinde odaları yeniden açan Bir odayı çevrimiçi tut ile birlikte kullanın.

Yerel taşıma katmanı, macOS (Apple silicon) üzerinde Node.js 24 ile doğrulanmıştır. Buna güvenmeden önce, diğer ağlardan katılan oyuncular dahil, hedef platformunuzu test edin. Bkz. Üretimde çalıştırma.

Üç kurulumun tümü, hostun SIGTERM'i işlemesine dayanır: çıkmadan önce odayı kapatın ve room.closed'ı bekleyin.

systemd

/etc/systemd/system/ball2d-host.service
[Unit]
Description=Ball2D room host
After=network-online.target
Wants=network-online.target

[Service]
User=ball2d
WorkingDirectory=/opt/ball2d-host
ExecStart=/usr/bin/node host.mjs
EnvironmentFile=/etc/ball2d-host.env
Restart=on-failure
RestartSec=10
KillSignal=SIGTERM
TimeoutStopSec=15

[Install]
WantedBy=multi-user.target
/etc/ball2d-host.env
BALL2D_API_KEY=b2d_…

Ortam dosyasını yalnızca root tarafından okunabilir yapın (chmod 600), ardından servisi etkinleştirin:

Terminal
sudo systemctl daemon-reload
sudo systemctl enable --now ball2d-host
journalctl -u ball2d-host -f

RestartSec=10, çöken bir hostun dakika başına oda isteği kotanızı tüketmesini önler.

PM2

ecosystem.config.cjs
module.exports = {
  apps: [
    {
      name: 'ball2d-host',
      script: 'host.mjs',
      kill_timeout: 15000,
      restart_delay: 10000,
      max_restarts: 20,
    },
  ],
};
Terminal
BALL2D_API_KEY="b2d_…" pm2 start ecosystem.config.cjs
pm2 save

Docker

Dockerfile
FROM node:24-slim
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --omit=dev
COPY host.mjs ./
USER node
CMD ["node", "host.mjs"]
Terminal
docker build -t ball2d-host .
docker run -d --name ball2d-host --restart unless-stopped \
  --stop-timeout 15 -e BALL2D_API_KEY ball2d-host

Konteyneri, SIGTERM'i doğrudan alması için yukarıdaki gibi PID 1 olarak node ile çalıştırın. Oyuncular hostunuza WebRTC üzerinden bağlanır; bu nedenle konteynerin ağının oyuncularınızın ağlarından doğrudan eşler arası (peer) bağlantılara izin verdiğini kontrol edin.

Anahtar başına bir host

Bir anahtar aynı anda bir oda çalıştırabilir. Aynı anahtarla bir hostu birden fazla kopyaya (replica) ölçeklendirmeyin: ilk oda açıkken ek kopyalar reddedilir. Hesabınızın iki oda sınırı içinde, her kopyaya kendi anahtarını verin.