홈 서버 만들기 14. 클라우드 스토리지: Nextcloud (Nginx, MariaDB)

May 10, 2018

우분투 서버에 설치할 수 있는 대표적인 클라우드 스토리지 프로그램으로 Nextcloud가 있다. Nextcloud는 구글 드라이브나 드롭박스 등과 같은 일을 하는 프로그램으로, 웹이나 앱에서 홈 서버의 파일을 사용하고, 홈 서버에 파일을 전송하고, 모바일 기기에서 촬영한 사진을 자동으로 홈 서버에 업로드하고, 파일을 외부와 공유할 URI를 만들고, PC나 Mac, 리눅스에 클라이언트 프로그램을 설치하면 홈 서버와 파일을 동기화할 수 있다. 자체적으로 WebDAV 프로토콜도 지원한다. Nextcloud에 ONLYOFFICE 등의 온라인 오피스 프로그램을 결합하면 웹에서 .docx .xlsx 등의 오피스 문서를 작성할 수도 있다. https://demo.nextcloud.com에서 데모를 사용해볼 수 있다.

서브 도메인 생성

넥스트 클라우드 (Nextcloud) 접속용 서브 도메인을 하나 생성한다. 여기서는 cloud.example.com을 생성한 것으로 가정한다.

SSL/TLS 인증서 발급

https 보안 연결을 사용하기 위해서 cloud.example.com 도메인에 SSL/TLS 인증서를 발급받는다. 자세한 방법은 앞선 글 07. SSL/TLS 인증서를 참고한다. 이 방법으로 인증서를 발급받으면 *.example.com 형태의 와일드카드 서브 도메인에 대한 인증서가 발급되므로 이 인증서를 그대로 cloud.example.com 도메인에 사용할 수 있다.

php 설치 및 설정

sudo apt-get update

sudo apt-get install php-fpm

sudo apt-get install php php-apcu php-bz2 php-curl php-gd php-gmp php-imagick php-imap php-intl php-json php-ldap php-mbstring php-mysql php-smbclient php-xml php-zip

넥스트 클라우드는 php로 작성되어 있다. 패키지 저장소 정보를 업데이트하고, php 및 넥스트 클라우드 운영에 필요한 php 확장 모듈을 설치한다. 우분투 서버 18.04 LTS 버전에서는 php 7.2버전이 기본으로 설치되는데, php 설치 명령을 먼저 실행하면 Apache 웹 서버가 함께 설치된다. 여기서는 Nginx 웹 서버를 사용하므로 Apache 웹 서버를 설치하고 싶지 않다면 php-fpm을 단독으로 먼저 설치한 다음에 php를 설치하면 Apache 웹 서버가 설치되지 않는다. 앞서 워드프레스를 설치하는 과정에서 php를 설치한 경우에는 위의 명령을 실행하면 이미 설치된 모듈은 자동으로 건너뛰고 필요한 모듈만 추가로 설치된다.

sudo nano /etc/php/7.2/fpm/php.ini

php 설정 파일을 nano 편집기로 열고 아래를 참고해서 적절히 편집한다. 참고로 nano 편집기에서 항목을 찾을 때는 ctrl키와 w키를 동시에 누르면 찾을 내용을 입력하는 메뉴가 나타난다.

memory_limit = 1024M
post_max_size = 131200M
upload_max_filesize = 128G
max_file_uploads = 100
max_execution_time = 14400
max_input_time = 14400
date.timezone = Asia/Seoul
mbstring.language = UTF-8
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = UTF-8
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1

