在Azure上架设私有云Seafile

公司有onedrive服务,但是onedrive在国内的速度不是一般的慢啊……不知道是不是墙的原因。
有些个人的文档(项目),不想放在公司的onedrive服务器上,但是家和公司两地的资料同步又是硬性需求。
也试用过坚果、dropbox,但是小的可怜的免费容量限制,实在是憋屈。
万般无奈,只能再次打起azure的主意,自己搞一个私有云吧。

0x01 云系统选择

网上现有的解决方案主要是3种,owncloud, seafile 和 比较新的nextcloud.
略微做了些比较,就先试一下Seafile吧,如果后面有什么新的硬性要求,打算试试nextcloud.
Seafile的开源版功能有限,但估计够用。

功能对比

2018-9-2 更新: NextCloud版本的搭建已经完成,详细教程件这篇《在Azure上架设私有云NextCloud》

0x02 Azure上创建服务器

  1. 在Azure上新建一个Ubuntun的服务器


    Ubuntun

    设置服务器
  2. 虚拟机的大小,选最便宜的B1s就可以。
  3. 在配置中,端口将http,https 和SSH开发出来。


    端口配置
  4. 最后完成部署,就可以在azure创建一个linux的虚拟机。

0x03 安装seafile

seafile提供了一个一键安装的教程。

  1. 先使用SSH工具,通过虚拟机的IP地址,连接到虚拟机上,输入之前设置的用户名XXXXX和密码XXXX。
  2. 切换成 root 账号 (sudo -i)
  3. 如果使用的系统是Ubuntu 16.04(适用于 6.0.0 及以上版本)。用下面的命令获取安装脚本
wget https://raw.githubusercontent.com/haiwen/seafile-server-installer-cn/master/seafile-server-ubuntu-16-04-amd64-http
  1. 运行安装脚本并指定要安装的版本 (6.0.13)。其中6.0.13可以替换成最新的Seafile的版本,版本号在这个页面下可以找到
bash seafile-server-ubuntu-16-04-amd64-http 6.0.13
最新版本号
  1. 运行上面的的命令后,会让你选择是安装社区版,还是专业版。社区版选1,专业版选2.
    然后就是漫长的安装过程。

  2. 安装好后,会列出默认的登陆用户名和密码。以及一些之后的配置指导。在浏览器中登陆一下地址http://虚拟机的ip。就可以打开在seafile的web界面。输入之前提供的默认用户名和密码,就可以登陆进去了。


    安装完成
  3. 一些必要的修改。从右上角进入系统设置。

    进入系统设置

    在1和2处输入虚拟机的ip地址,如果关联了域名www.xxxxx.com,那这里可以直接填域名地址。如果不设置,网页上预览和下载的时候会出错。
    设置域名

  4. 新建用户和管理员账号,都可以在这个界面中设置。在新建一个用户后,可以在“管理员”页面中,将新建的用户设置为管理员,然后就可以删除默认的账户admin。


    用户

到这里算是把seafile简单搭建起来了。Seafile在window和手机端都有客户端。还是比较方便的。

0x04 设置https域名

默认的seafile服务器使用的是http域名,总觉得不得劲。所以下一步就是想办法设置为https。
先根据之前的这篇《从腾讯云免费申请SSL证书-azure版》极简教程获得SSL的证书文件,下载下来后需要用到里面Nginx文件夹里的两个文件*.crt和*.key。
然后通过SSH工具,远程连接到服务器上。再/etc/nginx/目录上新建一个文件夹命名为SSL

cd /etc/nginx/
sudo mkdir SSL
sudo chmod 777 SSL

然后,通过WinSCP软件作为FTP连接上服务器,讲crt文件和key文件上传到SSL文件夹内。记下这两个文件的完整路径分别为A.crt和B.key
下一步就是对Nginx的配置文件进行设置。如果都是默认路径,那这个文件应该在

cd /etc/nginx/sites-available
# 修改seafile在Nginx下的配置文件
sudo nano seafile.conf

用下面的配置文件完全替换原来的内容。


server {
    listen       80;
    server_name  你的seafile网站的域名;
    rewrite ^ https://$http_host$request_uri? permanent;
    # Enables or disables emitting nginx version on error pages and in the "Server" response header field.
    server_tokens off;
}

server {
    listen       443;
    server_name  你的seafile网站的域名;
    ssl on;
    ssl_certificate /etc/nginx/ssl/A.crt;   #pem文件路径
    ssl_certificate_key /etc/nginx/ssl/B.key; #key文件路径
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    
    ssl_prefer_server_ciphers on;
 
    proxy_set_header X-Forwarded-For $remote_addr;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
    server_tokens off;
  
    location / {
         proxy_pass         http://127.0.0.1:8000;
         proxy_set_header   Host $host;
         proxy_set_header   X-Real-IP $remote_addr;
         proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header   X-Forwarded-Host $server_name;
         proxy_set_header   X-Forwarded-Proto $scheme;
         proxy_read_timeout  1200s;

         # used for view/edit office file via Office Online Server
         client_max_body_size 0;

         access_log      /var/log/nginx/seahub.access.log;
         error_log       /var/log/nginx/seahub.error.log;
    }
    
    location /seafhttp {
         rewrite ^/seafhttp(.*)$ $1 break;
         proxy_pass http://127.0.0.1:8082;
         client_max_body_size 0;
         proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_connect_timeout  36000s;
         proxy_read_timeout  36000s;
    }
    location /media {
        root /opt/seafile/seafile-server-latest/seahub;
    }
    location /seafdav {
        fastcgi_pass    127.0.0.1:8080;
        fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
        fastcgi_param   PATH_INFO           $fastcgi_script_name;
        fastcgi_param   SERVER_PROTOCOL     $server_protocol;
        fastcgi_param   QUERY_STRING        $query_string;
        fastcgi_param   REQUEST_METHOD      $request_method;
        fastcgi_param   CONTENT_TYPE        $content_type;
        fastcgi_param   CONTENT_LENGTH      $content_length;
        fastcgi_param   SERVER_ADDR         $server_addr;
        fastcgi_param   SERVER_PORT         $server_port;
        fastcgi_param   SERVER_NAME         $server_name;
        fastcgi_param   REMOTE_ADDR         $remote_addr;

        client_max_body_size 0;

        access_log      /var/log/nginx/seafdav.access.log;
        error_log       /var/log/nginx/seafdav.error.log;
    }
}

保存退出。然后重启Nginx, Seafile, Seahub

sudo nginx -s reload
sudo /opt/seafile/seafile-server-6.3.2/seafile.sh restart
sudo /opt/seafile/seafile-server-6.3.2/seahub.sh restart

其中的6.3.2需要换成你安装的seafile的版本号

这样你在浏览器中再输入域名可以看到可爱的绿色锁了。

你可能感兴趣的:(在Azure上架设私有云Seafile)