上一篇V2Ray的搭建教程里,前端伪装站使用了一个静态网页。这里简单总结了在同一台虚拟主机上搭建NextCloud私有云的基本步骤。之前帮同学搭建的时候试过Seafile,这次刻意选择了NextCloud做对比,总体感觉还是NextCloud更舒服一些。两者同样都提供多平台客户端,在多终端同步上非常方便。
I. 前景提要
- Ubuntu 18.04 LTS
- Caddy作为服务器已经搭建
- V2Ray由Caddy反代,分流依据为请求路径path
- V2Ray配置为h2+tls,本文将前端静态页面替换为私有云NextCloud
- 当然如果只是想搭建Caddy+Nextcloud,只要在caddy配置里跳过v2ray的部分即可
II. 安装数据库
NextCloud依赖MySQL。在Ubuntu上MariaDB是MySQL的开源实现。
sudo apt-get update sudo apt-get install mariadb-server
完成数据库安全配置,没有特殊需求全部选择提示的默认值即可
sudo mysql_secure_installation
以root身份登入数据库
sudo mysql
为NextCloud配置用户并建库,注意第二行最后替换password
CREATE DATABASE nextcloud; GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'Password'; FLUSH PRIVILEGES; quit
III. 安装PHP
NextCloud依赖于PHP。目前Ubuntu上PHP的最新版本是7.2,php-mcrypt已经被淘汰,nextcloud官网并未提供取代方案的说明,暂时安装libsodium,不过不清楚会不会调用
sudo apt-get -y install php-fpm php-cli php-json php-curl php-imap php-gd php-mysql php-xml php-zip php-intl php-imagick php-mbstring libsodium-dev
以上只确定安装了当前必要的依赖,如果以后依赖产生变化,注意官网上的依赖列表,尤其是PHP部分。
编辑/etc/php/7.2/fpm/php.ini,注意PHP版本号根据安装版本改变
memory_limit => memory_limit = 512M ;cgi.fix_pathinfo=1 => cgi.fix_pathinfo=1 upload_max_filesize => upload_max_filesize = 2000M post_max_size => post_max_size = 2000M
编辑/etc/php/7.2/fpm/pool.d/www.conf,注意PHP版本号根据安装版本改变
listen = /run/php/php7.2-fpm.sock => listen = 127.0.0.1:9000
IV. 修改Caddy配置
类似上一篇,注意根据自己的服务器和v2ray配置修改相关项
# 注意修改域名 http://eample.com { redir https://eample.com{url} } # 注意修改域名 https://eample.com { root /var/www/html/nextcloud log /var/log/nextcloud_access.log errors /var/log/nextcloud_errors.log fastcgi / 127.0.0.1:9000 php { env PATH /bin } # checks for images rewrite { ext .svg .gif .png .html .ttf .woff .ico .jpg .jpeg r ^/index.php/(.+)$ to /{1} /index.php?{1} } 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|dav)(\/?)$ to /remote.php/{1} } rewrite { r ^/remote.php/(webdav|caldav|carddav|dav)/(.+?)(\/?)$ to /remote.php/{1}/{2} } rewrite { r ^/public.php/(dav|webdav|caldav|carddav)(\/?)$ to /public.php/{1} } rewrite { r ^/public.php/(dav|webdav|caldav|carddav)/(.+)(\/?)$ to /public.php/{1}/{2} } # .htaccess / data / config / ... shouldn't be accessible from outside status 403 { /.htacces /data /config /db_structure /.xml /README } # tls设置,注意修改邮箱 tls email@example.com { ciphers ECDHE-ECDSA-WITH-CHACHA20-POLY1305 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-CBC-SHA curves p384 key_type p384 } # v2ray分流设置,注意修改端口,host。如未配置v2ray,跳过此部分 proxy /path https://localhost:port { insecure_skip_verify header_upstream X-Forwarded-Proto "https" header_upstream Host "eample.com" } header / { # 这些header由PHP接管 # X-XSS-Protection "1; mode=block" # X-Content-Type-Options "nosniff" # X-Frame-Options "SAMEORIGIN" Strict-Transport-Security "max-age=31536000;" } }
IV. 安装NextCloud
直接从官网获取压缩包,解压到指定路径即可,以下操作路径与III中caddy配置匹配
wget https://download.nextcloud.com/server/releases/latest.tar.bz2 tar -vxjf latest.tar.bz2 mv nextcloud /var/www/html/nextcloud mkdir -p /var/www/html/nextcloud/data
修改相关文件权限
sudo chown -R www-data:www-data /var/www/html/nextcloud sudo touch /var/log/nextcloud_access.log sudo touch /var/log/nextcloud_errors.log sudo chown www-data:www-data /var/log/nextcloud_access.log sudo chown www-data:www-data /var/log/nextcloud_errors.log
重启Caddy和PHP以激活新的配置
sudo systemctl restart php7.2-fpm sudo systemctl restart caddy
最后从浏览器访问你的域名,如果一切正常,应该看到nextcloud的首次配置页面。在这里指定管理员用户,然后填写数据库相关信息。数据库的用户名和密码与II中保持一致。如未修改,数据库名和用户名均为nextcloud,密码为自己指定的密码。
V. 后续步骤
首次登陆后,从右上角可以进入管理员页面。其中“管理”下的“基本管理”可以看到自检列出的一系列安全隐患。按照说明一项一项纠正即可。
如上图。不过有些特殊的是,上面几个关于header的问题是由重复配置造成的。这三个header会被nextcloud追加,如果caddy再追加一次会造成误判。
第一次安装应该会提示一系列关于php配置的警告,按照要求修改/etc/php/7.2/fpm/php.ini即可。
关于内存缓存相关的优化配置,有APCu,Memcached,Redis可供选择。其中,个人小规模使用APCu就足够了。配置方法也很简单
sudo apt-get install php-apcu
安装完成后需要重启服务器。重新启动后,在/var/www/html/nextcloud/config/config.php中,最后一个反括号前追加以下一行即可
'memcache.local' => '\OC\Memcache\APCu',
再次打开自检页面,应该就不会报错啦!