웹사이트 검색

Debian 11에 Nextcloud를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 데비안 11(불스아이)
  • 데비안 9(스트레치)

이 페이지에서

  1. 전제 조건
  2. 루트 가져오기 및 리포지토리 업데이트
  3. Apache 웹 서버 설치
  4. PHP 설치 및 구성
  5. MariaDB 설치 및 구성
  6. Nextcloud용 데이터베이스 및 사용자 생성
  7. Nextcloud 소스 코드 다운로드
  8. SSL Letsencrypt 생성
  9. Nextcloud용 Apache 가상 호스트 설정\n
  10. 넥스트클라우드 설치
  11. Nextcloud 성능 튜닝
  12. 결론

Nextcloud는 공용 및 개인 파일 저장소를 만들기 위한 오픈 소스 소프트웨어입니다. Dropbox, Google Drive 또는 Mega.nz와 같은 자체 호스팅 서비스를 만들 수 있습니다. 원래는 원래 owncloud 개발자인 Frank Karlitschek이 만들었습니다. 2016년에 그는 Owncloud 프로젝트를 분기하고 "Nextcloud"라는 새 이름으로 새 프로젝트를 만듭니다.

이때까지 Nextcloud 프로젝트는 빠르게 성장하고 파일 호스팅 소프트웨어 이상으로 파일 동기화 및 콘텐츠 협업 플랫폼과 비슷해졌습니다. 많은 플러그인으로 지원되는 Nextcloud는 강력한 협업 소프트웨어가 됩니다. 프로젝트 관리, 화상 회의, 공동 편집, 메모 작성, 이메일 클라이언트 등을 위한 플러그인을 설치할 수 있습니다.

이 가이드에서는 최신 Debian 11 Bullseye에 Nextcloud를 설치하는 방법을 배웁니다. LAMP 스택(Linux, Apache2/httpd, MySQL/MariaDB 및 PHP) 아래에 Nextcloud를 설치하게 됩니다.

전제 조건

  • Debian 11 서버. 모든 패키지가 최신 버전으로 업데이트되었는지 확인하십시오.\n
  • 루트 사용자 또는 루트 권한이 있는 사용자. 이 사용자는 새 패키지를 설치하고 시스템 구성을 편집하는 데 사용됩니다.\n

루트 가져오기 및 리포지토리 업데이트

먼저 다음 명령을 실행하여 루트 권한을 얻습니다.

1. sudo가 설치되어 있으면 아래의 sudo 명령을 실행합니다.

sudo su

이제 사용자의 비밀번호 로그인을 입력하십시오.

2. sudo 패키지가 없으면 아래와 같이 su 명령을 실행합니다.

su

이제 루트 비밀번호를 입력하고 Enter를 누르십시오.

3. 그런 다음 아래의 apt 명령을 사용하여 모든 Debian 리포지토리를 업데이트합니다.

apt update

아파치 웹 서버 설치

Debian 리포지토리를 업데이트한 후 Apache 웹 서버를 설치하고 Nextcloud용 일부 Apache 모듈을 활성화합니다.

1. 아래의 apt 명령을 실행하여 apache 웹 서버를 설치합니다.

apt install apache2

y를 입력하고 Enter를 눌러 설치를 계속하십시오.

2. 설치가 완료되면 다음 명령을 사용하여 apache 서비스를 확인합니다.

systemctl is-enabled apache2
systemctl status apache2

활성화된 출력이 표시됩니다. 즉, 시스템 시작 시 Apache 서비스가 자동으로 시작됩니다. 그리고 Apache 서비스의 현재 상태인 활성(실행 중)입니다.

3. 다음으로 아래의 a2enmod 명령을 실행하여 Apache 모듈 SSL, 재작성 및 헤더를 활성화합니다.

a2enmod ssl rewrite headers

아래는 얻을 수 있는 결과입니다.

4. 그런 다음 다음 명령을 실행하여 Apache 서비스를 다시 시작합니다.

systemctl restart apache2

새로운 apache 모듈이 적용됩니다. 아래 apachectl 명령을 사용하여 해당 모듈을 확인하십시오.

apachectl -M | egrep "ssl|rewrite|headers"

