Açık bir adreste çalışmaya bırakılan bir Adminer örneği, bir veritabanını kaybetmenin en sessiz yollarından biridir. Biri bir tabloyu kontrol etmek için tek PHP dosyasını dağıtır, URL çalışır ve dosya aylarca orada kalır, ta ki güncel olmayan bir kopya saldırı yüzeyine dönüşene kadar. Bu kılavuz, bir Linux VPS'e Adminer kurulumunu aracı kilitlemeye, çalıştırmak kadar yer ayırır.
Adminer, MySQL, MariaDB, PostgreSQL, SQLite ve diğer birçok veritabanıyla çalışan tek bir PHP dosyasıdır (tam derlemede yaklaşık 503 KB). Dağıtımı son derece kolaydır; bu da tam olarak neden sıklıkla dikkatsizce dağıtıldığını açıklar.
Bunu, Nginx ve PHP-FPM ile modern bir Ubuntu veya Debian VPS üzerine kuracak, HTTP kimlik doğrulaması, bir IP izin listesi ve Let's Encrypt ile HTTPS ekleyecek ve genel kurulumu tamamen atlayıp Adminer'a bir SSH tüneli üzerinden erişmeniz gereken durumu belirleyen net bir kuralla bitireceğiz.
Özetle
- Adminer, ile bir webroot'a indirdiğiniz tek bir PHP dosyasıdır
wgetile bir webroot'a indirilen tek bir PHP dosyasıdır; Nginx ve PHP-FPM onu sunar. - Genel bir Adminer örneği her üçüne de ihtiyaç duyar: bir HTTP kimlik doğrulama katmanı, bir IP izin listesi ve HTTPS. Bunlardan yalnızca biri yeterli değildir.
- En hassas veritabanları için Adminer'ı hiç açmayın: şuna bağlayın
localhostve bir SSH tüneli aracılığıyla erişin. - Güncelleme tek bir komuttur: yeniden çalıştırın
wgetkomutunu. Son güvenlik sürümleri, güncel tutmayı gerçek bir operasyonel görev haline getiriyor; bu artık bir seçenek değil.
Ön Koşullar: Kurulmadan Önce İhtiyacınız Olacaklar
Bu kılavuz Ubuntu 26.04 ve 24.04 ile Debian 13'ü hedefler; Ubuntu 22.04 ve Debian 12 için uyumluluk notları mevcuttur. Varsayılan PHP-FPM sürümleri Ubuntu 26.04'te 8.5, Ubuntu 24.04'te 8.3, Debian 13'te 8.4, Debian 12'de 8.2 ve Ubuntu 22.04'te 8.1'dir.
- Ubuntu 22.04, Ubuntu 24.04, Ubuntu 26.04, Debian 12 veya Debian 13 çalıştıran bir Linux VPS,
sudoerişim - Bu VPS'de veya Adminer'ın ağ üzerinden erişebileceği bir sunucuda zaten çalışan bir veritabanı sunucusu (MySQL, MariaDB veya PostgreSQL). Bu kılavuz bir veritabanı kurmaz; bir veritabanını yönetmek için kullandığınız aracı kurar.
- İşletim sisteminin desteklenen depolarından PHP-FPM. Adminer'ın derlenmiş dosyası PHP 5.3+ desteklese de, eski bir PHP sürümü kurmak yerine yukarıda listelenen, dağıtım tarafından sağlanan güncel sürümü kullanın.
- Genel HTTPS kurulumu için VPS'e çözümlenen bir ana makine adına ve 80 ile 443 numaralı gelen TCP bağlantı noktalarının açık olmasına ihtiyacınız var. Bu kılavuz, Certbot Nginx iş akışı 80 numaralı bağlantı noktasında HTTP-01 doğrulaması kullanır. Let's Encrypt artık destekliyor kısa ömürlü IP adresi sertifikaları, ancak Certbot bunları Nginx iş akışı aracılığıyla otomatik olarak yüklemez, bu nedenle bu kılavuz bir ana makine adı kullanır.
Not: Bu kılavuz kasıtlı olarak Nginx kullanır. Apache çalıştırıyorsanız, indirme ve sağlamlaştırma mantığı geçerlidir, ancak aşağıdaki sunucu bloğu yapılandırması geçerli değildir.
Nginx ve PHP-FPM Kurulumu
Paket dizinini yenileyerek ve Nginx ile PHP-FPM'yi sunucunuzun ihtiyaç duyduğu PHP veritabanı uzantısıyla birlikte kurarak başlayın:
sudo apt update
sudo apt install -y nginx php-fpm php-mysql
PostgreSQL arka ucu için yükleyin php-pgsql yerine veya yanı sıra php-mysql:
sudo apt install -y php-pgsql
PHP-FPM soketinin var olduğunu doğrulayın:
ls /run/php/
Soket dosya adını yukarıda listelenen sürümle eşleştirin, örneğin php8.5-fpm.sock Ubuntu 26.04'te, php8.3-fpm.sock Ubuntu 24.04'te ya da php8.4-fpm.sock Debian 13'te. Beklenen soket eksikse, eşleşen servisi şununla kontrol edin systemctl status php8.5-fpm, değiştirerek 8.5 işletim sisteminizde kurulu sürümle.
Profesyonel İpucu: Soket uyuşmazlığı, bir
502 Bad Gateway. Eşleştirinfastcgi_passaltındaki dosya adıyla/run/php/, ilgili PHP-FPM servisinin çalıştığını doğrulayın ve şuna bakın/var/log/nginx/error.loghata devam ederse.
Adminer'ı İndir
Adminer'ı sunmak için bir dizin oluşturun, ardından tek dosyayı oraya indirin. latest.php URL her zaman geçerli kararlı sürümü gösterir:
sudo mkdir -p /var/www/adminer
sudo wget -O /var/www/adminer/adminer.php https://www.adminer.org/latest.php
Yalnızca MySQL veya MariaDB ile çalışıyorsanız, yalnızca MySQL derlemesi daha küçüktür (yaklaşık 406 KB) ve aynı şekilde alınır:
sudo wget -O /var/www/adminer/adminer.php https://www.adminer.org/latest-mysql.php
PHP-FPM'e okuma erişimi verirken Adminer dizinini root'a ait tutun:
sudo chown -R root:root /var/www/adminer
sudo chmod 755 /var/www/adminer
sudo chmod 644 /var/www/adminer/adminer.php
You do not need to track the version number: the latest.php URL, indirmeyi yeniden çalıştırmanın da güncelleme yolunuz olduğu anlamına gelir; bakım bölümü buna geri döner.
Nginx Sunucu Bloğunu Yapılandırma
Adminer dizinine hizmet eden ve şunu ileten bir sunucu bloğu oluşturun .php daha önce tespit ettiğiniz PHP-FPM soketine yönlendiren bir sunucu bloğu oluşturun. Yeni bir site dosyası açın:
sudo nano /etc/nginx/sites-available/adminer
Aşağıdakini yapıştırın ve değiştirin db.example.com zaten VPS'inize yönlendirilen ana makine adıyla ve şunu doğrulayarak fastcgi_pass soket PHP sürümünüzle eşleşiyor:
# /etc/nginx/sites-available/adminer
server {
listen 80;
server_name db.example.com;
root /var/www/adminer;
location = / {
return 302 /adminer.php;
}
location = /adminer.php {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location / {
return 404;
}
}
Siteyi şurada sembolik bağlantı oluşturarak etkinleştirin sites-enabled, ardından Nginx'i henüz yeniden yüklemeden yapılandırmayı test edin:
sudo ln -s /etc/nginx/sites-available/adminer /etc/nginx/sites-enabled/
sudo nginx -t
nginx -t sözdiziminin geçerli ve testin başarılı olduğunu bildirmelidir. Nginx'i henüz yeniden yüklemeyin çünkü sitenin kimlik doğrulaması veya IP kısıtlaması yok. Bu iki sağlamlaştırma adımına devam edin; IP kısıtlama adımı, her iki koruma da yerleştiğinde ilk yeniden yüklemeyi gerçekleştirir.
Erişimi Kilitle: Kimlik Doğrulama, IP Kısıtlama ve HTTPS
Genel bir Adminer örneği, veritabanı kimlik bilgilerinizin hemen önünde durur; bu nedenle tek bir kilit yerine katmanlı savunmaya ihtiyaç duyar. Aşağıdaki üç katman farklı işler yapar: HTTP kimlik doğrulaması şifresi olmayan herkesi web sunucusunda durdurur, IP izin listesi onaylamadığınız adresten bağlanan herkesi engeller ve HTTPS yazdığınız kimlik bilgilerinin ağ üzerinden düz metin olarak geçmesini önler. Üçünü de ekleyin. Hiçbiri diğerlerinin yerine geçmez.
HTTP Temel Kimlik Doğrulama Ekleme
Yükle htpasswd yardımcı programını, şu pakette gelir: apache2-utils paketi Ubuntu ve Debian'da bulunur:
sudo apt install -y apache2-utils
Bir şifre dosyası ve bir kullanıcı oluşturun (şifre girmeniz istenecektir):
sudo htpasswd -B -C 10 -c /etc/nginx/.htpasswd adminuser
sudo chown root:www-data /etc/nginx/.htpasswd
sudo chmod 640 /etc/nginx/.htpasswd
PHP isteğinin kendisinin korunması için direktifleri tam Adminer PHP konumuna ekleyin:
location = /adminer.php {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
Her iki direktif şurada belgelenmiştir: Nginx HTTP auth_basic modülü referansıÇalıştır sudo nginx -t yapılandırmayı doğrulamak için, ancak Nginx'i henüz yeniden yüklemeyin; IP izin listesi sırada eklenir. Temel Kimlik Doğrulama bilgilerini düz HTTP üzerinden göndermeyin; aşağıda HTTPS etkinleştirilinceye kadar bekleyin.
IP Adresine Göre Erişimi Kısıtla
Temel kimlik doğrulama kimliği doğrulanmamış kullanıcıları engeller, ancak Nginx her kaynaktan gelen istekleri almaya devam eder. Mevcut Adminer PHP konumunu aşağıdaki birleşik blokla değiştirerek IP kuralları ve Temel Kimlik Doğrulama direktiflerinin tek bir yerde kalmasını sağlayın:
location = /adminer.php {
satisfy all;
allow 203.0.113.10;
allow 203.0.113.0/28;
deny all;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
Örnek adresleri gerçek genel IP adresiniz veya güvenilir ağ aralığınızla değiştirin. Yalnızca şu girişleri tutun: allow girişleri tutun ve kullanılmayan örnekleri silin. İlk giriş tek bir adresi, ikincisi ise CIDR aralığını gösterir. Nginx şunu döndürür: 403 Forbidden bir kuralıyla eşleşmeyen adreslere allow allow kuralı. Nginx erişim modülü referansı direktif sözdizimini belgeler. Nginx'i test edin ve yeniden yükleyin:
sudo nginx -t && sudo systemctl reload nginx
Let's Encrypt ile HTTPS'yi Etkinleştirme
VPS'ye yönlendirilmiş bir etki alanıyla Certbot ve Nginx eklentisini yükleyin, ardından bir sertifika isteyin:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d db.example.com
Certbot, 443 numaralı bağlantı noktasında HTTPS sunmak için sunucu bloğunuzu düzenler ve HTTP'yi HTTPS'ye yönlendirmeyi teklif eder; yönlendirmeyi kabul edin. Ayrıca bir yenileme zamanlayıcısı yükler, böylece sertifika süresi dolmadan önce otomatik olarak yenilenir. Yenileme yolunu şununla doğrulayabilirsiniz: sudo certbot renew --dry-run, hatasız tamamlanması gerekenler.
Şimdi ziyaret edin https://db.example.com/adminer.php izin verilen bir adresten ve Adminer yüklenmeden önce Nginx'in Temel Kimlik Doğrulama bilgilerini istediğini doğrulayın.
Erişim Modelinizi Seçme: Genel HTTPS veya SSH Tüneli
Yukarıdaki kurulum, birden fazla makineden bir veritabanına tarayıcı erişimine ihtiyaç duyduğunuzda veya SSH oturumu açmanın pratik olmadığı durumlarda uygundur. Bu tek model değildir ve hassas bir veritabanı için en savunmacı model de değildir.
Hassas kurulumlar için Adminer'ı herkese açık olarak sunmayın. Adminer'ın resmi güvenlik kılavuzu mümkün olduğunda genel internetten erişilemez yapılmasını önerir. Yalnızca tünel erişimini seçerseniz, genel Nginx sunucu bloğunu bu yalnızca döngü adresine yönelik yapılandırmayla değiştirin ve genel HTTPS kurulumunu atlayın:
# /etc/nginx/sites-available/adminer
server {
listen 127.0.0.1:8080 default_server;
server_name _;
root /var/www/adminer;
location = / {
return 302 /adminer.php;
}
location = /adminer.php {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location / {
return 404;
}
}
Değiştirme yapılandırmasını test edin ve yeniden yükleyin:
sudo nginx -t && sudo systemctl reload nginx
Ardından tüneli kendi makinenizden açın:
ssh -N -L 127.0.0.1:8080:127.0.0.1:8080 user@your-server-ip
Tünel çalışırken açın http://127.0.0.1:8080/adminer.php. Nginx, Adminer bağlantılarını yalnızca VPS loopback arabirimi üzerinden kabul eder; SSH ise trafiği şifreli bağlantısı üzerinden taşır. Bu, OpenSSH yerel yönlendirme belgeleri.
Birden fazla makineden doğrudan tarayıcı erişimine ihtiyaç duyduğunuzda genel HTTPS, Temel Kimlik Doğrulama ve IP izin listesi kurulumunu kullanın. Genel erişim gereksiz olduğunda yalnızca loopback SSH kurulumunu tercih edin.
Temel çıkarım: En güvenli Adminer, genel internetten hiçbir zaman erişilemeyen Adminer'dır.
Adminer'ı Güncel Tutmak
Unutulan örnek buradaki gerçek risktir ve bunu sonradan düşünülecek bir şey yerine zamanlanmış bir görev olarak ele almak mantıklıdır. Adminer'ı güncellemek tek bir komuttur, aynı wget yüklemek için kullandığınız komut, çünkü latest.php her zaman mevcut sürümü alır:
sudo wget -O /var/www/adminer/adminer.php https://www.adminer.org/latest.php
Bu teorik bir endişe değildir. Adminer 5.4.3, 9 Temmuz 2026'da yayınlanan, tek bir sürümde yedi GitHub Güvenlik Danışmanlığını ele aldı. Önceki danışmanlık CVE-2026-25892 Adminer'ın sürüm kontrolü uç noktasının bile kimlik doğrulamasız bir hizmet reddi vektörüne dönüştürülebileceğini gösterdi; sorun 5.4.2 sürümünde düzeltildi. Güncel olmayan bir kopya kamuoyunda belgelenmiş güvenlik açıklarını biriktirir, bu nedenle güncelleme rutin bir bakım görevi olmalıdır.
Not: Güncel resmi Adminer sürümünde kalın. AdminerEvo deposu Ocak 2025'te arşivlendi ve aktif olarak sürdürülen bir alternatif değildir.
VPS'te dağıtım
Manuel adımları atlamayı tercih ederseniz, Adminer bir tıklama ile dağıtım olarak şurada mevcuttur: Cloudzy pazar yeri üzerinde bir Cloudzy Linux VPS. Marketplace görüntüsü Apache, Basic Auth ve öz imzalı sertifika kullanır, bu nedenle yukarıdaki Nginx, IP izin listesi ve Let's Encrypt yığınından farklıdır. Üretim veritabanı kimlik bilgilerini girmeden önce bu güvenlik farklılıklarını inceleyin.
Adminer'ın kendisinin ayak izi ihmal edilebilir; veritabanı boyutlandırmanızı belirler. CPU, bellek ve depolamayı Adminer'ın kendisine değil, veritabanının veri ve dizin boyutuna, sorgu yüküne, bağlantı sayısına, yedeklemelere ve beklenen büyümeye göre seçin.
Sıkça Sorulan Sorular
Adminer'ı bir VPS'de kamuya açık olarak ifşa etmek güvenli midir?
Kendi başına değil. Adminer'ı herkese açık olarak ifşa etmek zorundaysanız, onu HTTP Temel Kimlik Doğrulama, IP izin listesi ve HTTPS'nin arkasına birlikte koyun. Bu kontroller riski azaltır ancak kamuya açık maruziyeti risksiz kılmaz. Hassas veritabanları için Adminer'ı şuna bağlayın: localhost ve bunun yerine bir SSH tüneli aracılığıyla erişin.
Adminer'a internete maruz kalmadan nasıl erişirim?
Adminer'ın şu adresi dinlemesi için yukarıda gösterilen yalnızca döngü adresi Nginx sunucu bloğunu yapılandırın: 127.0.0.1:8080ile oluşturun, ardından ssh -N -L 127.0.0.1:8080:127.0.0.1:8080 user@your-server-ip kendi makinenizde. Açın http://127.0.0.1:8080/adminer.php tünel çalışırken.
Adminer MySQL'e Ek Olarak PostgreSQL'e Bağlanabilir mi?
Evet. Adminer kutudan çıkar çıkmaz MySQL, MariaDB, PostgreSQL, SQLite, MS SQL ve Oracle'ı destekler, eklentiler aracılığıyla daha fazla veritabanı mevcuttur. Veritabanınız için eşleşen PHP uzantısını yükleyin, örneğin php-pgsql PostgreSQL için, PHP'nin onunla iletişim kurabilmesi için.
Adminer'ı Nasıl Güncel Tutarım?
İndirme komutunu yeniden çalıştırın: sudo wget -O /var/www/adminer/adminer.php https://www.adminer.org/latest.php. The latest.php URL her zaman geçerli kararlı sürümü döndürür, bu nedenle bu kopyanızı en yeni sürümle üzerine yazar. Son güvenlik sürümleri, bunu yalnızca hatırladığınızda değil, bir programa göre yapmaya değer kılar.
Adminer'ı apt paket aracılığıyla mı yüklemeliyim yoksa doğrudan mı indirmeliyim?
Tek dosyayı doğrudan indirin. Bu size hemen mevcut sürümü verir ve güncellemeleri tek satırlık bir komut haline getirir; oysa bir dağıtım paketi resmi sürümün gerisinde kalabilir. Doğrudan dosya, en son güvenlik düzeltmelerine daha kısa bir yol ile aynı araçtır.