静看光阴荏苒
不管不顾不问不说也不念

在Debian9上搭建一个完美的Nextcloud私有云

其实说实话Nextcloud这玩意真的太臃肿了,性能烂的一批,就算你上了各种他们官方推荐的缓存和优化方案,在存储了大量文件的情况下,依旧效率低下。所以我的建议是要用这个网盘程序,最好上独立服务器。另外如果没有同步的刚需,KodExplorer是一个更好的选择,KodExplorer无论是在性能上还是易用上都比Nextcloud强太多。

装Nextcloud的方法有很多,Docker,Snap等等,但我不推荐这两种方式,原因很简单:太过封闭不易于维护,再加上Nextcloud安装完成之后是绝对要根据自己的服务器进行性能调优的,否则用到后面苦不堪言。再者,无论是Docker还是Snap,目前都不能实时的部署到官方的最新版本。

好了,废话就不多说了,先申请一个SSL证书,这里我使用certbot:

apt -y install certbot

目前certbot支持签发一个叫buypass的SSL证书,这个证书签一次时长是6个月,不用总是担心证书过期了(相应的域名换成你们自己的):

certbot certonly --standalone --agree-tos -d www.koko.cat -d koko.cat --server https://api.buypass.com/acme/directory

签发成功之后的证书和私钥路径:

/etc/letsencrypt/live/www.koko.cat/fullchain.pem
/etc/letsencrypt/live/www.koko.cat/privkey.pem

接着来安装Openssl,因为我打算给Nginx配置上TLS1.3,这样可以从某种程度上给这个性能烂到爆的程序稍微加点速。在Debian9上安装一个最新版本的Openssl很简单,我们可以不用去编译,直接用到Debian的testing或者unstable(sid)源,这里我建议求稳还是用testing吧,sid真的太过于奔放了:

echo "deb http://deb.debian.org/debian testing main" > /etc/apt/sources.list.d/testing.list
echo "deb-src http://deb.debian.org/debian testing main" >> /etc/apt/sources.list.d/testing.list

当然你要奔放那也行:

echo "deb http://deb.debian.org/debian unstable main" > /etc/apt/sources.list.d/sid.list
echo "deb-src http://deb.debian.org/debian unstable main" >> /etc/apt/sources.list.d/sid.list

更新源信息:

apt -y update

安装指定源内的openssl(二选1即可):

apt -y -t testing install openssl
apt -y -t unstable install openssl

完成之后查看一下openssl的版本号,这个版本就是支持TLS1.3的了:

接下来就要来编译安装Nginx了,首先安装一些编译所需的依赖:

apt -y install build-essential libpcre3-dev libssl-dev libgd-dev libgeoip-dev zlib1g-dev

这里给大家推荐一个小技巧,安装一个checkinstall,可以在编译安装完成之后把Nginx打包成deb,下次在别的机器上就不用重新编译了,直接dpkg安装即可:

apt -y install checkinstall

然后就是下载Nginx的源码解压进入到源码目录:

wget http://nginx.org/download/nginx-1.15.8.tar.gz
tar -xzvf nginx-1.15.8.tar.gz
cd nginx-1.15.8

使用下面的参数进行配置:

./configure --user=www-data --group=www-data --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-stream --with-stream_ssl_module --with-http_gzip_static_module --with-http_gunzip_module --with-http_flv_module --with-http_mp4_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module

没问题就开始编译并完成安装:

make -j4 && make install

接着再执行:

checkinstall

第一个提示选y,然后随便写一点deb包的描述信息再按三次回车:

稍等几秒在当前目录就有一个deb打包完成了:

配置nginx的systemd服务:

nano /etc/systemd/system/nginx.service

写入:

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

启动以及设置Nginx的开机启动:

systemctl start nginx
systemctl enable nginx

接下来安装MariaDB:

apt -y install mariadb-server

完成之后启动并查看一下运行状态,确保是Active:

systemctl start mariadb.service
systemctl status mariadb.service

