Lewati ke konten utama
diskon 50% semua paket, waktu terbatas. Mulai dari $2.48/mo
10 min left
Database dan Analitik

Cara Menginstal Adminer di VPS Linux (dengan Nginx dan Keamanan yang Tepat)

H Oleh Haze 10 menit baca
Adminer login screen served by Nginx on a Linux VPS

Instans Adminer yang dibiarkan berjalan pada alamat terbuka adalah salah satu cara paling sunyi untuk kehilangan database. Seseorang menerapkan file PHP tunggal untuk memeriksa tabel, URL berfungsi, dan file tersebut tetap ada selama berbulan-bulan hingga salinan yang sudah usang menjadi permukaan serangan. Itulah mengapa panduan instalasi Adminer di Linux VPS ini memberikan ruang yang sama banyaknya untuk mengamankan alat seperti untuk menjalankannya.

Adminer adalah satu file PHP (sekitar 503 KB dalam build lengkap) yang mendukung MySQL, MariaDB, PostgreSQL, SQLite, dan beberapa database lainnya. Sangat mudah untuk di-deploy, yang persis itulah mengapa seringkali di-deploy dengan ceroboh.

Anda akan menginstalnya di VPS Ubuntu atau Debian modern dengan Nginx dan PHP-FPM, menambahkan autentikasi HTTP, daftar izin IP, dan HTTPS dengan Let's Encrypt, lalu mengakhiri dengan aturan yang jelas tentang kapan harus melewati pengaturan publik sepenuhnya dan mengakses Adminer melalui terowongan SSH.

TL;DR

  • Adminer adalah satu file PHP yang Anda unduh ke webroot dengan wget; Nginx dan PHP-FPM menyajikannya.
  • Instans Adminer publik membutuhkan ketiganya: lapisan autentikasi HTTP, daftar izin IP, dan HTTPS. Salah satunya saja tidak cukup.
  • Untuk database yang paling sensitif, jangan ekspos Adminer sama sekali: ikat ke localhost dan mengaksesnya melalui terowongan SSH.
  • Pembaruan adalah satu perintah: jalankan kembali wget perintah unduhan. Rilis keamanan terbaru menjadikan pembaruan rutin sebagai tugas operasional nyata, bukan sekadar hal yang baik untuk dilakukan.

Prasyarat: Yang Anda Perlukan Sebelum Menginstal

Panduan ini menargetkan Ubuntu 26.04 dan 24.04 serta Debian 13, dengan catatan kompatibilitas untuk Ubuntu 22.04 dan Debian 12. Versi PHP-FPM default adalah 8.5 di Ubuntu 26.04, 8.3 di Ubuntu 24.04, 8.4 di Debian 13, 8.2 di Debian 12, dan 8.1 di Ubuntu 22.04.

  • VPS Linux yang menjalankan Ubuntu 22.04, Ubuntu 24.04, Ubuntu 26.04, Debian 12, atau Debian 13, dengan pengguna yang memiliki sudo akses
  • Server database (MySQL, MariaDB, atau PostgreSQL) yang sudah berjalan, baik di VPS ini maupun yang dapat dijangkau Adminer melalui jaringan. Panduan ini tidak menginstal database; ini menginstal alat yang Anda gunakan untuk mengelolanya.
  • PHP-FPM dari repositori yang didukung sistem operasi. Meskipun file yang dikompilasi Adminer mendukung PHP 5.3+, gunakan versi yang disediakan distro saat ini yang tercantum di atas, bukan menginstal rilis PHP yang sudah usang.
  • Untuk pengaturan HTTPS publik, Anda memerlukan nama host yang mengarah ke VPS dan port TCP masuk 80 dan 443 tersedia. alur kerja Certbot Nginx menggunakan validasi HTTP-01 pada port 80. Let's Encrypt sekarang mendukung sertifikat alamat IP berumur pendek, tetapi Certbot tidak menginstalnya secara otomatis melalui alur kerja Nginx-nya, sehingga panduan ini menggunakan nama host.

Catatan: Panduan ini menggunakan Nginx secara sengaja. Jika Anda menjalankan Apache, logika unduhan dan pengerasan tetap berlaku, tetapi konfigurasi blok server di bawah ini tidak.

Instal Nginx dan PHP-FPM

Mulailah dengan memperbarui indeks paket dan menginstal Nginx dan PHP-FPM beserta ekstensi database PHP yang dibutuhkan server Anda:

sudo apt update
sudo apt install -y nginx php-fpm php-mysql

Untuk backend PostgreSQL, instal php-pgsql sebagai pengganti, atau bersama dengan, php-mysql:

sudo apt install -y php-pgsql

Konfirmasi bahwa socket PHP-FPM ada:

ls /run/php/

Cocokkan nama file socket dengan versi yang tercantum di atas, misalnya, php8.5-fpm.sock di Ubuntu 26.04, php8.3-fpm.sock di Ubuntu 24.04, atau php8.4-fpm.sock di Debian 13. Jika socket yang diharapkan tidak ada, periksa layanan yang sesuai dengan systemctl status php8.5-fpm, mengganti 8.5 dengan versi yang terinstal di OS Anda.

Pro Tip: Ketidakcocokan socket adalah salah satu kemungkinan penyebab 502 Bad Gateway. Cocokkan fastcgi_pass dengan nama file di bawah /run/php/, konfirmasi bahwa layanan PHP-FPM yang sesuai sedang berjalan, dan periksa /var/log/nginx/error.log jika kesalahan tetap ada.

Unduh Adminer

Buat direktori untuk menyajikan Adminer, lalu unduh file tunggal ke dalamnya. latest.php URL selalu mengarah ke rilis stabil terkini:

sudo mkdir -p /var/www/adminer
sudo wget -O /var/www/adminer/adminer.php https://www.adminer.org/latest.php

Jika Anda hanya bekerja dengan MySQL atau MariaDB, build khusus MySQL lebih kecil (sekitar 406 KB) dan diunduh dengan cara yang sama:

sudo wget -O /var/www/adminer/adminer.php https://www.adminer.org/latest-mysql.php

Pertahankan kepemilikan direktori Adminer oleh root sambil memberikan akses baca untuk PHP-FPM:

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 berarti menjalankan ulang unduhan juga merupakan jalur pembaruan Anda, yang akan dikembalikan di bagian pemeliharaan.

Konfigurasi Blok Server Nginx

Buat blok server yang melayani direktori Adminer dan meneruskan permintaan .php permintaan ke socket PHP-FPM yang Anda identifikasi sebelumnya. Buka file situs baru:

sudo nano /etc/nginx/sites-available/adminer

Tempelkan yang berikut ini, ganti db.example.com dengan hostname yang sudah mengarah ke VPS Anda dan konfirmasikan bahwa fastcgi_pass socket cocok dengan versi PHP Anda:

# /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;
    }
}

Aktifkan situs dengan membuat symlink di sites-enabled, lalu uji konfigurasi tanpa memuat ulang Nginx terlebih dahulu:

sudo ln -s /etc/nginx/sites-available/adminer /etc/nginx/sites-enabled/
sudo nginx -t

nginx -t harus melaporkan bahwa sintaks valid dan tes berhasil. Jangan muat ulang Nginx dulu karena situs belum memiliki autentikasi atau pembatasan IP. Lanjutkan melalui dua langkah pengerasan tersebut; langkah pembatasan IP melakukan pemuatan ulang pertama setelah kedua perlindungan terpasang.

Kunci Akses: Autentikasi, Pembatasan IP, dan HTTPS

Instans Adminer publik berdiri langsung di depan kredensial database Anda, sehingga membutuhkan pertahanan berlapis, bukan satu kunci. Tiga lapisan di bawah ini melakukan pekerjaan yang berbeda: autentikasi HTTP menghentikan siapa pun tanpa kata sandi di server web, daftar izin IP menghentikan siapa pun yang terhubung dari alamat yang tidak Anda setujui, dan HTTPS mencegah kredensial yang Anda ketik melintas jaringan dalam teks biasa. Tambahkan ketiganya. Tidak ada yang menggantikan yang lain.

Tambahkan Autentikasi HTTP Dasar

Instal htpasswd utilitas, yang disertakan dalam paket apache2-utils paket di Ubuntu dan Debian:

sudo apt install -y apache2-utils

Buat file kata sandi dan pengguna (Anda akan diminta memasukkan kata sandi):

sudo htpasswd -B -C 10 -c /etc/nginx/.htpasswd adminuser
sudo chown root:www-data /etc/nginx/.htpasswd
sudo chmod 640 /etc/nginx/.htpasswd

Tambahkan direktif ke lokasi PHP Adminer yang tepat agar permintaan PHP itu sendiri terlindungi:

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;
}

Kedua direktif tersebut didokumentasikan di referensi modul Nginx HTTP auth_basicJalankan sudo nginx -t untuk memvalidasi konfigurasi, tetapi jangan muat ulang Nginx dulu; daftar izin IP akan ditambahkan berikutnya. Jangan kirimkan kredensial Basic Auth melalui HTTP biasa; tunggu hingga HTTPS diaktifkan di bawah.

Batasi Akses berdasarkan Alamat IP

Autentikasi dasar memblokir pengguna yang tidak terautentikasi, tetapi Nginx masih menerima permintaan dari setiap sumber. Ganti lokasi PHP Adminer yang ada dengan blok gabungan berikut agar aturan IP dan direktif Basic Auth tetap di satu tempat:

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;
}

Ganti alamat contoh dengan alamat IP publik Anda yang sebenarnya atau rentang jaringan tepercaya. Pertahankan hanya entri allow yang Anda butuhkan dan hapus contoh yang tidak digunakan. Entri pertama mendemonstrasikan alamat tunggal, sedangkan yang kedua mendemonstrasikan rentang CIDR. Nginx mengembalikan 403 Forbidden ke alamat yang tidak cocok dengan aturan allow aturan allow. referensi modul akses Nginx mendokumentasikan sintaks direktif. Uji dan muat ulang Nginx:

sudo nginx -t && sudo systemctl reload nginx

Aktifkan HTTPS dengan Let's Encrypt

Dengan domain yang diarahkan ke VPS, instal Certbot dan plugin Nginx-nya, lalu minta sertifikat:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d db.example.com

Certbot mengedit blok server Anda untuk menyajikan HTTPS di port 443 dan menawarkan untuk mengalihkan HTTP ke HTTPS; terima pengalihan. Ini juga menginstal timer pembaruan, sehingga sertifikat diperbarui secara otomatis sebelum kedaluwarsa. Anda dapat mengonfirmasi jalur pembaruan dengan sudo certbot renew --dry-run, yang seharusnya selesai tanpa kesalahan.

Sekarang kunjungi https://db.example.com/adminer.php dari alamat yang diizinkan dan konfirmasi bahwa Nginx meminta kredensial Basic Auth sebelum Adminer dimuat.

Adminer login screen after first successful load, showing the database system dropdown and server and username fields

Memilih Model Akses Anda: HTTPS Publik vs. Terowongan SSH

Pengaturan di atas sesuai ketika Anda membutuhkan akses browser ke database dari beberapa mesin atau ketika membuka sesi SSH tidak praktis. Ini bukan satu-satunya model, dan untuk database yang sensitif ini bukan yang paling defensif.

Untuk pengaturan sensitif, jangan ekspos Adminer secara publik. Panduan keamanan resmi Adminer merekomendasikan membuatnya tidak dapat diakses dari internet publik kapanpun memungkinkan. Jika Anda memilih akses hanya melalui terowongan, ganti blok server Nginx publik dengan konfigurasi loopback-only ini dan lewati pengaturan HTTPS publik:

# /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;
    }
}

Uji dan muat ulang konfigurasi pengganti:

sudo nginx -t && sudo systemctl reload nginx

Kemudian buka terowongan dari mesin Anda sendiri:

ssh -N -L 127.0.0.1:8080:127.0.0.1:8080 user@your-server-ip

Dengan terowongan berjalan, buka http://127.0.0.1:8080/adminer.php. Nginx hanya menerima koneksi Adminer melalui antarmuka loopback VPS, sementara SSH membawa lalu lintas melalui koneksi terenkripsinya. Ini menggunakan perilaku yang dijelaskan dalam dokumentasi penerusan lokal OpenSSH.

Gunakan pengaturan HTTPS publik, Basic Auth, dan daftar izin IP ketika Anda membutuhkan akses browser langsung dari beberapa mesin. Lebih suka pengaturan SSH loopback-only ketika akses publik tidak diperlukan.

Poin utama: Adminer paling aman adalah yang tidak pernah dapat dijangkau dari internet publik.

Menjaga Adminer Tetap Diperbarui

Instans yang terlupakan adalah risiko nyata di sini, dan layak diperlakukan sebagai tugas terjadwal daripada renungan belakangan. Memperbarui Adminer adalah satu perintah, perintah yang sama wget perintah yang Anda gunakan untuk menginstalnya, karena latest.php selalu mengambil rilis terkini:

sudo wget -O /var/www/adminer/adminer.php https://www.adminer.org/latest.php

Ini bukan kekhawatiran teoritis. Adminer 5.4.3, dirilis 9 Juli 2026, menangani tujuh GitHub Security Advisories dalam satu rilis. Saran sebelumnya untuk CVE-2026-25892 menunjukkan bahwa bahkan endpoint pemeriksaan versi Adminer pun bisa diubah menjadi vektor penolakan layanan yang tidak terauthentikasi; masalah ini diperbaiki di versi 5.4.2. Salinan yang sudah usang mengakumulasi kerentanan yang terdokumentasi secara publik, sehingga memperbaruinya harus menjadi pemeliharaan rutin.

Catatan: Tetap gunakan rilis Adminer upstream terkini. repositori AdminerEvo diarsipkan pada Januari 2025 dan bukan merupakan alternatif yang dipelihara secara aktif.

Menerapkan di VPS

Jika Anda lebih suka melewati langkah-langkah manual, Adminer tersedia sebagai deployment satu klik di marketplace Cloudzy pada saat Cloudzy Linux VPS. Gambar marketplace menggunakan Apache, Basic Auth, dan sertifikat yang ditandatangani sendiri, sehingga berbeda dari tumpukan Nginx, daftar izin IP, dan Let's Encrypt di atas. Tinjau perbedaan keamanan tersebut sebelum memasukkan kredensial database produksi.

Jejak Adminer sendiri dapat diabaikan; database yang menentukan ukuran Anda. Pilih CPU, memori, dan penyimpanan berdasarkan ukuran data dan indeks database, beban kueri, jumlah koneksi, pencadangan, dan pertumbuhan yang diharapkan, bukan Adminer itu sendiri.

Pertanyaan yang Sering Diajukan

Apakah Aman Mengekspos Adminer Secara Publik di VPS?

Tidak sendiri. Jika Anda harus mengekspos Adminer secara publik, tempatkan di belakang HTTP Basic Authentication, daftar izin IP, dan HTTPS bersama-sama. Kontrol ini mengurangi risiko tetapi tidak membuat eksposur publik bebas risiko. Untuk database sensitif, ikat Adminer ke localhost dan jangkau melalui terowongan SSH.

Bagaimana Cara Mengakses Adminer Tanpa Mengeksposnya ke Internet?

Konfigurasikan blok server Nginx loopback-only yang ditampilkan di atas agar Adminer mendengarkan pada 127.0.0.1:8080, lalu jalankan ssh -N -L 127.0.0.1:8080:127.0.0.1:8080 user@your-server-ip di mesin Anda sendiri. Buka http://127.0.0.1:8080/adminer.php saat terowongan berjalan.

Bisakah Adminer Terhubung ke PostgreSQL maupun MySQL?

Ya. Adminer mendukung MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, dan Oracle tanpa konfigurasi tambahan, dengan lebih banyak database tersedia melalui plugin. Instal ekstensi PHP yang sesuai untuk database Anda, misalnya php-pgsql untuk PostgreSQL, agar PHP dapat berkomunikasi dengannya.

Bagaimana Cara Menjaga Adminer Tetap Diperbarui?

Jalankan ulang perintah unduh: sudo wget -O /var/www/adminer/adminer.php https://www.adminer.org/latest.php. Yang latest.php URL selalu mengembalikan rilis stabil saat ini, sehingga ini menimpa salinan Anda dengan versi terbaru. Rilis keamanan terbaru membuat ini layak dilakukan berdasarkan jadwal daripada hanya ketika Anda ingat.

Haruskah Saya Menginstal Adminer melalui apt Paket atau Unduh Langsung?

Unduh file tunggal secara langsung. Ini memberi Anda versi saat ini segera dan membuat pembaruan menjadi perintah satu baris, sementara paket distribusi bisa tertinggal dari rilis resmi. File langsung adalah alat yang sama dengan jalur lebih pendek ke perbaikan keamanan terbaru.

Bagikan

Lebih banyak dari blog

Lanjutkan membaca.

Siap deploy? Mulai $2,48/bln.

Cloud independen, sejak 2008. AMD EPYC, NVMe, 40 Gbps. Garansi uang kembali 14 hari.