Anonim

클라우드 저장소는 문제가 발생하거나 컴퓨터를 잃어 버리거나 손상된 경우 파일을 안전하게 보관할 수있는 훌륭한 방법입니다. 이동 중에 또는 직장에서 파일에 액세스 할 수 있으며 모든 장치에서 모든 항목을 동기화 된 상태로 유지할 수 있습니다.

그러나 클라우드 스토리지에는 한 가지 큰 단점이 있습니다. 당신은 모든 개인 파일을 가지고 어떤 회사를 신뢰해야합니다. 해킹 당하면 어떻게 되나요? 그들은 정말로 그 모든 것을 신뢰할 수 있습니까, 아니면 당신이 보지 않을 때 당신의 일을 겪고 있습니까? 확실히 알 수는 없습니다.

다른 옵션이 있습니다. Nextcloud를 사용하여 고유 한 클라우드 스토리지를 호스팅 할 수 있습니다. Nextcloud는 자신의 클라우드 스토리지 회사가 될 수있는 오픈 소스 클라우드 스토리지 솔루션입니다. 사용하기 쉽고 깔끔한 인터페이스와 모든 장치에 대한 앱을 제공하므로 해킹 된 정크를 처리하지 않아도됩니다.

이 가이드는 VPS (Virtual Private Server)에서 Nextcloud를 호스팅하는 데 중점을두고 있지만 홈 네트워크에서 로컬로 실행할 수도 있습니다. 포트 포워딩을 설정하거나 VPN을 실행하지 않는 한 외부에서 액세스하지 마십시오. 일부 단계는 약간 다르므로 도메인 이름을 구입하거나 SSL 인증서를 설정할 필요가 없습니다.

호스트를 선택하십시오

빠른 링크

  • 호스트를 선택하십시오
  • 필요한 것을 설치하십시오
  • 방화벽 설정
  • SSH 구성
    • SSH 키
      • 윈도우
      • 맥과 리눅스
    • 루트 및 비밀번호 허용 안함
  • 데이터베이스 구성
  • PHP 설정
  • Nextcloud 받기
  • SSL 인증서 생성
  • Nginx 구성
  • Nextcloud 시작

진정한 클라우드 솔루션을 사용 중이고 웹을 통해 파일에 액세스하려는 경우 Nextcloud를 호스팅하도록 VPS를 설정해야합니다. 몇 가지 훌륭한 옵션이 있으므로 가장 적합한 것을 선택하십시오. 아직 호스트가없는 경우 Linode, DigitalOceanGandi 를 확인하십시오.

이 가이드는 데비안 9“Stretch”를 서버 운영 체제로 사용합니다. 데비안은 기본적으로 매우 안정적이며 상당히 안전합니다. 또한 대부분의 호스팅 플랫폼에서 잘 지원됩니다. 우분투에 더 익숙하다면 우분투는 데비안을 기반으로하기 때문에 이것도 대부분 직접 적용됩니다.

또한 서버의 도메인 이름을 가져와야합니다. 이 사이트는 공개 사이트가 아니므로 원하는대로 만들 수 있습니다. 도메인 이름을 구입하고 연결하는 프로세스는 호스트 및 도메인 이름 공급자마다 다르므로 선택한 서비스에서 제공하는 설명서를 확인하십시오.

여기의 모든 것은 Linux 명령 행에서 원격으로 처리됩니다. 따라서 Mac 또는 Linux를 사용하는 경우 터미널을 열고 SSH를 사용하여 VPS에 액세스 할 수 있습니다. Windows를 사용하는 경우 PuTTY 와 같은 SSH 클라이언트를 확보하십시오.

필요한 것을 설치하십시오

이 퍼즐에는 많은 조각들이 있습니다. 당신은 지금 그들 모두를 잡을 수 있으므로, 여기서부터 계속해야 할 것이 있습니다. 데비안은 보통 기본적으로 sudo를 설치하지 않았으므로 먼저 설치하고 설정하십시오.

$ su -c 'apt install sudo'

루트 비밀번호를 입력하면 Sudo가 설치됩니다. 그런 다음 sudo 그룹에 사용자를 추가해야합니다.

$ su -c 'gpasswd -a 사용자 이름 sudo'

이제 sudo를 사용할 수 있습니다. 즉시 작동하지 않으면 다시 로그인해야 할 수도 있습니다. 이 시점부터는 특히 보안을 위해 루트 로그인을 비활성화 할 예정이므로 sudo를 대신 사용하게됩니다.

이제 데비안 리포지토리에서 모든 것을 가져옵니다.

$ sudo apt install ufw mariadb 서버 nginx certbot php php-mysql php-fpm php-cli php-json php-curl php-imap php-gd php-xml php-zip php-intl php-mcrypt php-imagick php-mbstring

방화벽 설정

서버가 인터넷에 있습니다. 그 주위에 방법이 없으며, 이는 공격자를 처리해야 함을 의미합니다. 간단한 방화벽을 설정하면 많은 잠재적 위협을 예방할 수 있습니다.

iptables를 직접 사용하는 대신 UFW (Uncomplicated Firewall)를 사용하여 시스템을 보호 할 수 있습니다. 구문이 더 간단하고 작업하기가 훨씬 쉽습니다.

방화벽의 모든 것을 비활성화하여 시작하십시오. 이렇게하면 기본 정책이 모든 서비스 및 포트에 대한 연결을 거부하여 공격자가 잊혀진 포트에서 연결할 수 없도록합니다.

$ sudo ufw 기본 수신 거부

$ sudo ufw 기본 거부 나가는 $ sudo ufw 기본 거부 앞으로

다음으로, 허용하려는 서비스를 ufw에 알려줄 수 있습니다. 이 경우 SSH 및 웹 액세스 만 필요합니다. 또한 서버가 업데이트를 가져 와서 시계를 설정할 수 있도록 NTP 및 DNS를 활성화하려고합니다.

$ sudo ufw ssh에서 허용 $ sudo ufw 허용 ssh $ sudo ufw 허용 http $ sudo ufw 허용 http $ sudo ufw 허용 https $ sudo ufw 허용 out https $ sudo ufw 허용 ntp $ sudo ufw 허용 out ntp $ sudo ufw 허용 53 $ sudo ufw 허용 53 $ sudo ufw 허용 67 $ sudo ufw 허용 67

이제 방화벽을 시작할 수 있습니다. SSH 중단에 대한 경고가 표시되지만 이미 SSH를 허용했기 때문에 괜찮습니다.

$ sudo ufw 활성화

SSH 구성

SSH는 Linux 서버에서 가장 자주 폭행되는 서비스 중 하나입니다. 서버의 다른 모든 것에 대한 게이트웨이이며 일반적으로 암호로만 보호됩니다. 따라서 SSH를 통해 공격자가 서버에 쉽게 액세스 할 수 없도록하는 것이 중요합니다.

SSH 키

먼저, 비밀번호 인 SSH 키보다 훨씬 안전한 대안을 설정해야합니다. 프로세스는 Windows 및 Mac 및 Linux와 다르므로 바탕 화면에 맞는 지침을 따르십시오.

윈도우

Windows 방식과 마찬가지로이 간단한 작업을 완료하려면 다른 프로그램이 필요합니다. PuTTYgen은 PuTTY를위한 RSA 키 생성기입니다. PuTTY 다운로드 페이지 에서 사용할 수 있습니다. 다운로드하여 실행하십시오.

열린 창에서 키 이름을 지정하고 암호를 작성하십시오. 서버에 로그인 할 때 사용하는 비밀번호입니다. 맨 아래에서 SSH-2 RSA를 선택하고 키 크기를 2048 비트 이상으로 설정하십시오. 4096이 더 좋지만 2048이 약간 더 빠릅니다. 그런 다음 키를 생성하고 공개 키와 개인 키를 모두 저장하십시오. 마지막으로 창의 맨 위에 표시되는 공개 키를 복사하십시오.

PuTTY를 사용하여 서버에 연결하십시오. ~ / .ssh / authorized_keys에서 파일을 열고 키를 붙여 넣습니다.

PuTTY로 돌아 가면 사이드 메뉴에서 SSH를 찾으십시오. 그런 다음 "Auth"를여십시오. pivate 키 필드에서 방금 저장 한 개인 키의 위치를 ​​찾으십시오. PuTTY의 모든 것이 서버에 설정되면 세션을 저장하십시오. 계속 진행하기 전에 키와 연결되어 있는지 테스트하십시오.

맥과 리눅스

Mac과 Linux 사용자는 훨씬 쉬운 길을 가고 있습니다. SSH 키가없는 경우 먼저 SSH 키를 생성하십시오. 키 암호를 생성 할 수 있습니다. 선택 사항이므로 귀하의 전화입니다.

$ ssh-keygen -b 4096 -t rsa