然后执行如下命令开始配置Mariadb:

mysql_secure_installation

这个向导按照如下配置:

Enter current password for root (enter for none):回车
Set root password? [Y/n] Y
New password: 设置你的Mariadb数据库root密码
Re-enter new password: 重复输入一次密码
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

然后重启一遍Mariadb,使新的设置生效:

systemctl restart mariadb.service

所以说不稳定就是不稳定,这里配置的这个Disallow root login remotely,无法生效。应该是个BUG,无论你是选y还是选n最后root都没有localhost的远程访问权限。因为我打算安装一个phpMyAdmin,如果localhost没有远程访问权限的话,phpMyAdmin无法用root用户登录。什么?你问我为什么要装phpMyAdmin?如果你是老用Nextcloud的你就知道到时候你会经常碰到文件lock的问题,解决办法只能去MySQL里面清表,是用一个图形化方便还是每次都用命令行方便,自行考量。

所以这里我们得进到MySQL的shell内:

mysql -u root -p

依次执行如下语句修复:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '你的数据库root密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit

完成之后,再重启一次:

systemctl restart mariadb.service

现在安装PHP7.3,因为我们之前给系统换了Testing源,这个源内的PHP版本就是目前的最新版:

apt -y install php7.3 php7.3-common php7.3-cli php7.3-cgi php7.3-fpm php7.3-gd php7.3-mysql php7.3-sqlite3 php7.3-pgsql php7.3-opcache php7.3-mbstring php7.3-curl php7.3-xml php7.3-xmlrpc php7.3-zip php7.3-intl php7.3-json php7.3-bz2

创建一个wwwroot目录,用于存放所有的站点文件:

mkdir -p /opt/wwwroot

完成之后现在开始下载phpMyAdmin并设置相应的权限:

apt -y install unzip
cd /opt/wwwroot
wget https://files.phpmyadmin.net/phpMyAdmin/4.8.5/phpMyAdmin-4.8.5-all-languages.zip
unzip phpMyAdmin-4.8.5-all-languages.zip
mv phpMyAdmin-4.8.5-all-languages phpmyadmin
rm -rf phpMyAdmin-4.8.5-all-languages.zip
chown -R www-data:www-data /opt/wwwroot/phpmyadmin
chmod -R 755 /opt/wwwroot/phpmyadmin

接下来是Nextcloud的安装包:

cd /opt/wwwroot
wget https://download.nextcloud.com/server/releases/nextcloud-15.0.2.zip
unzip nextcloud-15.0.2.zip
rm -rf nextcloud-15.0.2.zip
chown -R www-data:www-data /opt/wwwroot/nextcloud
chmod -R 755 /opt/wwwroot/nextcloud

因为我们是编译安装的Nginx,这个Nginx没有conf.d目录,于是我们自己手动创建一个,用于引用我们的站点配置文件:

mkdir -p /usr/local/nginx/conf/conf.d

编辑Nginx的主配置文件:

nano /usr/local/nginx/conf/nginx.conf

首先将Nginx的运行用户修改为:www-data,然后在http段内加入引用:

