![](https://www.seokwoo.kim/wp-content/uploads/2020/05/ownCloud-enterprise-file-sharing.jpg)
ownCloud
사전준비 사항으로 LAMP(Linux Apache MySQL PHP) 설치가 필요하다. 이 포스팅은 OS가 Ubuntu 18.04 을 기준으로 설치 과정을 설명한다.
1. ownCloud 설치
apt에 ownCloud 저장소 키를 추가한다.
$ sudo wget -nv https://download.owncloud.org/download/repositories/production/Ubuntu_18.04/Release.key -O Release.key $ 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
필요한 PHP 패키지를 추가로 설치한다.
$ sudo apt install php-bz2 php-curl php-gd php-imagick php-intl php-mbstring php-xml php-zip php-mysql
2. ownCloud 패키지를 설치한다.
$ sudo apt install owncloud-files
sudo apt 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 0 not upgraded.
Need to get 16.5 MB of archives. After this operation, 102 MB of additional disk space will be used.
Get:1 https://download.owncloud.org/download/repositories/production/Ubuntu_18.04 owncloud-files 10.4.1-1+1.1 [16.5 MB] Fetched 16.5 MB in 9s (1921 kB/s) Selecting previously unselected package owncloud-files. (Reading database … 85839 files and directories currently installed.) Preparing to unpack …/owncloud-files_10.4.1-1+1.1_all.deb … Unpacking owncloud-files (10.4.1-1+1.1) … Setting up owncloud-files (10.4.1-1+1.1) …
ownCloud 패키지는 /var/www/owncloud에 설치된다.
3. 아파치 Apache 서버 설정
/etc/apache2/sites-available/에 있는 000-default.conf 설정 파일을 복사해 owncloud 설치 위치로 경로만 바꿔서 써보자.
$ 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은 # 주석을 지워주고, 원하는 도메인을 적어준다. (예, ㅡmyCloud.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 <계정이름>@local
host; mysql> flush privileges; mysql> exit;
5. ownCloud 접속
1) 서버 IP 또는 설정한 FQDN으로 접속 한다.
이전에 설정한 DDNS를 통해 외부에서도 접속할 수 있다.
공유기 설정에서 고급 설정 – NAT/라우터 관리 – 포트포워드 설정에서 새로운 포트포워딩을 추가한다.
NAS PC의 내부 IP에 80포트와 443포트를 각각 추가한다.
<DDNS주소>:<설정한포트>로 브라우저에서 들어가면 정상적으로 ownCloud에 접근할 수 있다.
원하는 사용자 이름과 암호를 적고,
데이터 폴더는 기본값으로 하고,
데이터베이스 설정에 MySQL에서 생성한 사용자와 데이터베이스 정보를 입력한다.
정상적으로 설치가 완료되면 아래 화면이 나타난다.
![](http://3.34.98.191/wp-content/uploads/2023/07/image-1-1024x578.png)
방금 만든 계정으로 로그인 해보자.
![](http://3.34.98.191/wp-content/uploads/2023/07/image-2.png)
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의 튜토리얼을 참고하여 문제를 해결했다.
How To Manually Move a Data Directory
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 | OCUserDatabase | /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으로 모든 플랫폼에서 동일한 경로를 공유할 수 있을 것 같다.