上一篇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',

再次打开自检页面,应该就不会报错啦!

 

参考


发表评论