include /usr/local/nginx/conf/conf.d/*.conf;

位置如图:

接着新建一个用于phpMyAdmin的站点配置文件:

nano /usr/local/nginx/conf/conf.d/phpmyadmin.conf

写入:

server {
    listen       51529;
    server_name  你的服务器公网IP;
    
    location / {
        root   /opt/wwwroot/phpmyadmin;
        index  index.html index.htm index.php;
    }

    location ~ \.php$ {
        root           /opt/wwwroot/phpmyadmin;
        fastcgi_pass   unix:/run/php/php7.3-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /opt/wwwroot/phpmyadmin$fastcgi_script_name;
        include        fastcgi_params;
    }

}

注:phpMyAdmin是一个数据库管理工具,算是一个比较敏感的资源,不应该能够轻松被外网访问到,所以我在这里监听的端口是一个高位端口,你也可以修改为其他的端口,只要端口不冲突就行。

重启Nginx:

systemctl restart nginx

通过端口51529访问到phpMyAdmin登录进去创建一个数据库,注意编码格式为如图所示的:

现在开始新建Nextcloud的站点配置文件:

nano /usr/local/nginx/conf/conf.d/nextcloud.conf

写入如下配置(相应的域名等信息修改为你自己的):

upstream php-handler {
    server unix:/run/php/php7.3-fpm.sock;
}

server {
    listen       80;
    listen       443 ssl http2;
    server_name  www.koko.cat koko.cat;
    # WEB页面允许最大的文件上传大小
    client_max_body_size 100000M;
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }

    # SSL以及TLS1.3支持
    ssl_certificate    /etc/letsencrypt/live/www.koko.cat/fullchain.pem;
    ssl_certificate_key    /etc/letsencrypt/live/www.koko.cat/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    error_page 497  https://$host$request_uri;

    # 添加头信息修复Nextcloud后台的警告信息
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Referrer-Policy no-referrer;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    fastcgi_hide_header X-Powered-By;

    root /opt/wwwroot/nextcloud/;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location = /.well-known/carddav {
      return 301 $scheme://$host/remote.php/dav;
    }
    location = /.well-known/caldav {
      return 301 $scheme://$host/remote.php/dav;
    }

    # 启用Gzip压缩
    gzip on;
    gzip_vary on;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

    # 重定向以及禁止访问敏感目录和资源
    location / {
        rewrite ^ /index.php$request_uri;
    }

    location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
        deny all;
    }
    location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }

    # PHP配置
    location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+)\.php(?:$|\/) {
        fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        #Avoid sending the security headers twice
        fastcgi_param modHeadersAvailable true;
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
    }

    location ~ ^\/(?:updater|ocs-provider)(?:$|\/) {
        try_files $uri/ =404;
        index index.php;
    }

    location ~ \.(?:css|js|woff2?|svg|gif)$ {
        try_files $uri /index.php$request_uri;
        add_header Cache-Control "public, max-age=15778463";
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        add_header Referrer-Policy no-referrer;
        access_log off;
    }

    location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
        try_files $uri /index.php$request_uri;
        # Optional: Don't log access to other assets
        access_log off;
    }
}

完成之后再次重启Nginx:

systemctl restart nginx

现在打开你的站点域名应该就可以看到Nextcloud的安装界面了,填写相应的信息完成安装:

初次登录进来你就发现这个Nextcloud的界面有问题,有两处乱码或者说是错位,这应该是Nextcloud当前版本的BUG:

用Nextcloud你就要做好心理准备,遇到这些莫名其妙的BUG再常见不过了,还有比这更奇葩的我就不说了。不过目前这个BUG还是比较好解决的,点进你的设置界面,把界面语言先改为English(US),然后再换回中文等几分钟缓存刷新过来应该就好了。

现在我们开始修复Nextcloud安装完成之后后台提示的一些警告和错误信息:

首先安装php-imagick和redis/php-redis扩展:

apt -y install php-imagick php-redis redis-server

php-imagick用于修复后台提示的:该实例缺失了一些推荐的PHP模块。为提高性能和兼容性,我们强烈建议安装它们。

redis和php-redis用于配置内存缓存:内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。更多信息请参见文档。

现在编辑Nextcloud的配置文件:

nano /opt/wwwroot/nextcloud/config/config.php

加入如下配置,这里我把lock文件锁定的功能也配置为redis,这是官方推荐的,也是非常重要的,因为在Nextcloud同步文件的过程中比较耗费资源的就是这个lock锁定:

'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
     'host' => 'localhost',
     'port' => 6379,
],

加入位置如图所示,注意缩进:

现在编辑php.ini:

nano /etc/php/7.3/fpm/php.ini

在[opcache]段的末尾加入如下内容:

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

如图如图所示:

用于解决Nextcloud后台提示的:PHP 的组件 OPcache 没有正确配置。 为了提供更好的性能,我们建议在 php.ini中使用下列设置。

接着编辑php-fpm.conf:

nano /etc/php/7.3/fpm/php-fpm.conf

在文件的末尾加上:

env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/local/php/bin

用于解决Nextcloud后台提示的:PHP的安装似乎不正确,无法访问系统环境变量。getenv(“PATH”)函数测试返回了一个空值。 请参照安装说明文档 ↗中的PHP配置说明查阅您服务器的PHP配置信息,特别是在使用php-fpm时。

这些修改都完成之后重启PHP-FPM,让修改生效:

systemctl restart php7.3-fpm.service

最后安装sudo:

apt -y install sudo

进入到nextcloud的站点根目录:

cd /opt/wwwroot/nextcloud

执行如下命令:

sudo -u www-data php occ db:convert-filecache-bigint

用于修复Nextcloud后台提示的:数据库中的一些列由于进行长整型转换而缺失。由于在较大的数据表重改变列类型会耗费一些时间,因此程序没有自动对其更改。您可以通过命令行手动执行 “occ db:convert-filecache-bigint” 命令以应用挂起的更改。该操作需要当整个实例变为离线状态后执行。查阅相关文档以获得更多详情

按y同意,注意如果你不是全新安装的Nextcloud,并且本身就已经存储了大量数据的情况下,我建议这个修复不要做,因为要耗费大量时间还可能出错:

在你做完了上面这些操作之后,再次检查一下,应该全部都通过了:

接下来我们做一些相关的性能调优,首先是Cron计划任务,在Nextcloud中默认是AJAX的模式,这个模式是性能最低下,也最不推荐的,官方推荐的是使用Linux自带的Crontab来执行,所以这里我们稍作修改。

执行如下命令以www-data用户运行crontab:

crontab -u www-data -e

在文件末尾加入一行(注意站点路径改为你们自己的):

*/5  *  *  *  * php -f /opt/wwwroot/nextcloud/cron.php

