NextCloud 网盘搭建

1 分钟读完

珍藏许久的东西总是无处安放,终有一日发现了NextCloud这个好东西,于是立马开干。这个开源的网盘有苹果安卓App,还有MAC,Windows桌面软件,简直太全乎了好嘛。为了搭建网盘,我在腾讯云上购买了2核8G内存100GB的服务器,高配是流畅体验的前提,么的办法,虽然贵,但是为了爽,忍了。后续更新:终究还是太贵了,用回了一个月47的1G+50G服务器,🤣

snap 安装(目前snap只有旧版(16.0.0),不支持最新的18.0.0)

服务器配置:

云服务商 : 腾讯云
系统:  Ubuntu 18.04.1 LTS
运存:  1G
内存:  50G

执行snap安装命令

sudo snap install nextcloud

启动服务

sudo snap start nextcloud

开启https模式

sudo nextcloud.enable-https lets-encrypt

设置启动端口

sudo snap set nextcloud ports.http=80

官方snap仓库地址:https://github.com/nextcloud/nextcloud-snap

手动安装(支持最新的版本,但是比较繁琐)

安装mysql

sudo apt-get install mysql-server-5.7

配置编码

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
transaction_isolation = READ-COMMITTED
binlog_format = ROW
innodb_large_prefix=on
innodb_file_format=barracuda
innodb_file_per_table=1

配置root密码,并允许非sudo登陆

注意在这里登录时可以直接回车进入,初始安装没有密码

sudo mysql -u root -p
myqsl > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your-password';

创建用户,仓库

如果需要远程登陆,替换localhost%

mysql > create database nextcloud;
mysql > CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY '000000';
mysql > GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
mysql > flush privileges;

安装php,及其模块

sudo apt-get install php
sudo apt-get install php-dompdf unzip
sudo apt-get install php-gd php-json php-mysql php-curl php-mbstring
sudo apt-get install php-intl php-imagick php-xml php-zip
sudo apt-get install libapache2-mod-php php-bcmath php-gmp

配置php.ini

apache2 服务器使用的php.ini: /etc/php/7.2/apache2/php.ini cloud cron jobs使用的php.ini: /etc/php/7.2/cli/php.ini

在apache2的php.ini中设置最大文件上传大小以及php内存限制

memory_limit = 512M
upload_max_filesize = 50M

安装reids

sudo apt-get install php-redis redis-server
sudo apt-get install php-apcu 

安装apache2

sudo apt-get install apache2

开启ssl,并设置证书

sudo wget https://dl.eff.org/certbot-auto && sudo chmod a+x certbot-auto
sudo ./certbot-auto --apache --agree-tos --rsa-key-size 4096 --email your@email.com --redirect -d your.domain.com

自动更新证书

https://certbot.eff.org/lets-encrypt/ubuntubionic-apache

添加库

 sudo apt-get update
 sudo apt-get install software-properties-common
 sudo add-apt-repository universe
 sudo add-apt-repository ppa:certbot/certbot
 sudo apt-get update

安装certbot

 sudo apt-get install certbot python-certbot-apache

在apache中安装certbot

 sudo certbot --apache

配置证书自动更新

 sudo certbot renew --dry-run

配置apache2

开启mod_headers模块

sudo a2enmod headers

编辑/etc/apache2/sites-available/000-default-le-ssl.conf文件:

  1. ServerName下面追加
<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=15768000; preload"
</IfModule>
  1. 更改/var/www/html/var/www/nextcloud(如果你不想nextcloud直接作为根目录,需要在访问时使用:https://host/nextcloud)同样更改/etc/apache2/sites-enabled/000-default.conf文件中的/var/www/html

编辑/etc/apache2/apache2.conf文件, 将所有的AllowOverride None更改为AllowOverride All

下载nextcloud压缩包

https://nextcloud.com/install/

解压内容至/var/www/, 解压完成最终目录为/var/www/nextcloud/...

配置redis

/var/www/nextcloud/conf.d/config.php中追加内容

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

打开网站,配置mysql,创建admin等

附录

migrate 旧的云盘至新云盘

直接拷贝/var/www/nextcloud/data/your-user-name/files的内容到新版本的目录中 然后执行

cd /var/www/nextcloud
sudo -u www-data php occ files:scan --all

数据库索引及cache更新

cd /var/www/nextcloud
sudo -u www-data php occ db:convert-filecache-bigint
sudo -u www-data php occ db:add-missing-indices

使用Nginx代理apache2中的Nextcloud

Nginx 代理配置

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name cloud.example.com;

    client_max_body_size 0;
    underscores_in_headers on;

    location ~ {
        proxy_headers_hash_max_size 512;
        proxy_headers_hash_bucket_size 64;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_buffering off;
        proxy_redirect off;
        proxy_max_temp_file_size 0;
        proxy_pass https://127.0.0.1:8443;
    }
}

Apache2 更改SSL默认监听端口为8443

/etc/apache2/sites-enabled/000-default-le-ssl.conf

<VirtualHost *:8443>

Nextcloud 配置服务器Host /var/www/nextcloud/config/config.php

'trusted_domains' =>
array (
        0 => 'cloud.sevendark.cn',
        1 => '127.0.0.1:8000',
),
'overwritehost' => 'cloud.sevendark.cn',
'overwriteprotocol' => 'https',
'overwritewebroot' => '/',
'overwrite.cli.url' => 'https://cloud.sevendark.cn/',
'htaccess.RewriteBase' => '/',
'trusted_proxies' => ['127.0.0.1'],

参考:https://breuer.dev/tutorial/Setup-NextCloud-FrontEnd-Nginx-SSL-Backend-Apache2.html

官方网站地址:https://nextcloud.com/

标签:

分类:

更新时间: