# 第二十二期 Docker:Nextcloud 网盘的一键安装

本期视频我们要安装开源的网盘系统 Nextcloud,我们会使用 Portainer 的 Stack 将 nextcloud 一键部署在 Docker 容器中。安装过程会搭配第二十一期视频分享的 MariaDB 数据库,如果你还不了解如何搭建数据库环境,请先回看之前的视频。

💖 Nextcloud 值得被尊重

Nextcloud 是一个开放源代码项目,由 ownCloud 项目的原作者 Frank Karlitschek (opens new window) 在 2016 年从 ownCloud 创建分支而来。 任何人都可以免费安装放心使用,绝无任何费用和版权问题。

对待无私的开源项目,我们理应尊重和包容,如果你在使用中发现任何问题, 最佳的处理方式不是到处留言“抱怨它不好”,而是应该查看官方文档 (opens new window)是否提供了解决方案,或者去项目主页 (opens new window)把问题反馈给开发团队。

# 视频地址

# Nextcloud Stack (docker-compose)

注意

在 Portainer 中创建 Stack 之前,请先添加一个名为 mynet 的网络。

如果你使用的是 ARM 架构的 NAS,比如树莓派。应该根据硬件架构,显式的指定镜像标签,比如:linuxserver/nextcloud:arm64v8-latestlinuxserver/nextcloud:arm32v7-latest

---
version: "2"
services:
  nextcloud:
    image: linuxserver/nextcloud
    container_name: nextcloud
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
    volumes:
      - /path/to/appdata:/config
      - /path/to/data:/data
    networks:
      - mynet
    ports:
      - 443:443
    restart: unless-stopped

networks:
  mynet:
    external:
      name: mynet

# 常见问题

# 一、PUID 和 PGID 是干什么的?

LinuxServer 维护的 Docker 镜像都有 PUIDPGID 这两个环境变量,他们主要用来设置挂载到容器中的存储的所有权。

默认情况下,挂载到容器上的存储会以 root 用户的身份写入文件,这会使得主机上的普通用户没有权限去读写这些文件。为了让主机上的特定用户能够读写挂载到容器中的存储,可以将用户或组的 ID 通过 PUIDPGID 这两个环境变量进行指定。设置以后,容器中的程序就会以所设置的用户身份在挂载的存储上写入数据了。

# 二、OMV 如何查看用户 ID 和用户组 ID ?

在终端中使用直接输入 id,即可查看当前登录终端用户的ID以及加入的用户组的ID信息。

herald@omv5:~$ id
uid=1000(herald) gid=100(users) groups=100(users),27(sudo),115(ssh),118(docker)

使用 id + 用户名 可以查看特定用户的ID以及加入的用户组ID信息。

herald@omv5:~$ id admin
uid=998(admin) gid=100(users) groups=100(users),997(openmediavault-admin)

# 三、https访问网盘浏览器提示链接不安全

我们安装的网盘使用的不是由受信任的证书机构签发的证书,而是自签名证书,因此浏览器会弹出不安全的提示。 SSL/TLS 证书的作用主要有两个方面,一个是加密 http 链接,让数据加密传输,避免被恶意截取或篡改。 其次就是能够验证我们所访问的是真实的,而不是仿冒的网站。 因为 Nextcloud 部署在我们自己的局域网中,使用我们自己签发的 SSL/TLS 证书,因此不存在不信任和伪造仿冒的情况, 大可放心忽略掉浏览器的安全提示。

如果你只是不想看到这个安全提示,可以为内网的域名(比如 omv5.local)创建一个自签名的证书,替换掉 nextcloud 共享文件夹中的 config/keys 中的 cert.keycert.crt,然后将 cert.crt 安装到系统的 受信任的根证书办法机构 中。

# 相关资源