NAS

자작 NAS - 웹하드 구축하기 (ownCloud)

coucou3 2020. 2. 2. 17:25
반응형

기본적인 NAS 구성은 지난 번 포스팅으로 모두 마무리 되었다.

이제부터는 필요한 서비스를 그때 그때 추가할 예정이다.

 

가장 먼저 외부에서도 자유롭게 파일 공유를 할 수 있도록 클라우드 서비스를 붙여보자.

 

 

 

 

 


 

 ownCloud 

 

 

 

 

 

ownCloud는 개인 서버에 무료로 클라우드 스토리지 환경을 만들어주는 서비스다. 

ownCloud로 서버를 만들기 위해서는 NAS PC에 LAMP가 모두 설치되어 있어야 한다.

 

L : Linux
A : Apache
M : MySQL
P : PHP

 

 

 

 

 

 1. LAMP 설치 

 

OS가 Ubuntu 18.04이기 때문에 AMP만 설치하면 된다.

 

 

 

1) 아파치 Apache 설치

 

$ sudo apt install apache2

 

 

 

$ apache2 -v로 잘 설치 되었는지 버전 확인

$ apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2019-09-16T12:58:48

 

 

 

또한 NAS PC의 내부 ip주소로 접근하여 확인할 수 있다.

 

 

 

 

 

 

 

2) MySQL 설치

 

$ sudo apt install mysql-server

 

 

$ mysql —version으로 설치/실행 확인

$ mysql --version
mysql  Ver 14.14 Distrib 5.7.29, for Linux (x86_64) using  EditLine wrapper

 

 

 

 

3) PHP 설치 및 확인

$ sudo apt install php
$ php -v
PHP 7.2.24-0ubuntu0.18.04.2 (cli) (built: Jan 13 2020 18:39:59) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.24-0ubuntu0.18.04.2, Copyright (c) 1999-2018, by Zend Technologies

 

ubuntu 18.04 버전에 PHP 7.2.24가 깔린다.

 

 

 

 

 

 2. ownCloud 설치 

 

 

apt에 ownCloud 저장소 키를 추가한다.

$ sudo wget -nv https://download.owncloud.org/download/repositories/production/Ubuntu_18.04/Release.key -O Release.key
2020-02-02 03:32:35 URL:https://download.owncloud.org/download/repositories/production/Ubuntu_18.04/Release.key [4485/4485] -> "Release.key" [1]

 

$ sudo apt-key add - < Release.key

 

 

 

apt에 ownCloud 저장소를 추가한다.

$ sudo echo 'deb http://download.owncloud.org/download/repositories/production/Ubuntu_18.04/ /' |  sudo tee /etc/apt/sources.list.d/owncloud.list

 

 

 

저장소를 갱신한다.

$ sudo apt-get update
Hit:1 http://kr.archive.ubuntu.com/ubuntu bionic InRelease
Hit:3 http://kr.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:4 http://kr.archive.ubuntu.com/ubuntu bionic-backports InRelease
Hit:5 http://kr.archive.ubuntu.com/ubuntu bionic-security InRelease
Ign:2 https://attic.owncloud.org/download/repositories/production/Ubuntu_18.04  InRelease
Get:6 https://download.owncloud.org/download/repositories/production/Ubuntu_18.04  Release [970 B]
Get:7 https://download.owncloud.org/download/repositories/production/Ubuntu_18.04  Release.gpg [481 B]
Get:8 https://download.owncloud.org/download/repositories/production/Ubuntu_18.04  Packages [743 B]
Fetched 2,194 B in 5s (481 B/s)
Reading package lists... Done

 

 

 

필요한 PHP 패키지를 추가로 설치한다.

$ sudo apt install php-bz2 php-curl php-gd php-imagick php-intl php-mbstring php-xml php-zip php-mysql

 

 

 

ownCloud 패키지를 설치한다.

$ sudo apt-get install owncloud-files
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  owncloud-files
0 upgraded, 1 newly installed, 0 to remove and 65 not upgraded.
Need to get 16.0 MB of archives.
After this operation, 101 MB of additional disk space will be used.
Get:1 https://download.owncloud.org/download/repositories/production/Ubuntu_18.04  owncloud-files 10.3.2-1+2.1 [16.0 MB]
Fetched 16.0 MB in 8s (2,031 kB/s)
Selecting previously unselected package owncloud-files.
(Reading database ... 117989 files and directories currently installed.)
Preparing to unpack .../owncloud-files_10.3.2-1+2.1_all.deb ...
Unpacking owncloud-files (10.3.2-1+2.1) ...
Setting up owncloud-files (10.3.2-1+2.1) ...

 

 

 

