🧠 Nginx Proxy Manager (NPM)
Yönetim
- URL: https://npm.eren.ink (port 81)
- Admin:
eren@eren.ink - Şifre:
changeme(henüz değiştirilmedi) - API:
http://localhost:81/api/(Swagger:/api/schema)
🔑 NPM 2.15.1 API İpuçları
Proxy Host Oluşturma
POST /api/nginx/proxy-hosts
{
"domain_names": ["example.eren.ink"],
"forward_scheme": "http",
"forward_host": "container_name",
"forward_port": 8080,
"allow_websocket_upgrade": false,
"access_list_id": 0,
"certificate_id": 0,
"ssl_forced": true,
"http2_support": true,
"block_exploits": true,
"caching_enabled": false
}Sertifika (Let’s Encrypt)
POST /api/nginx/certificates
{
"provider": "letsencrypt",
"nice_name": "example.eren.ink",
"domain_names": ["example.eren.ink"],
"meta": {"dns_challenge": false}
}⚠️
letsencrypt_emailveletsencrypt_agreeschema’da YOK — ekleme yapma, 400 alırsın.
Proxy Host Güncelleme (PUT)
PUT /api/nginx/proxy-hosts/{id}
{ ... sadece izinli alanlar ... }⚠️ Tüm response alanlarını gönderme! Sadece whitelist’tekiler:
domain_names, forward_scheme, forward_host, forward_port, certificate_id, ssl_forced, hsts_enabled, hsts_subdomains, trust_forwarded_proto, http2_support, block_exploits, caching_enabled, allow_websocket_upgrade, access_list_id, advanced_config, enabled, meta, locations
id, created_on, updated_on, owner_user_id→ “additional properties” hatasılocations: null→ “must be array” hatası
🐛 Sık Karşılaşılan Sorunlar
Orphan nginx config → 502
NPM DB’den host silinse bile /data/nginx/proxy_host/*.conf dosyaları silinmez. Aynı şekilde /data/nginx/custom/http.conf da orphan olabilir.
# Sorunlu dosyaları bul
docker exec nginx-proxy-manager grep -rl "DOMAIN.eren.ink" /etc/nginx/ /data/
# Test
docker exec nginx-proxy-manager nginx -t
# Düzelt
docker exec nginx-proxy-manager rm /data/nginx/proxy_host/OLD.conf
docker exec nginx-proxy-manager rm /data/nginx/custom/http.conf # orphan ise
# Reload (container içinde)
docker exec nginx-proxy-manager nginx -s reload❌ ASLA yapma
# HOST'TA nginx -s reload — yanlış process'i reload eder
sudo nginx -s reload # ❌
systemctl reload nginx # ❌
# DOĞRUSU — container içinde
docker exec nginx-proxy-manager nginx -s reload # ✅Bu hata bir kez stack outage yarattı (metube dahil tüm 443 trafiği koptu).
Token Yönetimi
- API token 24 saat expire olur
- Her session’da yenile:
import urllib.request, json
req = urllib.request.Request(
"http://localhost:81/api/tokens",
data=json.dumps({"identity": "eren@eren.ink", "secret": "changeme"}).encode(),
headers={"Content-Type": "application/json"},
method="POST",
)
token = json.loads(urllib.request.urlopen(req).read())["token"]