网站策划书范文模板,网页传奇哪个比较好玩,七米网站建设,天元建设集团有限公司单位性质背景
有很多场景会用到类似seafile功能的需求#xff0c;比如#xff1a;
在内网中传输和共享文件个人部署私人网盘文档协同在线编辑写笔记… 这些功能seafile均有实现#xff0c;并且社区版提供的功能基本可以满足个人或者小型团队的日常需求
问题
由于主机的80和443端…背景
有很多场景会用到类似seafile功能的需求比如
在内网中传输和共享文件个人部署私人网盘文档协同在线编辑写笔记… 这些功能seafile均有实现并且社区版提供的功能基本可以满足个人或者小型团队的日常需求
问题
由于主机的80和443端口属于常用端口且比较敏感如果是公司内网环境下基于安全考虑大多时候是禁止开放这两个端口的但seafile提供的docker部署方式中默认使用的端口恰好是80和443以提供http和https访问。因此本文要解决的主要问题就是修改seafile的默认服务端口以避免端口占用和端口冲突问题。
官方安装文档https://cloud.seafile.com/wiki/publish/seafile-manual/hk5G/
环境
操作系统CentOS 7seafile12.0
docker和docker-compose的安装过程不再赘述没安装的可以参考官方安装文档
1.下载seafile镜像
(注如果是在线环境即可以联网的情况下此步骤可以跳过。) 在联网环境中拉取seafile的docker镜像
docker pull seafileltd/seafile-mc:12.0-latest
docker pull mariadb:10.11
docker pull memcached:1.6.29
docker pull lucaslorentz/caddy-docker-proxy:2.9-alpine
docker pull seafileltd/sdoc-server:1.0-latest
docker pull seafileltd/notification-server:12.0-latest
docker pull docker.seafile.top/seafileltd/onlyoffice-documentserver:8.1每个镜像的作用
seafile-mc seafile服务端mariadb 数据存储memcached 数据缓存caddy 反向代理sdoc-server 轻量级在线协同文档服务主要用于渲染和编辑markdown文档notification-server 通知服务提供文档状态的实时更新onlyoffice-document office文档在线预览和协同编辑
2.打包镜像
docker save -o seafile-mc.tar seafileltd/seafile-mc:12.0-latest
docker save -o mariadb.tar mariadb:10.11
docker save -o memcached.tar memcached:1.6.29
docker save -o caddy-proxy.tar lucaslorentz/caddy-docker-proxy:2.9-alpine
docker save -o seadoc-server.tar seafileltd/sdoc-server:1.0-latest
docker save -o notification-server.tar seafileltd/notification-server:12.0-latest
docker save -o onlyoffice-document.tar docker.seafile.top/seafileltd/onlyoffice-documentserver:8.1 3.配置文件
1下载配置文件
在终端执行如下命令
# 配置文件存储目录
mkdir /opt/seafile
cd /opt/seafile# Seafile CE 12.0的docker-compose配置文件
wget -O .env https://manual.seafile.com/12.0/repo/docker/ce/env
wget https://manual.seafile.com/12.0/repo/docker/seadoc.yml
wget https://manual.seafile.com/12.0/repo/docker/ce/seafile-server.yml
wget https://manual.seafile.com/12.0/repo/docker/caddy.yml2编辑配置文件
.env文件说明
# .env文件内容# 这里配置执行docker-compose up -d命令时生效的yml
COMPOSE_FILEseafile-server.yml,caddy.yml,seadoc.yml
COMPOSE_PATH_SEPARATOR,SEAFILE_IMAGEseafileltd/seafile-mc:12.0-latest
SEAFILE_DB_IMAGEmariadb:10.11
SEAFILE_MEMCACHED_IMAGEmemcached:1.6.29
SEAFILE_CADDY_IMAGElucaslorentz/caddy-docker-proxy:2.9-alpine
# seafile服务的挂载目录
SEAFILE_VOLUME/opt/seafile-data
# mariadb数据存储服务的挂载目录
SEAFILE_MYSQL_VOLUME/opt/seafile-mysql/db
# caddy反向代理的挂载目录
SEAFILE_CADDY_VOLUME/opt/seafile-caddySEAFILE_MYSQL_DB_HOSTdb
# mariadb数据库的root初始密码建议修改
INIT_SEAFILE_MYSQL_ROOT_PASSWORDROOT_PASSWORD
SEAFILE_MYSQL_DB_USERseafile
# mariadb数据库seafile用户的登录密码建议修改
SEAFILE_MYSQL_DB_PASSWORDPASSWORDTIME_ZONEEtc/UTC
# jwt秘钥建议修改为32位-40位的复杂随机字符串
JWT_PRIVATE_KEYAbCdEfGhIjKlMnOpQrStUvWxYz1234567890
# seafile服务的主机名
SEAFILE_SERVER_HOSTNAMEseafile.example.com
# 访问seafile使用的协议我没有配置https此处不再赘述
SEAFILE_SERVER_PROTOCOLhttp
# seafile的管理员账号修改为你容易记住的
INIT_SEAFILE_ADMIN_EMAILmeexample.com
# seafile的管理员密码建议修改
INIT_SEAFILE_ADMIN_PASSWORDasecret# 是否启用seadoc服务如果不需要可以设置为false
ENABLE_SEADOCtrue
SEADOC_IMAGEseafileltd/sdoc-server:1.0-latest
# 轻量级文档在线协同服务的挂载目录
SEADOC_VOLUME/opt/seadoc-dataNOTIFICATION_SERVER_IMAGEseafileltd/notification-server:12.0-latest
# 通知服务的挂载目录
NOTIFICATION_SERVER_VOLUME/opt/notification-data关键配置都已经添加了注释按照注释修改即可。
我这里将docker容器的挂载目录设置为/root/docker-volumn/seafile请根据你的需求自行调整。调整后的.env配置文件如下
COMPOSE_FILEseafile-server.yml,caddy.yml,seadoc.yml
COMPOSE_PATH_SEPARATOR,SEAFILE_IMAGEseafileltd/seafile-mc:12.0-latest
SEAFILE_DB_IMAGEmariadb:10.11
SEAFILE_MEMCACHED_IMAGEmemcached:1.6.29
SEAFILE_CADDY_IMAGElucaslorentz/caddy-docker-proxy:2.9-alpineSEAFILE_VOLUME/root/docker-volumn/seafile/seafile-data
SEAFILE_MYSQL_VOLUME/root/docker-volumn/seafile/seafile-mysql/db
SEAFILE_CADDY_VOLUME/root/docker-volumn/seafile/seafile-caddySEAFILE_MYSQL_DB_HOSTdb
INIT_SEAFILE_MYSQL_ROOT_PASSWORDyour_mysql_root_passwd
SEAFILE_MYSQL_DB_USERseafile
SEAFILE_MYSQL_DB_PASSWORDyour_mysql_seafile_passwdTIME_ZONEEtc/UTCJWT_PRIVATE_KEYAbCdEfGhIjKlMnOpQrStUvWxYz1234567890
# 关键配置注意这里hostname设置为192.168.44.46:8080看后面说明
SEAFILE_SERVER_HOSTNAME192.168.44.46:8080
SEAFILE_SERVER_PROTOCOLhttpINIT_SEAFILE_ADMIN_EMAILadminexample.com
INIT_SEAFILE_ADMIN_PASSWORDyour_admin_passwordSEADOC_IMAGEseafileltd/sdoc-server:1.0-latest
SEADOC_VOLUME/root/docker-volumn/seafile/seadoc-dataENABLE_SEADOCtrueNOTIFICATION_SERVER_IMAGEseafileltd/notification-server:12.0-latest
NOTIFICATION_SERVER_VOLUME/root/docker-volumn/seafile/notification-data由于服务器的80和443端口已经被占用并且没有https需求因此我需要将seafile的默认服务端口80调整到8080端口因此需要在.env配置文件中修改SEAFILE_SERVER_HOSTNAME参数为192.168.44.46:8080其中192.168.44.46为本机ip。
但是只修改这一个地方还不行还需要修改caddy.yml文件将其中的端口映射全部注释然后添加8080到8080的端口映射。
# 编辑caddy.yml
services:caddy:image: ${SEAFILE_CADDY_IMAGE:-lucaslorentz/caddy-docker-proxy:2.9-alpine}restart: unless-stoppedcontainer_name: seafile-caddyports:- 8080:8080# - 80:80# - 8443:443environment:- CADDY_INGRESS_NETWORKSseafile-netvolumes:- /var/run/docker.sock:/var/run/docker.sock- ${SEAFILE_CADDY_VOLUME:-/opt/seafile-caddy}:/data/caddynetworks:- seafile-nethealthcheck:test: [CMD-SHELL, curl --fail http://localhost:2019/metrics || exit 1]start_period: 20sinterval: 20stimeout: 5sretries: 3networks:seafile-net:name: seafile-net4.安装seafile
1上传配置文件和docker镜像到服务器
将上述配置文件.env、caddy.yml、seafile-server.yml、seadoc.yml和打包好的docker镜像上传到要部署seafile的服务器
2加载镜像
在docker镜像所在目录下执行如下命令
docker load -i seafile-mc.tar
docker load -i mariadb.tar
docker load -i memcached.tar
docker load -i caddy-proxy.tar
docker load -i seadoc-server.tar
docker load -i notification-server.tar
docker load -i onlyoffice-document.tar3安装seafile
在配置文件所在目录下执行如下命令
docker-compose up -d然后执行docker ps -a或者docker-compose ps查看容器状态为up状态并且没有exited则表示启动成功。 然后在浏览器访问http://192.168.44.46:8080并使用.env中配置的seafile管理员账号和密码登录即可。 至此seafile基础服务安装完成
如果不需要office文档在线编辑和协同编辑服务的话到这里就算已经完成了如果需要部署onlyoffice服务请接着往下看。
5.安装配置onlyoffice服务
(1下载配置文件
wget https://manual.seafile.com/12.0/repo/docker/onlyoffice.yml2编辑配置文件
在.env配置文件中添加如下配置
# 在COMPOSE_FILE参数后面添加onlyoffice.yml
COMPOSE_FILEseafile-server.yml,caddy.yml,seadoc.yml,onlyoffice.yml
# 在文件末尾添加如下配置
# onlyoffice服务挂载目录
ONLYOFFICE_VOLUME/root/docker-volumn/seafile/seafile-onlyoffice
# onlyoffice服务端口
ONLYOFFICE_PORT6233
# jwt秘钥和上面的JWT_PRIVATE_KEY复杂度要求相同
ONLYOFFICE_JWT_SECRETAbCdEfGhIjKlMnOpQrStUvWxYz1234567890
# onlyoffice的主机名这个是后加的参数
ONLYOFFICE_SERVER_HOSTNAME192.168.44.46注我的onlyoffice和seafile部署在同一台服务器上因此ONLYOFFICE_SERVER_HOSTNAME和SEAFILE_SERVER_HOSTNAME使用相同的IP但不同的是ONLYOFFICE_SERVER_HOSTNAME后面没有端口号因为我们修改了seafile的默认端口因此不能再通过SEAFILE_SERVER_HOSTNAME来引用参数了。ONLYOFFICE_SERVER_HOSTNAME这个参数在onlyoffice.yml文件中被引用。
3修改onlyoffice.yml
---
services:caddy:ports:- ${ONLYOFFICE_PORT:-6233}:${ONLYOFFICE_PORT:-6233}onlyoffice:image: onlyoffice/documentserver:8.0restart: unless-stoppedcontainer_name: seafile-onlyofficeenvironment:#- DB_TYPE${DB_TYPE:-mariadb}#- DB_HOST${SEAFILE_MYSQL_DB_HOST:-db}#- DB_USER${SEAFILE_MYSQL_DB_USER:-seafile}#- DB_PWD${SEAFILE_MYSQL_DB_PASSWORD:?Variable is not set or empty}- JWT_ENABLEDtrue- JWT_SECRET${ONLYOFFICE_JWT_SECRET:?Variable is not set or empty}volumes:- ${ONLYOFFICE_VOLUME:-/opt/onlyoffice}/logs:/var/log/onlyoffice- ${ONLYOFFICE_VOLUME:-/opt/onlyoffice}/data:/var/www/onlyoffice/Data- ${ONLYOFFICE_VOLUME:-/opt/onlyoffice}/lib:/var/lib/onlyofficelabels:# 修改前# caddy: ${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}:${ONLYOFFICE_PORT:-6233}# 修改后caddy: ${SEAFILE_SERVER_PROTOCOL:-http}://${ONLYOFFICE_SERVER_HOSTNAME:?Variable is not set or empty}:${ONLYOFFICE_PORT:-6233}caddy.reverse_proxy: {{upstreams}}networks:- seafile-netnetworks:seafile-net:name: seafile-net从上述配置文件中的修改前后可以看到这里只是将SEAFILE_SERVER_HOSTNAME引用修改为ONLYOFFICE_SERVER_HOSTNAME了因为如果按照原来的引用的话那么在caddy中的onlyoffice代理配置将会转发到192.168.44.46:8080:6233所以就会报错。
6上传配置文件和docker镜像
此处参考第4章不再赘述。
7重新安装部署seafileonlyoffice
在配置文件所在目录执行
# 停止并删除原来的容器此操作不会删除挂载数据
docker-compose down等待执行完成后重新执行
docker-compose up -d如果不出意外应该可以正常使用seafile和onlyoffice的在线编辑功能了。至此大功告成。
如果有报错建议先排查如果实在排查不到问题所在可以删除挂载目录下的文件然后重新执行docker-compose up -d进行部署。