서버 설정 · 22 min read · Nov 04, 2025

완벽한 서버 - Debian 10 (Nginx, BIND, Dovecot, ISPConfig 3.2)

이 튜토리얼은 ISPConfig 3.2 설치를 위해 Nginx, BIND, Dovecot이 포함된 Debian 10 서버를 준비하는 방법과 ISPConfig 3.2를 설치하는 방법을 보여줍니다. ISPConfig 3는 웹 브라우저를 통해 다음 서비스를 구성할 수 있는 웹 호스팅 제어판입니다: Apache 또는 nginx 웹 서버, Postfix 메일 서버, Courier 또는 Dovecot IMAP/POP3 서버, MySQL, BIND 또는 MyDNS 네임서버, PureFTPd, SpamAssassin, ClamAV 등. 이 설정은 Nginx 웹 서버, BIND를 DNS 서버로, Dovecot을 IMAP / POP3 서버로 포함합니다.

1 사전 참고

이 튜토리얼에서는 호스트 이름 server1.example.com과 IP 주소 192.168.0.100, 게이트웨이 192.168.0.1을 사용합니다. 이러한 설정은 귀하의 경우 다를 수 있으므로 적절한 곳에서 교체해야 합니다. 진행하기 전에 Debian 10의 최소 설치가 필요합니다. 이는 호스팅 제공업체의 Debian 최소 이미지일 수 있으며, 기본 시스템을 설정하기 위해 Minimal Debian Server 튜토리얼을 사용할 수 있습니다.

아래의 모든 명령은 root 사용자로 실행됩니다. root 사용자로 직접 로그인하거나 일반 사용자로 로그인한 후 다음 명령을 사용하여

su -

서버에서 root 사용자로 전환한 후 진행하십시오. 중요: ‘su -‘를 사용해야 하며 ‘su’만 사용하지 마십시오. 그렇지 않으면 Debian에 의해 PATH 변수가 잘못 설정됩니다.

2 SSH 서버 설치

시스템 설치 중 OpenSSH 서버를 설치하지 않았다면 지금 설치할 수 있습니다:

apt-get -y install ssh openssh-server

이제부터는 PuTTY와 같은 SSH 클라이언트를 사용하여 작업 스테이션에서 Debian 10 서버에 연결하고 이 튜토리얼의 나머지 단계를 따를 수 있습니다.

3 셸 텍스트 편집기 설치 (선택 사항)

이 튜토리얼에서는 nano 텍스트 편집기를 사용합니다. 일부 사용자는 고전적인 vi 편집기를 선호하므로 두 편집기를 모두 설치하겠습니다. 기본 vi 프로그램은 Debian 및 Ubuntu에서 이상한 동작을 하므로 이를 수정하기 위해 vim-nox를 설치합니다:

apt-get -y install nano vim-nox

(다른 텍스트 편집기(예: joe)를 사용하는 경우 이 작업을 수행할 필요는 없습니다.)

4 호스트 이름 구성

서버의 호스트 이름은 “server1.example.com”과 같은 하위 도메인이어야 합니다. “example.com”과 같은 하위 도메인 부분이 없는 도메인 이름을 호스트 이름으로 사용하지 마십시오. 이는 나중에 메일 설정에 문제를 일으킬 수 있습니다. 먼저 /etc/hosts에서 호스트 이름을 확인하고 필요에 따라 변경해야 합니다. 해당 줄은 다음과 같아야 합니다: “IP 주소 - 공백 - 전체 호스트 이름 포함 도메인 - 공백 - 하위 도메인 부분”. /etc/hosts를 편집합니다. 다음과 같이 보이도록 만듭니다:

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

# 다음 줄은 IPv6 지원 호스트에 바람직합니다
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

그런 다음 /etc/hostname 파일을 편집합니다:

nano /etc/hostname

여기에는 하위 도메인 부분만 포함되어야 하며, 우리의 경우:

server1

마지막으로 변경 사항을 적용하기 위해 서버를 재부팅합니다:

reboot

다시 로그인하고 다음 명령으로 호스트 이름이 올바른지 확인합니다:

hostname  
hostname -f

출력은 다음과 같아야 합니다:

root@server1:/tmp# hostname  
server1  
root@server1:/tmp# hostname -f  
server1.example.com

5 Debian 설치 업데이트

먼저 /etc/apt/sources.list에 buster/updates 리포지토리가 포함되어 있는지 확인합니다(이는 ClamAV 바이러스 스캐너의 최신 업데이트를 항상 받을 수 있도록 합니다 - 이 프로젝트는 매우 자주 릴리스를 게시하며, 때때로 이전 버전이 작동을 멈춥니다), 그리고 contrib 및 non-free 리포지토리가 활성화되어 있는지 확인합니다.

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 main contrib non-free  
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

다음 명령을 실행하여

apt-get update

apt 패키지 데이터베이스를 업데이트하고

apt-get upgrade

최신 업데이트를 설치합니다(있는 경우).

6 기본 셸 변경

/bin/sh는 /bin/dash에 대한 심볼릭 링크이지만, 우리는 /bin/bash가 필요합니다. 따라서 다음과 같이 합니다:

dpkg-reconfigure dash

기본 시스템 셸로 dash를 사용하시겠습니까? (/bin/sh)? <– 아니요

이 작업을 수행하지 않으면 ISPConfig 설치가 실패합니다.

7 시스템 시계 동기화

시스템 시계를 인터넷을 통한 NTP (network time protocol) 서버와 동기화하는 것이 좋습니다. 다음 명령을 실행하십시오:

apt-get install ntp

그러면 시스템 시간이 항상 동기화됩니다.

8 Postfix, Dovecot, MySQL, rkhunter 및 binutils 설치

Postfix, Dovecot, MySQL, rkhunter 및 Binutils를 단일 명령으로 설치할 수 있습니다:

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

다음 질문을 받게 됩니다:

메일 구성의 일반 유형: <– 인터넷 사이트
시스템 메일 이름: <– server1.example.com

MariaDB / MySQL 설치를 보안하고 테스트 데이터베이스를 비활성화하려면 다음 명령을 실행합니다:

mysql_secure_installation

우리는 설치 중에 새 비밀번호를 설정했기 때문에 MariaDB root 비밀번호를 변경할 필요가 없습니다. 질문에 다음과 같이 답하십시오:

루트 비밀번호를 변경하시겠습니까? [Y/n]  <-- y  
새 비밀번호: <-- 새 데이터베이스 루트 비밀번호 입력  
새 비밀번호를 다시 입력하십시오: <-- 데이터베이스 루트 비밀번호 반복  
익명 사용자 제거? [Y/n] <-- y  
원격에서 루트 로그인 금지? [Y/n] <-- y  
테스트 데이터베이스 및 이에 대한 접근 제거? [Y/n] <-- y  
권한 테이블을 지금 다시 로드하시겠습니까? [Y/n] <-- y

그런 다음 Postfix에서 TLS/SSL 및 제출 포트를 엽니다:

nano /etc/postfix/master.cf

제출 및 smtps 섹션의 주석을 제거하고 필요한 경우 다음과 같이 master.cf 파일의 이 섹션이 아래와 정확히 같도록 줄을 추가합니다. 중요: smtps 및 제출로 시작하는 줄 앞의 #를 제거하고 이러한 줄 이후의 -o 줄에서만 제거하지 마십시오!

[...]  
submission inet n - y - - smtpd  
 -o syslog_name=postfix/submission  
 -o smtpd_tls_security_level=encrypt  
 -o smtpd_sasl_auth_enable=yes  
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
# -o smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject  
# -o milter_macro_daemon_name=ORIGINATING  
smtps inet n - y - - smtpd  
 -o syslog_name=postfix/smtps  
 -o smtpd_tls_wrappermode=yes  
 -o smtpd_sasl_auth_enable=yes  
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
# -o smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject  
# -o milter_macro_daemon_name=ORIGINATING  
[...]  

그 후 Postfix를 재시작합니다:

service postfix restart

MariaDB가 localhost뿐만 아니라 모든 인터페이스에서 수신 대기하도록 하려면 /etc/mysql/mariadb.conf.d/50-server.cnf를 편집하고 bind-address = 127.0.0.1 줄의 주석을 제거합니다:

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]  

# skip-networking 대신 기본값은 이제  
# localhost에서만 수신 대기하는 것입니다.  
# 이는 더 호환성이 좋고 덜 안전하지 않습니다.  
#bind-address           = 127.0.0.1  
[...]  

파일을 저장합니다. 그런 다음 MariaDB의 비밀번호 인증 방법을 기본으로 설정하여 나중에 PHPMyAdmin에 root 사용자로 연결할 수 있도록 합니다:

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

파일 /etc/mysql/debian.cnf를 편집하고 MYSQL / MariaDB 루트 비밀번호를 해당 행에서 두 번 설정합니다.

nano /etc/mysql/debian.cnf

추가해야 할 MySQL 루트 비밀번호는 빨간색으로 표시됩니다. 이 예제에서 비밀번호는 “howtoforge”입니다.

# Debian 스크립트용으로 자동 생성되었습니다. 수정하지 마십시오!  
[client]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
[mysql_upgrade]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
basedir = /usr

Error in accept: Too many open files ‘ 오류를 방지하기 위해 이제 MariaDB에 대해 더 높은 열린 파일 제한을 설정합니다.

편집기로 /etc/security/limits.conf 파일을 엽니다:

nano /etc/security/limits.conf

파일 끝에 다음 줄을 추가합니다.

mysql soft nofile 65535  
mysql hard nofile 65535

그런 다음 mkdir 명령으로 새 디렉토리 /etc/systemd/system/mysql.service.d/를 생성합니다.

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

그 안에 새 파일을 추가합니다:

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

다음 줄을 해당 파일에 붙여넣습니다:

[Service]  
LimitNOFILE=infinity

파일을 저장하고 nano 편집기를 닫습니다.