ownCloud 패키지는 /var/www/owncloud에 설치된다.

$ ls -l /var/www/owncloud/
total 332
drwxr-xr-x 22 www-data www-data   4096 Feb  2 03:39 apps
drwxr-xr-x  2 www-data www-data   4096 Dec  5 18:20 apps-external
drwxr-xr-x  2 www-data www-data   4096 Dec  5 18:20 assets
-rw-r--r--  1 root     root       8859 Dec  5 16:07 AUTHORS
-rw-r--r--  1 root     root     145204 Dec  5 16:07 CHANGELOG.md
drwxrwxr-x  2 www-data www-data   4096 Feb  2 03:39 config
-rw-r--r--  1 root     root       4365 Dec  5 16:07 console.php
-rw-r--r--  1 root     root      34520 Dec  5 16:07 COPYING
drwxr-xr-x 16 root     root       4096 Feb  2 03:39 core
-rw-r--r--  1 root     root       1717 Dec  5 16:07 cron.php
drwxr-xr-x  2 www-data www-data   4096 Dec  5 18:20 data
-rw-r--r--  1 root     root      31203 Dec  5 16:07 db_structure.xml
drwxr-xr-x  2 root     root       4096 Dec  5 18:20 etc
-rw-r--r--  1 root     root        179 Dec  5 16:07 index.html
-rw-r--r--  1 root     root       3672 Dec  5 16:07 index.php
drwxr-xr-x  6 root     root       4096 Feb  2 03:39 lib
-rwxr-xr-x  1 root     root        283 Dec  5 16:07 occ
drwxr-xr-x  2 root     root       4096 Feb  2 03:39 ocm-provider
drwxr-xr-x  2 root     root       4096 Feb  2 03:39 ocs
drwxr-xr-x  2 root     root       4096 Feb  2 03:39 ocs-provider
-rw-r--r--  1 root     root       3198 Dec  5 16:07 public.php
-rw-r--r--  1 root     root       2157 Dec  5 16:07 README.md
-rw-r--r--  1 root     root       5490 Dec  5 16:07 remote.php
drwxr-xr-x  4 root     root       4096 Feb  2 03:39 resources
-rw-r--r--  1 root     root         26 Dec  5 16:07 robots.txt
drwxr-xr-x 12 root     root       4096 Feb  2 03:39 settings
-rw-r--r--  1 root     root       2059 Dec  5 16:07 status.php
drwxr-xr-x  6 root     root       4096 Feb  2 03:39 updater
-rw-r--r--  1 root     root        280 Dec  5 16:07 version.php

 

이제 이 디렉토리를 아파치 서버로 띄우면 된다.

 

 

 

 

 

 3. 아파치 Apache 서버 설정 

 

 

/etc/apache2/sites-available/에 있는 000-default.conf 설정 파일을 복사해 경로만 바꿔서 써보자.

$ cd /etc/apache2/sites-available
$ sudo cp 000-default.conf ownCloud.conf
$ sudo vim ownCloud.conf
...
<VirtualHost *:80>
        #ServerName
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
</irtualHost>
...

 

열어보면 주석처리 된 # ServerName과 ServerAdmin, DocumentRoot가 있다.

도메인이 있다면 ServerName은 # 주석을 지워주고, 원하는 도메인을 적어준다. (예, commitCloud.com)

DocumentRoot에는 ownCloud 경로 /var/www/owncloud를 적어준다.

 

 

 

기존 000-default.conf를 비활성화 시키고, 새로 만든 ownCloud.conf를 등록해준다.

$ sudo a2dissite 000-default.conf
$ sudo a2ensite ownCloud.conf
$ sudo systemctl restart apache2

 

 

 

 

 

 

 4. MySQL 설정 

 

 

MySql 접속

$ sudo mysql -u root -p
Enter password:

(root 패스워드를 입력한다.)

 

 

 

'DB이름'이라는 database를 생성한다.

mysql> create database <DB이름>;

 

 

 

관리자 계정을 생성한다.

mysql> create user '<계정이름>'@'localhost' identified by '<비밀번호>';
Query OK, 0 rows affected (0.00 sec)

 

 

 

관리자 계정에 모든 DB권한을 부여한다.

mysql> grant all privileges on <DB이름>.* to <계정이름>@localhost;
mysql> flush privileges;
mysql> exit;

 

 

 

 

 

 5. ownCloud 접속 

 

 

 