memory_limit은 php가 사용할 최대 메모리 용량으로, 기본값은 128M 이다. 웹사이트 운영 중에 “Fatal Error: Allowed Memory Size of XXXXX Bytes Exhausted” 오류가 나타나면 이 값을 적절히 늘려야 한다.
post_max_size는 php로 생성되는 게시물 하나의 최대 용량으로, 게시물 자체의 용량 및 이 게시물에 포함된 첨부파일의 용량을 포함한다. 따라서 첨부파일 용량에 해당하는 아래의 max_file_uploads 보다 큰 값을 지정해야 한다. 기본값은 8M이다.
upload_max_filesize는 php를 통해 업로드 되는 파일의 최대 용량으로, 기본값은 2M이다. 넥스트 클라우드는 클라우드 스토리지이므로 대용량 파일을 전송할 경우를 예상해서 적절히 늘려준다.
max_file_uploads는 한 번에 업로드 할 수 있는 파일의 개수이다. 기본값은 20이다.
max_execution_time은 php 스크립트가 실행되는 최대 시간으로, 기본값은 30초이다. 여기서 지정한 시간 이내에 php 스크립트 작동이 완료되지 않으면 강제로 종료된다. post_max_sizeupload_max_filesize의 값을 늘렸다면 늘린 크기의 파일을 업로드하는데 소요되는 충분한 시간으로 설정한다.
max_input_time은 스크립트가 입력받은 데이터를 처리하는 최대 시간으로, 기본값은 60초이다. post_max_sizeupload_max_filesize의 값을 늘렸다면 늘린 크기의 파일을 업로드하는데 소요되는 충분한 시간으로 설정한다.
date.timezone은 시간대를 설정하는 옵션으로 옵션 앞에 주석 ;을 제거하고 Asia/Seoul로 지정한다.
mbstring으로 시작하는 4개의 옵션 앞에 주석 ;을 제거하고 UTF-8로 지정한다.
opcache으로 시작하는 7개의 옵션 앞에 주석 ;이 있다면 제거하고 위의 내용으로 지정한다.

설정이 끝났으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

sudo nano /etc/php/7.2/fpm/pool.d/www.conf

www.conf 파일을 nano 편집기로 열고, 아래와 같이 5개의 env 항목 앞의 주석 ;을 제거한다.

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

편집이 끝났으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

sudo systemctl restart php7.2-fpm

설정한 내용을 반영하기 위해 php7.2-fpm을 재시작한다.

MariaDB 설치 및 설정

sudo apt-get update
sudo apt-get install mariadb-server

넥스트 클라우드가 사용할 데이터베이스로 MariaDB를 선택했다. 만일 앞서 워드프레스를 설치하는 과정 등에서 이미 MariaDB를 설치했다면 이 설치 명령은 생략하면 된다.

sudo mysql_secure_installation

MariaDB를 처음 설치하는 것이라면 MariaDB의 기본 보안 설정을 진행한다. 몇 가지 사항을 질문해오는데 다음 설명을 참고해서 입력한다.
Enter current password for root:   MariaDB를 처음 설치한 경우 아직 패스워드를 설정하지 않았으므로 그냥 엔터키를 입력한다.
Set root password?   y를 입력해서 MariaDB의 루트 패스워드를 설정한다.
New password:   패스워드를 결정해서 입력한다.
Re-enter new password:   패스워드를 한 번 더 입력해서 확인한다.
Remove anonymous users?   y를 입력한다.
Disallow root login remotely?   y를 입력한다.
Remove test database and access to it?   y를 입력한다.
Reload privilege tables now?   y를 입력한다.

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

MariaDB가 설치되었으면 MariaDB 설정 파일을 nano 편집기로 열고 아래와 같이 편집한다. 편집하는 위치가 중요하므로 정확히 확인한다.

#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
[mysqld]
transaction-isolation = READ-COMMITTED

#
# * Basic Settings
#

중략

#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
log-bin = /var/log/mysql/mariadb-bin
log-bin-index = /var/log/mysql/mariadb-bin.index
binlog_format = MIXED
#
# Enable the slow query log to see queries with especially long duration

중략

#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
innodb_large_prefix = true
innodb_file_format = barracuda
innodb_file_per_table = 1

#
# * Security Features
#

하략

빨간색으로 표시된 내용을 추가하는데, 지정된 위치에 정확히 추가한다. 편집이 끝났으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

sudo systemctl restart mysql

MariaDB를 재시작한다.

데이터베이스 생성

넥스트 클라우드가 사용할 데이터베이스를 생성한다.

sudo mysql -u root -p

위 명령어를 실행한 후 MariaDB의 루트 패스워드를 입력해서 MariaDB에 접속한다.

CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

nextcloud라는 이름의 데이터베이스를 utf8mb4 문자셋으로 생성한다. 데이터베이스 이름은 원하는 이름으로 생성하면 된다.

CREATE USER 'ncuser'@'localhost' IDENTIFIED BY '비밀번호';

ncuser라는 이름의 사용자와 이 사용자의 비밀번호를 생성한다. 역시 원하는 이름으로 생성하면 되고, 자신만의 비밀번호를 결정해서 입력한다.

GRANT ALL PRIVILEGES ON nextcloud.* TO 'ncuser'@'localhost';

ncuser 사용자에게 nextcloud라는 이름의 데이터베이스의 모든 권한을 부여한다.

FLUSH PRIVILEGES;

설정 사항을 반영한다.

exit;

MariaDB 접속을 종료한다.

Nextcloud 디렉토리 설정

이제 넥스트 클라우드 설치 파일을 내려받고, 넥스트 클라우드의 웹사이트 디렉토리와 데이터 디렉토리를 생성한다.

cd /tmp

작업하기 편하도록 /tmp 디렉토리로 이동한다.

curl -O https://download.nextcloud.com/server/releases/latest.tar.bz2

최신 버전의 넥스트 클라우드 설치 파일을 내려받는다.

tar -xjvf latest.tar.bz2

내려받은 파일의 압축을 해제한다.

sudo cp -r nextcloud /var/www/

압축을 해제하면 생성되는 nextcloud 디렉토리를 /var/www/ 경로에 복사해서 넥스트 클라우드의 웹사이트 디렉토리를 생성한다.

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

생성한 웹사이트 디렉토리의 소유자와 소유그룹을 www-data로 설정한다.

sudo mkdir -p /home/Nextcloud/big_temp_file

넥스트 클라우드에 업로드되는 데이터가 저장될 데이터 디렉토리를 생성한다. 데이터를 직접 관리하기 위해서 /home의 하위 경로에 Nextcloud 디렉토리를 생성했다. /home/Nextcloud 하위의 big_temp_file 디렉토리는 파일을 전송할 때 임시 파일이 머물 공간이다.

sudo chown -R www-data:www-data /home/Nextcloud

/home/Nextcloud 디렉토리 및 하위 디렉토리(-R)의 소유자와 소유그룹을 www-data로 설정한다.

sudo rm /tmp/latest.tar.bz2
sudo rm -rf /tmp/nextcloud

/tmp에 내려받은 넥스트 클라우드 설치 파일 및 압축을 해제한 디렉토리를 삭제하려면 위의 명령을 실행한다.

Nginx 설치

넥스트 클라우드를 운영할 웹 서버로 Nginx를 사용할 것이다. Nginx 설치 및 작동에 관한 기본적인 개념은 앞선 글 08. 웹 서버를 참고한다.

DH Param 키 생성

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

앞선 글을 통해서 DH Param 키를 생성했다면 그 키 하나로 모든 웹사이트에 사용할 수 있으므로 이 단계는 건너뛴다. 만일 생성하지 않았다면 위 명령으로 DH Param 키를 생성한다. DH Param 키는 일부 암호화 방식의 성능을 높이기 위해 사용하는 난수인데, 위 명령어는 4096 비트 (512 바이트) 로 생성하므로 시간이 오래 걸린다. 서버 컴퓨터의 성능에 따라 다르지만 길게는 수십분 가량 소요되기도 한다. 2048 비트 (256 바이트) 로 생성하려면 위의 명령에서 끝에 4096을 2048로 바꿔서 입력한다. 키가 생성되는 위치는 /etc/ssl/certs/dhparam.pem 으로 지정했다.

Nginx 서버 블록 설정

sudo nano /etc/nginx/sites-available/cloud.example.com

cloud.example.com의 서버 블록 파일을 nano 편집기로 새로 생성한다. 구분하기 쉽도록 서버 블록 파일 이름을 cloud.example.com 도메인 이름 그대로 사용했다.

server {
	listen 80;

	server_name cloud.example.com;

	return 301 https://$server_name$request_uri;
}

server {
	listen 443 ssl http2;

	server_name cloud.example.com;

	root /var/www/nextcloud/;

	ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
	ssl_dhparam /etc/ssl/certs/dhparam.pem;

	ssl_protocols TLSv1.2;
	ssl_prefer_server_ciphers on;
	ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256;
	ssl_ecdh_curve secp384r1;
	ssl_session_timeout 10m;
	ssl_session_cache shared:SSL:10m;
	ssl_session_tickets off;
	ssl_stapling on;
	ssl_stapling_verify on;
	resolver 8.8.8.8 8.8.4.4 valid=300s;
	resolver_timeout 5s;

	add_header Strict-Transport-Security max-age=31536000;
	add_header X-Content-Type-Options nosniff;
	add_header X-XSS-Protection "1; mode=block";
	add_header X-Robots-Tag none;
	add_header X-Download-Options noopen;
	add_header X-Permitted-Cross-Domain-Policies none;

	# Set max upload size
	client_max_body_size 131200M;
	client_body_temp_path /home/Nextcloud/big_temp_file;
	client_body_buffer_size 524288k;
	fastcgi_buffers 64 4K;

	# Enable gzip but do not remove ETag headers
	gzip on;
	gzip_vary on;
	gzip_comp_level 4;
	gzip_min_length 256;
	gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
	gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

	location / {
		rewrite ^ /index.php$uri;
	}

	location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
		deny all;
	}

	location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
		deny all;
	}

	location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
		fastcgi_split_path_info ^(.+\.php)(/.*)$;
		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param PATH_INFO $fastcgi_path_info;
		fastcgi_param HTTPS on;
		fastcgi_param modHeadersAvailable true;
		fastcgi_param front_controller_active true;
		fastcgi_pass unix:/run/php/php7.2-fpm.sock;
		fastcgi_intercept_errors on;
		fastcgi_request_buffering off;
	}

	location ~ ^/(?:updater|ocs-provider)(?:$|/) {
		try_files $uri/ =404;
		index index.php;
	}

	# Adding the cache control header for js and css files
	# Make sure it is BELOW the PHP block
	location ~ \.(?:css|js|woff|svg|gif)$ {
		try_files $uri /index.php$uri$is_args$args;
		add_header Cache-Control "public, max-age=15778463";
		add_header Strict-Transport-Security max-age=31536000;
		add_header X-Content-Type-Options nosniff;
		add_header X-XSS-Protection "1; mode=block";
		add_header X-Robots-Tag none;
		add_header X-Download-Options noopen;
		add_header X-Permitted-Cross-Domain-Policies none;

		# Optional: Don't log access to assets
		access_log off;
	}

	location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
		try_files $uri /index.php$uri$is_args$args;

		# Optional: Don't log access to other assets
		access_log off;
	}
}

빨간색 부분을 자신의 것으로 변경해야 함을 유의하면서, 서버 블록 내용을 위와 같이 작성한다. ssl_certificatessl_certificate_key에는 앞선 글 07. SSL/TLS 인증서를 참고해서 발급받은 인증서 파일의 경로가 들어가고, ssl_dhparam에는 DH Param 키의 경로가 들어간다. client_max_body_size 의 값은 앞서 php 설정에서 post_max_size 항목에 지정한 값으로 맞춰준다. 작성이 끝났으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

sudo ln -s /etc/nginx/sites-available/cloud.example.com /etc/nginx/sites-enabled/

작성한 서버 블록을 작동시키기 위해 /etc/nginx/sites-enabled/ 경로에 심볼릭 링크를 만들어준다.

만일 이런 서버 블록을 여러 개 생성해서 다수의 웹사이트를 운영한다면 도메인 처리를 원활하게 하기 위해 Nginx 설정 파일 nginx.conf에 아래의 설정을 추가한다.

sudo nano /etc/nginx/nginx.conf

Nginx 설정 파일인 nginx.conf 파일을 nano 편집기로 연다.

server_names_hash_bucket_size 64;

server_names_hash_bucket_size 64;를 찾아서 앞에 주석 #을 제거하고, Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다. 이미 처리되어 있다면 그대로 nano 편집기를 빠져나온다.

이상으로 서버 블록 설정이 끝났으면, 설정한 서버 블록이 Nginx에 반영되도록 아래와 같이 Nginx를 재시작한다.

sudo nginx -t

Nginx 설정에 기본적인 문법 오류가 없는지 점검한다. 오류가 없다면
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
이런 메시지가 출력된다. 만일 다른 메시지가 나온다면 메시지를 참고해서 설정 사항을 점검한다.

sudo systemctl restart nginx

오류가 없으면 Nginx를 재시작한다.

Nextcloud 설치

웹 브라우저로 cloud.example.com 주소에 접속하면 아래와 같은 설치 화면이 나타난다.

Username   넥스트 클라우드 관리자의 ID를 결정해서 입력한다.
Password   넥스트 클라우드 관리자의 비밀번호를 결정해서 입력한다
Data folder   앞서 생성한 데이터 디렉토리를 입력한다. (여기서는 /home/Nextcloud)
Database user   앞서 생성한 데이터베이스의 사용자 이름을 입력한다. (여기서는 ncuser)
Database password   앞서 생성한 데이터베이스 사용자의 비밀번호를 입력한다.
Database name   앞서 생성한 데이터베이스 이름을 입력한다. (여기서는 nextcloud)
localhost   localhost가 입력된 그대로 놔둔다.

입력할 내용을 정확하게 작성하고 Finish setup 버튼을 클릭하면 설치가 완료된다. 설치 후 로그인하면 아래와 같은 메인 화면이 나타난다.

 

