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

May 10, 2018Updated on December 8, 2018

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

서브 도메인 생성

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

SSL/TLS 인증서 발급

https 보안 연결을 사용하기 위해서 cloud.example.com 도메인에 SSL/TLS 인증서를 발급받는다. dh43sh자세한 방법은 07. SSL/TLS 인증서: Let’s Encrypt (Wildcard)  또는  22. SSL/TLS 인증서: Let’s Encrypt + CloudFlare (Wildcard + 자동갱신)을 참고한다. 이 방법으로 인증서를 발급받으면 *.example.com 형태의 와일드카드 trh31st서브 도메인에 대한 인증서가 발급되므로 이 인증서를 그대로 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로 작성되어 있다. d3fs5h패키지 저장소 정보를 업데이트하고, php 및 넥스트 클라우드 운영에 필요한 php 확장 모듈을 설치한다. 우분투 서버 18.04 LTS 버전에서는 php 7.2버전이 기본으로 설치되는데, php 설치 명령을 먼저 실행하면 Apache 웹 서버가 함께 설치된다. 여기서는 Nginx 웹 서버를 사용하므로 Apache 웹 서버를 설치하고 싶지 않다면 php-fpm을 단독으로 먼저 설치한 fs536다음에 php를 설치하면 Apache 웹 서버가 설치되지 않는다. 앞선 글 09. 웹사이트: php + MariaDB + WordPress를 통해 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가 사용할 최대 fsh6메모리 용량으로, 기본값은 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는 한 번에 sf153업로드 할 수 있는 파일의 개수이다. 기본값은 20이다.
max_execution_time은 php 스크립트가 실행되는 최대 시간으로, 기본값은 30초이다. 여기서 지정한 시간 이내에 php 스크립트 작동이 완료되지 않으면 강제로 종료된다. post_max_sizeupload_max_filesize의 값을 늘렸다면 늘린 크기의 파일을 업로드하는데 소요되는 충분한 시간으로 설정한다.
max_input_time은 스크립트가 입력받은 데이터를 처리하는 최대 시간으로, 기본값은 60초이다. post_max_sizeupload_max_filesize의 값을 늘렸다면 h4s3f15h늘린 크기의 파일을 업로드하는데 소요되는 충분한 시간으로 설정한다.
date.timezone은 시간대를 설정하는 옵션으로 옵션 앞에 주석 ;을 제거하고 Asia/Seoul로 지정한다.
mbstring으로 시작하는 4개의 옵션 앞에 주석 ;을 제거하고 UTF-8로 지정한다.
opcache으로 시작하는 7개의 옵션 앞에 fs13sf주석 ;이 있다면 제거하고 위의 내용으로 지정한다.

설정이 끝났으면 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

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

sudo systemctl restart php7.2-fpm

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

MariaDB 설치 및 설정

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

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

sudo mysql_secure_installation

MariaDB를 처음 설치하는 것이라면 MariaDB의 기본 보안 설정을 진행한다. rtsh163몇 가지 사항을 질문해오는데 다음 설명을 참고해서 입력한다.
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가 설치되었으면 s3f5MariaDB 설정 파일을 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
#

하략

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

sudo systemctl restart mysql

MariaDB를 재시작한다.

데이터베이스 생성

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

sudo mysql -u root -p

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

CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

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

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

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

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

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

FLUSH PRIVILEGES;

설정 사항을 반영한다.

exit;

MariaDB 접속을 종료한다.

Nextcloud 디렉토리 설정

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

cd /tmp

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

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

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

tar -xjvf latest.tar.bz2

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

sudo cp -r nextcloud /var/www/

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

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

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

sudo mkdir -p /home/Nextcloud/big_temp_file

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

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

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

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

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

Nginx 설치

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

DH Param 키 생성

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

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

Nginx 서버 블록 설정

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

cloud.example.com의 13f5th서버 블록 파일을 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;
	add_header Referrer-Policy no-referrer;

	client_max_body_size 131200M;
	client_body_temp_path /home/Nextcloud/big_temp_file;
	client_body_buffer_size 524288k;
	fastcgi_buffers 64 4K;
	fastcgi_hide_header X-Powered-By;

	location = /robots.txt {
		allow all;
		log_not_found off;
		access_log off;
	}

	location = /.well-known/carddav {
		return 301 $scheme://$host/remote.php/dav;
	}

	location = /.well-known/caldav {
		return 301 $scheme://$host/remote.php/dav;
	}

	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$request_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;
	}

	location ~ \.(?:css|js|woff2?|svg|gif)$ {
		try_files $uri /index.php$request_uri;
		add_header Cache-Control "public, max-age=15778463";
		add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
		#add_header X-Frame-Options "SAMEORIGIN";
		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;
		add_header Referrer-Policy no-referrer;
		access_log off;
	}

	location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
		try_files $uri /index.php$request_uri;
		access_log off;
	}
}

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

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

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

만일 이런 서버 블록을 dsf34h여러 개 생성해서 다수의 웹사이트를 운영한다면 도메인 처리를 원활하게 하기 위해 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 설정에 sfh43기본적인 문법 오류가 없는지 점검한다. 오류가 없다면
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 설치

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

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

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

 

Nextcloud 설치 후 설정

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

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

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 항목을 앞서 d3f1bphp 설정에서 지정한 내용과 동일하게 맞춰준다. 편집을 완료했으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

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

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

