Nextcloud 搭建私人云服务教程

Author Avatar
WincerChan 3月 31, 2018
  • 在其它设备中阅读本文章

我一直很不相信国内的那些云服务提供商(尤其是在李彦宏发表的讲话「中国用户对隐私问题没那么敏感,在个人隐私方面更加开放,一定程度上愿用隐私换方便和效率」后),因为怕隐私得不到保障,故而我的一些隐私数据都是存放在国外的云盘(如 Dropbox、Drive 等)上。

可这俩在国内都被墙了,而手机翻墙总是显得有些不够方便,与是我就琢磨着自己搭建一个云服务,随后就发现了 Nextcloud 这一开源云服务。而网上的教程都太过复杂了,对新手太过不友好,于是乎——一篇近乎傻瓜式的 Nextcloud 教程诞生了。

安装

这里采用 Docker 容器方式来安装 Nextcloud,这样就不用担心各种环境依赖了(Nextcloud 的依赖简直多得吓人,而 Dockerfile 会帮你把依赖都配置好)

安装 Docker

注:Docker 仅支持 64-bit 的系统

Docker 现已被各大发行版的仓库收入,采用正常安装命令即可:

yum -y install docker

随后,启动 Docker 守护进程:

# systemctl
systemctl start docker
# Service
service docker start

安装 NextCloud

自动安装

有了 Docker 后,就可以几行代码安装 Nextcloud 了:

# clone nextcloud 的 docker 容器
git clone https://github.com/nextcloud/docker.git
# 耐心等待安装
docker run -d -p 8080:80 nextcloud 

安装完成后先别忙着启动,docker ps -a -q 查看一下容器的 id,是一串 12 位的字符串,为了便于记忆,重命名一下:

docker rename ××× nextcloud     # ××× 即为容器 id

随后就可以采用如下命令启动了:

docker start nextcloud
# 测试
curl http://localhost:8080

这样,就完成了 Nextcloud 的安装工作。

手动安装

方法一只能安装最新版的 Nextcloud,而最新版缺少部分功能,如:无法添加 Drive 和 Dropbox 的外置存储。如果你对外置存储不是很 care 的话,那就按照方法一安装就可以了。

git clone https://github.com/nextcloud/docker.git
cd docker/12.0/apache

这里采用官方编写的 Dockerfile 手动构建,所以时间会花得比较久。

docker build -t nextcloud .

这时候用 docker images 应该可以看到刚刚创建的镜像了,随后创建容器:

docker create -v /var/www/html/apps/:/var/www/html/apps -v /var/www/html/config/:/var/www/html/config -v /var/www/html/data/:/var/www/html/data -p 127.0.0.1:8080:80/tcp --name nextcloud nextcloud

稍稍解释一下参数:

  • -v 后面是地址,前半部分是 VPS 的地址,后半部分是容器内的地址
  • -p 后面是端口号
  • –name 后面是容器名称
  • 最后的 nextcloud 是镜像名称

配置

Nginx 配置

由于 NextCloud 已经占用了 8080 端口,这里采用 Nginx 做反向代理,将域名直接解析至 8080 端口。

server {
  listen 80;
  server_name cloud.example.com;
  location / {
    proxy_pass http://localhost:8080;
  }
}

重启 Nginx 服务后,就可以通过 cloud.example.com 来访问云服务了。

NextCloud 配置

# 进入容器内的 bash
docker exec -i -t nextcloud bash

重定向 overwritehost

有时候 NextCloud 会自己定向至本地的 8080 端口,所以需要手动重写正确的地址:如果提示不能定位软件包,先执行 apt-get update

vim config/config.php
# 加上下面这行
'overwritehost' => 'cloud.example.com',

重启,让配置生效:

docker restart nextcloud

MySQL 配置

由于我 VPS 的内存比较小,所以并没有启用 MySQL/MariaDB 数据库(怕爆内存),而是采用了 SQLite,反正也是我一个人用,问题不大。