回到后台修改计划任务方式为Cron:

接下来是MySQL的性能调优,编辑:

nano /etc/mysql/conf.d/mysql.cnf

在这个文件内添加如下内容,注意是mysqld,不是mysql,你可以在这个文件内把mysql这一段删除再加入下面的内容:

[mysqld]
innodb_buffer_pool_size=1G
innodb_io_capacity=4000

重启Mariadb:

systemctl restart mariadb.service

最后调整PHP的进程数:

nano /etc/php/7.3/fpm/pool.d/www.conf

按照官方的推荐应该修改为:

pm = dynamic
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18

修改位置如图:

重启PHP-FPM:

systemctl restart php7.3-fpm.service

接下来我们来安装ocDownloader让Nextcloud支持离线下载。首先安装插件:

cd /opt/wwwroot/nextcloud/apps
wget https://github.com/e-alfred/ocdownloader/releases/download/1.6.0-Alpha2/ocdownloader_1.6.0alpha2.tar.gz
tar -xzvf ocdownloader_1.6.0alpha2.tar.gz
rm -rf ocdownloader_1.6.0alpha2.tar.gz
chown -R www-data:www-data /opt/wwwroot/nextcloud/apps/ocdownloader
chmod -R 755 /opt/wwwroot/nextcloud/apps/ocdownloader

接着需要安装Aria2:

apt -y install aria2

创建Aria2的默认下载目录(只是为正常启动Aria2而做,实际上ocDownloader会把文件下载到Nextcloud的目录内)

mkdir -p /data/aria2/download

创建Aria2配置文件和会话保存目录:

mkdir -p /etc/aria2

创建Aria2会话文件:

touch /etc/aria2/aria2.session

新建Aria2配置文件:

nano /etc/aria2/aria2.conf

写入如下内容(注意ocDownloader是不支持Aria2设置RPC密码访问的,只能设置空密码访问,但这样会导致安全问题,所以这个配置文件我做了修改让Aria2的RPC端口6800只监听在本地):