아래와 비슷한 출력이 표시됩니다.

PHP 설치 및 구성

이 가이드에서는 안정적인 최신 버전의 PHP 8.0을 사용하여 Nextcloud를 배포합니다.

기본적으로 Debian 저장소는 PHP 8.0용 패키지를 제공합니다. 그러나 Nextcloud에는 타사 리포지토리에서 설치할 수 있는 몇 가지 추가 PHP 패키지가 필요합니다. 그리고 Debian 시스템에 새 저장소를 추가하게 됩니다.

1. 아래 명령을 실행하여 Debian 시스템용 PHP 리포지토리를 추가합니다.

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main"\
| sudo tee /etc/apt/sources.list.d/sury-php.list

GPG 키를 /etc/apt/trusted.gpg.d 디렉토리에 다운로드합니다.

curl -o /etc/apt/trusted.gpg.d/sury-php8.gpg https://packages.sury.org/php/apt.gpg

이제 apt update 명령을 다시 실행하여 모든 저장소를 업데이트하십시오.

apt update

2. 아래의 apt 명령을 사용하여 Nextcloud용 PHP 패키지 및 추가 PHP 모듈을 설치합니다.

apt install -y php php-curl php-cli php-mysql php-gd php-common php-xml php-json php-intl php-pear php-imagick php-dev php-common php-mbstring php-zip php-soap php-bz2 php-bcmath php-gmp php-apcu

그런 다음 apt 명령을 다시 실행하여 일부 추가 패키지를 설치하십시오.

apt install -y libmagickcore-dev

libmagickcore-dev 패키지는 Nextcloud에서 SVG 이미지 처리를 위해 php-imagick에 필요합니다.

3. 모든 패키지 설치가 완료되면 작업 디렉토리를 /etc/php/8.0/apache2로 변경하고 nano를 사용하여 구성 php.ini를 편집합니다.

cd /etc/php/8.0/apache2/
nano php.ini

기본 nextcloud 배포의 경우 다음 구성을 사용하여 기본 옵션을 변경합니다.

file_uploads = On
allow_url_fopen = On
memory_limit = 512M
upload_max_filesize = 500M
post_max_size = 600M
max_execution_time = 300
display_errors = Off
date.timezone = Europe/Amsterdam
output_buffering = Off

opcache 확장을 로드하려면 zend_extension=opcache 옵션의 주석을 제거하십시오.

zend_extension=opcache

[opcache] 섹션으로 이동하여 다음 구성을 추가합니다.

[opcache]
...
....
.....
opcache.enable = 1
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 1

Ctrl+x 버튼을 눌러 구성을 저장하고 y를 입력한 다음 Enter 키를 눌러 종료합니다.

4. 이제 아파치 서비스를 다시 시작하여 아래 명령을 사용하여 새 변경 사항을 적용합니다.

systemctl restart apache2

MariaDB 설치 및 구성

이 단계에서는 mariadb 데이터베이스 서버를 설치하고 mariadb 배포를 보호하며 Nextcloud에 대한 새 데이터베이스 및 사용자를 만듭니다.

1. mariadb 데이터베이스 서버를 설치하려면 아래 명령을 실행하십시오.

apt install mariadb-server mariadb-client

y를 입력하여 mariadb 패키지를 확인하고 설치합니다.

2. 설치가 완료되면 다음 명령을 사용하여 mariadb 서비스를 확인합니다.

systemctl is-enabled mariadb
systemctl status mariadb

mariadb 서비스가 활성화되어 실행 중이며 시스템 시작 시 자동으로 시작되도록 활성화되어 있습니다.

3. 다음으로 mariadb의 루트 암호를 설정하고 일부 기본 구성을 제거하여 mariadb 배포를 보호해야 합니다. 이를 위해 기본 mariadb 설치에 포함된 명령줄 도구 mysql_secure_installation을 사용할 수 있습니다.

아래의 "mysql_secure_installation" 명령을 실행합니다.

mysql_secure_installation

처음에는 mariadb 루트 비밀번호를 입력하라는 메시지가 표시됩니다. 계속하려면 Enter 키를 누르십시오.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

