原文链接:https://www.moerats.com/archives/429/ ,有更改


说明:关于 NextCloud 安装方法之前说了两种了,常规的 lnmp 环境搭建和使用 Docker 安装,参考:一款不错的个人私有云:NextCloud 安装教程使用 Docker 快速安装 NextCloud 个人私有云盘,现在再说另一种安装方法,使用 Snap 快速安装,由于 Snap 包自带 NextCloud ,所以安装快速简单,是这几种方法中最简单的一个,也很实用,有兴趣的可以尝试下。

# Snap 是什么?

Snap 的安装包扩展名是 .snap ,类似于一个容器,完全独立于系统,它包含一个应用程序需要用到的所有文件和库( snap 包包含一个私有的 root 文件系统,里面包含了依赖的软件包)。它们会被安装到单独的目录,各个应用程序之间相互隔离,互不影响。而且安装快捷、创建简单、运行安全,易管理。目前支持的主流发行版有 UbuntuDebian 等。

Snap 的用法
这里只简单说下,初步了解下就行了。

#查看 snap 版本信息
snap --version
#找出所有 snap 应用
snap find
#安装应用
snap install 包名
#重启应用
snap restart 应用名
#升级应用
snap refresh 应用名
#查看安装的应用
snap list
#卸载应用
snap remove 应用名

# 安装

由于 Ubuntu 16.04 系统自带 Snap ,为了方便,可以直接使用该系统。

Snap 包自带 NextCloud ,所以我们可以直接安装。

#更新系统
apt-get update -y
#安装 NextCloud
snap install nextcloud

这时候就可以打开 http://your_ip 进入登录页面了,如果想用域名登录并配置 SSL 证书的话,先别登录,请直接看后面。

# 配置域名

将域名解析至 VPSIP 就可以使用域名登录了,然后再添加 Let’s encrypt SSL 证书并使用 https 访问。

添加 SSL 证书
使用命令:

nextcloud.enable-https lets-encrypt

根据要求输入你的邮箱,域名即可!

然后就可以打开域名并设置账号和密码登录了。

更多使用命令和方法可以直接查看 Github 地址→传送门,基本上可以解决你的大部分疑惑。

# Nginx 反向代理

通过反向代理时,不需使用 nextcloud.enable-https lets-encrypt 申请域名,不过会稍微麻烦一点。

第一步,更改 nextcloud 的默认端口

sudo snap set nextcloud ports.http=185
sudo snap set nextcloud ports.https=186 #这一步可选,因为我们不会使用 nextcloud 的 https 端口

第二步,添加 nextcloud 的 trusted_domains

sudo snap run nextcloud.occ config:system:set trusted_domains 1 --value=your.fancy.domain

接着重启 nextcloud

sudo snap restart nextcloud

然后在 Nginx 配置文件中设置反向代理,添加如下内容 (这是已有证书时的内容)

server {
    listen 443 ssl;
    server_name your.fancy.domain;
    # 获取到的两个证书文件
    ssl_certificate /etc/nginx/certs/h1msk.cc/cert.pem;
    ssl_certificate_key /etc/nginx/certs/h1msk.cc/privkey.pem;
    # ssl设置
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_pass http://localhost:10080;
        proxy_set_header Host $http_host;
        proxy_buffers 256 4k;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout 30;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 301 1h;
        proxy_cache_valid any 1m;
    }
}