Nextcloud 설치 후 설정

sudo nano /var/www/nextcloud/.user.ini

.user.ini 파일을 nano 편집기로 열어서 아래의 내용으로 편집한다.

upload_max_filesize=128G
post_max_size=131200M
memory_limit=1024M
mbstring.func_overload=0
always_populate_raw_post_data=-1
default_charset='UTF-8'
output_buffering=0

upload_max_filesize, post_max_size, memory_limit 항목을 앞서 php 설정에서 지정한 내용과 동일하게 맞춰준다. 편집을 완료했으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

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

config.php 파일을 nano 편집기로 열어서 아래에 빨간색으로 표시된 항목을 추가한다.

 'ocxs12ry80fk',
  'passwordsalt' => '/hfdK5LFChlSn4upMsvGwcn9Lq0btW',
  'secret' => 'sdsfTRfs31fgdfBnbrtgBe15hbdhkyhk+GEg',
  'trusted_domains' =>
  array (
    0 => 'cloud.example.com',
  ),
  'datadirectory' => '/home/Nextcloud',
  'overwrite.cli.url' => 'https://cloud.example.com',
  'dbtype' => 'mysql',
  'version' => '13.0.2.1',
  'dbname' => 'nextcloud',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'ncuser',
  'dbpassword' => 'ncuserpassword',
  'installed' => true,
  'memcache.local' => '\OC\Memcache\APCu',
  'auth.bruteforce.protection.enabled' => false,
);

빨간색으로 표시된 항목을 추가하고, 완료했으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다. 참고로 다른 항목들의 내용은 시스템에 따라 다르게 나타난다.

sudo systemctl restart nginx

설정한 내용이 반영되도록 Nginx를 재시작한다.

 

Nextcloud 설정 메뉴

웹 브라우저로 cloud.example.com 에 접속해서 로그인한 다음, 우측 상단의 톱니바퀴 모양 또는 동그라미 모양의 버튼을 클릭하면 설정 메뉴가 나타난다. Settings는 넥스트 클라우드 전반을 설정하는 메뉴이고, Apps는 넥스트 클라우드에 추가로 설치할 수 있는 앱을 관리하는 메뉴이다. Users에서는 넥스트 클라우드에 접속하는 계정을 관리할 수 있다.

 

한국어 설정

Settings 화면에서 좌측 패널의 Personal info를 클릭하면 우측에 나타나는 항목 중에서, Language에서 한국어를 선택하면 대부분의 내용이 한국어로 번역된 환경을 사용할 수 있다.

 

보안 상태 확인

설정 화면에서 좌측 패널의 관리 영역에 있는 기본 설정을 클릭하면 오른쪽에 보안 및 설치 경고 항목에서 현재 보안 상태를 자동으로 확인하고 그 내용을 출력해준다. 모든 검사를 통과했습니다. 라는 메시지가 출력되지 않으면 메시지를 참고해서 적절히 수정해준다.

 

업로드 크기 확인

설정 화면에서 좌측 패널 하단의 고급 설정을 클릭하면 오른쪽에 파일 처리 항목에 앞서 /var/www/nextcloud/.user.ini 파일에 upload_max_filesize로 지정한 크기가 나타날 것이다. .user.ini 파일 수정 후에 용량이 확인될 때 까지는 어느 정도 시간이 소요될 수 있다.

 

추가 앱 설정: 외부 저장소 연결

우측 상단의 설정 메뉴를 클릭해서 앱 관리 화면으로 들어가면 좌측 패널의 내 앱 메뉴에서 현재 넥스트 클라우드에 설치된 앱들을 확인할 수 있다. 이 중에서 하단에 있는 External storage support사용함을 클릭해서 활성화하면 넥스트 클라우드에 외부 저장소를 연결할 수 있다. 활성화하고 다시 우측 상단의 설정 메뉴를 클릭해서 설정 화면으로 넘어가 보면 좌측 패널의 개인 영역과 관리 영역에 각각 외부 저장소 메뉴가 생성된 것이 보인다. 관리 영역의 외부 저장소 메뉴를 클릭하면 여러 가지 외부 데이터 위치를 연결할 수 있는 설정 화면이 나타난다. 저장소 추가 항목을 클릭하면 Amazon S3, FTP, Nextcloud, OpenStack, SFTP, SMB/CIFS, WebDAV, 로컬 경로를 연결할 수 있다.

 