그런 다음 systemd를 다시 로드하고 MariaDB를 재시작합니다:

systemctl daemon-reload  
systemctl restart mariadb

경고를 무시합니다: “ Warning: The unit file, source configuration file or drop-ins of mariadb.service changed on disk. Run ‘systemctl daemon-reload’ to reload units. “.

dbconfig-common 시스템을 설치합니다:

apt-get install dbconfig-common dbconfig-mysql

현재 Debian dbconfig-common 시스템에 RoundCube 설치를 방해하는 문제가 있으므로 다음 명령을 실행하여 수정합니다:

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

이제 네트워킹이 활성화되어 있는지 확인합니다. 다음 명령을 실행합니다:

netstat -tap | grep mysql

출력은 다음과 같아야 합니다:

root@server1:~# netstat -tap | grep mysql  
tcp6       0      0 [::]:mysql              [::]:*                     LISTEN      4027/mysqld  
root@server1:~#

9 Amavisd-new, SpamAssassin 및 ClamAV 설치

amavisd-new, SpamAssassin 및 ClamAV를 설치하려면 다음 명령을 실행합니다:

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 libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgrey

ISPConfig 3 설정은 amavisd를 사용하여 내부적으로 SpamAssassin 필터 라이브러리를 로드하므로 RAM을 확보하기 위해 SpamAssassin을 중지할 수 있습니다:

systemctl stop spamassassin  
systemctl disable spamassassin

10 Nginx, PHP (PHP-FPM) 및 Fcgiwrap 설치

Nginx는 Debian용 패키지로 제공되며 다음과 같이 설치할 수 있습니다:

apt-get install nginx

시스템에 Apache2가 이미 설치되어 있다면 지금 중지하십시오…

systemctl stop apache2

Failed to stop apache2.service: Unit apache2.service not loaded. “ 메시지는 괜찮으며 오류를 나타내지 않습니다.

… 그리고 Apache의 시스템 시작 링크를 제거합니다:

systemctl disable apache2

그 후 nginx를 시작합니다:

systemctl start nginx

(만약 Apache2와 nginx가 모두 설치되어 있다면, ISPConfig 3 설치 프로그램이 어떤 것을 사용할지 물어볼 것입니다 - 이 경우 nginx라고 대답하십시오. 만약 이 두 개 중 하나만 설치되어 있다면, ISPConfig가 필요한 구성을 자동으로 수행합니다.)

PHP 7.3을 nginx에서 작동하게 하려면 PHP-FPM을 통해 설치합니다( PHP-FPM (FastCGI Process Manager)은 모든 크기의 사이트, 특히 더 바쁜 사이트에 유용한 몇 가지 추가 기능이 있는 대체 PHP FastCGI 구현입니다.) 다음과 같이 설치합니다:

apt-get install php7.3-fpm

PHP-FPM은 /var/run/php/php7.3-fpm.sock 소켓에서 FastCGI 서버를 실행하는 데몬 프로세스입니다.

PHP에서 MySQL 지원을 얻으려면 php7.3-mysql 패키지를 설치할 수 있습니다. 애플리케이션에 필요할 수 있는 다른 PHP 모듈도 설치하는 것이 좋습니다. 다음과 같이 사용 가능한 PHP 모듈을 검색할 수 있습니다:

apt-cache search php7

필요한 모듈을 선택하고 다음과 같이 설치합니다:

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 libruby php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy 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

그런 다음 /etc/php/7.3/fpm/php.ini를 엽니다…

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

… 그리고 cgi.fix_pathinfo=0 및 시간대를 설정합니다:

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

(사용 가능한 모든 시간대는 /usr/share/zoneinfo 디렉토리 및 하위 디렉토리에서 찾을 수 있습니다.)

이제 PHP-FPM을 다시 로드합니다:

systemctl restart php7.3-fpm

nginx에서 CGI 지원을 얻으려면 Fcgiwrap을 설치합니다.

Fcgiwrap은 복잡한 CGI 스크립트에도 작동해야 하며, 각 vhost가 자체 cgi-bin 디렉토리를 사용할 수 있도록 해주기 때문에 공유 호스팅 환경에서도 사용할 수 있습니다.

fcgiwrap 패키지를 설치합니다:

apt-get install fcgiwrap

설치 후 fcgiwrap 데몬이 이미 시작되어 있어야 하며, 소켓은 /var/run/fcgiwrap.socket입니다. 실행되지 않는 경우 fservice fcgiwrap 스크립트를 사용하여 시작할 수 있습니다.

이제 모든 것이 완료되었습니다! 이제 nginx vhost를 생성할 때 ISPConfig가 올바른 vhost 구성을 처리합니다.

10.1 phpMyAdmin 설치

Debian 10부터 PHPMyAdmin은 더 이상 .deb 패키지로 제공되지 않습니다. 따라서 소스에서 설치합니다.

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

/tmp 디렉토리로 이동하여 PHPMyAdmin 소스를 다운로드합니다:

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

다운로드한 아카이브 파일을 압축 해제하고 파일을 /usr/share/phpmyadmin 폴더로 이동한 후 /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