이제 키를 서버로 보내십시오. 사용자 이름과 서버의 IP를 대체하십시오.

$ ssh-copy-id -i ~ / .ssh / id_rsa.pub

그게 다야!

루트 및 비밀번호 허용 안함

키를 설정 한 후 SSH 암호를 비활성화 할 수 있습니다. 비밀번호로 키를 설정해도 걱정하지 마십시오. 그것은 다른 것이므로 전혀 영향을 미치지 않습니다. / etc / ssh / sshd_config에서 SSH 구성 파일을여십시오.

$ sudo nano / etc / ssh / sshd_config

다음 줄을 찾으십시오.

#PermitRoot 로그인 금지 비밀번호

다음으로 변경하십시오.

허가 루트 로그인

다음으로 두 줄을 찾으십시오.

#PasswordAuthentication yes #PermitEmptyPasswords 아니오

다음과 같이 변경하십시오.

비밀번호 인증 없음 권한 없음 암호 없음

마지막으로 다음을 찾으십시오.

사용 PAM 예

그것을 확인하십시오 :

사용 PAM no

파일을 저장하고 닫습니다. 그런 다음 SSH를 다시 ​​시작하십시오. 이로 인해 문제가 발생할 수 있으므로 다시 연결하십시오.

$ sudo systemctl 다시 시작 sshd

데이터베이스 구성

다음으로해야 할 일은 데이터베이스를 구성하는 것입니다. 여기에는 많은 관련이 없으므로 너무 걱정하지 마십시오. Nextcloud가 액세스 할 수 있도록 사용자 및 빈 데이터베이스를 설정하기 만하면됩니다.

실제로 MariaDB를 설정하고 보호하는 편리한 스크립트가 있습니다. 먼저 실행하십시오.

$ sudo mysql_secure_installation

기본 루트 비밀번호는 비어 있으므로 요청시 "Enter"입니다. 그런 다음 루트 암호를 설정하라는 메시지가 표시됩니다. 그렇게. 다음에 나오는 모든 질문에 "예"라고 대답하십시오.

방금 설정 한 루트 비밀번호로 데이터베이스에 로그인 할 수 있습니다.

$ sudo mysql -u 루트 -p

프롬프트가 MariaDB 프롬프트로 변경됩니다. 데이터베이스 서버를 관리하기위한 콘솔입니다. 새 데이터베이스를 작성하여 시작하십시오. 여기에 대문자 사용이 중요합니다.

데이터베이스 만들기 nextcloud;

다음으로 해당 데이터베이스의 사용자를 만드십시오.

"PasswordForUser"에 의해 식별 된 사용자`nextcloud` @`localhost` 작성;

그런 다음 해당 사용자에게 데이터베이스 사용 권한을 부여하십시오.

nextcloud에 모두 부여하십시오. *`nextcloud` @`localhost`;

그게 다야! 이제 데이터베이스 서버를 종료 할 수 있습니다.

PHP 설정

Nextcloud는 PHP로 작성되었습니다. Nextcloud가 올바르게 작동하는 데 필요한 PHP 확장 기능과 함께 Debian Stretch에서 사용 가능한 최신 버전의 PHP를 이미 설치했습니다. 여전히 Nginx에서 더 쉽게 작동하도록 PHP 구성을 약간 수정해야합니다.

실제로 기본적인 보안 조정이 필요합니다. 이것들은 중요한 것이 아니지만 서버의 보안을 향상시키는 데 도움이됩니다.

sudo와 자주 사용하는 텍스트 편집기로 /etc/php/7.0/fpm/php.ini를여십시오.

파일이 방대하므로 편집기의 검색 기능을 사용하여 탐색하십시오. Nano를 사용하고 있다면 Ctrl + W입니다. 찾아야 할 주먹 옵션은 disable_functions입니다. 끝에 phpinfo, system, mail, exec를 추가하십시오.

그런 다음 sql.safe_mode를 찾아서 켜십시오. 그런 다음 allow_url_fopen을 해제하십시오. 파일 끝에 다음 줄을 추가하고 저장 한 후 닫습니다.

register_globals = 해제

Nextcloud 받기

Nextcloud는 아직 데비안 용 패키지로 제공되지 않습니다. 당신은 정말로 필요하지 않습니다. WordPress와 같은 다른 사전 빌드 PHP 웹 응용 프로그램과 매우 유사하며 Nextcloud를 설치하려는 위치를 추출 할 수있는 압축 된 아카이브로 제공됩니다.

