在这篇文章中,我会带着你用 Caddy 搭建一个安全的 ownCloud 个人云服务,此教程中所使用的平台为 Ubuntu 14 。
更新:Caddy 当前的正式版还没有支持 WebDav ,所以桌面和手机客户端就没法用了 (*゚ー゚) 不过好消息是开发分支是有这个特性的,所以你想爽一把就只能等下个版本或者自己编译了。
给小白们的 ownCloud 介绍:
ownCloud是一个自由且开源的个人云存储解决方案,包括兩個部分:服务器和客戶端。ownCloud 最早由KDE开发者Frank Karlitschek于2010年一月创建,目标是成为商业云服务提供商的替代。与商业云存储服务不同,ownCloud可以自由获取无需付费,但相應地,使用者必須自行架設 ownCloud的服务器,這需要一點技術。不過也是有商业云存储服务提供商使用 ownCloud 作為服务器,例如奧地利商的 OwnCube。
ownCloud在客户端可通过网页界面,或者安装专用的客户端软件来使用。网页界面当然就是任何能开网页的平台都支持,而客户端软件也支持相当多平台,Windows、Linux、iOS、Android皆有。
除了云存储之外,ownCloud也可用于同步日历、电子邮件联系人、网页浏览器的书签;此外还有多人在线文件同步协作的功能(类似google documents或Duddle等等)。
因为 ownCloud 需要使用到数据库,所以我们先安装一下 MariaDB 。使用以下命令来安装 MariaDB 服务端以及客户端:
$ sudo apt-get install mariadb-server
完成安装后,如果想要提升安装的安全性的话,可以运行以下命令:
$ sudo /usr/bin/mysql_secure_installation
现在运行以下命令并输入密码,就可以使用 root 账号登陆 MySQL 命令行客户端了:
$ mysql -u root -p
然后给 ownCloud 创建一个新数据库:
MariaDB [(none)]> create database owncloud;
新增一名用户:
MariaDB [(none)]> grant usage on *.* to owncloud@localhost identified by 'somepassword';
给新用户赋予方才建立的数据库的权限:
MariaDB [(none)]> grant all privileges on owncloud.* to owncloud@localhost;
现在你就有了一个用户名为 owncloud 密码为 somepassword ,拥有 owncloud 数据库访问权限的的新用户了。
PHP 7 都已经发布了好几个月了,所以我们当然要用新版啦!
首先添加 PHP 7 的 repository :
$ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update
然后安装 PHP:
$ sudo apt-get install php7.0-fpm
只是安装 PHP 还不够,还需要安装一些 PHP 扩展。
ownCloud 所需要的详细扩展列表可以在这里找到。
一些 PHP 默认没安装,但是必须推荐你装的包:
一次性安装命令:
$ sudo apt-get install php7.0-mysql php7.0-gd php7.0-curl php7.0-intl php7.0-mcrypt
如果你需要预览视频跟文档的话,那还得安装这两个包(非 PHP):
/etc/php/7.0/fpm/pool.d/www.conf
文件中,把listen = /run/php/php7.0-fpm.socket
改为 listen = 127.0.0.1:9000
安装完所有扩展后,别忘了重启 PHP-FPM:
sudo service php7.0-fpm restart
我跟 mholt 和 dprandzioch 一起完成了下面这个 Caddyfile。 这个配置包含了 ownCloud 所需的所有配置且完全支持桌面与手机客户端。
my-owncloud-site.com {
root owncloud
log owncloud/access.log
errors owncloud/access.log
fastcgi / 127.0.0.1:9000 php {
env PATH /bin
}
rewrite {
r ^/index.php/.*$
to /index.php?{query}
}
# client support (e.g. os x calendar / contacts)
redir /.well-known/carddav /remote.php/carddav 301
redir /.well-known/caldav /remote.php/caldav 301
# remove trailing / as it causes errors with php-fpm
rewrite {
r ^/remote.php/(webdav|caldav|carddav)(\/?)$
to /remote.php/{1}
}
rewrite {
r ^/remote.php/(webdav|caldav|carddav)/(.+)(\/?)$
to /remote.php/{1}/{2}
}
# .htacces / data / config / ... shouldn't be accessible from outside
rewrite {
r ^/(?:\.htaccess|data|config|db_structure\.xml|README)
status 403
}
header / Strict-Transport-Security "15768000"
}
因为 Caddy 内置了 Let’s Encrypt 支持,所以我们的 ownCloud 服务端会自动配置好 HTTPS。访问和错误的 log 会写入到 ownCloud 目录里面,data 目录(以及其他一些特殊文件)也杜绝了被外部访问的可能。
如果你想测试一下 Caddyfile / PHP 的安装,可以在 owncloud 目录下创建一个 phpinfo.php 文件,在上面加上一行:
然后用浏览器访问 https://my-owncloud-site.com/phpinfo.php,看看是不是显示默认的 PHP 信息页面。(当然啦, Caddy 得使用 Caddyfile 配置)
如果一切正常的话,别忘记把这个文件删掉,以免被别人看到你的 PHP 安装配置。
现在终于要开始 ownCloud 的安装了。
下载最新的 ownCloud 版本(目前是 9.0.0):
https://download.owncloud.org/community/owncloud-9.0.0.zip
$ wget https://download.owncloud.org/community/owncloud-9.0.0.zip
把这个文件解压到 owncloud 目录:
$ unzip owncloud-9.0.0.zip
使用浏览器访问 https://my-owncloud-site.com。如果配置没错的话,你就会在浏览器成功的看到 ownCloud 的配置页面啦。
另外,你还得创建一个 data 目录,并赋予 ownCloud 读写权限(比如 www-data用户)。
$ mkdir owncloud/data
$ sudo chown -R www-data owncloud
结论
Caddy 的快速开发使得它成为了简单安全地部署 ownCloud 的另一个选择。
这篇文章还发布在了Caddy的官方博客上:Running ownCloud with Caddy
其他资料:centos-owncloud
转自 https://jqs7.com/serving-owncloud-with-caddy/