예를 들어 앞선 글 05. 네트워크 파일 공유에서 설정한 SMB 디렉토리를 연결한다면, 저장소 추가에서 SMB/CIFS를 선택하고, 폴더 이름에 이 SMB 디렉토리가 넥스트 클라우드 상에서 보여질 이름을 결정한다. 인증사용자 이름과 암호를 선택하고, 호스트에 localhost, 공유에 SMB 설정 파일 /etc/samba/smb.conf에 대괄호 [ ] 안에 기재한 내용, 도메인우분투 서버를 설치할 때 결정한 서버의 호스트 네임을 입력한다. 서버의 호스트 네임은 우분투 서버 상에서 hostnamectl 명령을 실행하면 Static hostname 항목에서도 확인할 수 있다. 사용자 이름암호에 SMB 접속 정보를 넣고, 다음으로 사용 가능에서 이 SMB 디렉토리를 사용할 수 있는 넥스트 클라우드 사용자를 선택한다. 톱니바퀴 모양의 버튼을 클릭하면 외부와 공유할 수 있게 할 것인지 등을 설정할 수 있고, 체크 표시 모양을 클릭하면 설정이 완료된다. 정상적으로 연결되었으면 폴더 이름 앞쪽에 녹색 동그라미가 표시된다. 이제 넥스트 클라우드 메인 화면에 가보면 SMB 디렉토리에 접근할 수 있게 되어 있다.

 

추가 앱 설정: 2단계 인증

앱 화면의 왼쪽 패널에는 추가로 설치할 수 있는 여러 가지 앱들의 카테고리가 있다. 보안 카테고리에서 Two Factor TOTP Provider (공식)을 활성화하면 넥스트 클라우드에 로그인할 때 2단계 인증을 사용할 수 있다. 사용함을 클릭해서 활성화하고, 우측 상단의 설정 메뉴를 클릭해서 설정 화면으로 넘어와서, 좌측 패널의 보안을 클릭해보면 오른쪽에 TOTP 2단계 인증 항목이 생성된 것을 볼 수 있다. TOTP 사용을 클릭하면 구글 Authenticator 등의 OTP를 이용한 2단계 인증을 설정할 수 있다.

 

추가 앱 설정: ONLYOFFICE

온라인 오피스 프로그램인 ONLYOFFICE를 우분투 서버에 설치하고 Nextcloud에 ONLYOFFICE 앱을 활성화하면 Nextcloud 상에서 바로 .doc 등의 오피스 문서를 작성할 수 있다. ONLYOFFICE 이외에 Collabora Online 등을 설치해도 가능하지만 ONLYOFFICE가 성능이 더 뛰어나고 문서 작성 이외에도 더 많은 일을 할 수 있다. ONLYOFFICE 설치 방법은 15. 온라인 오피스 에서 다룬다.

 

데스크톱 및 모바일 앱

넥스트 클라우드는 데스크톱 클라이언트 프로그램과 모바일 앱을 제공한다. 윈도우 PC, Mac, 리눅스, iOS, 안드로이드 등을 지원하고, 앱에서 넥스트 클라우드의 파일을 사용하고 업로드/다운로드 할 수 있다. 모바일 앱에는 촬영한 사진을 자동으로 넥스트 클라우드에 업로드하는 기능도 있다. 데스크톱 컴퓨터에 클라이언트 프로그램을 설치하면 PC나 Mac과 넥스트 클라우드의 데이터를 동기화할 수도 있다.

 

 

홈 서버 만들기 목차 
https://varins.com/category/server

01. 하드웨어 구성과 전기 요금
02. 우분투 서버 18.04 LTS 설치
03. 우분투 서버 18.04 LTS 기본 설정
04. 파일 복원: Btrfs 스냅샷
05. 네트워크 파일 공유: Samba (SMB)
06. Dynamic DNS: 구글 도메인 + ddclient
07. SSL/TLS 인증서: Let's Encrypt (Wildcard)
08. 웹 서버: Nginx + https 보안연결
09. 웹사이트: php + MariaDB + WordPress
10. 서버 모니터링: Monitorix + Nginx Proxy
11. FTPS: vsftpd
12. VPN: IKEv2 (strongSwan)
13. Torrent: Transmission
14. 클라우드 스토리지: Nextcloud (Nginx, MariaDB)
15. 온라인 오피스: ONLYOFFICE (Docker, Nginx)
16. 트랜스코딩: Plex

Leave a comment

Your email address will not be published. Required fields are marked *

Prev Post Next Post