lala.im:CozyCloud:基于GO语言开发的网盘/同步盘

運維技術·軟件/源碼·lala.im · 2019-01-04 · 175 人浏览

原文地址:https://lala.im/4698.html,請支持原作者!該處僅作轉載。

这个程序最早是用node.js写的v2版本,后来用go重写了v3版本,官方提供免费的5G存储,但如果你需要更多容量就要付费了。不过好在这个程序是开源的,任何人都可以部署自己的服务器。
功能你可以理解成和nextcloud差不多,但是性能要比nextcloud好,nextcloud那辣鸡玩意有性能可言嘛(某人语录233)
开始之前你需要做一下准备工作,按照下图的DNS记录解析你的域名:

範例
下面我在CentOS7X64的机器上部署~
安装EPEL源:

yum -y install epel-release

安装ImageMagick,上传的图片缩略图生成依靠这个软件:

yum -y install ImageMagick

因为这个程序强制SSL,所以这里我们安装certbot用于签发SSL证书:

yum -y install certbot

这里我们要申请一个通配符证书:

certbot -d example.com -d *.example.com --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory certonly --agree-tos

因为这个certbot很矫情,很多环境会出现无法正常运行的情况,这时候我们还可以使用acme.sh来生成,首先一条命令安装:

curl https://get.acme.sh | sh

然后使用如下命令:

acme.sh --issue -d example.com -d *.example.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

正常的话会回显给你类似如下图的内容,我们要在DNS解析处添加这样两条TXT记录:

範例
如图所示:

範例
等待解析生效,我使用CloudFlare的DNS生效很快,别的DNS可能要等很久,一定要等生效后,再执行下面的命令:

acme.sh --renew -d example.com -d *.example.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

签发成功如图所示:

範例
当然这里我只是提及一下这个申请方法,我这边还是使用certbot申请的。
接下来安装couchdb数据库,因为这个程序只能使用2.2版本的,所以下面我用这种安装方式进行安装:

yum -y install http://apache.bintray.com/couchdb-rpm/el7/x86_64/couch-js-1.8.5-21.el7.x86_64.rpm
yum -y install http://apache.bintray.com/couchdb-rpm/el7/x86_64/couchdb-2.2.0-1.el7.x86_64.rpm

启动以及设置开机自启动:

systemctl start couchdb
systemctl enable couchdb

可以查看一下当前的运行状态确保正常:

systemctl status couchdb

创建默认数据库:

curl -X PUT http://127.0.0.1:5984/_users
curl -X PUT http://127.0.0.1:5984/_replicator
curl -X PUT http://127.0.0.1:5984/_global_changes

如果正常,你应该看到类似这样的回显:

範例
现在就可以下载cozy的主程序了,这是一个二进制的文件:

wget https://github.com/cozy/cozy-stack/releases/download/2018M4S3/cozy-stack-linux-amd64

给执行权限:

chmod +x cozy-stack-linux-amd64

然后移动到/usr/bin目录:

mv cozy-stack-linux-amd64 /usr/bin/cozy-stack

新建一个目录,这个用于cozy的默认存储目录:

mkdir /etc/cozy

生成一个管理员密码:

cozy-stack config passwd /etc/cozy/

创建一个systemd服务文件:

nano /etc/systemd/system/cozy-stack.service

写入:

[Unit]
Description=cozy-stack server

[Service]
User=root
ExecStart=/usr/bin/cozy-stack serve --allow-root --host 0.0.0.0 --mail-host smtp.gmail.com --mail-port 587 --mail-username [email protected] --mail-password yourpassword --mail-noreply-address [email protected] --mail-noreply-name lala.im
Restart=on-abort

[Install]
WantedBy=multi-user.target

注:
1.你可以只带参数–allow-root –host 0.0.0.0进行配置,但这样启动的服务,待会我们创建的实例没有邮件相关的功能,比如用户找回密码是需要邮件功能的。
2.这个systemd内我使用的是gmail的smtp服务,默认情况下,这需要在你的账号内把“允许不够安全的应用”这个功能启用,地址:https://myaccount.google.com/lesssecureapps
3.–mail-noreply-address/–mail-noreply-name这两个选项可以自定义。
然后就可以运行服务了:

systemctl start cozy-stack

设置开机启动:

systemctl enable cozy-stack

查看运行状态:

systemctl status cozy-stack

确保是Active状态:

範例
现在我们就可以创建一个实例了:

cozy-stack instances add --host 0.0.0.0 --apps drive,photos,collect,settings --passphrase 设置一个实例密码 "example.com"

这个过程中会让你输入两次密码,这个密码就是之前你自己生成的管理员密码:

範例
完成之后安装Nginx:

yum -y install nginx

新建一个站点配置文件:

vi /etc/nginx/conf.d/cozy.conf

写入:

server {
    listen       80;
    listen       443 ssl http2;
    client_max_body_size 100000m;
    server_name  example.com drive.example.com settings.example.com photos.example.com collect.example.com;

    ssl_certificate    /etc/letsencrypt/live/example.com-0001/fullchain.pem;
    ssl_certificate_key    /etc/letsencrypt/live/example.com-0001/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    error_page 497  https://$host$request_uri;

location / {
    proxy_pass       http://127.0.0.1:8080;
    proxy_redirect   http:// https://;
    proxy_http_version         1.1;
    proxy_set_header Upgrade   $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

启动Nginx以及设置开机启动:

systemctl start nginx
systemctl enable nginx

关闭系统防火墙:

systemctl stop firewalld.service
systemctl disable firewalld.service

关闭SELinux:

vi /etc/selinux/config
SELINUX=disabled
setenforce 0

默认情况下,我们创建的实例容量只有100GB,可以使用下面的命令增加:

cozy-stack instances set-disk-quota example.com 5000GB

如果你不再需要这个实例(确保数据都已备份)可以使用下面的命令删除:

cozy-stack instances rm example.com

现在打开你的域名应该可以看到这个网盘的登录界面了:

範例
用户界面:

範例
同步客户端下载:https://cozy.io/en/download/

運維技術 軟件/源碼 網盤 lala.im
Theme Jasmine by Kent Liao