前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Docker 搭建 Seafile 私有云流程记录

使用 Docker 搭建 Seafile 私有云流程记录

作者头像
2Broear
发布2024-03-12 10:38:25
1560
发布2024-03-12 10:38:25
举报
文章被收录于专栏:2B博客2B博客

前言

自之前的那篇静态文章 “Docker 安装 Seafile 私有云记录” 丢失后就一直搁置,这之间因为各种原因在服务器和本地都来回重装了几次,那么今天就简单来聊下这个私有云的搭建流程,也当做个记录了(@一下催更本文的Ying酱/滑稽)

私有云

一般来说,线上网盘用的最多的是百度云盘,不过限速的尿性大家都知道,然后其他比较良心的要不就没得赚开不了几天,要不就用户少直接没了,总之线上网盘市场早就被百度垄断了。那么后续就衍生出了私人 nas 存储系统,市面上常见的 nas 服务商有群晖(synology)威联通等,用户可以购买他们的硬件设备及硬盘后使用他们提供的 nas 软件存储服务,市场上是比较认可的。

另外还有一些比如坚果云,oneDrive、ownCloud、Syncthing、Seafile、Nextcloud 这类云储存服务商,提供付费计划及开发私有部署支持,这里我选的是 Seafile 作为私人网盘来使用。

Seafile

