NextCloud + Aria2 + Transmission 搭建私有云盘 +下载服务器

本文的方法以 LNMP 架构为基础,使用 NextCloud 作为私有云平台,aria2 / transmission作为下载器,搭建一个类似百度云功能的私有云盘+下载服务器。本文以Ubuntu 16.04 LTS操作系统为例。NextCloud的服务端文件存储在 /var/www/nextcloud ,nextcloud用户数据存储在 /var/www/nextcloud_data ,aria/transmission的下载文件夹设置在 /var/www/storage 。

Changelog
[2017.09.20] v0.1 | 初稿

[2017.09.20] v0.2 | 增加aria2的init.d脚本

目前阶段本文可能错误较多,仅供参考!

1. mysql

安装

登入mysql:

接下来再mysql命令行中操作,新建nextcloud的数据库:

2. PHP

安装与配置

/etc/php/7.0/fpm/pool.d/www.conf 中下面几行去掉注释,并更改PATH:

修改 /etc/php/7.0/fpm/php.ini 中 [opcache] 字段中如下内容(去掉注释并修改部分值 cache大小请根据机子内存酌情给),其他字段不要动:

 

重启php7.0-fpm:

3. nginx 与 NextCloud 安装

上面的例子用的是Nextcloud 12.0.2版本,如果有更新版本了,记得上面命令中的版本号替换一下。 另外,nginx使用源码编译安装的话默认配置和Ubuntu官方repo里nginx的配置有较大差别,因此如果你从nginx源码编译安装,则需要酌情修改配置(比如nginx以www-data身份运行,又比如nginx.conf的内容等)

nextcloud的用户文件最好存到另一个目录中,这里新建一个:

4. nginx配置

配置web服务器,并且全局严格HTTPS(HSTS)。

/etc/nginx/sites-available 下新建文件 001-nextcloud ,写入配置,举例如下(例子中开启了HTTPS并使用了ECC证书,如果不是ECC证书,请酌情修改ssl_ciphers):

删掉 /etc/nginx/sites-enabled 中默认的 default 的符号链接,并新建nextcloud的符号链接:

测试nginx配置文件是否正确:

如果有误,按照提示的错误修改;如果没有问题,那么重载入nginx配置文件:

5. 初始化NextCloud

访问NextCloud网站,进入Installation Wizard:

上面设置管理员账户的用户名和密码,然后点开Storage & database:

 

第一个框填入数据文件的目录,文中使用的是  /var/www/nextcloud-data

接下来数据库类型选择”MySQL/MariaDB”,下面的四个框分别是:

1) nextcloud的数据库的用户名,本文使用的是:nextcloud_username

2) nextcloud的数据库的密码,本文使用的是: database_password

3) 指定nextcloud所用数据库的名称,本文使用的是:nextcloud

4) 数据库服务器地址,本文中数据库服务器和web服务器在同一台机器上,因此填localhost即可

填写完毕后点击完成安装,稍等数分钟完成初始化配置,即可进入NextCloud中了。简单测试一下功能是否正常,没问题就继续下一步。

6.  memory cache:apcu

也是官方文档的建议,配置这个可以增强性能,过程很简单:

然后在 /var/www/nextcloud/config/config.php 中增加下面高亮的那一行:

重启web服务器:

在NextCloud管理页面查看,不再有配置memcache等的提示的话就表示成功了。

至此,单纯的NextCloud部分配置完毕。下面配置下载服务器。

7. Aria2

直接安装ubuntu官方repo中的版本(不是最新):

还可以下载最新版本源码编译安装:

如果没有出错,则执行一下命令查看一下aria2的版本号,如果正常返回了结果并显示版本为1.32.0,则说明没有问题。

请注意不要混用从源码编译安装和从官方repo安装两种方式,因为二者的安装位置可能不同,这样的话可能会造成在不同目录安装了不同的两个版本。

新建aria2/transmission的下载目录:

接下来配置aria2配置文件 /etc/aria2/aria2.conf ,举例如下:

按照自己需求更改即可,可以参考这里或者官方文档;同时注意,这里准备使用与nginx相同的www-data用户注意目录及文件的权限问题。同时建议开启rcp-secure,配置好服务器证书,这样RPC通过HTTPS加密,更加安全。

开机自启:

新建 /etc/init.d/aria2 文件,所有者设置为root,权限为0755,写入以下内容:

然后执行下面的命令添加开机自启项:

最后启动服务:

 

如此以来,使用一个YAAW等工具即可通过RPC来控制远程服务器下载了。

8. Transmission

安装

每次修改配置文件之前,需要先停止transmission的服务才可以修改:

修改配置文件 /etc/transmission-daemon/settings.json ,举例:

以上选项按需修改即可,可以参考这里或者官方文档

需要注意的是, "rpc-password": "yourpassword", 这里,你修改了这里的rpc密码并保存后,在transmission运行后会将此处密码做Hash,并替换此处文本为Hash值,以“{”开头,因此如果看到此处变成了“{”开头的一长串字符不要觉得有问题。

最后启动:

此时即可使用Transmission Remote等类似工具,通过RPC来管理transmission服务器下载了。或者也可以直接用浏览器访问transmission的rpc地址。不过transmission的rpc没有自带https,此时可以利用nginx做前端反向代理来实现https。

新建 /etc/nginx/sites-available/002-transmission ,写入反向代理的配置,举例如下(请酌情修改):

建立符号链接:

测试nginx配置文件是否正确:

如果有误,按照提示的错误修改;如果没有问题,那么重载入nginx配置文件:

至此,可以使用nginx反向代理的9091端口访问transmission的RPC功能,并且使用了HTTPS加密连接。

不过还遗留一个问题,transmission默认使用transmission-daemon用户启动,而nginx是www-data,这样就造成了nextcloud下只对transmission下载目录有读权限,无权修改。下面命令尝试解决这个问题,不过由于隔了好一段时间来写的这篇文章,不清楚是否这一条命令就够了(当时自己配置时候可能还做了别的修改)

9. NextCloud管理Aria2/Transmission的下载目录

在nextcloud管理面板里的“外部存储”中,添加本地存储目录 /var/www/storage 即可

发表回复

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

请输入验证码 *