사용자 root에 대한 unix_socket 인증을 활성화하려면 Y를 입력합니다.

Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
 ... Success!

강력한 mariadb 루트 암호를 입력하고 반복한 다음 "Enter"를 눌러 계속하십시오.

Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

이제 "Y"를 입력하고 "Enter"를 눌러 mariadb 서버에서 기본 익명 사용자를 제거합니다.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

그런 다음 기본 사용자 루트에 대한 원격 로그인을 비활성화합니다. 계속하려면 "Y"를 입력하고 "Enter"를 누르십시오.

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

"Y"를 다시 입력하여 기본 데이터베이스 "test"를 제거하고 "Enter"를 누르십시오.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

마지막으로 "Y"를 다시 입력하면 모든 테이블 권한을 다시 로드하여 새 구성을 적용할 수 있습니다.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

이제 프로세스가 완료되었으며 다음 출력이 표시됩니다.

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Nextcloud용 데이터베이스 및 사용자 생성

1. 아래의 mysql 명령을 사용하여 mariadb 셸에 로그인합니다.

mysql -u root -p

2. 이제 다음 mysql 쿼리를 실행하여 새 데이터베이스 "nextcloud_db"를 만듭니다.

CREATE DATABASE nextcloud_db;

3. 다음 쿼리를 실행하여 새 데이터베이스 사용자 "nextclouduser"를 생성합니다. 강력한 비밀번호로 "strongpassword"를 변경하십시오.

CREATE USER  IDENTIFIED BY 'StrongPassword';

4. "nextclouduser" 사용자가 다음 쿼리를 사용하여 "nextcloud_db"에 액세스하고 쓸 수 있도록 허용합니다.

GRANT ALL PRIVILEGES ON nextcloud_db.* TO ;

5. 이제 모든 테이블 권한을 다시 로드하여 새 데이터베이스 구성을 적용합니다.

FLUSH PRIVILEGES;

그런 다음 "quit"를 입력하고 "Enter"를 눌러 mariadb 셸을 종료할 수 있습니다.

Nextcloud 소스 코드 다운로드

1. 작업 디렉토리를 "/var/www"로 변경하고 아래와 같이 wget 명령을 사용하여 최신 버전의 Nextcloud 소스 코드를 다운로드합니다.

cd /var/www/
curl -o nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-22.1.1.zip

2. 이제 다음 명령을 사용하여 압축 해제 패키지를 설치합니다.

apt install unzip

3. 다음으로 Nextcloud 소스 코드 "nextcloud.zip"을 추출하면 새 디렉터리 "nextcloud"가 생성되고 "nextcloud" 디렉터리의 소유자를 "www-data" 사용자로 변경합니다. .

unzip nextcloud-22.1.0.zip
chown -R www-data:www-data nextcloud

이제 SSL Letsencrypt를 생성하고 Nextcloud용 아파치 가상 호스트를 구성할 준비가 되었습니다.

SSL Letsencrypt 생성

이 단계에서는 certbot 도구를 설치하고 Nextcloud 설치를 위한 SSL 인증서를 생성합니다. webroot 플러그인으로 SSL Letsencrypts를 생성하게 됩니다.

1. 다음 명령을 실행하여 SSL Letsencrypt 생성을 위한 certbot 도구를 설치합니다.

apt install certbot

y를 입력하고 Enter를 눌러 설치를 계속하십시오.

2. 설치가 완료되면 다음 명령을 사용하여 letsencrypt 인증을 위한 새 디렉토리를 생성합니다.

mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt

3. 다음으로 작업 디렉토리를 "/etc/apache2/conf-available/"로 변경하고 nano를 사용하여 새 구성 "well-known.conf"를 만듭니다.

cd /etc/apache2/conf-available/
nano well-known.conf

다음 구성을 복사하여 붙여넣습니다.

Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

"Ctrl+x"를 누르고 "y"를 입력한 다음 Enter 키를 눌러 구성을 저장하고 종료합니다.

이제 아래의 ln 명령을 사용하여 conf-enabled 디렉토리에 대한 well-known.conf 파일의 심볼릭 링크를 생성하여 새 구성을 활성화합니다.

