目录 | Table of Contents
现在的电子设备真是越来越多。我同步不同设备一般用微软自带的共享文件(也就是前段时间出加密病毒那个),公网上就退化成非常落后的sftp、或者弄到网页上,非常不方便管理。一直在找一个适合的东西来同步。
免费的服务速度慢,像百毒云之流除了开车别的挺没良心的。收费的总带全家桶,不够自由,如微软的Office全家桶(个人觉得微软的全家桶性价比最好),微软还可以课金上azure个人觉得有没必要,google的G Suite全家桶,苹果封闭式的生态圈更不用说了,人家的数据中心也不近,又贵又慢,可玩性低。ownCloud很久以前就听过,总感觉没发展成熟,bug也特别多,一直没试。本来想今天氪一个微软的全家桶,氪之前digital ocean上面试玩了一下了oc,意外地觉得还不错!基本上满足现代生活多个设备文件、日历、通讯录的同步,特别的方便。然后就立马放弃氪微软全家桶(改氪了台新的ovh服务器)
oc的安全事故也有所耳闻,文档方面第一感觉是做得比Wordpress差,版本之间改动很大,特别是整个旧商城搬迁了,安装方面指引不太明确,也走了不少弯路,自己的服务安全显然要自己负责。但最终能够对接上我的自动更新程序,让我后面的维护省了不少功夫。另外oc的app做得非常烂,还收费。事实上我们并不需要这些app,因为网页版 加 系统自带的软件(例如iOS自带的日历)就足够了。
NAS也终于由非常专业的商业办公用途,开始走进千家万户了。WebDAV 作为一个效率没那么高的协议,仍不失为一种NAS解决方案。
安装过程
我架设之前的系统环境是CentOS7 + Nginx + HHVM + MariaDB。实验发现ownCloud 并不兼容 HHVM-3.18,会出现
perf_event_open failed with: No such file or directory
Fatal error: Call to undefined method OC\\Security\\CSP\\ContentSecurityPolicy::set() in /var/www/html/owncloud/lib/private/Security/CSP/ContentSecurityPolicyManager.php on line 67
这样的错误。有点懒得折腾,平时服务器也不同php,于是乎就决定采用CentOS7 + Nginx + Apache httpd + php5.6 + MariaDB 这样的架构。在这篇文章当中,因为我已经装好了Nginx 和 MariaDB,这里就不再赘述了。
安装PHP5.6
CentOS自带的库的php比较旧只支持ownCloud9,并不支持ownCloud10。因此,需要另寻途径安装新版的php。推荐一下Remi的RPM库,通过这个向导(http://rpms.remirepo.net/wizard/),可以根据自己的系统和需要的php版本(这里推荐用php5.6)以及安装方式(是否需要同时安装多个不同版本的php)。这是我们需要用到的包裹基本上就是:
yum install php php-cli php-common php-gd php-intl php-ldap php-mbstring php-mysqlnd php-pdo php-pecl-jsonc php-pecl-zip php-process php-xml
安装完成之后,需要进行一下设置,尽量的吧内存什么的调大一些,对用户体验非常有影响。官方文档主要提及需要修改以下地方
session.auto_start = Off enable_post_data_reading = On post_max_size = 512M ;这里是自少512MB session.save_handler = files session.path = /path to session ;session.path 一般会被httpd设定好了,在/etc/httpd/conf.d/php.conf 里面,所以不用担心
让我感到非常舒服的细节是官方文档这里非常细致,竟然会提醒人php.ini 里面,数据的单位用的是 K M G 而不是 KB MB GB.
后记:这owncloud10 在php7 里面竟然安装不了,但是安装完成后可以升级到php7
安装ownCloud 10
先亮出官方文档的地址:https://doc.owncloud.org/server/10.0/admin_manual/
其实也就是按照官方的方法:https://download.owncloud.org/download/repositories/10.0/owncloud/
rpm --import https://download.owncloud.org/download/repositories/10.0/CentOS_7/repodata/repomd.xml.key cd /etc/yum.repos.d/ wget http://download.owncloud.org/download/repositories/10.0/CentOS_7/ce:10.0.repo yum clean expire-cache yum install owncloud-files
似乎服务器有防火墙什么的,或者是那几台repo的服务器不好。有些下载的指令试了好几次
整个ownCloud是基于php写成的,代码习惯方面,个人觉得比Wordpress的代码风格要现代。阅读性还算比较强的,有点类似于laravel的风格。
安装完成后,整个php程序就静静地躺在 /var/www/html/owncloud
配置nginx和apache httpd
出于统一管理的需要,我还是让数据过一下nginx。先配置一下httpd,让它bind到内网的一个端口上
Listen 127.0.0.1:9092 #从Nginx获取真正的IP RemoteIPHeader X-Real-IP RemoteIPInternalProxy 127.0.0.1
RemoteIPHeader
的用法可以参见 https://httpd.apache.org/docs/trunk/mod/mod_remoteip.html
然后再在Nginx里面进行设置,注意配好ssl,还有Strict-Transport-Security
的header
server { listen 443 ssl; listen [::]:443 ssl; server_name 你的域名; charset utf-8; root /var/www/html/owncloud; include /etc/nginx/default.d/ssl-challenges.conf; include /etc/nginx/default.d/ssl-enabled.conf; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; location / { proxy_pass http://127.0.0.1:9092; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass_header X-Transmission-Session-Id; } }
最后重启一下nginx 和httpd,打开网页,就是安装界面了。
遇到的坑其实还是很多的,这里记录一下遇到的问题
常见问题
修复Windows/Mac OS X中网络驱动器无法写入问题
又名0KB问题。在Mac OS 中Finder会提示:
Finder 不能完成该操作,因为不能读取或写入“文件名”中的某些数据。
(错误代码 -36)
修复方法见 https://github.com/owncloud/core/pull/28204/files 两处的修改
new LockDiscovery([$lockInfo]) ]); $response->setStatus(200); $response->setBody($body); return false;
if($request->isUserAgent([ '/WebDAVFS/', '/Microsoft Office OneNote 2013/', '/Microsoft-WebDAV-MiniRedir/', ])) { $this->server->addPlugin(new FakeLockerPlugin()); }
预期将会在10.0.3 里面修复,9.x的stable版已经修复了。
owncloud 还是 nextcloud?
nextcloud是从owncloud fork出去的。一个社区大了,难免出现分歧,特别是这种可能有商业性质能够赚钱的项目,分歧更加大。两个程序都能在Digital Ocean上面一键部署,我两个都试用了一下,感觉nextcloud明显比owncloud要多功能,很多独特的功能,例如说Deck、文字视频聊天、集成邮件功能,nextcloud似乎更加适合办公用途。但是对于我个人来说,需要的主要是 设备之间共享文件(WebDAV)、通讯录(CardDAV)、日历(CalDAV),需要的是自动更新以及尽量少的维护成本,让我最终决定用owncloud的是owncloud提供rpm package,可以很方便的用yum命令来更新owncloud,不用复制代码什么的。我目前系统里面也只是有对yum装的软件的一系列更新备份的脚本。没有办法更新这些php 代码。
Nextcloud的网站上,有一个比较 https://nextcloud.com/compare/
查看图片
里面有一点其实非常重要,我们并不需要nextcloud或者owncloud的客户端,因为核心服务是基于WebDAV CardDAV CalDav的,因此只要找到支持这些服务器程序就好。Windows Mac OS系统自带就支持WebDAV。CardDAV CalDAV Thunderbird 也是支持的。另外nextcloud似乎是不满意owncloud的商业模式出走的,但是现在也不是在干同样的事情吗?233333
owncloud 这个rpm包 和 owncloud-files 这个rpm包 的区别是什么?
owncloud包含了运行owncloud所需的所有程序,包括php、httpd,遗憾的是,只提供到owncloud9。owncloud-files只是owncloud这一堆php文件。
owncloud 9 还是 owncloud 10 ?
owncloud9一个非常重要的问题是calendar的这个App的证书被吊销了,装不了,导致整个CalDAV都用不了,虽然支持@base repo的旧版php,但是CalDAV对于我来说是一个相当重要的核心功能。这个事情大概和owncloud 2016年fork出个nextcloud的原因有关,整个旧的应用商城 (https://apps.owncloud.com/) 都废弃,需要手动调成新的( https://marketplace.owncloud.com )。
手动加文件的方法
将需要添加的文件复制到 /owncloud储存目录/用户/files
里面,然后切换到程序目录,使用occ命令 sudo -u apache php occ file:scan --all
关于occ命令,更加详细的内容在这里。
Local external storage 消失问题
https://central.owncloud.org/t/owncloud-10-0-0-local-external-storage-missing/7250
主要是因为安全问题被禁用了,需要启用,可以在config.php中将 files_external_allow_create_new_local
设置成 true
。