开启了 MySQL 后发现内存也就多了 20M(但性能的提升可不是一点半点),遂还是改成 MySQL 了:

  1. 安装 MySQL(这里采用 MariaDB 分支)

    yum -y install mariadb-server mariadb-client
    # 设置一下 root 密码等
    mysql_secure_installation
    
  2. 开启 daemon 服务

    systemctl start mariadb
    systemctl enable mariadb
    
  3. mysql -uroot -p 登录 MySQL

    # 创建 nextcloud 数据库
    CREATE DATABASE nextcloud CHARACTER SET = utf8 COLLATE = utf8_general_ci;
    # 创建 nextcloud 的用户
    CREATE USER nextcloud IDENTIFIED BY 'admin123';
    # 赋予对数据库所有的权限
    GRANT ALL ON nextcloud.* TO nextcloud;
    

初始设置

  1. 打开 https://cloud.example.com

  2. 创建管理员帐号和密码

  3. 数据库就选择 MySQL/MariaDB,其它参考下表:

名称
用户名nextcloud
密码admin123
数据库名nextcloud
地址172.17.0.1

注意:这里的地址千万不要填写成了 localhost 或者 172.0.0.1,因为这里的地址需要容器内与外部通信。

点击完成后,等待几秒就可以使用了。

挂载外部云盘

由于我 VPS 的容量只有 10g,故而放不了过多的视频,就考虑采用外部存储的方法,将 Drive、Dropbox 挂载至 Nextcloud 外部存储或者 VPS。

注:Nextcloud 13 已经取消对 Drive、Dropbox 外部存储的支持(这时候你也可以选择把 Drive 直接挂载至 VPS 本地目录,再通过外部存储链接至挂载目录来完成)。

启用外部存储插件

在应用页面,启用 External storage support 插件:如果提示:「没有安装 “smbclient”无法挂载 “SMB / CIFS”, “SMB / CIFS 使用 OC 登录信息”. 请联系您的系统管理员安装」

解决办法:

安装 smbclient

# 进入容器的内的 console
docker exec -i -t nextcloud bash
apt-get install libsmbclient-dev

这里简单说一下,不管你的 VPS 原本的系统是 CentOS、RedHat、Debian,统一都用 apt-get 安装,因为现在处于的是 docker 容器内的系统,与 VPS 的系统是分离的。

接着再安装 smbclient:

pecl install smbclient

同时会提示:「You should add “extension=smbclient.so” to php.ini」,这里又被小坑一把,网上大部分教程所说的 /etc/php.d/php.ini 并不存在,在 docker 容器内部该文件是在:

vim /usr/local/etc/php/conf.d/docker-php-ext-intl.ini
# 加上下面这行
extension=smbclient.so

随后重启 Nextcloud 服务就应该就 OK 了。

随后如果你安装的 Nextcloud 是 13 版本及以上的话,就只有考虑用 box 提供的 WebDAV 来作为外置存储了,不过只有 10G 的容量,且最大文件限制是 250MB。如果是用的 12 版本及以下的话,就可以考虑采取 Drive 作为外置存储了:

获取 API

  1. 访问 Google 开发者平台

  2. 点击「启用 API 和服务」

  3. 点击「Google Drive API」

  4. 点击「启用」

  5. 点击左侧的凭据 -> OAuth 同意屏幕:

    Screenshot_20180401_114932.png

    按照以上格式填写,点击保存

  6. 随后创建凭据:

    应用类型选择网页应用,其它的参考以下:

    Screenshot_20180401_115235.png

    点击创建后,会弹出悬浮框告诉你 ID 和 Key。

配置 Nextcloud

登录 Nextcloud,转至管理页面,点击「外部存储」,选择 Google Drive,填入 API 和 Key,点击授权,若授权时出现 400 错误,那么是重定向的 URI 出问题了,再添加如下一条:

https://cloud.example.com/index.php/settings/admin/externalstorages

如果提示「此应用未经过验证」,点击高级 -> 转至 example.com,忽略掉就行。

Screenshot_20180401_115546.png

当出现了绿色按钮,就表示配置成功了。

参考:

本文标题: Nextcloud 搭建私人云服务教程
最后更新:2018 年 04 月 01 日 - 19:04
本文链接:https://blog.itswincer.com/posts/bf0413ac/
本文采用:署名-非商业性使用-禁止演绎 4.0 国际 协议进行许可,阅读 相关说明