NextCloud搭建

  • 2019年12月15日
  • Server
  • visibility 204 views

背景

需要一台有ipv6和超大硬盘的服务器7×24挂byr的pt,以及普通的bt。


之前一直租用OneProvier的低价独服

Atom四核,4G DDR3,1T机械盘,无限流量。月租大概是¥70的样子。

问题是,这台独服的硬盘I/O很低,似乎只有几十M/s。加上机房在法国巴黎,线路不算很好。每次下完的bt,打开h5ai都要好几分钟,拖回来的速度也和时间段有关,有时只有几百kBps…还是在idm多线程的情况下…

前几天黑五打折,在某学长的推荐下看到了HostHatch推出的$84年费大盘鸡,配置如下

 1x 2.8+ GHz
 3 GB RAM 3 TB usable storage
 9 TB bandwidth 
 $84 per year 
 Chicago

这配置还是很不错的,买了。


Setup

到手一看,CentOS 7识别不了2T以上的硬盘,LET论坛里,老板说他们的镜像模板有点问题。于是尝试手动重装CentOS…

头一回在noVNC界面下…图形化界面装CentOS…手动上传的镜像进去就只有选Install,直接就图形化…

顶着200ms+的延迟选好各个选项,分完盘… 开始安装… 一看,咋断线了?重连,咋又回到原来的CentOS 6了?

算了算了,装Ubuntu 18.04 吧,又不是不能用。

结果用他家提供的系统模板一键重装… 就好了?开机就认了2.8T的硬盘!

然后惯例,跑个分:https://www.91yuntest.com/dlElc2 (ip由于广播位置有更改,在地理库中还没更新,显示的还是在荷兰,实际在芝加哥)

硬盘IO还是很不错的,估计是有阵列,比OP好多了

安上一些要用到的软件

apt-get update
apt-get install -y tar curl ntpdate gzip xz \
git wget screen python-pip htop vnstat vim zip nethogs

和lnmp(见lnmp.org)

踩坑

重定向次数过多

常规操作——创建虚拟主机,git clone下源码,http改301跳https …

咋重定向次数过多???(后来发现是CloudFlare的ssl设置问题)

以为是虚拟主机的conf文件没写好,参照nextcloud官网上的nginx conf文件配置实例改了又改,还是不行。删掉80端口的监听,只通过https访问,只得到nginx的安装成功页面…

一键脚本各种问题

于是尝试用官网提供的一键脚本安装。

第一遍提示apache2安装失败——和nginx端口冲突导致apache2服务无法启动,遂卸载nginx。

第二遍提示apache2已安装——手动卸载掉apache2。

第三遍,第四遍各种问题记不清了,放弃这zz一键脚本了。

docker性能不够

很久以前就见过有nextcloud的docker镜像,当时是尝试给rock64装上,结果当时架构还不支持arm,就罢了。现在官方已支持arm。

pull完官方打包好的镜像,在网上看到需要挂载外部目录这样那样的,想起来这是kvm虚拟机,再套个docker。。。好像性能有损失。。。(刚又查了下,docker对cpu的性能没啥损失,但硬盘、网络I/O有一些,参见 https://www.v2ex.com/t/394313

加上那天天色已晚,再不回寝室就要被记晚归,于是放弃使用docker搭建。

回归nginx

大概是因为第一次接触网页搭建的时候就是使用的lnmp,对其还是比较有感情熟悉,就还是装回了lnmp。

先通过http装好再说https吧,按着网页提示一步一步操作好,能用了再说https的问题。

安装步骤略。


HTTPS问题

按照惯例,要把80端口的访问请求跳转到443去,只需要把conf文件里80端口对应的server{}里,写成这样就行:

server {
    listen 80;
    #IPv6监听
    listen [::]:80;
    server_name example.com;
    #301跳转到https去
    return 301 https://$server_name$request_uri;
}

然而我不管怎么改这个配置文件,总是重定向过多。

CloudFlare背锅

经过一番搜索,问题在于我给域名套了cdn。

由于这台机子地理和线路限制,裸连的速度并不理想,在idm多线程下载的时候也只有几百kBps,而加上cloudflare的cdn之后,不挂代理,用idm16线程,速度能拉满学校的百兆校园网(能接触到的接入点全被限速百兆了)。

问题就在于,cloudflare给没有ssl证书的站点提供了ssl证书,在他那里就有一层跳转。默认为flexible模式。

由于我在lnmp中已经用Let’s Encrypt签发了证书,就可以使用Full(strict)模式,改过去就好了。

其实在overview里面有个deployment模式的开关,打开就可以暂时跳过cf的cdn,看网页的原始状态。


transmission

apt install transmission-daemon

安装好后,开启进程,让它生成配置文件,之后关掉进程再改。

systemctl start transmission-daemon
systemctl stop transmission-daemon
vim /var/lib/transmission-daemon/.config/transmission-daemon/settings.json

注意改下面这几行

"rpc-authentication-required": true, 
"rpc-enabled": true, 
"rpc-password": "远程连接用的密码", 
"rpc-username": "远程连接用的用户名", 
"rpc-whitelist-enabled": false 

之后再启动transmission-daemon,如果再看这个配置文件的话会发现password变为hash之后的了,所以这个密码要记好。

在PC/Android上就可以下载transmission remote GUI来管理服务器的bt下载了

映射目录

在nextcloud的data文件夹下,有创建的用户对应的目录。

/home/wwwroot/example.com/data/USER/file/

而transmission的下载目录在

/var/lib/transmission/transmission-daemon/downloads/

使用ln -s创建软连接,在nextcloud里面不起作用。

于是使用挂载操作,在此之前先创建一个文件夹作为挂载点,在此使用“DIR”示例

cd  /home/wwwroot/example.com/data/USER/file/
mkdir DIR
chown www:www 
mount --bind /var/lib/transmission/transmission-daemon/downloads/ /home/wwwroot/example.com/data/USER/file/DIR

其中USER为之前安装nc的时候设置的用户名,mount操作时必须使用绝对路径

如果mount出问题了,umount掉那个目录

如果umount提示target is busy,需要执行fuser -kv /DIR/path

观察回显信息,看有没有报错

自动化任务

那肯定是得一次整好,后面用就行了呗

–2020年2月1日更新–

不需要用此方法更新目录内容,只需在nextcloud中使用“External Storage”应用。

下方部分内容已弃用

更新目录信息(弃用)

nextcloud的目录信息不是实时的,而是存在SQL数据库里的。需要执行一条命令来让其更新目录文件信息

sudo -u www php /home/wwwroot/example.com/occ files:scan --path="/USER/files/"

没有的话就可以添加到crontab里去了。

挂载外部目录(2020/2/1 Update)

在应用市场里搜索“External Storage”应用,之后在设置里添加外部存储目录。

其中这个目录还是得挂之前mount到 /wwwroot/网站目录 下面的那个地方,不然nextcloud没有权限访问网站目录之外的地方(为了安全)。我觉得可以把只读勾上。

rc.local

首先是开机自动挂载目录,修改/etc/rc.local 文件

Ubuntu 18.04似乎把这个文件删掉了,需要自己创建一个

参照 https://www.jianshu.com/p/2b9e33ad714d

一定要在exit 0之前加入mount命令

crontab (弃用)

改定时任务

注意到occ的config文件是www所有,故要给www用户配cron表

crontab -u www -e

我设置的是每5min进行一次目录更新,在最后一行加入:

*/5 * * * * php /home/wwwroot/example.com/occ files:scan --path="/USER/files/transmission" --quiet >> /dev/null

桌面端

其实这步可有可无,我本以为桌面版的nextcloud是一个类似百度网盘的文件浏览器,结果直接就是个同步器…

于是就直接给nas上建了个文件夹来专门同步。

而且速度还不行,17个小时才同步了60GiB的样子。不知道他是用的什么方式在同步。去github看了下,用的csync。

峰值速度能达到寝室宽带极限,30Mbps的样子。

其实要下什么的话,直接在网页端用idm拖回来就好了。

使用效果很一般,甚至经常同步失败。

后记

其实要想同步nas和远程的vps,由于 OpenMediaVault集成了rsync应该会比较方便。如果用笔记本作为中介进行同步的话未免有点浪费资源。

以前都没有完整配置过rsync,等寒假再说吧。(咕咕咕)

Nextcloud Web panel
Nextcloud PC端
Transmission Remote GUI

update (2020/2/9)

放一张挂了外部存储之后的panel




没有评论


你先离开吧:)



发表评论

电子邮件地址不会被公开。 必填项已用*标注