상세 컨텐츠

본문 제목

Google Photos 대신 NextCloud

DIY

by 목장주 2021. 9. 8. 14:11

본문

수 많은 전화기와 태블릿에서 나오는 사진들을 한 곳에 모으는 것을 구글 포토로 쉽게 했었다. 믿었던 구글 포토의 유료화로 인해, 구글 포토의 대안을 찾아야 했다. 쉽게 가자면 시놀로지를 사서 플러그인을 깔면 되는듯 했다. 하지만 시놀로지가 한두푼도 아니고. 다른 방법은 수제 클라우드를 만드는 것이었다. 집에 남는 리눅스 데스크탑이 있어서 그냥 수제 클라우드인 NextCloud를 설치하기로 했다. 설치는 공식 설명서 Example installation on Ubuntu 20.04 LTS를 참고로 했다. 

 

필요한 패키지 설치

NextCloud는 php로 된 웹 UI를 제공하므로 웹서버와 php가 필요하다. 웹서버는 편의상 apache를 쓰기로 한다. 파일 정보는 데이타베이스에 저장해야 하므로 mysql이나 maria db를 설치해주면 된다.

 

먼저 패키지 정보 업데이트를 해준다. 

$ sudo apt update

 

아파치와 e데이타베이스를 설치해주자. 

 

$ sudo install apache2 mysql-server

 

이제 아파치용 php 모듈과 NextCloud가 요구하는 각종 php 모듈들을 설치한다. 필요한 모듈 목록은 Prerequisites for manual installation에 보면 찾을 수 있다. 

 

$ sudo apt install libapache2-mod-php7.4 php7.4-ctype php7.4-curl php7.4-dom  \
php7.4-gd php7.4-iconv php7.4-json php7.4-xml php7.4-mbstring php7.4-imagick \
php7.4-posix php7.4-simplexml php7.4-xmlreader php7.4-gmp php7.4-bcmath \
php7.4-xmlwriter php7.4-zip php7.4-mysql php7.4-fileinfo php7.4-bz2 php7.4-intl php7.4-exif

 

데이타베이스 생성

MySQL을 실행 시키고 root로 로그인을 한다.

 

$ sudo systemctl start mysql
$ sudo mysql -uroot -p

 

필요한 계정을 생성하고 NextCloud를 위한 db를 생성해 준다. nextcloud와 nextcloud_password 대신 원하는 아이디와 비밀번호를 넣어서 실행해주면 된다.

 

mysql> CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud_password';
mysql> CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
mysql> GRANT ALL PRIVILEGES ON nextcloud.* TO 'username'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit;

 

NextCloud 파일 복사

이제 NextCloud Download Page에서 파일을 받아온다. 압축을 임시 폴더에 푼다. 현재 폴더에 nextcloud라는 폴더가 생기며 압축이 풀린다.

 

$ unzip nextcloud-22.1.1.zip

 

아파치는 /var/www에 웹 페이지 파일들을 저장한다. nextcloud 폴더를 /var/www 밑에 복사해주자.

 

$ cp -r nextcloud /var/www

 

아파치 설정 

NextCloud를 위한 아파치 설정 파일을 하나 만들어야 한다. Apache Web server configuration에 보면 설정 파일 2개를 볼 수 있다. 편하게 하자면 directory-based installation 용 파일을 복사해서 쓰면 된다. 내 서버는 포트를 달리해서 사용할 예정이므로 virtual host installation용 설정을 가져다 쓴다. 80 대신 원하는 포트 번호를 적어주면 된다.

 

<VirtualHost *:80>
  DocumentRoot /var/www/nextcloud/
  ServerName  your.server.com

  <Directory /var/www/nextcloud/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews

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


위의 설정을 적용 시키려면 다음 명령어를 실행시키면 된다.

 

$ a2esite nextcloud.conf

 

그 외에 다양한 아파치 모듈 활성화가 필요하다. 

 

$ a2enmod rewrite
$ a2enmod headers
$ a2enmod env
$ a2enmod dir
$ a2enmod mime

 

이제 아파치를 재시작한다.

 

$ sudo systemctl restart apache2

 

NextCloud 시작

NextCloud UI를 실행 시키기 전에 폴더 권한을 바꿔주자.

 

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

 

이제 NextCloud를 시작할 준비가 되었다. 브라우저의 주소창에 http://localhost/nextcloud를 쳐보자. 만약 virtual host 방식이라면 http://localhost:포트번호 를 입력하면 된다. 다음과 같은 화면이 나오면 성공!

 

 

자 이제 스마트폰에 NextCloud 앱을 설치해서 구글 포토 대신 백업을 시키자. 

관련글 더보기