## '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 ##
## 被注释的选项填写的是默认值, 建议在需要修改时再取消注释  ##

## 文件保存相关 ##

# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=/data/aria2/download
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=32M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
#file-allocation=none
# 断点续传
continue=true

## 下载连接相关 ##

# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=50
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=5
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
#split=5
# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0
#max-upload-limit=0
# 禁用IPv6, 默认:false
#disable-ipv6=true
# 连接超时时间, 默认:60
#timeout=60
# 最大重试次数, 设置为0表示不限制重试次数, 默认:5
#max-tries=5
# 设置重试等待的秒数, 默认:0
#retry-wait=0

## 进度保存相关 ##

# 从会话文件中读取下载任务
input-file=/etc/aria2/aria2.session
# 在Aria2退出时保存错误/未完成的下载任务到会话文件
save-session=/etc/aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=30
# 即使下载完成或删除也全部保存
#force-save=true

## RPC相关设置 ##

# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=false
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
#rpc-secret=password
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=
# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-passwd=
# 是否启用 RPC 服务的 SSL/TLS 加密,
# 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接
#rpc-secure=true
# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件,
# 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥
#rpc-certificate=/path/to/certificate.pem
# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件
#rpc-private-key=/path/to/certificate.key

## BT/PT下载相关 ##

# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
#follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=51413
# 单个种子最大连接数, 默认:55
bt-max-peers=500
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=true
# 打开IPv6 DHT功能, PT需要禁用
enable-dht6=true
# DHT网络监听端口, 默认:6881-6999
dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
bt-enable-lpd=true
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true
# 每个种子限速, 对少种的PT很有用, 默认:50K
#bt-request-peer-speed-limit=50K
# 客户端伪装, PT需要
#peer-id-prefix=-TR2770-
#user-agent=Transmission/2.77
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
#seed-ratio=0
# 种子下载完成立即停止做种
seed-time=0
# BT校验相关, 默认:true
#bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true

修改权限:

chown -R www-data:www-data /etc/aria2
chmod -R 755 /etc/aria2
chown -R www-data:www-data /data/aria2/download
chmod -R 755 /data/aria2/download

创建Aria2的systemd文件:

nano /etc/systemd/system/aria2.service

写入如下内容,指定Aria2的运行用户为www-data:

[Unit]
Description=aria2

[Service]
User=www-data
Group=www-data
ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf
Restart=on-abort

[Install]
WantedBy=multi-user.target

启动Aria2以及设置开机启动:

systemctl start aria2
systemctl enable aria2

现在访问你的Nextcloud后台,启用ocDownloader:

测试是否可以正常使用:

文件下载完成直接进入到Nextcloud的目录内:

赞(8)
未经允许不得转载:荒岛 » 在Debian9上搭建一个完美的Nextcloud私有云
分享到: 更多 (0)