ln -s /etc/apache2/conf-available/well-known.conf /etc/apache2/conf-enabled/

4. 이제 다음 명령을 실행하여 Apache 구성을 확인하고 Apache 서비스를 다시 시작합니다.

apachectl configtest
systemctl restart apache2

오류가 없으면 webroot 플러그인으로 SSL Letsencrypt를 생성할 준비가 된 것입니다.

5. SSL Letsencrypt를 생성하기 전에 도메인 이름이 서버 IP 주소로 확인되는지 확인하십시오. 그런 다음 아래 certbot 명령을 실행하여 webroot 플러그인으로 SSL Letsencrypt를 생성할 수 있습니다. 또한 이메일 주소와 도메인 이름을 자신의 것으로 변경하십시오.

sudo certbot certonly --agree-tos --email  --webroot -w /var/lib/letsencrypt/ -d files.domain-name.io

프로세스가 완료되면 "/etc/letsencrypt/live/files.domain-name.io/" 디렉터리에서 SSL 인증서를 사용할 수 있습니다.

Nextcloud용 Apache 가상 호스트 설정

이 단계에서는 Nextcloud에 대한 새로운 apache/httpd 가상 호스트 구성을 추가합니다.

1. 작업 디렉터리를 "/etc/apache2/sites-available/"로 변경하고 nano를 사용하여 새 구성 "nextcloud.conf"를 만듭니다.

cd /etc/apache2/sites-available/
nano nextcloud.conf

세부 도메인 이름과 SSL 경로 디렉터리를 자신의 것으로 변경하고 구성을 "nextcloud.conf" 파일에 붙여넣습니다.

<VirtualHost *:80>
    ServerName files.domain-name.io
    ServerAlias www.files.domain-name.io

    # auto redirect HTTP to HTTPS
    Redirect permanent / https://files.domain-name.io/
</VirtualHost>

<VirtualHost *:443>
    ServerName files.domain-name.io
    ServerAlias www.files.domain-name.io
 
    DocumentRoot /var/www/nextcloud/

    Protocols h2 http/1.1

    # auto redirect www to non-www
    <If "%{HTTP_HOST} == 'www.files.domain-name.io'">
        Redirect permanent / https://files.domain-name.io/
    </If>

    # log files
    ErrorLog /var/log/apache2/files.domain-name.io-error.log
    CustomLog /var/log/apache2/files.domain-name.io-access.log combined

    SSLEngine On
    SSLCertificateFile /etc/letsencrypt/live/files.domain-name.io/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/files.domain-name.io/privkey.pem

    # HSTS
    <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>

    <Directory /var/www/nextcloud/>
        Options +FollowSymlinks
        AllowOverride All

        <IfModule mod_dav.c>
            Dav off
        </IfModule>

        SetEnv HOME /var/www/nextcloud
        SetEnv HTTP_HOME /var/www/nextcloud
    </Directory>
</VirtualHost>

"Ctrl+x"를 누르고 "Y"를 입력한 다음 Enter 키를 눌러 구성을 저장하고 종료합니다.

2. 이제 다음 명령을 실행하여 nextcloud.conf 가상 호스트 구성을 활성화합니다.

a2ensite nextcloud.conf

3. 이제 새 Apache 구성을 확인하고 오류가 없는지 확인한 다음 Apache 서비스를 다시 시작하십시오.

apachectl configtest
systemctl restart apache2

넥스트클라우드 설치

모든 관련 서버 구성이 완료되면 웹 브라우저를 사용하여 Nextcloud 설치에 액세스할 수 있습니다.

1. 웹 브라우저를 열고 Nextcloud 설치의 URL 주소를 입력합니다.

https://files.domain-name.io

Nextcloud에 대한 첫 번째 및 관리 사용자를 만들고 데이터 디렉터리는 사용자 www-data가 쓸 수 있습니다.

2. 페이지를 맨 아래로 스크롤하고 세부 정보 데이터베이스 이름, 사용자 및 암호를 입력합니다. 권장 앱 설치 옵션의 경우 선택을 취소하면 설치 속도가 빨라집니다. 그런 다음 설치 완료 버튼을 클릭하여 Nextcloud를 설치합니다.