作为一款开源的企业云盘,首先 seafile 提供了各平台客户端(Windows, Mac, Linux, iOS, Android)以便在任意环境中搭建使用,而在云存储服务方面提供了文件实时同步、支持多人协同工作、以及类似微软 onedrive 的挂载盘等特性(更多特性查看官网:Seafile – 开源的企业私有网盘 私有云存储软件 企业维基 知识管理

ok,切回正题。

搭建 Seafile 环境

在 seafile 官方文档 中,seafile可在 windows(已过时) Linux 环境下部署,建议在 linux 环境下搭建 seafile,但如果你像我一样有在 windows 下搭建 seafile 的需求,那么可以在 windows 下的 WSL(windows subsystem for linux)环境下进行搭建(此环境下需安装 docker desktop 客户端,详见:Windows Docker 安装)。因为我是在 wsl2 中使用 docker 进行搭建的,其他搭建环境请在 seafile 官方文档中查阅。

docker 部署

seafile 分为 社区开源版 及 付费专业版,选择需要的版本后再进行安装。首先安装 docker

代码语言:javascript
复制
# for CentOS
yum -y install docker
# for Ubuntu
apt-get install docker -y

设置开机自动启动

代码语言:javascript
复制
# for CentOS
systemctl start docker
systemctl enable docker

安装 docker-compose 管理依赖

代码语言:javascript
复制
# for CentOS
yum install docker-compose -y
# for Ubuntu
apt-get install docker-compose -y

下载并修改 docker-compose.yml (此处演示 9.0 社区版,其他版本 yml 配置下载在 用Docker部署Seafile.md 文档中查阅)一般情况只需要修改 seafile 中的 ports(seafile服务访问端口)、SEAFILE_ADMIN_EMAIL (默认管理员邮箱)、SEAFILE_ADMIN_PASSWORD (默认管理员密码)即可。

注意:如需搭建专业版,此处需提前注册 seafile 并在用户中心查看密码后通过 docker login docker.seadrive.org 登入 seafile 后使用 docker 选择并拉取最新专业版镜像:docker pull docker.seadrive.org/seafileltd/seafile-pro-mc:latest

代码语言:javascript
复制
version: '2.0'
services:
  db:
    image: mariadb:10.5
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=db_dev  # Requested, set the root's password of MySQL service.
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - /opt/seafile-mysql/db:/var/lib/mysql  # Requested, specifies the path to MySQL data persistent store.
    networks:
      - seafile-net

  memcached:
    image: memcached:1.6
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net
          
  seafile:
    image: seafileltd/seafile-mc:latest
    container_name: seafile
    ports:
      - "9527:80" # 自定义 80 访问端口
#      - "443:443"  # If https is enabled, cancel the comment. 
    volumes:
      - /opt/seafile-data:/shared   # Requested, specifies the path to Seafile data persistent store.
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=db_dev  # Requested, the value shuold be root's password of MySQL service.
#      - TIME_ZONE=Asia/Shanghai # Optional, default is UTC. Should be uncomment and set to your local time zone.
      - SEAFILE_ADMIN_EMAIL=me@example.com # Specifies Seafile admin user, default is 'me@example.com'.
      - SEAFILE_ADMIN_PASSWORD=asecret     # Specifies Seafile admin password, default is 'asecret'.
      - SEAFILE_SERVER_LETSENCRYPT=false   # Whether use letsencrypt to generate cert.
      - SEAFILE_SERVER_HOSTNAME=seafile.example.com # Specifies your host name.
    depends_on:
      - db
      - memcached
    networks:
      - seafile-net

networks:
  seafile-net:

修改完 docker-compose.yml 配置文件后,将其放入需要安装 seafile 的文件夹路径中(此处为 /opt )后启动 Seafile 服务:

注意 seafile 9.0 专业版 需要手动在宿主机上创建 elasticsearch 的映射路径,并且给 777 权限,否则 elasticsearch 启动会报路径权限问题:mkdir -p /opt/seafile-elasticsearch/data && chmod 777 -R /opt/seafile-elasticsearch/data这个很坑,会导致 seafile 专业版搜索服务自动停止,需要多尝试几次

代码语言:javascript
复制
cd /opt  # 定位 docker-compose.yml 所在路径
docker-compose up -d  # 启动 seafile 服务

此时,在浏览器中访问 localhost(或你的服务器外网域名)+ docker-compose.yml 配置文件中绑定的 80 端口即可访问 seafile 服务(默认管理员邮件及密码均在 docker-compose.yml 中),如果需要以域名方式访问服务,可以使用 nginx 反代()或配置本地路由ddns转发(tplink支持tpddns免费域名)

记得登录后在 系统管理 中设置 SERVICE_URLFILE_SERVER_ROOT 为实际域名路径,否则将影响文件上下载等问题。

到这里如果是搭建在云服务器上就已经搭建完成了,但如果用作本地 nas 存储则还需要在本地路由上将 seafile 配置文件中的端口转发到本机ip内外网端口上(如绑定端口9527,本机ip为192.168.0.108,则在路由上设置如下:

外部端口

内部端口

IP地址

协议类型

9527

9527

192.168.0.108

ALL

另外如需在内网环境下访问时速度最大化,需要路由器支持 端口回流Nat Loopback) 功能,或做内网穿透)另外为防止开关机后本机 ip 变动,还需将本机 ip 与 mac 地址进行绑定(类似tp路由上的 IP与MAC绑定

部署 onlyOffice

搭建完 seafile 服务后,如需使用 office 在线协同编辑功能,需要另外部署 onlyoffice 免费版,以下

代码语言:javascript
复制
docker pull onlyoffice/documentserver  # 使用 docker 拉取 onlyoffice 镜像

# 安装 onlyoffice
cd /opt
mkdir seafile-onlyoffice 
cd seafile-onlyoffice 
mkdir log 
mkdir data 
mkdir lib
mkdir db

# 初始化 onlyoffice(默认8088端口,可选 -p 8088:443)
docker run -i -t -d -p 8088:80 --name onlyoffice --restart=always -v /opt/seafile-onlyoffice/log:/var/log/onlyoffice -v /opt/seafile-onlyoffice/data:/var/www/onlyoffice/Data -v /opt/seafile-onlyoffice/lib:/var/lib/onlyoffice -v /opt/seafile-onlyoffice/db:/var/lib/postgresql onlyoffice/documentserver

完成之后在浏览器输入 localhost+绑定端口(8088)即可查看其是否正常运行,之后在 /opt/seafile-data/seafile/conf 中编辑 seahub_settings.py 配置文件,在其末尾添加如下代码以启用 onlyoffice(其中需要修改 ONLYOFFICE_APIJS_URL 中的 localhost 为绑定域名)

代码语言:javascript
复制
# Enable Only Office
ENABLE_ONLYOFFICE = True
VERIFY_ONLYOFFICE_CERTIFICATE = False
ONLYOFFICE_APIJS_URL = 'http://localhost:8088/web-apps/apps/api/documents/api.js'
ONLYOFFICE_FILE_EXTENSION = ('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods')
ONLYOFFICE_EDIT_FILE_EXTENSION = ('docx', 'pptx', 'xlsx')

完成后 cd /opt 使用 docker-compose restart 命令重启 seafile 服务即可。需要注意的是,其 8088 端口也需在路由器设置端口转发,如下

外部端口

内部端口

IP地址

协议类型

8088

8088

192.168.0.108

ALL

其他事项

基本上配置完成就能满足个人使用了,因为专业版免费用户 3 个,社区开源版则无限制(功能上有些区别,可上官网查看),如果需要开放用户注册,管理员身份登录后在后台设置中勾选 允许用户注册发送激活邮件,发送邮件需在 seahub_settings.py 配置文件中添加如下 smtp 内容(示例为腾讯企业邮箱)

代码语言:javascript
复制
EMAIL_USE_SSL = True
EMAIL_HOST = 'smtp.exmail.qq.com'  # 服务商 host
EMAIL_HOST_USER = 'admin@example.com'  # 邮件地址
EMAIL_HOST_PASSWORD = 'smtppassword'  # smtp邮件密码
EMAIL_PORT = 465
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER

保存后执行同样执行 docker-compose restart 命令重启 seafile 服务即可生效。

专业版搜索问题

专业版需要设置 elasticsearch 目录的 777 权限,我设置过好几次,有时候不生效,有时候又可以,问题就是导致其搜索服务一直返回错误(开源版则没有这个问题)seafile 论坛基本已经没人了,提了几个问题都没有人回答。

配置默认用户容量大小在 seafile.conf 中配置,其他配置项参考:seafile.conf 配置

代码语言:javascript
复制
[quota]
default = 5

最后附带一些常用的 seahub_settings.py 配置项,其他配置项参考:Seahub 配置(注意修改后执行 docker-compose restart 重启 seafile 生效

代码语言:javascript
复制
# 在线预览的文件大小上限,默认为 30M.
FILE_PREVIEW_MAX_SIZE = 30 * 1024 * 1024

# 缩略图
ENABLE_THUMBNAIL = True
THUMBNAIL_IMAGE_SIZE_LIMIT = 300
THUMBNAIL_ROOT = '/opt/seahub-data/thumbnail/thumb/'
THUMBNAIL_SIZE_FOR_ORIGINAL = 1024

# Disable Admin Dashboard Controls
# ENABLE_SETTINGS_VIA_WEB = False

# Enable Admin view any repo but encrypted
ENABLE_SYS_ADMIN_VIEW_REPO = True

垃圾回收

docker gc:docker exec seafile /scripts/gc.sh

代码语言:javascript
复制
[history]
keep_days = 7

[library_trash]
expire_days = 30
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 私有云
      • Seafile
      • 搭建 Seafile 环境
        • docker 部署
        • 部署 onlyOffice
        • 其他事项
          • 专业版搜索问题
          • 垃圾回收
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档