1) 외부접속

 

 

이전에 설정한 DDNS를 통해 외부에서도 접속할 수 있다.

공유기 설정에서 고급 설정 - NAT/라우터 관리 - 포트포워드 설정에서 새로운 포트포워딩을 추가한다.

NAS PC의 내부 IP에 80포트와 443포트를 각각 추가한다.

 

 

 

 

 

<DDNS주소>:<설정한포트>로 브라우저에서 들어가면 정상적으로 ownCloud에 접근할 수 있다.

원하는 사용자 이름과 암호를 적고,

데이터 폴더는 기본값으로 하고,

데이터베이스 설정에 MySQL에서 생성한 사용자와 데이터베이스 정보를 입력한다.

 

 

 

 

 

 

정상적으로 설치가 완료되면 아래 화면이 나타난다.

 

 

 

 

 

 

방금 만든 계정으로 로그인 해보자.

 

 

 

ownCloud의 기본 데이터 경로인 /var/www/owncloud/data가 나타난다.

 

 

 

 

2) 내부접속

 

내부 ip를 통한 내부 네트워크에서 접속을 설정해보자.

/var/www/owncloud/config/config.php를 수정해야한다.

$ sudo vim /var/www/owncloud/config/config.php
<?php
$CONFIG = array (
...
  'trusted_domains' =>
  array (
          0 => 'xxx.com',
          1 => '<내부IP주소>',
  ),
...

 

array에 NAS PC의 내부IP를 추가하고

apache를 재실행한다.

$ sudo systemctl restart apache2

 

 

 

 

 

 6. ownCloud data 경로 변경 

 

ownCloud의 기본 경로는 OS가 설치된 논리볼륨으로, 용량이 넉넉하지 않다.

기본 경로를 원하는 디렉토리로 변경해보자.

 

 

먼저 apache를 종료한다.

$ sudo systemctl stop apache2

 

 

기본 data 디렉토리를 원하는 곳으로 이동한다.

$ sudo mv /var/www/owncloud/data <원하는 경로>

 

 

ownCloud 설정을 변경해 새로운 디렉토리를 지정한다.

$ sudo vim /var/www/owncloud/config/config.php
...
	'datadirectory' => '새로운 경로',
...

 

 

 

apache를 다시 실행한다.

$ sudo systemctl start apache2

 

 

 

 

여기까지 해서 접속해보면 새로 바꾼 경로가 ownCloud에 잘 나타난다.

그러나 다운로드나 업로드, 또는 폴더 생성이 권한 문제로 작동하지 않는다.

ownCloud Doc의 튜토리얼을 참고하여 문제를 해결했다.

 

https://doc.owncloud.org/server/10.4/admin_manual/maintenance/manually-moving-data-folders.html?highlight=move%20data%20directory

How To Manually Move a Data Directory

doc.owncloud.com

 

mysql을 실행하여 계정 정보를 수정해줘야 한다.

$ sudo mysql -u root -p
Enter password:

(root 패스워드를 입력한다.)

 

 

 

우선 계정 정보를 확인해보자.

mysql> SELECT * FROM <DB이름>.oc_accounts;
+----+-------+----------+---------------+--------------+-------+------------+------------------+---------------------------------+-------+
| id | email | user_id  | lower_user_id | display_name | quota | last_login | backend          | home                            | state |
+----+-------+----------+---------------+--------------+-------+------------+------------------+---------------------------------+-------+
|  1 | NULL  |  <계정>  | <계정>         | <계정>        | none  | 1580646778 | OC\User\Database | /var/www/owncloud/data/<계정>   |     1 |
+----+-------+----------+---------------+--------------+-------+------------+------------------+---------------------------------+-------+
1 row in set (0.00 sec)

 

 

home 경로가 이전 경로로 되어있다.

아래 명령어로 바꿔준다.

mysql> Update <DB이름>.oc_accounts set home = '<새로운경로>' where id = 1;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

 

<새로운 경로>는 기본값과 마찬가지로 마지막이 '/계정'으로 끝나는 경로여야 한다.

 

 

 

아파치를 재실행한다.

$ sudo systemctl restart apache2

 

 

 

이제 다운로드, 업로드, 폴더 추가 등 모두 정상적으로 작동한다.

 

 

 

 

 

 

 

 

추가적으로 경로를 조금 손봐주면 AFP-Mac, SMB-Windows, ownCloud-Web으로 모든 플랫폼에서 동일한 경로를 공유할 수 있을 것 같다.

반응형