OwnCloud其实很复杂,所以前期的准备工作要很长很长,但是我认为这是一个一劳永逸的事情,前期的工作做的越多,后面我们的使用就越简单。
✨Duang✨
当我第一次听说
私人云盘
的时候,其实我是拒绝的。 因为我觉得不能你叫我用,我就用。 后来我试了一下,确实很不错,上传和下载速度都是Duang Duang
的快,还支持跨设备跨平台使用。 现在我每天都会上传成家班
的照片和视频,然后给大家看。
成家班往事(少儿不宜,看不见就对了)

前言
其实我要私人云盘的目的只有一个:我的手机存储很小,但是我又想随时随地的浏览之前手机里面的照片和视频。
目前市面上的网络云盘
五花八门,大部分都是限速云盘
,或者小容量云盘
。
如果非要这些云盘里面选择一个的话,那么只有微软的OneDrvie
还能打,其他云盘都需要分类
。但是OneDrive的话因为DNS污染,个人版网页端无法直接访问,家庭版的车也不保险,商业版的价格又有点小贵。
那怎么办呢?
关键词
- OwnCloud (开源与商业并存的典范!)
- Nginx (我很轻,但是我很 强 !)
- MySQL (开源数据库,用了都说好!)
- Redis (我的字典里不允许卡顿!)
- 树莓派
没错,整个系统又又又是搭建在树莓派上的!啊咧,其实我想说的是yo yo yo~ check it out~
- 小马的OwnCloud(测试账户:账户test,密码test)
- 马伯恩的小站(私货,恰饭嘛,不寒碜💰)
OwnCloud
关于OwnCloud
Why is this so awesome?(为什么选择OwnCloud?)
- 📁 访问数据 可以将文件、联系人、日历等数据存储在自定义的服务器上。
- 📦 同步数据 可以让文件、联系人、日历等在设备之间保持同步。
- 🔄 共享数据 可以与他人共享数据,并允许他们访问最新的照片库、日历或希望他们看到的任何内容。
- 🚀 插件+扩展 例如日历、通讯录、邮件或新闻。
- ☁️ 云存储 在自己的服务器上享受云存储的便利。
- 🔒 安全加密
OwnCloud
可以使用安全的https
连接加密传输中的数据。也可以启用加密应用程序来加密存储上的数据,以提高安全性和隐私性。(例如2-Step Authenticator
)
先决条件
硬件要求
- 树莓派:首先你得买一个派呀,不然
巧妇难为无米之炊
。 - 硬盘:仅靠树莓派的存储空间是不够滴,我们还需要额外的存储空间。
- 硬盘盒:给硬盘供电。频繁的读写可能会导致硬盘功耗过高,从而引起树莓派供电不足而宕机。
- 连接线:建议购买USB3.0接口的线连接树莓派和硬盘。

软件要求
Nginx
:不会吧,你还在用Apache
?漏洞警告.jpgPHP
: 7.3版本天下无敌!MySQL
: 用作为OwnCloud的数据库OwnCloud
: 安装OwnCloud框架Linux挂载磁盘
:之前我不会,现在我也不太清楚,所以我要再写一遍。
安装PHP
sudo apt-get install openssl ssl-cert php7.3-xml php7.3-dev php7.3-curl php7.3-gd php7.3-fpm php7.3-zip php7.3-intl php7.3-mbstring php7.3-cli php7.3-mysql php7.3-common php7.3-cgi php7.3-apcu php7.3-redis redis-server php-pear curl libapr1 libtool libcurl4-openssl-dev php-redis
配置PHP
进入php的配置文件:
sudo gedit /etc/php/7.3/fpm/php.ini
配置php上传和发送参数:
old: upload_max_filesize = 2M
new: upload_max_filesize = 2000M
old: post_max_size = 8M
new: post_max_size = 2000M
配置php www.conf文件环境参数:
- From:
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
- To:
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
安装Nginx
sudo apt update
sudo apt install nginx
配置Nginx
在安装Nginx之后,我们需要配置一下Nginx以适用于OwnCloud。需要注意的是,我们需要在Nginx的配置文件中加入php-handler,配置HTTPS的证书,以及添加Owncloud运行的路径root /var/www/owncloud/;
。
进入Nginx的配置文件:
sudo gedit /etc/nginx/sites-available/default
配置Nginx,新建一个Web Server,并加入如下代码:
upstream php-handler { server unix:/var/run/php/php7.3-fpm.sock; }
server{
# add a new Nginx server for OwnCloud
# SSL configuration
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate /home/pi/Cert/www.majun.fun.pem;
ssl_certificate_key /home/pi/Cert/www.majun.fun.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:AES256+EDH';
# ssl_dhparam /etc/nginx/dh2048.pem;
ssl_prefer_server_ciphers on;
keepalive_timeout 70;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" always;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
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;
root /var/www/owncloud/;
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;
}
# set max upload size
client_max_body_size 512M;
fastcgi_buffers 8 4K;
fastcgi_ignore_headers X-Accel-Buffering;
gzip off;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location / {
rewrite ^ /index.php$uri;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
return 404;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
return 404;
}
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $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_read_timeout 180;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off; #Available since NGINX 1.7.11
}
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri $uri/ =404;
index index.php;
}
location ~ \.(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "max-age=15778463";
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
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;
access_log off;
}
location ~ \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg|map)$ {
add_header Cache-Control "public, max-age=7200";
try_files $uri /index.php$uri$is_args$args;
access_log off;
}
}
配置虚拟缓存
一般的话,我们是不需要设置SWAP(交换空间)的,默认值100M已经够用了,但是考虑到云盘的上传下载频率,最好更改SWAP为合适的大小,比如1200M
:

进入系统swap配置文件,并更改配置如下:
sudo gedit /etc/dphys-swapfile
-From:
CONF_SWAPSIZE=100
-To:
CONF_SWAPSIZE = 512
重启swap服务以生效:
sudo /etc/init.d/dphys-swapfile restart
安装MySQL
运行MySQL安装命令:
sudo apt update
sudo apt upgrade
sudo apt install mariadb-server
设置MySQL的运行向导,运行如下命令:
sudo mysql_secure_installation
设置MySQL管理账户:
sudo mysql -u root -p
为OwnCloud创建数据库:
mysql -u root -e "CREATE DATABASE IF NOT EXISTS owncloud; \
GRANT ALL PRIVILEGES ON owncloud.* \
TO owncloud@localhost \
IDENTIFIED BY 'password'";
安装OwnCloud
OwnCloud的安装很简单,指定安装路径,然后安装即可。但在这之前,我们需要配置occ
工具:
- 配置OCC助手:
FILE="/usr/local/bin/occ"
/bin/cat <<EOM >$FILE
#! /bin/bash
cd /var/www/owncloud
sudo -E -u www-data /usr/bin/php /var/www/owncloud/occ "\$@"
EOM
chmod +x /usr/local/bin/occ
- 下载OwnCloud并授予
www-data
权限:
cd /var/wwww/
wget https://download.owncloud.org/community/owncloud-complete-20210721.tar.bz2 && \
tar -xjf owncloud-complete-20210721.tar.bz2 && \
chown -R www-data. owncloud
- 安装OwnCloud:
occ maintenance:install \
--database "mysql" \
--database-name "owncloud" \
--database-user "owncloud" \
--database-pass "password" \
--admin-user "admin" \
--admin-pass "admin"
配置OwnCloud信任域
安装OwnCloud之后,需要添加信任域才可以访问,进入OwnCloud配置文件进行配置:
sudo gedit /var/www/owncloud/config/config.php
myip=$(hostname -I|cut -f1 -d ' ')
occ config:system:set trusted_domains 1 --value="$myip"
配置OwnCloud缓存设置
occ config:system:set \
memcache.local \
--value '\OC\Memcache\APCu'
occ config:system:set \
memcache.locking \
--value '\OC\Memcache\Redis'
occ config:system:set \
redis \
--value '{"host": "127.0.0.1", "port": "6378"}' \
--type json
至此,我们的OwnCloud服务就配置完成了。可以通过如下链接访问:OwnCloud站点地址

外挂存储
Linux上挂载磁盘其实挺难的,主要我不会。但是不要紧,只要我写的够详细,下次我一定会。
- 安装分区工具,并加载内核
sudo apt-get install ntfs-3g
modprobe fuse
- 为外部磁盘创建一个目录
sudo mkdir /home/pi/externalDisk16TB
- 获取3个id,分别是gid,uid,uuid
id -g www-data
id -u www-data
ls -l /dev/disk/by-uuid
- 写入开机启动项
sudo gedit /etc/fstab
UUID=DC72-0215 /home/pi/externalDisk16TB auto nofail,uid=33,gid=33,umask=0027,dmask=0027,noatime 0 0
挂载成功之后,如下:
sudo df-h

使用体验
速度
速度肯定是云盘的第一目标。我们简单看下上传和下载的速度,我还是比较满意的。
- 上传: 峰值在17M左右,一般15M左右。


也许有人就会问了,为什么上传能到17M,而下载只有5M?
答案就是洋葱
,没错,我加了洋葱
。
细心的观众已经发现其实上传的时候是多线程上传的,而下载的时候只有单一线程下载,所以它们的速度会有大的差异,但是这速度对于个人来用已经绰绰有余了!!!
客户端
Windows + Mac + Iphone + Android Phone
支持所有主流平台的客户端。
后记
不吹了,说点实际的使用感受吧。
我在我的所有的设备上都安装了OwnCloud,体验最好的是Ipad,其次是Web端,然后是Windows客户端,Android Phone体验最差。
但是总的来说还是不错的,基于树莓派的私人云盘,投入少,功耗低,性能够用,有一些小瑕疵,但是无伤大雅。
引用康熙大帝的一句话:
