Raspberry Pi + owncloud 個人雲端儲存空間
你永遠不知道Raspberry pi這台單版電腦能做什麼,因為它能做的事情實在太多,實際上操作起來,才覺得這小東西的效能真的還不錯,此篇用於紀錄我使用Raspberry Pi 安裝owncloud 9.0.0,用於建置個人雲端儲存空間。
當然,若是想要比較省事又要更強大的功能,是可以考慮安裝NAS openmediavault 這個套件,一般NAS該有的功能都可以使用,更可以在擴充功能中安裝owncloud套件,openmediavault在官網有專為Raspberry Pi的iso檔可供安裝,非常方便,但要說什麼缺點,運作起來的效能算是差了一點,對於單版電腦來說,吃力了些。(不過不知到在pi3的表現如何就是了)
無論如何,為了效能,還有想保有原生系統的一些操作權,單純使用Raspberry pi + Raspbian Jessie + Owncloud 9,將儲存空間放置於外接硬碟中(如圖,在pi的下方放了一個2.5" 500G的隨身碟,架設自已使用的網路空間,方便在外部存取資料及分享大檔案資料。
準備元件
Raspberry Pi (建議 Ver. 2以上)
隨身碟
(USB 2 or 3 不限,但要注意供電是否足夠推得動硬碟,通常硬碟外接獨立電源、pi使用USB輸電、不然就是硬碟接到帶電的USB Switch)
-----------------------------------------
OS:Raspbian Jessie
核心套件:mysql、php、nginx、php5fpm
前期作業
先將OS裝好,並更新最新的套件資訊
$sudo apt-get update
安裝 MySql
$sudo apt-get install mysql-server -y
安裝過程中,需要設定mysql root密碼
安裝完成後,建立owncloud所需之資料庫
首先,先登錄mysql
$mysql -u root -p
輸入密碼後,進入mysql控制介面,輸入下列指令
(記得更換相關資訊,我用一些顏色標記出來,方便修改,紅色是需要改的,綠色依需求更改)
CREATE DATABASE owncloud; CREATE USER root@localhost IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON owncloud.* TO root@localhost; FLUSH PRIVILEGES; exit安裝PHP相關套件
$sudo apt-get install php5-mysql openssl ssl-cert php5-cli php5-common php5-cgi php-pear php-apc curl libapr1 libtool php5-curl libcurl4-openssl-dev php-xml-parser php5-dev php5-gd libmemcached* memcached php5-memcached -y
安裝nginx和php5-fpm 伺服器套件
$sudo apt-get install php5-fpm nginx -y
接下來就要試著安裝owncloud,但在這邊要先暫停一下,說明一下我有點不太正常的做法,在很多教學文件,會先將owncloud架設起來,然後再改/config/config.php中儲存位址的參數至外接硬碟中,此做法,在8之前的版本應該行得通,但在現行的版本9,會因為權限的問題顯得非常的難調整,個人改了好多次都因為應owncloud非原生(在同一個目錄下)資料夾,會變得無法存取。
試到最後,整個腦羞把owncloud連同主程式丟到隨身碟運作,結果還真的搞定了權限的問題,所以這邊紀錄當時的做法。
先去官網找合適的安裝版本
https://download.owncloud.org/download/repositories/stable/owncloud/
以Jessie版本來說,適合的對應版本為Debian 8.0
直接進入外接硬碟所掛載的目錄資料夾,以此例來說,是 /mnt/USB500G/
先去官網找合適的安裝版本
https://download.owncloud.org/download/repositories/stable/owncloud/
以Jessie版本來說,適合的對應版本為Debian 8.0
直接進入外接硬碟所掛載的目錄資料夾,以此例來說,是 /mnt/USB500G/
$cd /mnt/USB500G/
$wget http://download.owncloud.org/download/repositories/stable/Debian_8.0/owncloud_9.0.0.orig.tar.gz
tar -xvf owncloud_9.0.0.orig.tar.gz
$sudo chown -R www-data:www-data /mnt/USB500G/
建立一組SSL評證給owncloud
$sudo openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /etc/nginx/ssl/owncloud.key -out /etc/nginx/ssl/owncloud.crt
會需要輸入一些資訊(etc. 名字、所在地、公司名),多少寫一些,也可以留白,在common name,可輸入你所使用的DNS Address,如:mistest.ddns.net
若沒有自已的DNS Address,可去noip註冊一組,本文之後會教學如何設定NoIP對應家中非固定制ip位址.
接下來為owncloud建立所使用的nginx virtualhost
$sudo nano /etc/nginx/sites-available/owncloud
貼上下列資訊,並且修改server_name 為你的dns address或ip address
並且在root 後修改並輸入隨身硬碟位址 (ex./mnt/USB500G ),如下列綠色標記處
並且在root 後修改並輸入隨身硬碟位址 (ex./mnt/USB500G ),如下列綠色標記處
server {
listen 80;
server_name mistest.ddns.net 192.168.40.135;
return 301 https://$server_name$request_uri; # enforce https
}
server {
listen 443 ssl;
server_name mistest.ddns.net 192.168.40.135;
access_log /var/log/nginx/sitename.access.log;
error_log /var/log/nginx/sitename.error.log;
ssl_certificate /etc/nginx/ssl/owncloud.crt;
ssl_certificate_key /etc/nginx/ssl/owncloud.key;
# Path to the root of your installation
root /var/www;
client_max_body_size 10G; # set max upload size
fastcgi_buffers 64 4K;
# Some rewrite rules, more to come later
rewrite ^/owncloud/caldav((/|$).*)$ /owncloud/remote.php/caldav$1 last;
rewrite ^/owncloud/carddav((/|$).*)$ /owncloud/remote.php/carddav$1 last;
rewrite ^/owncloud/webdav((/|$).*)$ /owncloud/remote.php/webdav$1 last;
# Protecting sensitive files from the evil outside world
location ~ ^/owncloud/(data|config|\.ht|db_structure.xml|README) {
deny all;
}
# Configure the root location with proper rewrite rules
location /owncloud/ {
rewrite ^/owncloud/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/owncloud/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/owncloud/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/owncloud/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^/owncloud/apps/calendar/caldav.php /remote.php/caldav/ last;
rewrite ^/owncloud/apps/contacts/carddav.php /remote.php/carddav/ last;
rewrite ^/owncloud/apps/([^/]*)/(.*\.(css|php))$ /index.php?app=$1&getfile=$2 last;
rewrite ^(/owncloud/core/doc[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
location ~ \.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_pass unix:/var/run/php5-fpm.sock;
}
# Optional: set long EXPIRES header on static assets
location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
# Optional: Don't log access to assets
access_log off;
}
}
編輯owncloud的config檔,將自已的ip位址或dns網址加到owncloud信任清單之中:
啟動owncloud site 並關掉預設的nginx site
$sudo nano
/mnt/USB500G/owncloud/config/config.php
$sudo nano /etc/php5/fpm/php.ini
啟動owncloud site 並關掉預設的nginx site
$sudo ln -s /etc/nginx/sites-available/owncloud /etc/nginx/sites-enabled/owncloud
$sudo unlink /etc/nginx/sites-enabled/default
若之後有想要使用web介面管理並上傳資料,記得要去改一下php的參數
$sudo nano /etc/php5/fpm/php.ini
有個設定值將字元編碼預設成utf-8 以防未來中文檔名出現亂碼
下列其他參數可依照自已需求更改。
下列其他參數可依照自已需求更改。
default_charset = "UTF-8"
upload_max_filesize = 10G
post_max_size = 10G
upload_tmp_dir = /mnt/usbstorage/owncloud/tmp
max_input_time = 360000
#The maximum time in seconds a script is allowed to parse input data.
max_execution_time = 360000
memory_limit = 512M
extension=memcached.so
存檔後,重啟php 及nginx
$sudo service nginx restart
$sudo service php5-fpm restart
上述做完,owncloud就安裝得差不多了,接下來,使用瀏覽器開啟owncloud網頁
(請記得下列網址要使用https,並且在yourIPAddress(紅色字部份)更改成自已的ip位址或是dns網址。
https://yourIPAddress/owncloud
(請記得下列網址要使用https,並且在yourIPAddress(紅色字部份)更改成自已的ip位址或是dns網址。
https://yourIPAddress/owncloud
修改trusted_domains 中的數值,下列是將有用到的dns位址及ip位址都加入(紅字部份)。
'trusted_domains' => array ( 0 => 'mistest.ddns.net', 1 => '192.168.0.123', ),
之後,再重開一下網頁,應該可以看到下列畫面
按finish setup,接下來所有的安裝程序就完成了
====================================================
在台灣若沒有特別和isp簽固定ip的使用,通常配發的都是動態的ip位址,意即每一次連線上網的時後,有可能拿到ip都不盡相同,對於我們要在外面連回來存取資料,會顯得很不方便。
為解決這個問題,可以採用由noip所提出的解決方案,透過使用noip可將固定的domain name 和動態的ip位址,經由固定更新的方式對應在一起。
更好的是,noip是免費使用的
以下提供小小的教學:
首先,當然先到noip網站註冊一組帳密(註冊方式就不說明了)
下載 Dynamic DNS Update Client for Linux,可在noip的網站中找到
https://www.noip.com/download?page=linux
$cd /home/pi
$wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz
tar -z zxvf
$cd /usr/local/src
$sudo tar -zxvf /home/pi/noip-duc-linux.tar.gz
$cd noip-2.1.9-1
$sudo make
$sudo make install
其後輸入相關資訊
Please enter the login/email string for no-ip.com kiki@gmail.com #帳號 Please enter the password for user 'kiki@gmail.com' *** #密碼 Only one host [vbirdtsai.no-ip.org] is registered to this account. It will be used. Please enter an update interval:[30] Do you wish to run something at successful update?[N] (y/N) n之後系統會產出設定檔,之後可直接執行noip
$sudo /usr/local/bin/noip2
如此,noip已經開始運作了,且每30分鐘和noip同步一次該ip的狀況,當然可以用noip2 -S確認目前noip運作狀況。==================================
這樣子就完成了Raspberry Pi + Owncloud + 隨身碟,形成了一個自用的雲端空間,要存什麼都可以,別忘記官網上有於各種行種運算裝置所使用Owncloud App(需付費30元) 喔!
ps: 此文件供初步安裝,很多功能細數都還沒調整過,不過以經可以正常使用服務,若有什麼問題或指導,歡迎於下面留言討論 ^_^!
參考文章:
http://www.htpcguides.com/install-owncloud-8-x-raspberry-pi-for-personal-dropbox/
鳥哥
http://linux.vbird.org/linux_server/0270dynamic_dns.php
留言
張貼留言