<?php
$CONFIG = array (
  'instanceid' => 'ocxs12ry80fk',
  'passwordsalt' => '/hfdK5LFChlSn4upMsvGwcn9Lq0btW',
  'secret' => 'sdsfTRfs31fgdfBnbrtgBe15hbdhkyhk+GEg',
  'trusted_domains' =>
  array (
    0 => 'cloud.example.com',
  ),
  'datadirectory' => '/home/Nextcloud',
  'dbtype' => 'mysql',
  'version' => '14.0.4.2',
  'overwrite.cli.url' => 'https://cloud.example.com',
  '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,
);

'memcache.local' => '\OC\Memcache\APCu',는 파일을 캐싱할 때 APCu를 사용하는 설정이다. 'auth.bruteforce.protection.enabled' => false,는 로그인 13fgsf지연을 유발하는 brute force protection 기능을 끄는 설정인데, 로그인 과정에 아무런 문제가 없다면 이 항목은 추가하지 않아도 된다. 편집을 완료했으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다. 참고로 다른 항목들은 nf354gn13시스템에 따라 다른 내용으로 나타난다.

sudo systemctl restart nginx

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

 

Nextcloud 설정 메뉴

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

 

한국어 설정

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

 

보안 상태 확인

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

 

업로드 크기 확인

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

 

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

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

 

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

 

추가 앱 설정: 2단계 인증

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

 

추가 앱 설정: ONLYOFFICE

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

 

데스크톱 및 모바일 앱

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

 

본 글의 저작권은 작성자 Varins에게 있습니다.
Varins의 사전 서면 동의 없이는 본 글의 전부 또는 일부를 무단으로 전재, 게시, 배포하는 것을 금지합니다.

 

홈 서버 만들기 목차 
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. 온라인 오피스: 온리오피스 (Docker, Nginx)
16. 트랜스코딩: Plex
17. VNC RDP 클라이언트: Guacamole (Docker, Nginx)
18. 가상 머신: QEMU-KVM + libvirt + virt-install
19. 시스템 업그레이드: i3 8300T, 970 EVO 전력 사용량
20. 서버 모니터링: netdata + Nginx Proxy
21. Dynamic DNS: CloudFlare + ddclient
22. SSL/TLS 인증서: Let's Encrypt + CloudFlare (Wildcard + 자동갱신)

Comments (4)

  • 견습

    June 14, 2018 at 12:38 am

    안녕하세요. ㅠㅠ 서버설치까지 마무리했는데,

    Nextcloud 마지막 설정에서, finish setup버튼을 눌러도 화면이 새로고침만 되고, 로그인이 되지 않습니다.
    혹시 어떤 해결방법이 있을지 고견을 묻고 싶습니다. ㅠㅠㅠㅠ

    1. Varins

      June 14, 2018 at 1:18 am

      안녕하세요,
      제가 직접 격어보지 못한 문제라서 정확한 원인을 알기가 어렵네요.
      웹 브라우저의 개발자 기능을 활용해서 에러 코드 등을 파악해보시거나,
      Nginx 서버 블록, 디렉토리 권한, php 설정 등을 살펴보세요.
      또는 웹 브라우저를 다른 것을 사용해서 접속해보세요.

  • jay

    July 9, 2018 at 1:05 pm

    바쁘실텐데 죄송하지만 질문 하나만 드리겠습니다. 좋은 컨텐츠 주고 계신데, 번거롭게 해서 미안할 따름입니다.
    똑같이 따라왔는데 클라우드 페이지에 접속을 하지 못하고 있습니다.

    지금 막히는 것이 서브 도메인 설정인데, 서브 도메인을 어떻게 설정할지 몰라 어쩔 줄 몰라하고 있습니다. 제가 알고 있기론 서브 도메인은 구글 도메인에서 경로나 아이피로 설정하는 것인데, 본 글에서는 서버 블록으로만 설명되어 다소 혼란스럽습니다.

    따라서 똑같이 따라왔습니다만, 당연히 접속이 되지 않고 있네요.

    서브 도메인 설정은 본 페이지 외에도 다수의 페이지에서 다뤄지고 있으므로 설명을 별도로 해주셨으면 정말 감사하겠습니다.

    여러모로 귀찮게 해드린 듯 하여 죄송한 마음데 현답을 구합니다.

    1. Varins

      July 11, 2018 at 8:48 am

      안녕하세요,
      서브 도메인을 생성한다는 것은 abc.example.com 처럼, 기본 도메인 example.com 앞에 접두어 abc. 을 붙여서 접속 주소를 여러 개 더 만드는 것입니다. 서브 도메인은 나의 홈 서버 컴퓨터가 아닌 도메인을 서비스하는 외부의 DNS에서 생성하는 것이기 때문에, 홈 서버 컴퓨터의 내용만을 다루려는 본 글의 목적에서 벗어나서 아직 관련된 글을 작성하지 않았습니다. 외부의 DNS에서 서브 도메인을 생성하면 그걸로 끝이고, 홈 서버 컴퓨터에서는 그 서브 도메인을 그냥 사용하기만 하면 됩니다. 서브 도메인은 기본 도메인의 CNAME (별칭) 방식으로 생성하거나, 독립된 별도의 도메인처럼 다루기 위해 A 레코드 (IP 주소 직접 연결) 방식으로 생성할 수 있습니다. 대부분의 경우 A 레코드 방식이 권장됩니다. 차후에 시간이 허락한다면 글 작성을 시도해보겠습니다. 감사합니다.

Leave a comment

댓글은 관리자의 승인 이후에 게시됩니다.

Prev Post Next Post