Ters vekil arkasında
Sunucunuzda zaten Nginx, Traefik, Apache ya da Caddy çalışıyorsa Bekci'yi onun arkasına yerleştirin. Her biri için dosyanın yeri, tam içeriği ve canlı güncellemelerin çalışması için gereken ayarlar.
Bu sayfada
- 1. Bekci'yi yalnızca yerelde dinleyecek şekilde çalıştırın
- 2. Vekili ayarlayın
- 3. Doğrulayın
- Güvenilir vekil (TRUSTED_PROXY)
- Sık karşılaşılan sorunlar
- Canlı güncellemeler gelmiyor, “Bağlantı yok” uyarısı
- 502 Bad Gateway
- İçe aktarmada “413 Request Entity Too Large”
- Giriş yapıyorum ama hemen çıkış yapılıyor ya da sonsuz yönlendirme
- Bildirimlerdeki ve ajan komutlarındaki adres yanlış
Sunucunuzda 80 ve 443 portlarını kullanan bir web sunucusu (ters vekil, reverse proxy) zaten varsa Bekci'yi onun arkasına koyarsınız: vekil HTTPS'i sağlar ve istekleri Bekci'ye iletir. Coolify kullanıyorsanız bu sayfa yerine Coolify rehberini izleyin.
Hangi vekili kullanırsanız kullanın, Bekci'nin düzgün çalışması için vekilin şunları yapması gerekir:
| Gereken | Neden |
|---|---|
Host, X-Forwarded-For ve X-Forwarded-Proto başlıklarını iletmek | Bekci, isteğin HTTPS ile geldiğini X-Forwarded-Proto başlığından anlar (güvenli oturum çerezi ve HSTS için). İstemcinin gerçek IP adresini X-Forwarded-For'dan alır (giriş denemesi sınırı ve işlem kaydı için). |
/api/events yanıtını tamponlamadan iletmek | Arayüzün canlı güncellemeleri bu uzun ömürlü bağlantıdan (Server-Sent Events) gelir. Vekil yanıtı biriktirirse panel güncellenmez. |
| Uzun bağlantıyı erken kesmemek | Bekci bu bağlantıda 25 saniyede bir sinyal gönderir; okuma zaman aşımı bundan uzun olmalı. |
| Büyük istek gövdelerine izin vermek | Uptime Kuma'dan içe aktarma 200 MB'a kadar dosya yükleyebilir. |
1. Bekci'yi yalnızca yerelde dinleyecek şekilde çalıştırın#
Vekil aynı sunucudaysa Bekci'nin portunu yalnızca 127.0.0.1 adresine yayınlayın; böylece Bekci'ye dışarıdan vekili atlayarak erişilemez. Docker Compose ile:
name: bekci
services:
bekci:
image: kadirsungurlu/bekci:latest
restart: unless-stopped
stop_grace_period: 30s
ports:
- "127.0.0.1:8080:8080" # yalnızca bu sunucudan erişilebilir
environment:
BASE_URL: https://bekci.ornek.com
TZ: Europe/Istanbul
volumes:
- bekci-data:/data
volumes:
bekci-data:cd /opt/bekci
docker compose up -dBASE_URL, panelin dışarıdan açılacağı HTTPS adresi olmalıdır. (Traefik'i Docker etiketleriyle kullanıyorsanız bu dosya yerine aşağıdaki Traefik sekmesindekini kullanın.)
2. Vekili ayarlayın#
Kullandığınız vekilin sekmesini seçin. Her sekme dosyanın nereye gideceğini, tam içeriğini ve ayarı nasıl uygulayacağınızı anlatır.
Nginx
Dosyanın yeri: Debian ve Ubuntu'da /etc/nginx/sites-available/bekci. RHEL, AlmaLinux, Rocky ve nginx.org paketlerinde sites-available klasörü yoktur; dosyayı /etc/nginx/conf.d/bekci.conf adıyla oluşturun.
nano /etc/nginx/sites-available/bekciserver {
listen 80;
listen [::]:80;
server_name bekci.ornek.com;
# Yedek geri yükleme ve Uptime Kuma içe aktarma için büyük dosyalar
client_max_body_size 200m;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Connection "";
# Canlı güncellemeler (SSE): tamponlamadan ilet, uzun bağlantıyı kesme
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 1h;
}
}Siteyi etkinleştirin (yalnızca Debian/Ubuntu), ayarı sınayın ve Nginx'i yeniden yükleyin:
ln -s /etc/nginx/sites-available/bekci /etc/nginx/sites-enabled/bekci
nginx -t
systemctl reload nginxnginx -t şu iki satırı yazdırmalı: syntax is ok ve test is successful.
HTTPS: Henüz sertifikanız yoksa en kolay yol Certbot'tur. Ubuntu/Debian'da apt install certbot python3-certbot-nginx, ardından certbot --nginx -d bekci.ornek.com. Certbot bu dosyaya 443 portunu ve sertifika satırlarını kendisi ekler; yukarıdaki location ayarları olduğu gibi kalır.
Traefik
Traefik'i Docker etiketleriyle kullanıyorsanız Bekci'yi Traefik'in bağlı olduğu Docker ağına ekleyip etiketlerle tanıtın. Bu durumda port yayınlamanız gerekmez. 1. adımdaki dosya yerine şunu kullanın:
name: bekci
services:
bekci:
image: kadirsungurlu/bekci:latest
restart: unless-stopped
stop_grace_period: 30s
environment:
BASE_URL: https://bekci.ornek.com
TZ: Europe/Istanbul
volumes:
- bekci-data:/data
networks:
- proxy
labels:
- traefik.enable=true
- traefik.http.routers.bekci.rule=Host(`bekci.ornek.com`)
- traefik.http.routers.bekci.entrypoints=websecure
- traefik.http.routers.bekci.tls.certresolver=letsencrypt
- traefik.http.services.bekci.loadbalancer.server.port=8080
networks:
proxy:
external: true
volumes:
bekci-data:Vurgulu adları kendi Traefik kurulumunuzdakilerle değiştirin:
proxy: Traefik konteynerinin bağlı olduğu Docker ağı (docker network lsile görebilirsiniz).websecure: Traefik'in 443 portu için tanımladığınız giriş noktası (entrypoint) adı.letsencrypt: Traefik ayarınızdaki sertifika çözücüsünün (certresolver) adı.
cd /opt/bekci
docker compose up -dTraefik yanıtları tamponlamaz ve X-Forwarded-* başlıklarını kendisi ekler; canlı güncellemeler için ek ayar gerekmez.
Apache
Gerekli modülleri açın (Debian/Ubuntu):
a2enmod proxy proxy_http headersDosyanın yeri: Debian ve Ubuntu'da /etc/apache2/sites-available/bekci.conf. RHEL ailesinde /etc/httpd/conf.d/bekci.conf.
nano /etc/apache2/sites-available/bekci.conf<VirtualHost *:80>
ServerName bekci.ornek.com
ProxyPreserveHost On
ProxyRequests Off
RequestHeader set X-Forwarded-Proto expr=%{REQUEST_SCHEME}
# Canlı güncellemeler (SSE): yanıtı beklemeden ilet, uzun bağlantıyı kesme
ProxyPass / http://127.0.0.1:8080/ flushpackets=on timeout=3600
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>Siteyi etkinleştirin, ayarı sınayın ve yeniden yükleyin:
a2ensite bekci
apachectl configtest
systemctl reload apache2apachectl configtest çıktısının son satırı Syntax OK olmalı.
HTTPS: Ubuntu/Debian'da apt install certbot python3-certbot-apache, ardından certbot --apache -d bekci.ornek.com. Certbot 443 için bu sitenin bir kopyasını oluşturur; X-Forwarded-Proto orada otomatik olarak https olur.
Caddy
Sunucunuzda paket olarak kurulmuş bir Caddy varsa ayar dosyası /etc/caddy/Caddyfile olur. Dosyanın sonuna şu bloğu ekleyin:
nano /etc/caddy/Caddyfilebekci.ornek.com {
encode zstd gzip
reverse_proxy 127.0.0.1:8080 {
# Canlı güncellemeler (SSE) tamponlanmadan iletilsin
flush_interval -1
}
}Ayarı sınayıp Caddy'yi yeniden yükleyin:
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddycaddy validate çıktısının sonunda Valid configuration yazmalı. Caddy sertifikayı kendisi alır; ek bir şey yapmanız gerekmez.
Caddy'niz Docker'da çalışıyorsa Bekci'yi Caddy ile aynı Docker ağına ekleyin ve 127.0.0.1:8080 yerine bekci:8080 yazın (Caddy'li kurulumdaki dosyalar bunun tam bir örneğidir).
3. Doğrulayın#
- Tarayıcıda
https://bekci.ornek.comadresini açın ve giriş yapın (ilk kez açıyorsanız Hoş geldiniz ekranında yönetici hesabınızı oluşturun). - Canlı güncellemeleri sınayın: kontrol aralığı kısa (ör. 20 saniye) bir monitör ekleyin ve monitör listesinde bekleyin. Her kontrolden sonra monitörün durum çubukları ve yanıt süresi sayfayı yenilemeden güncellenmelidir.
Güvenilir vekil (TRUSTED_PROXY)#
Bekci, X-Forwarded-For başlığındaki istemci adresine yalnızca isteği ileten bağlantı güvenilir bir adresten geliyorsa inanır. Varsayılan olarak tüm özel (10.x, 172.16–31.x, 192.168.x) ve yerel (127.x) adresler güvenilir sayılır; vekil aynı sunucuda ya da aynı Docker ağında çalışıyorsa ayar gerekmez.
Daha sıkı olmak isterseniz güvenilir ağları TRUSTED_PROXY ortam değişkeniyle virgülle ayırarak verin, ör. TRUSTED_PROXY=172.17.0.1/32. Ayarlıysa yalnızca bu ağlardan gelen başlıklara güvenilir.
Sık karşılaşılan sorunlar#
Canlı güncellemeler gelmiyor, “Bağlantı yok” uyarısı#
Vekil /api/events yanıtını tamponluyor ya da bağlantıyı erken kesiyor. Yukarıdaki ayarlardaki şu satırları kontrol edin: Nginx'te proxy_buffering off ve proxy_read_timeout, Apache'de flushpackets=on, Caddy'de flush_interval -1. Arada Cloudflare gibi başka bir katman varsa o da bağlantıyı tamponlamamalıdır.
502 Bad Gateway#
Vekil Bekci'ye ulaşamıyor. Bekci çalışıyor mu (docker compose ps), port doğru mu (curl http://127.0.0.1:8080/healthz)? Traefik'te Bekci ile Traefik aynı Docker ağında olmalı.
İçe aktarmada “413 Request Entity Too Large”#
Vekilin istek gövdesi sınırı düşük. Nginx'te client_max_body_size 200m; satırını ekleyin.
Giriş yapıyorum ama hemen çıkış yapılıyor ya da sonsuz yönlendirme#
X-Forwarded-Proto başlığı iletilmiyor ya da yanlış. Vekil HTTPS'i sonlandırıyorsa bu başlık https olmalıdır. Cloudflare kullanıyorsanız SSL/TLS modunu Full (strict) yapın; Flexible modu yönlendirme döngüsüne yol açar.
Bildirimlerdeki ve ajan komutlarındaki adres yanlış#
BASE_URL ayarlı değil ya da yanlış. Panelin dışarıdan açıldığı https:// adresini yazın ve konteyneri yeniden oluşturun (docker compose up -d).
Bu sayfada eksik ya da hatalı bir şey mi var? GitHub’da bildirin ya da yazın: [email protected]