3. 설치에 성공하면 아래와 같이 Nextcloud 대시보드가 나타납니다.

4. 이제 오른쪽 상단의 사용자 아이콘을 클릭하고 설정 메뉴를 클릭합니다. 관리 섹션에서 개요를 클릭합니다.

  • 보안 및 설정 경고 섹션에서 설치 환경에 따라 수행해야 할 몇 가지 권장 사항이 표시됩니다.\n
  • 버전 섹션에서 Nextcloud 설치의 현재 분기를 볼 수 있습니다.\n

5. 그런 다음 관리 섹션 하단의 시스템 메뉴를 클릭합니다.

환경, 시스템 로드, 디스크 공간 상태, 메모리 상태, 네트워크 상태 등의 세부 정보가 표시됩니다.

6. 이전에 말했듯이 넥스트 클라우드는 단순한 파일 동기화 이상이 되었습니다. 추가 앱/플러그인 지원으로 협업 슈트가 됩니다.

프로필 아이콘 우측 상단에서 앱 메뉴를 클릭하면 아래와 같이 다음 클라우드 앱 스토어가 보입니다.

설치하려는 앱을 선택한 다음 다운로드 버튼을 클릭하고 새 앱을 설치하도록 활성화합니다.

7. 다음은 Nextcloud 사용자 대시보드의 기본 보기입니다. 추가 플러그인을 설치하여 대시보드의 기능을 확장할 수 있습니다.

Nextcloud 성능 조정

Nextcloud를 설치한 후 로컬 메모리 캐시를 활성화하고 Nextcloud 자체에 대한 cronjob을 설정하여 Nextcloud 성능을 향상시키기 위해 몇 가지 단계를 더 수행할 수 있습니다.

1. 상단의 PHP 설치 섹션에서 캐싱을 위한 PHP를 이미 설정했습니다. Nextcloud에서 캐싱을 활성화하려면 Nextcloud 구성 "config.php"를 편집하십시오.

작업 디렉토리를 "/var/www/nextcloud/config"로 변경하고 nano 편집기를 사용하여 "config.php" 구성을 편집합니다.

cd /var/www/nextcloud/config/
nano config.php

배열 내부에 다음 구성을 추가합니다( .. ). 아래와 같이 브래킷

<?php
$CONFIG = array (
....
  # Additional configuration
  'memcache.local' => '\OC\Memcache\APCu',
);

이제 "Ctrl+x" 버튼을 누르고 "y"를 입력한 다음 Enter 키를 눌러 구성을 저장하고 종료합니다.

2. Nextcloud 시스템은 사용자/관리자 상호 작용 없이 정기적으로 일부 백그라운드 작업을 실행해야 합니다. 이를 위해 작업 스케줄러 Nextcloud 작업에 cronjob을 사용할 수 있습니다.

Debian Linux 시스템에서 기본 Apache 설치는 "www-data" 사용자로 실행됩니다. 아래 명령을 사용하여 사용자 "www-data"에 대한 새 cronjob을 만듭니다.

crontab -u www-data -e

시스템에 여러 편집기가 있는 경우 편안한 사용으로 편집기를 선택하십시오. 이 가이드에서는 나노 편집기를 사용합니다.

다음 구성을 추가합니다.

*/5  *  *  *  * php -f /var/www/nextcloud/cron.php

구성을 저장하고 종료합니다.

알아야 할 Cronjob 구성:

  • 이 cronjob 구성을 통해 "www-data" 사용자는 PHP 스크립트 "/var/www/nextcloud/cron.php"를 5분마다 실행할 수 있습니다.\n

cronjob 구성을 확인하려면 다음 명령을 실행할 수 있습니다.

crontab -u www-data -l

구성이 성공하면 구성이 출력으로 표시됩니다. 그렇지 않으면 빈 결과를 얻게 됩니다.

결론

축하합니다! Debian 11 Bullseye에 Nextcloud를 성공적으로 설치했습니다. Nextcloud 서버는 SSL이 활성화된 LAMP 스택에서 실행됩니다. 또한 Nextcloud 설치는 PHP APC 및 opcache 확장으로 활성화된 메모리 캐싱으로 실행됩니다.