현재 안정적인 최신 릴리스는 Nextcloud입니다.이 기사를 읽을 때 최신 버전이 무엇인지 다시 확인하십시오. 가이드는 12를 참조하지만 최신 안정 버전을 사용하십시오.

Nextcloud 아카이브를 다운로드하려는 디렉토리로 변경하십시오. 그런 다음 / var / www로 변경하여 압축을 푸십시오.

$ cd ~ / 다운로드 $ wget https://download.nextcloud.com/server/releases/nextcloud-12.0.3.tar.bz2 $ cd / var / www $ sudo tar xjpf ~ / Downloads / nextcloud-12.0.3. tar.bz2

앞으로이 내용을 읽는다면 Nextcloud의 서버 설치 페이지 에서 다운로드 링크를 찾을 수 있습니다.

마지막으로 Nextcloud 설치의 소유권을 www-data로 변경하십시오.

$ sudo chown -R www-data : www-data / var / www / nextcloud

SSL 인증서 생성

Certbot 덕분에 SSL 인증서 생성이 매우 쉽습니다. Certbot은 자동으로 SSL 인증서를 생성하여 생성 한 사이트의 웹 루트에 배치합니다. 단일 명령 만 실행하면됩니다.

$ sudo certbot certonly --webroot -w / var / www / nextcloud -d your-domain.com -d www.your-domain.com

Certbot을 처음 실행하므로 이메일 주소를 요청합니다. 인증서가 만료 되려고 할 때이 주소를 사용하여 경고합니다. 단일 명령으로 쉽게 갱신 할 수 있습니다.

$ sudo certbot 갱신

Nginx 구성

Nginx는 가볍지 만 강력한 웹 서버입니다. Nextcloud에 액세스하는 데 사용하는 인터페이스를 제공합니다. Nginx와 관련된 몇 가지 구성 파일이 있습니다. 첫 번째는 /etc/nginx/nginx.conf에있는 기본 구성입니다. 이것이 기본 구성 파일이지만 기본값은 확실합니다. 당신이하고있는 일을 알고 있다면 그것을 가지고 놀 수는 있지만 혼자두고도 괜찮을 수 있습니다.

다음 구성은 훨씬 길고 복잡합니다. 고맙게도 모든 것을 쓸 필요는 없습니다. Nextcloud 개발자들은 이미 해냈습니다. 그냥 수정하면됩니다. 구성 파일은 Nextcloud 사이트에 있습니다 . Nginx의 웹 루트를 위해 하나를 잡아라. / etc / nginx / sites-available / nextcloud에서 새 파일을 만들어 붙여 넣습니다.

파일이 있으면 몇 가지 간단한 변경이 필요합니다. 먼저 업스트림 블록을 찾아 다음과 같이 변경하십시오.

업스트림 php-handler {server unix : /run/php/php7.0-fpm.sock; }

그런 다음 cloud.example.com이라는 곳을 찾아 도메인 이름으로 변경하십시오.

마지막으로 Nginx가 SSL 인증서를 가리 키도록해야합니다. 줄을 바꾸십시오 :

ssl_certificate /etc/ssl/nginx/cloud.example.com.crt; ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key;

에:

ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

그게 다야! 다음으로 Nginx가 찾을 수 있도록 연결해야합니다.

$ cd / etc / nginx / sites-enabled $ sudo ln -s / etc / nginx / sites-available / nextcoud nextcloud

기존의 기본값을 제거하십시오.

$ sudo rm 기본값

PHP와 Nginx를 다시 시작하면 Nextcloud에 액세스 할 수 있습니다!

$ sudo systemctl 재시작 php7.0-fpm $ sudo systemctl 재시작 nginx

Nextcloud 시작

웹 브라우저를 열고 도메인 이름으로 이동하십시오. Nextcloud 설정 화면이 나타납니다. 관리자 계정을 만들고 자신이 만든 데이터베이스 계정에 대한 정보를 입력하십시오.

Nextcloud는 자체 구성 및 설치에 몇 분이 걸립니다. 완료되면 새 Nextcloud 대시 보드로 이동합니다. 여기에서 신뢰하는 사람들이 새 클라우드 저장소를 사용할 수 있도록 새 사용자를 만들 수 있습니다. 파일 업로드를 바로 시작할 수도 있습니다.

그게 다야! 이제 개인 클라우드가 생겼습니다!

Nextcloud로 나만의 프라이빗 클라우드 생성