Sunucu İzleme Araçları: Grafana, Prometheus ve Netdata
Prometheus + Grafana stack kurulumu, Netdata, node_exporter, alert kuralları, dashboard oluşturma ve sunucu metrik izleme.
Nginx Proxy Manager Docker kurulumu, SSL sertifikası otomatik yenileme, proxy host ekleme, access list, redirect, stream ve custom location.
Nginx Proxy Manager (NPM), Nginx reverse proxy'yi kullanıcı dostu bir web arayüzü üzerinden yönetmenizi sağlayan açık kaynaklı bir araçtır. SSL sertifikası yönetimi, proxy host yapılandırması ve erişim kontrolü gibi işlemleri komut satırına ihtiyaç duymadan gerçekleştirebilirsiniz.
Nginx Proxy Manager'ın öne çıkan özellikleri:
# docker-compose.yml
version: '3.8'
services:
npm:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- '80:80' # HTTP
- '443:443' # HTTPS
- '81:81' # Admin Panel
volumes:
- npm_data:/data
- npm_letsencrypt:/etc/letsencrypt
environment:
- TZ=Europe/Istanbul
volumes:
npm_data:
npm_letsencrypt:
# Kurulumu başlat
docker compose up -d
# Container durumunu kontrol et
docker ps | grep nginx-proxy-manager
Kurulum tamamlandıktan sonra admin paneline erişin:
http://SUNUCU_IP:81
Varsayılan giriş bilgileri:
Email: admin@example.com
Password: changeme
İlk girişte şifrenizi ve email adresinizi değiştirmeniz istenecektir.
Bir web uygulamasını reverse proxy arkasına almak için:
app.example.comhttp192.168.1.10 (veya container adı)3000Proxy host oluştururken SSL sekmesinde:
SSL sertifikası otomatik olarak alınacak ve yenilenecektir.
Docker container'larını proxy'lemek için aynı network'ü kullanın:
# docker-compose.yml
version: '3.8'
services:
npm:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- '80:80'
- '443:443'
- '81:81'
volumes:
- npm_data:/data
- npm_letsencrypt:/etc/letsencrypt
networks:
- proxy_network
webapp:
image: your-webapp:latest
container_name: webapp
restart: unless-stopped
expose:
- "3000"
networks:
- proxy_network
api:
image: your-api:latest
container_name: api
restart: unless-stopped
expose:
- "8080"
networks:
- proxy_network
networks:
proxy_network:
driver: bridge
volumes:
npm_data:
npm_letsencrypt:
Proxy host'ta Forward Hostname olarak container adını kullanın:
webapp:3000api:8080Belirli IP'lere veya kullanıcılara erişim kısıtlaması:
Admin OnlyAccess sekmesinde:
Allow: 192.168.1.0/24
Allow: 10.0.0.0/8
Deny: all
Authorization sekmesinde:
Username: admin
Password: GucluSifre123!
Oluşturulan access list'i proxy host'a atayın:
Proxy Host → Edit → Access List → Admin Only seçin.
URL yönlendirmeleri oluşturmak için:
eski.example.comhttpsyeni.example.com301 (Kalıcı yönlendirme)TCP veya UDP portlarını yönlendirmek için:
25565 (örn: Minecraft)192.168.1.5025565Örnek kullanım senaryoları:
Proxy host'a özel Nginx yapılandırması eklemek için:
Proxy host düzenlerken Advanced sekmesinde:
# Özel header'lar
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Büyük dosya yükleme
client_max_body_size 100M;
# Timeout ayarları
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
# WebSocket desteği
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
Proxy host içinde farklı path'leri farklı backend'lere yönlendirmek için:
/apihttpapi-server8080DNS Challenge ile wildcard sertifika almak için:
*.example.comCloudflare örneği:
dns_cloudflare_api_token = YOUR_API_TOKEN
# NPM verilerini yedekle
docker exec nginx-proxy-manager tar -czf /tmp/npm-backup.tar.gz /data /etc/letsencrypt
docker cp nginx-proxy-manager:/tmp/npm-backup.tar.gz ./npm-backup-$(date +%Y%m%d).tar.gz
# Geri yükleme
docker cp ./npm-backup.tar.gz nginx-proxy-manager:/tmp/
docker exec nginx-proxy-manager tar -xzf /tmp/npm-backup.tar.gz -C /
docker restart nginx-proxy-manager
# En son sürüme güncelle
docker compose pull
docker compose up -d
# Eski image'ları temizle
docker image prune -f
# Admin panelini sadece belirli IP'lerden erişilebilir yap
# docker-compose.yml'de port 81'i sadece localhost'a bağla
ports:
- '80:80'
- '443:443'
- '127.0.0.1:81:81' # Sadece localhost
# SSH tunnel ile erişim
ssh -L 81:localhost:81 user@sunucu-ip
# Tarayıcıda: http://localhost:81
REXE sunucularınızda Nginx Proxy Manager ile tüm web uygulamalarınızı tek bir noktadan yönetebilir, SSL sertifikalarını otomatik olarak alabilir ve yenileyebilirsiniz. Web arayüzü sayesinde Nginx yapılandırmasıyla uğraşmadan profesyonel reverse proxy kurulumu yapabilirsiniz.
Firewall'da 81 portunun açık olduğunu kontrol edin: 'ufw allow 81/tcp'. Container'ın çalıştığını doğrulayın: 'docker ps | grep nginx-proxy-manager'. Docker loglarını inceleyin: 'docker logs nginx-proxy-manager'. Port çakışması varsa docker-compose.yml'de admin portunu değiştirin (örn: 8181:81).
Domain'in DNS kaydının sunucu IP'sine doğru yönlendirildiğini kontrol edin. Port 80'in dışarıdan erişilebilir olduğunu doğrulayın (Let's Encrypt HTTP-01 challenge için gerekli). Cloudflare kullanıyorsanız proxy'yi geçici olarak kapatın (DNS Only). Wildcard sertifika için DNS Challenge kullanmanız gerekir.
Backend servisin çalıştığını ve belirtilen portta dinlediğini kontrol edin. Docker container'ları aynı network'te olmalıdır. Forward Hostname olarak container adını kullanıyorsanız, her iki container'ın da aynı Docker network'üne bağlı olduğundan emin olun. IP adresi kullanıyorsanız Docker bridge IP'sini (172.17.0.x) deneyin.
Proxy host ayarlarında 'Websockets Support' seçeneğini etkinleştirin. Advanced sekmesinde şu yapılandırmayı ekleyin: 'proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";'. Backend uygulamanın WebSocket'i desteklediğinden emin olun.
Proxy host'un Advanced sekmesinde 'client_max_body_size 100M;' (veya ihtiyacınıza göre daha büyük) ekleyin. Backend uygulamanın da büyük dosya yüklemesine izin verdiğinden emin olun. Timeout değerlerini artırın: 'proxy_read_timeout 300;'.
Docker volume'ları doğru yapılandırıldıysa ayarlar korunmalıdır. Volume'ların docker-compose.yml'de tanımlı olduğunu kontrol edin. Güncelleme öncesi yedek almayı unutmayın. Eğer named volume yerine bind mount kullanıyorsanız, dizin yollarının doğru olduğundan emin olun.
Prometheus + Grafana stack kurulumu, Netdata, node_exporter, alert kuralları, dashboard oluşturma ve sunucu metrik izleme.
Squid forward proxy, HAProxy load balancer, SSL termination, ACL kuralları, caching, health check ve yüksek erişilebilirlik.
CrowdSec kurulumu, bouncer yapılandırması, saldırı algılama, IP engelleme, dashboard, koleksiyon ve senaryo yönetimi.