2

抛弃nextcloud,开始搭建使用cozycloud

 3 years ago
source link: https://shingle.me/post/%E6%8A%9B%E5%BC%83nextcloud%E5%BC%80%E5%A7%8B%E6%90%AD%E5%BB%BA%E4%BD%BF%E7%94%A8cozycloud/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

抛弃nextcloud,开始搭建使用cozycloud

2019-07-24 18:45:24 约 1366 字 预计阅读 3 分钟 1203 次阅读

辣鸡 php, 慢的要死

搭建一个的私有网盘是一个强迫症该干的事, 之前一直在有 nextcloud, 因为没有找到其他成熟的开源相关项目, 用了一阵发现上传几张图片, 分享给别人开的时候, 速度非常慢甚至导致 cpu 一直飙升, 后来基本就不怎么用了.

最近在搜索有没有 golang 写的网盘项目时, 无意间看到cozy-drive这个开源项目, 这是一个 node 写的app, 但是最近他们改用 golang 重写了服务代码

地址在这里: https://github.com/cozy/cozy-stack

稍微看了下文档, 虽然比不上 nextcloud 功能多样, 但是需要的基本功能基本都有(只想传一下文件分享给别人看), 还有一些基于oauth认证做的一些第三方应用, 最重要的是基于 golang 开发的,相比 php 还是更快更稳定的, 未来很有潜力

此开源项目不支持中文语言, 不过官方组织了大家一起翻译, 之后应该会支持的.

翻译地址: https://www.transifex.com/cozy/cozy-authentication/

这项目折腾了我一上午才搞定, 主要卡在证书上, 这个稍后再说

老规矩, 基于docker安装, 方便易用

version: "3"
services:
  couchdb:
    image: couchdb
    container_name: couchdb
    expose:
      - "5984"
    volumes:
      - ./couchdb-data:/opt/couchdb/data #数据挂载到宿主机
    networks:
      - web
    restart: always
  cozy:
    image: moritzheiber/cozy-stack
    container_name: cozy
    volumes:
      - ./cozy-storage:/cozy/storage #数据挂载到宿主机
      - ./cozy.yml:/cozy/.cozy/cozy.yml
    networks:
      - web
    links:
      - couchdb:couchdb #依赖couchdb服务
    depends_on:
      - couchdb
    restart: always
    expose:
      - "8080"
    command: cozy-stack serve --allow-root --config /cozy/.cozy/cozy.yml

networks:
  web:
    external: true

cozy 使用的是couchdb作为数据库, 在 docker 配置任何数据库时, 都要把数据卷挂载在宿主机, 不然一旦重新构建容器, 数据就都没了, 保证容器是无状态的.

我的cozy.yml 配置如下:

host: 0.0.0.0
port: 8080

subdomains: nested

admin:
  host: localhost
  port: 6060

registries:
  default:
    - https://apps-registry.cozycloud.cc/

fs:
  url: file://localhost/cozy/storage

couchdb:
  url: http://couchdb:5984/


log:
  level: info
  syslog: false

各种配置项的意思还是去看官方例子吧 :https://github.com/cozy/cozy-stack/blob/master/cozy.example.yaml

一切搞好之后,docker-compose up -d启动即可.

一般情况下到这里就结束了, 不过上面的配置只是创建了cozy-stack服务, 需要新建一个实例才算完成.

首先进入cozy-stack服务的容器

docker exec -it cozy sh

执行创建实例命令, 参数自行替换

cozy-stack instances add --apps home,drive,phtots,settings,store --passphrase 你的密码 "你的域名(不能是ip)"

稍微等待一会, 提示创建完成后, 访问你的域名然后输入你刚才设置的密码就搞定了

创建实例之后, 发现服务全部是home.example.com这种子域名的形式,你在创建实例的时候安装了多少 app 就有多少个子域名, 我用的 traefik 作为网关的,申请Let's Encrypt 的泛域名只能域名商支持 dns 解析才行

最后去研究traefik文档, 曲线救国给每个子域名都申请了证书

配置HostRegexp 正则去匹配域名到指定服务

HostRegexp:{subdomain:.+}.example.com

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK