GNU/Linux >> Belajar Linux >  >> Debian

Server Sempurna - Debian 10 (Nginx, BIND, Dovecot, ISPConfig 3.2)

Tutorial ini menunjukkan cara menyiapkan server Debian 10 (dengan Nginx, BIND, Dovecot) untuk instalasi ISPConfig 3.2, dan cara menginstal ISPConfig 3.2. ISPConfig 3 adalah panel kontrol hosting web yang memungkinkan Anda untuk mengonfigurasi layanan berikut melalui browser web:server web Apache atau nginx, server email Postfix, server Courier atau Dovecot IMAP/POP3, MySQL, server nama BIND atau MyDNS, PureFTPd, SpamAssassin, ClamAV, dan banyak lagi. Pengaturan ini mencakup server web Nginx, BIND sebagai Server DNS, dan Dovecot sebagai server IMAP / POP3.

1 Catatan Awal

Dalam tutorial ini, saya menggunakan hostname server1.example.com dengan alamat IP 192.168.0.100 dan gateway 192.168.0.1. Pengaturan ini mungkin berbeda untuk Anda, jadi Anda harus menggantinya jika perlu. Sebelum melanjutkan lebih jauh, Anda harus menginstal minimal Debian 10. Ini mungkin gambar minimal Debian dari penyedia hosting Anda atau Anda menggunakan tutorial Server Debian Minimal untuk menyiapkan sistem dasar.

Semua perintah di bawah ini dijalankan sebagai pengguna root. Masuk sebagai pengguna root secara langsung atau masuk sebagai pengguna biasa Anda lalu gunakan perintah

su -

untuk menjadi pengguna root di server Anda sebelum Anda melanjutkan. PENTING :Anda harus menggunakan 'su -' dan bukan hanya 'su', jika tidak, variabel PATH Anda disetel salah oleh Debian.

2 Instal Server SSH

Jika Anda tidak menginstal server OpenSSH selama instalasi sistem, Anda dapat melakukannya sekarang:

apt-get -y install ssh openssh-server

Mulai sekarang Anda dapat menggunakan klien SSH seperti Putty dan terhubung dari workstation Anda ke server Debian 10 Anda dan ikuti langkah selanjutnya dari tutorial ini.

3 Instal editor teks shell (Opsional)

Saya akan menggunakan nano editor teks dalam tutorial ini. Beberapa pengguna lebih suka editor vi klasik, oleh karena itu saya akan menginstal kedua editor di sini. Program vi default memiliki beberapa perilaku aneh di Debian dan Ubuntu; untuk mengatasinya, kita install vim-nox:

apt-get -y install nano vim-nox

(Anda tidak perlu melakukan ini jika Anda menggunakan editor teks lain seperti joe.)

4 Konfigurasikan Nama Inang

Nama host server Anda harus berupa subdomain seperti "server1.example.com". Jangan gunakan nama domain tanpa bagian subdomain seperti "example.com" sebagai nama host karena ini akan menyebabkan masalah dengan pengaturan email Anda nanti. Pertama, Anda harus memeriksa nama host di /etc/hosts dan mengubahnya bila perlu. Baris harus:"Alamat IP - spasi - nama host lengkap termasuk domain - spasi - bagian subdomain". Edit /etc/hosts. Jadikan seperti ini:

nano /etc/hosts
127.0.0.1 localhost.localdomain localhost192.168.0.100 server1.example.com server1# Baris berikut diinginkan untuk host yang mendukung IPv6::1 localhost ip6-localhost ip6-loopbackff02::1 ip6-allnodesff02::2 ip6 -allrouter

Kemudian edit file /etc/hostname:

nano /etc/hostname

Ini hanya akan berisi bagian subdomain, dalam kasus kami:

server1

Terakhir, boot ulang server untuk menerapkan perubahan:

boot ulang

Masuk lagi dan periksa apakah nama host sudah benar sekarang dengan perintah berikut:

nama host
nama host -f

Outputnya akan seperti ini:

[email protected]:/tmp# hostname
server1
[email protected]:/tmp# hostname -f
server1.example.com

5 Perbarui Instalasi Debian Anda

Pertama-tama pastikan bahwa /etc/apt/sources.list Anda berisi repositori buster/updates (ini memastikan Anda selalu mendapatkan pembaruan terbaru untuk pemindai virus ClamAV - proyek ini menerbitkan rilis sangat sering, dan terkadang versi lama berhenti bekerja), dan bahwa contrib dan repositori non-free diaktifkan.

nano /etc/apt/sources.list
deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/debian-security buster/updates kontribusi utama tidak bebas
deb-src http://security.debian.org/debian-security buster/updates kontribusi utama tidak gratis

Jalankan

apt-get update

untuk memperbarui database paket apt dan

apt-get upgrade

untuk menginstal pembaruan terbaru (jika ada).

6 Ubah Shell Default

/bin/sh adalah symlink ke /bin/dash, namun kita membutuhkan /bin/bash, bukan /bin/dash. Oleh karena itu kami melakukan ini:

dpkg-konfigurasi ulang tanda hubung

Gunakan tanda hubung sebagai shell sistem default (/bin/sh)? <-- Tidak

Jika Anda tidak melakukannya, penginstalan ISPConfig akan gagal.

7 Sinkronisasi Jam Sistem

Sebaiknya sinkronisasi jam sistem dengan NTP (n jaringan t waktu p rotocol) server melalui Internet. Cukup jalankan

apt-get install ntp

dan waktu sistem Anda akan selalu sinkron.

8 Instal Postfix, Dovecot, MySQL, rkhunter, dan binutils

Kita dapat menginstal Postfix, Dovecot, MySQL, rkhunter, dan Binutils dengan satu perintah:

apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo curl

Anda akan ditanya pertanyaan berikut:

Jenis umum konfigurasi email:<-- Situs Internet
Nama email sistem:<-- server1.example.com

Untuk mengamankan instalasi MariaDB / MySQL dan untuk menonaktifkan database pengujian, jalankan perintah ini:

mysql_secure_installation

Kami tidak perlu mengubah sandi root MariaDB karena kami baru saja menyetel sandi baru saat penginstalan. Jawablah pertanyaan sebagai berikut:

Ubah kata sandi root? [Y/n] <-- y
Sandi baru:<-- Masukkan sandi root database baru
Masukkan kembali sandi baru:<-- Ulangi sandi root database
Hapus pengguna anonim ? [Y/n] <-- y
Larang login root dari jarak jauh? [Y/n] <-- y
Hapus database pengujian dan akses ke sana? [Y/n] <-- y
Muat ulang tabel hak istimewa sekarang? [Y/n] <-- y

Selanjutnya, buka TLS/SSL dan port pengiriman di Postfix:

nano /etc/postfix/master.cf

Batalkan komentar pada bagian pengiriman dan smtps sebagai berikut dan tambahkan baris jika perlu sehingga bagian file master.cf ini terlihat persis seperti di bawah ini. PENTING: Hapus # di depan baris yang dimulai dengan smtps dan submit juga dan bukan hanya dari baris -o setelah baris ini!

[...]
pengajuan inet n - y - - smtpd
-o syslog_name=postfix/pengajuan
-o smtpd_tls_security_level=enkripsi
-o smtpd_sasl_auth_enable=ya -o smtpd_client_restrictions=permit_sasl_authenticated,tolak
# -o smtpd_reject_unlisted_recipient=tidak
# -o smtpd_client_restrictions=$mua_client_restrictions
# =$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smt -o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=ya
-o smtpd_sasl_auth_enable=ya
-o smtpd_client_restrictions=izin_sasl_# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_se nder_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,tolak
# -o milter_macro_daemon_name
[...ORIGINATING]

Mulai ulang Postfix setelahnya:

layanan postfix dimulai ulang

Kami ingin MariaDB mendengarkan di semua antarmuka, bukan hanya localhost, oleh karena itu kami mengedit /etc/mysql/mariadb.conf.d/50-server.cnf dan mengomentari baris bind-address =127.0.0.1:

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
# Alih-alih melewatkan jaringan, defaultnya sekarang hanya mendengarkan di# localhost yang lebih kompatibel dan tidak kurang aman.#bind-address =127.0.0.1

[...]

Simpan file. Kemudian atur metode otentikasi kata sandi di MariaDB ke asli sehingga kita dapat menggunakan PHPMyAdmin nanti untuk terhubung sebagai pengguna root:

echo "perbarui mysql.user set plugin ='mysql_native_password' di mana user='root';" | mysql -u root

Edit file /etc/mysql/debian.cnf dan setel kata sandi root MYSQL / MariaDB di sana dua kali di baris yang dimulai dengan kata sandi.

nano /etc/mysql/debian.cnf

Kata sandi root MySQL yang perlu ditambahkan ditampilkan dengan warna merah. Dalam contoh ini, kata sandinya adalah "howtoforge".

# Secara otomatis dibuat untuk skrip Debian. JANGAN SENTUH!
[klien]
host =localhost
pengguna =root
sandi =howtoforge
socket =/var/run/mysqld/mysqld.sock
[mysql_upgrade]
host =localhost
user =root
password =howtoforge
socket =/var/run/mysqld/mysqld.sock
basedir =/usr

Untuk mencegah kesalahan 'Kesalahan dalam menerima:Terlalu banyak file yang terbuka ' kami akan menetapkan batas file terbuka yang lebih tinggi untuk MariaDB sekarang.

Buka file /etc/security/limits.conf dengan editor:

nano /etc/security/limits.conf

dan tambahkan baris ini di akhir file.

mysql softnofile 65535
mysql hardnofile 65535

Selanjutnya, buat direktori baru /etc/systemd/system/mysql.service.d/ dengan perintah mkdir.

mkdir -p /etc/systemd/system/mysql.service.d/

dan tambahkan file baru di dalamnya:

nano /etc/systemd/system/mysql.service.d/limits.conf

rekatkan baris berikut ke dalam file itu:

[Layanan]
LimitNOFILE=infinity

Simpan file dan tutup editor nano.

Kemudian kita reload systemd dan restart MariaDB:

systemctl daemon-reload
systemctl restart mariadb

Abaikan peringatan:"Peringatan:File unit, file konfigurasi sumber, atau drop-in mariadb.service berubah pada disk. Jalankan 'systemctl daemon-reload' untuk memuat ulang unit. ".

Instal sistem dbconfig-common:

apt-get install dbconfig-common dbconfig-mysql

Saat ini ada masalah dengan sistem dbconfig-common Debian yang mencegah instalasi RoundCube nanti, perbaiki dengan menjalankan perintah ini:

sed -i -r 's/_dbc_nodb="ya" dbc_mysql_exec/_dbc_nodb="ya"; dbc_mysql_exec/g' /usr/share/dbconfig-common/internal/mysql

Sekarang periksa apakah jaringan diaktifkan. Jalankan

netstat -ketuk | grep mysql

Outputnya akan terlihat seperti ini:

[email protected]:~# netstat -tap | grep mysql
tcp6       0      0 [::]:mysql              [::]:*                  DENGARKAN      4027/mysqld
[email dilindungi>]:~

9 Instal Amavisd-new, SpamAssassin, dan ClamAV

Untuk menginstal amavisd-new, SpamAssassin, dan ClamAV, kami menjalankan:

apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon li -socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgrey

Penyiapan ISPConfig 3 menggunakan amavisd yang memuat pustaka filter SpamAssassin secara internal, jadi kami dapat menghentikan SpamAssassin untuk mengosongkan sebagian RAM:

systemctl stop spamassassin
systemctl nonaktifkan spamassassin

10 Instal Nginx, PHP (PHP-FPM), dan Fcgiwrap

Nginx tersedia sebagai paket untuk Debian yang dapat kita instal sebagai berikut:

apt-get install nginx

Jika Apache2 sudah terinstal di sistem, hentikan sekarang...

systemctl stop apache2

Pesan "Gagal menghentikan apache2.service:Unit apache2.service tidak dimuat. " baik-baik saja dan tidak menunjukkan kesalahan.

... dan hapus tautan startup sistem Apache:

systemctl nonaktifkan apache2

Mulai nginx setelahnya:

systemctl start nginx

(Jika Apache2 dan nginx terinstal, penginstal ISPConfig 3 akan menanyakan mana yang ingin Anda gunakan - jawab nginx dalam kasus ini. Jika hanya salah satu dari keduanya yang diinstal, ISPConfig akan melakukan konfigurasi yang diperlukan secara otomatis.)

Kita dapat membuat PHP 7.3 bekerja di nginx melalui PHP-FPM (PHP-FPM (FastCGI Process Manager) adalah implementasi PHP FastCGI alternatif dengan beberapa fitur tambahan yang berguna untuk situs dari berbagai ukuran, terutama situs yang lebih sibuk) yang kami instal sebagai berikut:

apt-get install php7.3-fpm

PHP-FPM adalah proses daemon yang menjalankan server FastCGI pada soket /var/run/php/php7.3-fpm.sock.

Untuk mendapatkan dukungan MySQL di PHP, kita dapat menginstal paket php7.3-mysql. Ini adalah ide yang baik untuk menginstal beberapa modul PHP lain serta Anda mungkin membutuhkannya untuk aplikasi Anda. Anda dapat mencari modul PHP yang tersedia seperti ini:

pencarian apt-cache php7

Pilih yang Anda butuhkan dan instal seperti ini:

apt-get install php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi php-pear mcrypt imagemagick lirubby php7.3- curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-rapi php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3- zip php7.3-mbstring memcached php7.3-soap php7.3-fpm php7.3-opcache php-apcu

Selanjutnya buka /etc/php/7.3/fpm/php.ini...

nano /etc/php/7.3/fpm/php.ini

... dan atur cgi.fix_pathinfo=0 dan zona waktu Anda:

[...]cgi.fix_pathinfo=0[...]date.timezone="Europe/Berlin"[...]

(Anda dapat menemukan semua zona waktu yang tersedia di direktori /usr/share/zoneinfo dan subdirektorinya.)

Sekarang muat ulang PHP-FPM:

systemctl restart php7.3-fpm

Untuk mendapatkan dukungan CGI di nginx, kami menginstal Fcgiwrap.

Fcgiwrap adalah pembungkus CGI yang juga berfungsi untuk skrip CGI yang kompleks dan dapat digunakan untuk lingkungan hosting bersama karena memungkinkan setiap vhost untuk menggunakan direktori cgi-bin-nya sendiri.