评论 26

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    vultr主机可选安装有Nextcloud的系统,开机即用

    6665年前 (2019-01-29) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
  2. #2

    博主可以出一期v2ray的h2+tls+caddy的教程?

    6665年前 (2019-01-29) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 可以。

      LALA5年前 (2019-01-30) Google Chrome 70.0.3538.110 Google Chrome 70.0.3538.110 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 我写了个一键脚本,需要的话可以试试,教程不想写了:https://git.lala.im/imlala/Caddy-v2Ray-TLS-WebSocket

      LALA5年前 (2019-01-30) Google Chrome 70.0.3538.110 Google Chrome 70.0.3538.110 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 谢谢博主

        6665年前 (2019-01-30) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
  3. #3

    其实装个宝塔 把源码拖上去就能安装了 :idea:

    PC5年前 (2019-01-30) Google Chrome 63.0.3239.132 Google Chrome 63.0.3239.132 Windows 10 x64 Edition Windows 10 x64 Edition回复
  4. #4

    我怎么觉得这篇文章是nextcloud劝退23333。话说我昨天刚弄了个斐讯n1,刷了armbian,现在跑aria2和kodexplorer很开心……就是垃圾移动宽带,找tracker不是一般的差。

    TheEastWind5年前 (2019-01-30) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • nextcloud就是这样的,能用和能不能用舒服完全是两个概念。。国内宽带都一个鸟样,除了长城鹏博士那些。。讲真现在电信联通也不比移动好到哪里去。。我自从换了电信我都还有点怀恋长宽那大内网了,我以前用长宽的时候因为是内网,迅雷下什么资源都可以跑100M,长宽的内网缓存贼牛批,现在这个电信能过50M就谢天谢地了。。

      LALA5年前 (2019-01-30) Google Chrome 70.0.3538.110 Google Chrome 70.0.3538.110 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 同样的tracker在香港阿里云上面速度就贼牛逼。我现在觉得可能真的是tracker的问题了。不过内网缓存这件事情我还没关注过。这么想一想。长城宽带的确也有可取之处。现在我三家运营商都在用,感觉移动的出国线路是不太行。电信会QoS,唯独还有联通不错。平时用网络是在广西和北京。

        TheEastWind5年前 (2019-01-30) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
  5. #5

    有没有支持秒传、离线下载的私有云盘,谢谢

    prajna5年前 (2019-01-31) Google Chrome 69.0.3497.81 Google Chrome 69.0.3497.81 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 115请。

      LALA5年前 (2019-02-01) Google Chrome 70.0.3538.110 Google Chrome 70.0.3538.110 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 可以安装在自家服务器的

        prajna5年前 (2019-02-02) Google Chrome 69.0.3497.81 Google Chrome 69.0.3497.81 Windows 10 x64 Edition Windows 10 x64 Edition回复
  6. #6

    大佬,虚拟主机有啥能装的好玩的程序没得 :idea:

    洗护合一5年前 (2019-02-01) Opera 58.0.3135.53 Opera 58.0.3135.53 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • PHP网页代理,帮主机商回收IP。

      LALA5年前 (2019-02-01) Google Chrome 70.0.3538.110 Google Chrome 70.0.3538.110 Windows 10 x64 Edition Windows 10 x64 Edition回复
  7. #7

    我就不同了。
    我是来祝你新年快乐的 :wink:

    Ryan5年前 (2019-02-02) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 同乐~

      LALA5年前 (2019-02-03) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
  8. #8

    博主可以出一期胖虎的ssrpanel对接v2ray的教程吗???太难了,对接成功但是上不了网,v2ray客户端也订阅不了,愁死我了

    kim5年前 (2019-02-15) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 看情况吧。

      LALA5年前 (2019-02-15) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
  9. #9

    大佬 我用宝塔搭建好之后网页可以正常访问 但是App登录提示 访问禁止 CSRF check failed 这个问题要怎么解决呢 感谢

    Wick5年前 (2019-02-18) Chrome 72.0.3626.74 Chrome 72.0.3626.74 iPhone iOS 12.1 iPhone iOS 12.1回复
    • 手机APP还是电脑客户端?电脑客户端我这边测试了是正常的。我很久以前貌似也碰到过这个,一般重新登录一次就好了。

      LALA5年前 (2019-02-18) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
  10. #10

    大佬感觉你写的这份教程好棒,问下可以转载嘛?会注明出处的~

    QAQ5年前 (2019-04-02) Google Chrome 73.0.3683.86 Google Chrome 73.0.3683.86 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 可以的。

      LALA5年前 (2019-04-02) Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 Windows 10 x64 Edition Windows 10 x64 Edition回复
  11. #11

    非常棒,解决了我多个php版本共存情况下getenv返回为空的问题,谢谢

    tankren5年前 (2019-04-03) Google Chrome 73.0.3683.86 Google Chrome 73.0.3683.86 Windows 7 x64 Edition Windows 7 x64 Edition回复

分享创造快乐

广告合作资源投稿