제공된 샘플 파일을 기반으로 PHPMyAdmin을 위한 새 구성 파일을 생성합니다:

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

nano 편집기로 구성 파일을 엽니다:

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

32자 길이의 안전한 비밀번호(블로우피쉬 비밀)를 설정합니다:

$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* COOKIE AUTH를 위해 반드시 입력해야 합니다! */

내 예제 블로우피쉬 비밀을 사용하지 말고, 자신만의 것을 설정하십시오!

그런 다음 PHPMyAdmin이 임시 파일을 저장하는 데 사용할 디렉토리를 설정하는 줄을 추가합니다:

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

다음 단계에서는 phpMyadmin 구성 저장소(데이터베이스)를 구성합니다.

MariaDB에 root 사용자로 로그인합니다:

mysql -u root -p

MariaDB 셸에서 PHPMyAdmin을 위한 새 데이터베이스를 생성합니다:

MariaDB [(none)]> CREATE DATABASE phpmyadmin;

그런 다음 새 사용자를 생성합니다:

MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';

위의 명령과 아래의 명령에서 mypassword를 선택한 안전한 비밀번호로 교체하고 두 번 모두 같은 비밀번호를 사용하십시오. 그런 다음 사용자가 이 데이터베이스에 접근할 수 있도록 권한을 부여하고 데이터베이스 권한을 다시 로드합니다.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;  
MariaDB [(none)]> FLUSH PRIVILEGES;  
MariaDB [(none)]> EXIT

마지막으로 SQL 테이블을 데이터베이스에 로드합니다:

mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

요청 시 MariaDB 루트 비밀번호를 입력합니다.

이제 구성 파일에서 phpmyadmin 사용자 세부정보를 설정하기만 하면 됩니다. 다시 nano 편집기로 파일을 엽니다:

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

아래 줄을 찾을 때까지 스크롤하고 편집합니다:

/* 저장소를 조작하는 데 사용되는 사용자 */  
$cfg['Servers'][$i]['controlhost'] = 'localhost';  
$cfg['Servers'][$i]['controlport'] = '';  
$cfg['Servers'][$i]['controluser'] = 'pma';  
$cfg['Servers'][$i]['controlpass'] = 'mypassword';  
  
/* 저장소 데이터베이스 및 테이블 */  
$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';

편집한 줄은 빨간색으로 표시했습니다. mypassword를 phpmyadmin 사용자에 대해 선택한 비밀번호로 교체하십시오. 또한 줄 앞의 //가 제거된 점에 유의하십시오!

ISPConfig 3.2를 설치한 후에는 다음과 같이 phpMyAdmin에 접근할 수 있습니다:

ISPConfig 앱 vhost는 포트 8081에서 phpMyAdmin 구성을 제공하므로 http://server1.example.com:8081/phpmyadmin 또는 http://server1.example.com:8081/phpMyAdmin을 사용하여 phpMyAdmin에 접근할 수 있습니다.

웹사이트에서 사용할 수 있는 /phpmyadmin 또는 /phpMyAdmin 별칭을 사용하려면 Apache보다 약간 더 복잡합니다. nginx는 전역 별칭(즉, 모든 vhosts에 대해 정의할 수 있는 별칭)을 지원하지 않기 때문입니다. 따라서 phpMyAdmin에 접근하려는 vhost에 대해 이러한 별칭을 정의해야 합니다.

이렇게 하려면 나중에 ISPConfig의 웹사이트 옵션 탭의 nginx 지시어 필드에 다음을 붙여넣습니다:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /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 on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

http s를 vhost에 사용하는 경우 phpMyAdmin 구성에 fastcgi_param HTTPS on; 줄을 다음과 같이 추가해야 합니다:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                       fastcgi_param HTTPS on; # <-- 이 줄을 추가하십시오
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /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 on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

http와 https를 모두 사용하는 경우 $https 변수를 사용할 수 있습니다. 다시 nginx 지시어 필드로 가서 fastcgi_param HTTPS on; 대신 fastcgi_param HTTPS $https; 줄을 추가하여 http 및 https 요청 모두에 대해 phpMyAdmin을 사용할 수 있도록 합니다:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                       fastcgi_param HTTPS $https; # <-- 이 줄을 추가하십시오
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /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 on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

11 Let’s Encrypt 설치

ISPConfig는 이제 acme.sh를 Let’s Encrypt 클라이언트로 사용하고 있습니다. 다음 명령을 사용하여 acme.sh를 설치합니다:

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

12 Mailman 설치

ISPConfig를 사용하면 Mailman 메일링 리스트를 관리(생성/수정/삭제)할 수 있습니다. 이 기능을 사용하려면 다음과 같이 Mailman을 설치합니다:

apt-get install mailman

최소한 하나의 언어를 선택합니다. 예:

지원할 언어: <– en (영어)
누락된 사이트 목록 <– 확인

Mailman을 시작하기 전에 mailman이라는 첫 번째 메일링 리스트를 생성해야 합니다:

newlist mailman

root@server1:~# newlist mailman
메일링 리스트를 운영하는 사람의 이메일을 입력하십시오: <– 관리자 이메일 주소, 예: [email protected]
초기 mailman 비밀번호: <– mailman 리스트의 관리자 비밀번호
메일링 리스트를 생성하려면 /etc/aliases(또는 동등한) 파일을 편집하여 다음 줄을 추가하고, possibly running the newaliases' 프로그램: ## mailman 메일링 리스트 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-leave: "|/var/lib/mailman/mail/mailman leave 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-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" Enter를 눌러 mailman 소유자에게 알립니다... <-- ENTER root@server1:~# 그런 다음 /etc/aliases를 엽니다... ``` nano /etc/aliases ``` ... 그리고 다음 줄을 추가합니다: ``` [...] ## mailman 메일링 리스트 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-leave: "|/var/lib/mailman/mail/mailman leave 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-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" ``` 그 후 다음 명령을 실행합니다: ``` newaliases ``` Postfix를 재시작합니다: ``` systemctl restart postfix ``` 그런 다음 Mailman 데몬을 시작합니다: ``` systemctl restart mailman ``` ISPConfig 3를 설치한 후에는 다음과 같이 Mailman에 접근할 수 있습니다: ISPConfig 앱 vhost는 포트 8081에서 Mailman 구성을 제공하므로 http://server1.example.com:8081/cgi-bin/mailman/admin/ 또는 http://server1.example.com:8081/cgi-bin/mailman/listinfo/를 사용하여 Mailman에 접근할 수 있습니다. 웹사이트에서 Mailman을 사용하려면 Apache보다 약간 더 복잡합니다. nginx는 전역 별칭(즉, 모든 vhosts에 대해 정의할 수 있는 별칭)을 지원하지 않기 때문입니다. 따라서 Mailman에 접근하려는 vhost에 대해 이러한 별칭을 정의해야 합니다. 이렇게 하려면 ISPConfig의 웹사이트 옵션 탭의 nginx 지시어 필드에 다음을 붙여넣습니다: ``` location /cgi-bin/mailman { root /usr/lib/; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$; include /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 on; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /images/mailman { alias /usr/share/images/mailman; } location /pipermail { alias /var/lib/mailman/archives/public; autoindex on; } ``` 이렇게 하면 /cgi-bin/mailman/에 대한 별칭이 정의되어, http:///cgi-bin/mailman/admin/에서 메일링 리스트의 관리 인터페이스에 접근할 수 있으며, 메일링 리스트 사용자에 대한 웹 페이지는 http:///cgi-bin/mailman/listinfo/에서 찾을 수 있습니다. http:///pipermail에서 메일링 리스트 아카이브를 찾을 수 있습니다. ## 13 PureFTPd 및 Quota 설치 PureFTPd 및 quota는 다음 명령으로 설치할 수 있습니다: ``` apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool ``` /etc/default/pure-ftpd-common 파일을 편집합니다... ``` nano /etc/default/pure-ftpd-common ``` ... 그리고 시작 모드가 standalone로 설정되어 있고 VIRTUALCHROOT=true로 설정되어 있는지 확인합니다: ``` [...] STANDALONE_OR_INETD=standalone [...] VIRTUALCHROOT=true [...] ``` 이제 PureFTPd를 구성하여 FTP 및 TLS 세션을 허용합니다. FTP는 모든 비밀번호와 모든 데이터가 일반 텍스트로 전송되기 때문에 매우 안전하지 않은 프로토콜입니다. TLS를 사용하면 전체 통신을 암호화할 수 있어 FTP를 훨씬 더 안전하게 만들 수 있습니다. FTP 및 TLS 세션을 허용하려면 다음 명령을 실행합니다: ``` echo 1 > /etc/pure-ftpd/conf/TLS ``` TLS를 사용하려면 SSL 인증서를 생성해야 합니다. /etc/ssl/private/에 생성하므로 먼저 해당 디렉토리를 생성합니다: ``` mkdir -p /etc/ssl/private/ ``` 그런 다음 다음과 같이 SSL 인증서를 생성합니다: ``` openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem ``` 국가 이름 (2자리 코드) [AU]: <-- 국가 이름 입력 (예: "DE"). 주 또는 지방 이름 (전체 이름) [Some-State]: <-- 주 또는 지방 이름 입력. 지역 이름 (예: 도시) []: <-- 도시 입력. 조직 이름 (예: 회사) [Internet Widgits Pty Ltd]: <-- 조직 이름 입력 (예: 회사 이름). 조직 단위 이름 (예: 섹션) []: <-- 엔터를 눌러 건너뜁니다. 공통 이름 (예: 서버 FQDN 또는 귀하의 이름) []: <-- 시스템의 완전한 도메인 이름 입력 (예: "server1.example.com"). 이메일 주소 []: <-- 이메일 주소 입력. SSL 인증서의 권한을 변경합니다: ``` chmod 600 /etc/ssl/private/pure-ftpd.pem ``` 그런 다음 PureFTPd를 재시작합니다: ``` systemctl restart pure-ftpd-mysql ``` /etc/fstab을 편집합니다. 내 fstab은 다음과 같습니다 (나는 /의 마운트 포인트가 있는 파티션에 usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0를 추가했습니다): ``` nano /etc/fstab ``` ``` # /etc/fstab: 정적 파일 시스템 정보. # # 'blkid'를 사용하여 장치의 고유 식별자를 인쇄합니다. # 이는 UUID=와 함께 사용할 수 있는 더 강력한 방법입니다. # 장치가 추가되거나 제거되더라도 작동합니다. fstab(5)을 참조하십시오. # # <파일 시스템> <마운트 지점> <유형> <옵션> <덤프> <패스> # /는 설치 중 /dev/sda1에 있었습니다. UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1 # 스왑은 설치 중 /dev/sda5에 있었습니다. UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 ``` 쿼터를 활성화하려면 다음 명령을 실행합니다: ``` mount -o remount / ``` ``` quotacheck -avugm quotaon -avug ``` ## 14 BIND DNS 서버 설치 BIND는 다음과 같이 설치할 수 있습니다: ``` apt-get install bind9 dnsutils ``` 서버가 가상 머신인 경우 DNSSEC 서명을 위한 더 높은 엔트로피를 얻기 위해 haveged 데몬을 설치하는 것이 강력히 권장됩니다. 비가상 서버에서도 haveged를 설치할 수 있으며, 해가 되지 않습니다. ``` apt-get -y install haveged systemctl enable haveged systemctl start haveged ``` 이 주제에 대한 설명은 여기에서 찾을 수 있습니다. ## 15 Webalizer, AWStats 및 GoAccess 설치 Webalizer 및 AWStats는 다음과 같이 설치할 수 있습니다: ``` apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perl ``` 그 후 /etc/cron.d/awstats를 엽니다... ``` nano /etc/cron.d/awstats ``` ... 그리고 해당 파일의 모든 내용을 주석 처리합니다: ``` #MAILTO=root #*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh # 정적 보고서 생성: #10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh ``` GoAccess의 최신 버전을 GoAccess 리포지토리에서 직접 설치합니다: ``` 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 Jailkit 설치 Jailkit은 SSH 사용자를 chroot하려는 경우에만 필요합니다. 다음과 같이 설치할 수 있습니다(중요: Jailkit은 ISPConfig 이전에 설치되어야 하며, 이후에는 설치할 수 없습니다!): ``` 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 ``` 이제 Jailkit.deb 패키지를 다음과 같이 설치할 수 있습니다: ``` cd .. dpkg -i jailkit_2.20-1_*.deb rm -rf jailkit-2.20* ``` ## 17 Fail2ban 및 UFW 방화벽 설치 이는 선택 사항이지만 권장됩니다. ISPConfig 모니터가 로그를 표시하려고 시도하기 때문입니다: ``` apt-get install fail2ban ``` Fail2ban이 PureFTPd 및 Dovecot을 모니터링하도록 하려면 /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 ``` 그 후 fail2ban을 재시작합니다: ``` systemctl restart fail2ban ``` UFW 방화벽을 설치하려면 다음 apt 명령을 실행합니다: ``` apt-get install ufw ``` ## 18 RoundCube 설치 다음 명령으로 RoundCube를 설치합니다: ``` apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins ``` 설치 프로그램이 다음 질문을 합니다: ``` database를 roundcube와 함께 dbconfig.common으로 구성하시겠습니까? <-- 예 RoundCube의 MySQL 애플리케이션 비밀번호: <-- 엔터를 누르십시오 데이터베이스 관리 사용자의 비밀번호: <-- 여기에서 MySQL 루트 비밀번호를 입력하십시오. ``` 그런 다음 RoundCube /etc/roundcube/config.inc.php 파일을 편집하고 몇 가지 설정을 조정합니다: ``` nano /etc/roundcube/config.inc.php ``` 기본 호스트를 localhost로 설정하고 smtp_server를 설정합니다. ``` $config['default_host'] = 'localhost'; $config['smtp_server'] = 'localhost'; $config['smtp_port'] = 25; ``` ISPConfig는 squirrelmail에 대한 nginx 앱 vhost에 일부 구성이 있으며, 이는 roundcube에도 작동합니다. 이를 활성화하려면: ``` ln -s /usr/share/roundcube /usr/share/squirrelmail ``` http://192.168.0.100:8081/webmail http://server1.example.com:8081/webmail (ISPConfig를 설치한 후, 다음 장을 참조하십시오) ![Roundcube on Nginx](/files/5ca3bfd9-890e-4090-a1d4-a323df22e920.png) ## 19 ISPConfig 3 설치 ISPConfig 설치를 시작하기 전에 Apache가 중지되었는지 확인하십시오(설치된 경우 - 일부 설치된 패키지가 Apache를 종속성으로 설치했을 수 있습니다). 시스템에 Apache2가 이미 설치되어 있다면 지금 중지하십시오... ``` systemctl stop apache2 ``` ... 그리고 Apache의 시스템 시작 링크를 제거합니다: ``` update-rc.d -f apache2 remove ``` nginx가 실행 중인지 확인하십시오: ``` systemctl start nginx ``` (만약 Apache와 nginx가 모두 설치되어 있다면, 설치 프로그램이 어떤 것을 사용할지 물어봅니다: Apache와 nginx가 감지되었습니다. ISPConfig에 사용할 서버를 선택하십시오: (apache,nginx) [apache]: nginx를 입력하십시오. Apache 또는 nginx 중 하나만 설치되어 있다면, 설치 프로그램이 자동으로 감지하고 질문하지 않습니다.) 최신 릴리스 버전의 ISPConfig 3.2를 설치하려면 다음과 같이 합니다: ``` cd /tmp wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz tar xfz ISPConfig-3-stable.tar.gz cd ispconfig3_install/install/ ``` 다음 단계는 ``` php -q install.php ``` 를 실행하는 것입니다. 이렇게 하면 ISPConfig 3 설치 프로그램이 시작됩니다. 설치 프로그램이 Postfix, Nginx, Dovecot 등과 같은 모든 서비스를 자동으로 구성합니다. ``` # php -q install.php ``` ``` -------------------------------------------------------------------------------- _____ ___________ _____ __ _ ____ |_ _/ ___| ___ \ / __ \ / _(_) /__ \ | | \–.| |/ / | / \/ __ __ | | __ / /
| | `–. \ __/ | | /
\| ‘ \| | |/ ` | | |
| |_/ / | | __/\ () | | | | | | | (| | __\ \
_/__/_| _/\/|| ||| |_, | __/ / |
|__
/


초기 구성

운영 체제: Debian 10.0 (Buster) 또는 호환 가능

다음은 기본 구성을 위한 몇 가지 질문이 있을 것입니다.
기본값은 [대괄호]에 있으며 로 수락할 수 있습니다.
“quit”(따옴표 없이)를 입력하면 설치 프로그램이 중지됩니다.

언어 선택 (en,de) [en]: <– 엔터를 누르십시오

설치 모드 (standard,expert) [standard]: <– 엔터를 누르십시오

서버의 전체 자격 호스트 이름 (FQDN), 예: server1.domain.tld [server1.canomi.com]: <– 엔터를 누르십시오

MySQL 서버 호스트 이름 [localhost]: <– 엔터를 누르십시오

MySQL 서버 포트 [3306]: <– 엔터를 누르십시오

MySQL 루트 사용자 이름 [root]: <– 엔터를 누르십시오

MySQL 루트 비밀번호 []: <– MySQL 루트 비밀번호를 입력하십시오

생성할 MySQL 데이터베이스 [dbispconfig]: <– 엔터를 누르십시오

MySQL 문자 집합 [utf8]: <– 엔터를 누르십시오

Apache와 nginx가 감지되었습니다. ISPConfig에 사용할 서버를 선택하십시오: (apache,nginx) [apache]: <– nginx

Postgrey 구성
Postfix 구성
4096 비트 RSA 개인 키 생성
……………………………………………………………..++
……………………………………………………………………………………………………………………….++
‘smtpd.key’에 새 개인 키를 작성하는 중입니다.

—–
인증서 요청에 통합될 정보를 입력해야 합니다.
입력하는 내용은 ‘구별 이름’ 또는 DN이라고 합니다.
몇 가지 필드가 있지만 일부는 비워둘 수 있습니다.
일부 필드에는 기본값이 있습니다.
‘.’를 입력하면 필드가 비워집니다.

—–
국가 이름 (2자리 코드) [AU]: <– 2자리 국가 코드를 입력하십시오
주 또는 지방 이름 (전체 이름) [Some-State]: <– 주 이름을 입력하십시오
지역 이름 (예: 도시) []: <– 도시를 입력하십시오
조직 이름 (예: 회사) [Internet Widgits Pty Ltd]: <– 회사 이름을 입력하거나 엔터를 누르십시오
조직 단위 이름 (예: 섹션) []: <– 엔터를 누르십시오
공통 이름 (예: 서버 FQDN 또는 귀하의 이름) []: <– 서버 호스트 이름을 입력하십시오. 내 경우: server1.example.com
이메일 주소 []: <– 엔터를 누르십시오

메일링 리스트 구성
Dovecot 구성
Spamassassin 구성
Amavisd 구성
Getmail 구성
BIND 구성
Jailkit 구성
Pureftpd 구성
Nginx 구성
vlogger 구성
[정보] 서비스 Metronome XMPP 서버가 감지되지 않았습니다

UFW 방화벽 구성
Fail2ban 구성
[정보] 서비스 OpenVZ가 감지되지 않았습니다
앱 vhost 구성
ISPConfig 설치
ISPConfig 포트 [8080]:

관리자 비밀번호 [admin]: <– 원하는 ISPConfig 관리자 사용자 비밀번호를 입력하십시오

ISPConfig 웹 인터페이스에 대한 보안(SSL) 연결을 원하십니까 (y,n) [y]: <– 엔터를 누르십시오

4096 비트 길이의 RSA 개인 키 생성
…………………..++
………………………………………………………………………………………………………………..++
e는 65537 (0x10001)입니다.
인증서 요청에 통합될 정보를 입력해야 합니다.
입력하는 내용은 ‘구별 이름’ 또는 DN이라고 합니다.
몇 가지 필드가 있지만 일부는 비워둘 수 있습니다.
일부 필드에는 기본값이 있습니다.
‘.’를 입력하면 필드가 비워집니다.

—–
국가 이름 (2자리 코드) [AU]: <– 2자리 국가 코드를 입력하십시오
주 또는 지방 이름 (전체 이름) [Some-State]: <– 주 이름을 입력하십시오
지역 이름 (예: 도시) []: <– 도시를 입력하십시오
조직 이름 (예: 회사) [Internet Widgits Pty Ltd]: <– 회사 이름을 입력하거나 엔터를 누르십시오
조직 단위 이름 (예: 섹션) []: <– 엔터를 누르십시오
공통 이름 (예: 서버 FQDN 또는 귀하의 이름) []: <– 서버 호스트 이름을 입력하십시오. 내 경우: server1.example.com
이메일 주소 []: <– 엔터를 누르십시오

다음 ‘추가‘ 속성을 입력하십시오
인증서 요청과 함께 전송됩니다
도전 비밀번호 []: <– 엔터를 누르십시오
선택적 회사 이름 []: <– 엔터를 누르십시오
RSA 키 작성 중

DBServer 구성
ISPConfig crontab 설치
root에 대한 crontab 없음
getmail에 대한 crontab 없음
IP 주소 감지
서비스를 재시작하는 중 …
설치 완료.


설치 프로그램은 모든 기본 서비스를 자동으로 구성하므로 수동 구성은 필요하지 않습니다.

그 후 http(s)://server1.example.com:8080/ 또는 http(s)://192.168.1.100:8080/에서 ISPConfig 3에 접근할 수 있습니다( http 또는 https는 설치 중에 선택한 것에 따라 다릅니다). 사용자 이름 admin과 비밀번호 admin으로 로그인하십시오(첫 로그인 후 기본 비밀번호를 변경해야 합니다):

![ISPConfig 로그인 페이지](/files/85463c68-29fa-4e9c-8439-5b968109a6a9.png)

![Debian 10의 ISPConfig 대시보드](/files/db4db368-1147-4ced-b543-09a4945acfaf.png)

마지막으로 RoundCube 설치의 일부 권한을 수정합니다.

chown root:ispapps /etc/roundcube/debian-db.php chmod 640 /etc/roundcube/debian-db.php chown root:ispapps /etc/roundcube/config.inc.php chmod 640 /etc/roundcube/config.inc.php chown -R ispapps:adm /var/log/roundcube chmod -R 750 /var/log/roundcube chown -R ispapps:ispapps /var/lib/roundcube/temp chmod -R 750 /var/lib/roundcube/temp


시스템이 이제 사용 준비가 완료되었습니다.

ISPConfig와 RoundCube 웹메일을 통합하기 위한 몇 가지 플러그인이 존재합니다. ISPConfig RoundCube 플러그인 설치 지침을 확인하십시오.

## 20.1 ISPConfig 3 매뉴얼

ISPConfig 3 사용 방법을 배우기 위해 ISPConfig 3 매뉴얼을 다운로드하는 것을 강력히 권장합니다.

300페이지 이상에 걸쳐 ISPConfig의 개념(관리자, 재판매자, 클라이언트)을 다루고, ISPConfig 3 설치 및 업데이트 방법을 설명하며, ISPConfig의 모든 양식 및 양식 필드에 대한 참조와 유효한 입력 예제를 포함하고, ISPConfig 3에서 가장 일반적인 작업에 대한 튜토리얼을 제공합니다. 또한 서버를 더 안전하게 만드는 방법을 설명하고 마지막에 문제 해결 섹션이 포함되어 있습니다.

## 21 이 튜토리얼의 가상 머신 이미지 다운로드

이 튜토리얼은 VMWare 및 Virtualbox와 호환되는 ovf/ova 형식의 즉시 사용 가능한 가상 머신 이미지로 제공됩니다. 가상 머신 이미지는 다음 로그인 세부정보를 사용합니다:

SSH / 셸 로그인

사용자 이름: administrator  
비밀번호: howtoforge

사용자 이름: root  
비밀번호: howtoforge

ISPConfig 로그인

사용자 이름: admin  
비밀번호: howtoforge

MySQL 로그인

사용자 이름: root  
비밀번호: howtoforge

VM의 IP는 192.168.0.100이며, /etc/network/interfaces 파일에서 변경할 수 있습니다. 위의 모든 비밀번호를 변경하여 가상 머신을 보호하십시오.

## 22 링크

- Debian: http://www.debian.org/  
- ISPConfig: http://www.ispconfig.org/
Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.