Instal paket fcgiwrap:

apt-get install fcgiwrap

Setelah instalasi, daemon fcgiwrap seharusnya sudah dimulai; soketnya adalah /var/run/fcgiwrap.socket. Jika tidak berjalan, Anda dapat menggunakan skrip fservice fcgiwrap untuk memulainya.

Itu dia! Sekarang saat Anda membuat nginx vhost, ISPConfig akan menangani konfigurasi vhost yang benar.

10.1 Instal phpMyAdmin

Sejak Debian 10, PHPMyAdmin tidak tersedia sebagai paket .deb lagi. Oleh karena itu kami akan menginstalnya dari sumber.

Buat folder untuk PHPMyadmin:

mkdir /usr/share/phpmyadmin
mkdir /etc/phpmyadmin
mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var /lib/phpmyadmin
touch /etc/phpmyadmin/htpasswd.setup

Buka direktori /tmp dan unduh sumber PHPMyAdmin:

cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

Buka paket file arsip yang diunduh dan pindahkan file ke folder /usr/share/phpmyadmin dan bersihkan direktori /tmp.

tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/
rm phpMyAdmin-4.9. 0.1-all-languages.tar.gz
rm -rf phpMyAdmin-4.9.0.1-all-languages

Buat file konfigurasi baru untuk PHPMyaAdmin berdasarkan contoh file yang disediakan:

cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php

Buka file konfigurasi dengan editor nano:

nano /usr/share/phpmyadmin/config.inc.php

Tetapkan kata sandi yang aman (rahasia blowfish) yang panjangnya harus 32 karakter:

$cfg['blowfish_secret'] ='bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* ANDA HARUS MENGISI INI UNTUK COOKIE AUTH! */

Jangan gunakan contoh rahasia blowfish saya, tetapkan sendiri!

Kemudian tambahkan baris untuk mengatur direktori yang akan digunakan PHPMyAdmin untuk menyimpan file-file sementara:

$cfg['TempDir'] ='/var/lib/phpmyadmin/tmp';

Pada langkah selanjutnya, kita akan mengkonfigurasi penyimpanan konfigurasi phpMyadmin (database).

Masuk ke MariaDB sebagai pengguna root:

mysql -u root -p

Di shell MariaDB, buat database baru untuk PHPMyAdmin:

MariaDB [(none)]> BUAT DATABASE phpmyadmin;

Kemudian buat pengguna baru:

MariaDB [(none)]> BUAT PENGGUNA 'pma'@'localhost' DIIDENTIFIKASI DENGAN 'mypassword';

Ganti kata mypassword dengan kata sandi aman pilihan Anda dalam perintah di atas dan di bawah, gunakan kata sandi yang sama dua kali. Kemudian berikan akses pengguna ke database ini dan muat ulang izin database.

MariaDB [(none)]> HIBAH SEMUA HAK ISTIMEWA DI phpmyadmin.* KEPADA 'pma'@'localhost' DIIDENTIFIKASI DENGAN 'mypassword' DENGAN GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> KELUAR

Terakhir, muat tabel SQL ke dalam database:

mysql -u root -p phpmyadmin  

Masukkan kata sandi root MariaDB berdasarkan permintaan.

Yang harus kita lakukan sekarang adalah mengatur detail pengguna phpmyadmin di file konfigurasi. Buka file di editor nano lagi:

nano /usr/share/phpmyadmin/config.inc.php

Gulir ke bawah hingga Anda melihat baris di bawah dan edit:

/* Pengguna digunakan untuk memanipulasi dengan penyimpanan */
$cfg['Servers'][$i]['controlhost'] ='localhost';
$cfg['Servers'][ $i]['controlport'] ='';
$cfg['Servers'][$i]['controluser'] ='pma';
$cfg['Servers'][$ i]['controlpass'] ='mypassword';

/* Penyimpanan database dan tabel */
$cfg['Servers'][$i]['pmadb'] =' phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] ='pma__bookmark';
$cfg['Servers'][$i]['relation'] =' pma__relation';
$cfg['Servers'][$i]['table_info'] ='pma__table_info';
$cfg['Servers'][$i]['table_coords'] =' pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] ='pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] =' pma__column_info';
$cfg['Servers'][$i]['history'] ='pma__history';
$cfg['Servers'][$i]['table_uiprefs'] =' pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] ='pma__tracking';
$cfg['Servers'][$i]['userconfig'] =' pma__userconfig';
$cfg['Servers'][$i]['recent'] ='pma__recent';
$cfg['Servers'][$i]['favorite'] ='pma__favorite';
$cfg['Servers'][$i]['users'] ='pma__users';
$cfg['Servers'][$i]['usergroups'] ='pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] ='pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] ='pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] ='pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] ='pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] ='pma__export_templates';

Saya telah menandai garis merah yang telah saya edit. Ganti sandi saya dengan kata sandi yang Anda pilih untuk pengguna phpmyadmin. Perhatikan bahwa // di depan baris juga telah dihapus!

Setelah Anda menginstal ISPConfig 3.2, Anda dapat mengakses phpMyAdmin sebagai berikut:

Aplikasi ISPConfig vhost pada port 8081 untuk nginx dilengkapi dengan konfigurasi phpMyAdmin, jadi Anda dapat menggunakan http://server1.example.com:8081/phpmyadmin atau http://server1.example.com:8081/phpMyAdmin untuk mengakses phpMyAdmin.

Jika Anda ingin menggunakan /phpmyadmin atau /phpMyAdmin alias yang dapat Anda gunakan dari situs web Anda, ini sedikit lebih rumit daripada Apache karena nginx tidak memiliki alias global (yaitu, alias yang dapat ditentukan untuk semua vhost). Oleh karena itu, Anda harus mendefinisikan alias ini untuk setiap vhost tempat Anda ingin mengakses phpMyAdmin.

Untuk melakukannya, rekatkan yang berikut ini ke bidang Arahan nginx pada tab Opsi situs web di ISPConfig nanti:

 lokasi /phpmyadmin { root /usr/share/; indeks index.php index.html index.htm; lokasi ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/bagikan/; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; sertakan /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors aktif; } lokasi ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } lokasi /phpMyAdmin { tulis ulang ^/* /phpmyadmin terakhir; }

Jika Anda menggunakan https alih-alih http untuk vhost Anda, Anda harus menambahkan baris fastcgi_param HTTPS di; ke konfigurasi phpMyAdmin Anda seperti ini:

 lokasi /phpmyadmin { root /usr/share/; indeks index.php index.html index.htm; lokasi ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/bagikan/; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; fastcgi_param HTTPS aktif; # <-- tambahkan baris ini fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; sertakan /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors aktif; } lokasi ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } lokasi /phpMyAdmin { tulis ulang ^/* /phpmyadmin terakhir; }

Jika Anda menggunakan http dan https untuk vhost, Anda dapat menggunakan variabel $https. Buka bidang nginx Directive lagi, dan alih-alih fastcgi_param HTTPS aktif; Anda menambahkan baris fastcgi_param HTTPS $https; sehingga Anda dapat menggunakan phpMyAdmin untuk permintaan http dan https:

 lokasi /phpmyadmin { root /usr/share/; indeks index.php index.html index.htm; lokasi ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/bagikan/; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; fastcgi_param HTTPS $https; # <-- tambahkan baris ini fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; sertakan /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors aktif; } lokasi ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } lokasi /phpMyAdmin { tulis ulang ^/* /phpmyadmin terakhir; }

11 Instal Let's Encrypt

ISPConfig menggunakan acme.sh sekarang sebagai klien Let's Encrypt. Instal acme.sh menggunakan perintah berikut:

curl https://get.acme.sh | sh -s

12 Instal Mailman

ISPConfig memungkinkan Anda untuk mengelola (membuat/memodifikasi/menghapus) milis Mailman. Jika Anda ingin menggunakan fitur ini, instal Mailman sebagai berikut:

apt-get install mailman

Pilih setidaknya satu bahasa, mis.:

Bahasa yang didukung:<-- en (Bahasa Inggris)
Daftar situs tidak ada <-- Oke

Sebelum kita dapat memulai Mailman, milis pertama yang disebut mailman harus dibuat:

mailman daftar baru

[email protected]:~# newlist mailman
Masukkan email orang yang menjalankan daftar: <-- alamat email admin, mis. [email protected]
sandi mailman awal: <-- admin password for the mailman list
Untuk menyelesaikan pembuatan milis, Anda harus mengedit file /etc/aliases (atau
setara) oleh menambahkan baris berikut, dan mungkin menjalankan program
`newaliases':

## mailman milis
mailman:            "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:       "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:     "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:        "|/var/lib/mailman/mail/mailman join mailman"
mailman- pergi:        "|/var/lib/mailman/mail/mailman tinggalkan mailman"
mailman-owner:       "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:     "| /var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsub scribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Tekan enter untuk memberi tahu pemilik mailman... <-- ENTER

[email protected] :~#

Buka /etc/aliases setelahnya...

nano /etc/aliases

... dan tambahkan baris berikut:

[...]## mailman mailing listmailman:"|/var/lib/mailman/mail/mailman post mailman"mailman-admin:"|/var/lib/mailman/mail/mailman admin mailman"mailman- bounces:"|/var/lib/mailman/mail/mailman bounces mailman"mailman-confirm:"|/var/lib/mailman/mail/mailman konfirmasi mailman"mailman-join:"|/var/lib/mailman/mail /mailman bergabung dengan tukang pos"mailman-leave:"|/var/lib/mailman/mail/mailman meninggalkan tukang pos"mailman-owner:"|/var/lib/mailman/mail/mailman pemilik tukang pos"mailman-request:"|/ var/lib/mailman/mail/mailman request mailman"mailman-subscribe:"|/var/lib/mailman/mail/mailman berlangganan tukang pos"mailman-unsubscribe:"|/var/lib/mailman/mail/mailman berhenti berlangganan tukang pos" 

Jalankan

nama baru

setelah itu dan mulai ulang Postfix:

systemctl restart postfix

Kemudian jalankan daemon Mailman:

systemctl restart mailman

Setelah Anda menginstal ISPConfig 3, Anda dapat mengakses Mailman sebagai berikut:

Aplikasi ISPConfig vhost pada port 8081 untuk nginx dilengkapi dengan konfigurasi Mailman, sehingga Anda dapat menggunakan http://server1.example.com:8081/cgi-bin/mailman/admin/ atau http://server1.example .com:8081/cgi-bin/mailman/listinfo/ untuk mengakses Mailman.

Jika Anda ingin menggunakan Mailman dari situs web Anda, ini sedikit lebih rumit daripada Apache karena nginx tidak memiliki alias global (yaitu, alias yang dapat ditentukan untuk semua vhost). Oleh karena itu, Anda harus mendefinisikan alias ini untuk setiap vhost tempat Anda ingin mengakses Mailman.

Untuk melakukannya, rekatkan yang berikut ini ke bidang Arahan nginx pada tab Opsi situs web di ISPConfig:

 lokasi /cgi-bin/mailman { root /usr/lib/; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$; sertakan /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_intercept_errors aktif; fastcgi_pass unix:/var/run/fcgiwrap.socket; } lokasi /images/mailman { alias /usr/share/images/mailman; } lokasi /pipermail { alias /var/lib/mailman/archives/public; indeks otomatis aktif; }

Ini mendefinisikan alias /cgi-bin/mailman/ untuk vhost Anda, yang berarti Anda dapat mengakses antarmuka admin Mailman untuk daftar di http:///cgi-bin/mailman/admin/, dan halaman web untuk pengguna milis dapat ditemukan di http:///cgi-bin/mailman/listinfo/.

Di bawah http:///pipermail Anda dapat menemukan arsip milis.

13 Instal PureFTPd dan Kuota

PureFTPd dan kuota dapat diinstal dengan perintah berikut:

apt-get install pure-ftpd-common pure-ftpd-mysql quotatooltool

Edit file /etc/default/pure-ftpd-common...

nano /etc/default/pure-ftpd-common

... dan pastikan mode start diatur ke standalone dan set VIRTUALCHROOT=true:

[...]STANDALONE_OR_INETD=mandiri[...]VIRTUALCHROOT=true[...]

Sekarang kita mengkonfigurasi PureFTPd untuk mengizinkan sesi FTP dan TLS. FTP adalah protokol yang sangat tidak aman karena semua kata sandi dan semua data ditransfer dalam teks yang jelas. Dengan menggunakan TLS, seluruh komunikasi dapat dienkripsi, sehingga membuat FTP jauh lebih aman.

Jika Anda ingin mengizinkan sesi FTP dan TLS, jalankan

echo 1> /etc/pure-ftpd/conf/TLS

Untuk menggunakan TLS, kita harus membuat sertifikat SSL. Saya membuatnya di /etc/ssl/private/, oleh karena itu saya membuat direktori itu terlebih dahulu:

mkdir -p /etc/ssl/private/

Setelah itu, kita dapat membuat sertifikat SSL sebagai berikut:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Nama Negara (kode 2 huruf) [AU]:<-- Masukkan Nama Negara Anda (mis., "DE").
Nama Negara Bagian atau Provinsi (nama lengkap) [Some-State]:<-- Masukkan Negara Bagian Anda atau Nama Provinsi.
Nama Lokalitas (mis., kota) []:<-- Masukkan Kota Anda.
Nama Organisasi (mis., perusahaan) [Internet Widgits Pty Ltd]:<-- Masukkan Nama Organisasi Anda (mis., nama perusahaan Anda).
Nama Unit Organisasi (mis., seksi) []:<-- Masukkan Nama Unit Organisasi Anda (mis. "Departemen TI").
Nama Umum (mis. nama ANDA) []:<-- Masukkan Nama Domain yang Memenuhi Syarat dari sistem (misalnya "server1.example.com").
Alamat Email []:<-- Masukkan Alamat Email Anda.

Ubah izin sertifikat SSL:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Kemudian restart PureFTPd:

systemctl restart pure-ftpd-mysql

Sunting /etc/fstab. Milik saya terlihat seperti ini (saya menambahkan ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 ke partisi dengan titik mount /):

nano /etc/fstab
# /etc/fstab:informasi sistem file statis.
#
# Gunakan 'blkid' untuk mencetak pengenal unik universal untuk
# perangkat; ini dapat digunakan dengan UUID=sebagai cara yang lebih kuat untuk memberi nama perangkat
# yang berfungsi bahkan jika disk ditambahkan dan dihapus. Lihat fstab(5).
#
#
# / berada di /dev/sda1 selama instalasi
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 error=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap aktif /dev /sda5 selama instalasi
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Untuk mengaktifkan kuota, jalankan perintah berikut:

mount -o remount /
quotacheck -avugm
quotaon -avug

14 Instal Server DNS BIND

BIND dapat diinstal sebagai berikut:

apt-get install bind9 dnsutils

Jika server Anda adalah mesin virtual, maka sangat disarankan untuk menginstal daemon yang telah dimiliki untuk mendapatkan entropi yang lebih tinggi untuk penandatanganan DNSSEC. Anda juga dapat menginstal hasged di server non-virtual, tidak ada salahnya.

apt-get -y install haveged
systemctl enable haveged
systemctl start haveged

An explanation on that topic can be found here.

15 Install Webalizer, AWStats and GoAccess

Webalizer and AWStats can be installed as follows:

apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perl

Open /etc/cron.d/awstats afterwards...

nano /etc/cron.d/awstats

... and comment out everything in that file:

#MAILTO=root#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] &&/usr/share/awstats/tools/update.sh# Generate static reports:#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] &&/usr/share/awstats/tools/buildstatic.sh

Installing the latest GoAccess version directly from GoAccess repository:

echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
apt-get update
apt-get install goaccess

16 Install Jailkit

Jailkit is needed only if you want to chroot SSH users. It can be installed as follows (important:Jailkit must be installed before ISPConfig - it cannot be installed afterwards!):

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz
tar xvfz jailkit-2.20.tar.gz
cd jailkit-2.20
echo 5> debian/compat
./debian/rules binary

You can now install the Jailkit .deb package as follows:

cd ..
dpkg -i jailkit_2.20-1_*.deb
rm -rf jailkit-2.20*

17 Install Fail2ban and UFW Firewall

This is optional but recommended, because the ISPConfig monitor tries to show the log:

apt-get install fail2ban

To make fail2ban monitor PureFTPd and Dovecot, create the file /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local
[pure-ftpd]
enabled =true
port =ftp
filter =pure-ftpd
logpath =/var/log/syslog
maxretry =3

[dovecot]
enabled =true
filter =dovecot
logpath =/var/log/mail.log
maxretry =5

[postfix-sasl]
enabled =true
port =smtp
filter =postfix[mode=auth]
logpath =/var/log/mail.log
maxretry =3

Restart fail2ban afterwards:

systemctl restart fail2ban

To install the UFW firewall, run this apt command:

apt-get install ufw

18 Install RoundCube

Install RoundCube with this command:

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

The installer will ask the following questions:

Configure database for roundcube with dbconfig.common? <-- yes
MySQL application password for roundcube:<-- press enter
Password of the databases administrative user:<-- enter the MySQL root password here.

Then edit the RoundCube /etc/roundcube/config.inc.php file and adjust a few settings:

nano /etc/roundcube/config.inc.php

Set the default_host to localhost and the smtp_server.

$config['default_host'] ='localhost';
$config['smtp_server'] ='localhost';
$config['smtp_port']  =25;

ISPConfig has some configuration in the nginx apps vhost for squirrelmail which works for roundcube as well. We activate it with:

ln -s /usr/share/roundcube /usr/share/squirrelmail

http://192.168.0.100:8081/webmail
http://server1.example.com:8081/webmail (after you have installed ISPConfig, see the next chapter)

19 Install ISPConfig 3

Before you start the ISPConfig installation, make sure that Apache is stopped (if it is installed - it is possible that some of your installed packages have installed Apache as a dependency without you knowing). If Apache2 is already installed on the system, stop it now...

systemctl stop apache2

... and remove Apache's system startup links:

update-rc.d -f apache2 remove

Make sure that nginx is running:

systemctl start nginx

(If you have both Apache and nginx installed, the installer asks you which one you want to use:Apache and nginx detected. Select server to use for ISPConfig:(apache,nginx) [apache]:

Type nginx. If only Apache or nginx are installed, this is automatically detected by the installer, and no question is asked.)

To install ISPConfig 3.2 from the latest released version, do this:

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

The next step is to run

php -q install.php

This will start the ISPConfig 3 installer. The installer will configure all services like Postfix, Nginx, Dovecot, etc. for you.

# php -q install.php

--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------

>> Initial configuration
Operating System:Debian 10.0 (Buster) or compatible
Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with .
Tap in "quit" (without the quotes) to stop the installer.

Select language (en,de) [en]:<-- Hit Enter
Installation mode (standard,expert) [standard]: <-- Hit Enter
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.canomi.com]: <-- Hit Enter
MySQL server hostname [localhost]: <-- Hit Enter
MySQL server port [3306]: <-- Hit Enter
MySQL root username [root]: <-- Hit Enter
MySQL root password []: <-- Enter your MySQL root password
MySQL database to create [dbispconfig]: <-- Hit Enter
MySQL charset [utf8]: <-- Hit Enter
Apache and nginx detected. Select server to use for ISPConfig:(apache,nginx) [apache]:<-- nginx

Configuring Postgrey
Configuring Postfix
Generating a 4096 bit RSA private key
.......................................................................++
........................................................................................................................................++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:<-- Enter 2 letter country code
State or Province Name (full name) [Some-State]:<-- Enter the name of the  state
Locality Name (eg, city) []:<-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []:<-- Enter the server hostname, in my case:server1.example.com
Email Address []: <-- Hit Enter
Configuring Mailman
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring BIND
Configuring Jailkit
Configuring Pureftpd
Configuring Nginx
Configuring vlogger
[INFO] service Metronome XMPP Server not detected
Configuring UFW Firewall
Configuring Fail2ban
[INFO] service OpenVZ not detected
Configuring Apps vhost
Installing ISPConfig
ISPConfig Port [8080]:
Admin password [admin]:<-- Enter desired ISPConfig admin user password here
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: <-- Hit Enter
Generating RSA private key, 4096 bit long modulus
.......................++
................................................................................................................................++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
State or Province Name (full name) [Some-State]: <-- Enter the name of the  state
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case:server1.example.com
Email Address []: <-- Hit Enter
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: <-- Hit Enter
An optional company name []: <-- Hit Enter
writing RSA key

Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.

The installer automatically configures all underlying services, so no manual configuration is needed.

Afterward you can access ISPConfig 3 under http(s)://server1.example.com:8080/ or http(s)://192.168.1.100:8080/ ( http or https depends on what you chose during installation). Log in with the username admin and the password admin (you should change the default password after your first login):

Finally, we fix some permissions of the RoundCube installation.

chown root:ispapps /etc/roundcube/debian-db.phpchmod 640 /etc/roundcube/debian-db.phpchown root:ispapps /etc/roundcube/config.inc.phpchmod 640 /etc/roundcube/config.inc.phpchown -R ispapps:adm /var/log/roundcubechmod -R 750 /var/log/roundcubechown -R ispapps:ispapps /var/lib/roundcube/tempchmod -R 750 /var/lib/roundcube/temp

The system is now ready to be used.

There exist some plugins to integrate RoundCube Webmail with ISPConfig, have a look here for the ISPConfig RoundCube plugin installation instructions.

20.1 ISPConfig 3 Manual

In order to learn how to use ISPConfig 3, I strongly recommend downloading the ISPConfig 3 Manual.

On more than 300 pages, it covers the concept behind ISPConfig (admin, resellers, clients), explains how to install and update ISPConfig 3, includes a reference for all forms and form fields in ISPConfig together with examples of valid inputs, and provides tutorials for the most common tasks in ISPConfig 3. It also lines out how to make your server more secure and comes with a troubleshooting section at the end.

21 Virtual machine image download of this tutorial

This tutorial is available as ready to use virtual machine image in ovf/ova format that is compatible with VMWare and Virtualbox. The virtual machine image uses the following login details:

SSH / Shell Login

Username:administrator
Password:howtoforge

Username: root
Password:howtoforge

ISPConfig Login

Username:admin
Password:howtoforge

MySQL Login

Username:root
Password:howtoforge

The IP of the VM is 192.168.0.100, it can be changed in the file /etc/network/interfaces. Please change all the above passwords to secure the virtual machine.

  • Debian:http://www.debian.org/
  • ISPConfig:http://www.ispconfig.org/

Debian
  1. Server Sempurna - Ubuntu 14.10 (nginx, BIND, Dovecot, ISPConfig 3)

  2. Server Sempurna - OpenSUSE 12.3 x86_64 (nginx, Dovecot, ISPConfig 3)

  3. Server Sempurna - Ubuntu 15.04 (nginx, BIND, Dovecot, dan ISPConfig 3)

  1. Server Sempurna - Ubuntu 12.04 LTS (nginx, BIND, Dovecot, ISPConfig 3)

  2. Server Sempurna - Ubuntu 12.10 (nginx, BIND, Dovecot, ISPConfig 3)

  3. Server Sempurna - Ubuntu 13.04 (nginx, BIND, Dovecot, ISPConfig 3)

  1. Server Sempurna - Debian 8 Jessie (Apache2, BIND, Dovecot, ISPConfig 3)

  2. Server Sempurna - Debian 8.4 Jessie (Apache2, BIND, Dovecot, ISPConfig 3.1)

  3. Server Sempurna - Debian 8.6 (nginx, BIND, Dovecot, ISPConfig 3.1)