[Website] 雲端硬碟 – 安裝 OwnCloud

ownCloud 是一個市面上開源的雲端硬碟的解決方案,本篇會先介紹如何在 docker 上快速架起一個 ownCloud 的服務,再來介紹如何安裝在 Linux 的主機上讓檔案可以跟 Linux 本機共用,由於有同步伺服器與筆記型電腦的需求,所以研究這兩個辦法,以下列出彼此的優缺點,綜合以下的優缺點我們最後選擇的是方法二:

部署 ownCloud 方法

優點

缺點

方法一:
使用 docker-compose

1.可以迅速部署
2.獨立於其他的服務之外

1.難與 Linux 檔案系統整合
2.難以部署 SSL 認證

方法二:安裝在本機的
PHP Server 之上

1. 易整合 Linux 檔案系統
2. SSL 簡易部署

1. 各種 PHP Server 的問題
2. 與其他 PHP 服務共用伺服器

方法一:使用 docker 安裝 OwnCloud:

本篇主要參考的是

執行起來其實很簡單,只要 Linux 的主機上有 docker 與 docker-compose 的環境安裝好,依序執行以下指令就可以了,

首先創造資料夾 

mkdir owncloud-docker-server
cd owncloud-docker-server

接下來下載關鍵的 docker-compose.xml 檔案

wget https://raw.githubusercontent.com/owncloud/docs/master/modules/admin_manual/examples/installation/docker/docker-compose.yml

並且準備一個 .env 檔,包含以下內容:

OWNCLOUD_VERSION=10.3
OWNCLOUD_DOMAIN=localhost
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin
HTTP_PORT=8080

完成以上步驟在執行以下指令就可以在 docker 上啟動 ownCloud 了

docker-compose up -d
Starting owncloud-docker-server_redis_1 ... done
Starting owncloud-docker-server_db_1    ... done
Starting owncloud-docker-server_owncloud_1 ... done

此時執行以下指令可以顯示出正在運行的容器內容。

docker container ls
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS                    PORTS                    NAMES
98066e047012        owncloud/server:10.3       "/usr/bin/entrypoint…"   5 hours ago         Up 39 seconds (healthy)   0.0.0.0:8080->8080/tcp   owncloud-docker-server_owncloud_1
2f559e5ca249        webhippie/mariadb:latest   "/usr/bin/entrypoint…"   26 hours ago        Up 40 seconds (healthy)   3306/tcp                 owncloud-docker-server_db_1
320de8d0c0f2        webhippie/redis:latest     "/usr/bin/entrypoint…"   26 hours ago        Up 40 seconds (healthy)   6379/tcp                 owncloud-docker-server_redis_1
方法二:安裝 OwnCloud 在本機的 PHP Server 上

預設要安裝 ownCloud 到 /home/xxx/public_html/owncloud 的資料夾中,一旦安裝完之後,所有檔案會在 /home/xxx/public_html/owncloud/data 中如以下方式呈現:

drwxr-xr-x 6 xxx xxx     4096 Nov 15 23:28 admin
drwxr-xr-x 2 xxx xxx     4096 Nov 15 00:01 avatars
drwxr-xr-x 2 xxx xxx     4096 Nov 15 00:20 files_external
-rwxr-xr-x 1 xxx xxx        0 Nov 15 00:01 index.html
-rwxr-xr-x 1 xxx xxx 12865536 Nov 16 08:24 owncloud.db
-rwxr-xr-x 1 xxx xxx     6104 Nov 16 08:16 owncloud.log

所有檔案將可以直接在 Linux 上面被使用。另外安裝方式也不會太複雜

1.下載並解壓縮檔案

cd /home/xxx/public_html
wget https://download.owncloud.org/community/owncloud-10.3.1.zip
unzip owncloud-10.3.1.zip

2.前往 https://YourURL/owncloud,你會看到以下 owncloud 的初始化畫面,

3.準備資料庫 (本篇使用 MariaDB) 進入資料庫新增 owncloud 資料庫與其相對應的使用者 ownclouduser 及其密碼:

MariaDB [(none)]> create database owncloud default character set utf8 default collate utf8_unicode_ci;
MariaDB [(none)]> grant all on owncloud.* to ownclouduser@localhost identified by 'password' with grant option;

4.設定使用者名稱與密碼並按下 (儲存空間與資料庫的按鈕) 如下圖所示:

5, 按下完成設定則大致上完成

遇到問題:

登入之後,發生無法正常顯示檔案的問題,檔案頁一直呈現載入的小圈圈,雖然可以設定使用者等等的東西,但是無法正常使用,前往 log 頁面查看,發現以下錯誤訊息:

[xxx xxx 15 21:39:55.466470 2019] [authz_core:error] [pid 28353:tid 140061466539776] AH01630: client denied by server configuration: /home/xxx/public_html/owncloud/remote.php
解決方法:

前往 /usr/local/apache/conf.d/vhosts 更改相對應的 .conf 檔案(備註:一併更改 SSL.conf 的檔案),將

<Directory "/home/xxx/public_html/owncloud">
        Options -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
</Directory>

改為

<Directory "/home/xxx/public_html/owncloud">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
</Directory>

備註1: 記得要重新啟動 apache (systemctl restart apache)
備註2: 另外要關注自己的 apache 版本如果是 apache 2.4 以上要改成以下設定參考

<Directory "/home/xxx/public_html/owncloud">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
</Directory>