Sunucu aracı
Observi
Küçük, kendi sunucunda çalışan bir uptime izleyici. Raspberry Pi'de çalışır.
Observi, kendi sunucunda çalıştırdığın bir uptime izleyici. HTTP, anahtar kelime ve TCP port kontrollerini yapar, canlı bir panelde gösterir ve Telegram, e-posta ve webhook ile haber verir.
Panelin içinde gömülü olduğu tek bir Rust programı olarak yazdım; veritabanı sunucusu istemez ve yaklaşık 20 MB bellek kullanır. Rollü kullanıcı hesapları, izleyici grupları, İngilizce ve Türkçe arayüz var; Uptime Kuma’dan izleyicileri içe aktarabilir.
Rust, React ve SQLite kullandım.
Ne yapar
- HTTP(s), anahtar kelime ve TCP port kontrolleri. Bir izleyici düştü sayılmadan önce yeniden deneme ve bekleme durumu var.
- Birden fazla hesap. Superadmin her şeyi yönetir; diğer kullanıcılar yalnızca yetki verdiğin izleyicileri ya da izleyici gruplarını görür.
- Yanıt süresi grafikleri ve 24 saat, 7 gün, 30 günlük erişilebilirlik oranıyla canlı bir panel.
- Telegram, SMTP e-posta ve webhook ile bildirim (genel JSON, Discord, Slack).
- Ayarlardan kendi ürün adın ve logon, İngilizce ve Türkçe arayüz, bildirimler için ayrı dil seçimi.
- WAL kipinde SQLite ve toplu yazılan sinyaller; SD karta yük bindirmez.
Kurulum
Linux sunucularda (x86_64) ve 64 bit işletim sistemi olan Raspberry Pi’de (Pi 3, 4, 5 ve Zero 2 W) çalışır. systemd olan her makine olur.
curl -fsSL https://raw.githubusercontent.com/mdenizay/observi/main/install.sh | sudo bash
Betik makinene uygun sürümü indirir ve sağlama toplamını doğrular. observi adında bir sistem kullanıcısı oluşturur, systemd servisini kurup başlatır ve ilk superadmin’i açar. Kullanıcı adı admin; parola üretilir ve yalnızca bir kez gösterilir, bir yere not al.
Seçenekler -s -- sonrasına yazılır. --listen nerede dinleyeceğini (varsayılan 127.0.0.1:3001, yalnızca yerel makine), --lang bildirim dilini (en ya da tr) belirler.
curl -fsSL https://raw.githubusercontent.com/mdenizay/observi/main/install.sh | sudo bash -s -- \
--listen 0.0.0.0:3001 --lang tr --admin-user me --admin-password 'uzun-bir-parola'
Betiği yeniden çalıştırmak mevcut kurulumu verilerini koruyarak günceller. install.sh --uninstall servisi kaldırır, --purge verileri de siler.
Program /usr/local/bin/observi altında, veriler /var/lib/observi altında, ayarlar /etc/observi/observi.env içinde durur.
Alan adına bağlama
Observi varsayılan olarak yalnızca yerelde dinler; önüne bir ters vekil ya da tünel koy. Caddy ile:
status.example.com {
reverse_proxy 127.0.0.1:3001
}
nginx’te tamponlamayı kapat, çünkü panel sunucu gönderimli olaylarla güncelleniyor:
location / {
proxy_pass http://127.0.0.1:3001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_buffering off;
}
http://localhost:3001 adresine bakan bir Cloudflare Tunnel de olur. Ben evdeki Raspberry Pi’de böyle çalıştırıyorum. Hangisini kullanırsan kullan, oturum çerezleri Secure bayrağı alsın diye X-Forwarded-Proto başlığını, giriş denemesi sınırı gerçek IP’leri görsün diye istemci adresini (CF-Connecting-IP ya da X-Forwarded-For) ilettiğinden emin ol.
Ayarlar
Bunları /etc/observi/observi.env içine yaz, sonra sudo systemctl restart observi çalıştır.
OBSERVI_DB: SQLite dosyası. Varsayılan./observi.db.OBSERVI_LISTEN: dinleme adresi. Varsayılan127.0.0.1:3001.OBSERVI_RETENTION: sinyallerin kaç gün saklanacağı. Varsayılan90.OBSERVI_LANG: bildirim dili,enya datr. Varsayılanen.RUST_LOG: günlük düzeyi. Varsayılaninfo.
Komut satırı
observi serve sunucuyu başlatır (varsayılan)
observi user-add <kullanici> <ad> [superadmin|user]
observi passwd <kullanici> parolayı sıfırlar
observi import-kuma <kuma.db> Uptime Kuma'dan izleyicileri alır
observi --version
user-add ve passwd parolayı OBSERVI_PASSWORD değişkeninden alır; yoksa üretip yazdırır. Betikle kurulmuş bir makinede bunları servis kullanıcısıyla çalıştır:
sudo -u observi env OBSERVI_DB=/var/lib/observi/observi.db observi passwd admin
Uptime Kuma’dan geçiş
kuma.db dosyasını, varsa -wal ve -shm dosyalarıyla birlikte servis kullanıcısının okuyabileceği bir yere kopyala ve observi import-kuma kuma.db çalıştır. HTTP, anahtar kelime ve TCP port izleyicileri aktarılır. Bildirim ayarları aktarılmaz.
Kaynaktan derleme
Rust (kararlı sürüm), Node 20 ya da üstü ve pnpm gerekir. Web arayüzü derleme sırasında programın içine gömülür, o yüzden önce onu derle.
git clone https://github.com/mdenizay/observi.git
cd observi
cd web && pnpm install --frozen-lockfile && pnpm build && cd ..
cargo build --release
Program target/release/observi altında çıkar. Sürümlerde kullanılan statik program için musl hedefini ekle (rustup target add x86_64-unknown-linux-musl ve musl-tools) ve --target ile derle.
Geliştirmek için web klasöründe pnpm dev ile arayüzü çalıştır (5173 portu, /api isteklerini 3001’e yollar), OBSERVI_PASSWORD=changeme123 cargo run -- user-add admin Admin superadmin ile kullanıcı oluştur, sonra cargo run ile API’yi başlat.