Seafile12社区版,不使用 caddy 和 seadoc 的部署记录
使用 docker 部署 seafile12社区版的时候,发现增加了 caddy 和 seadoc,自己用不到这些组件,所以在官方手册的基础上,进行了一些精简,下面记录一下部署记录。
- 根据手册,下载必要文件
mkdir /opt/seafile
cd /opt/seafile
# Seafile CE 12.0
wget -O .env https://manual.seafile.com/12.0/repo/docker/ce/env
wget https://manual.seafile.com/12.0/repo/docker/ce/seafile-server.yml
- 根据手册,修改 .env 文件,前面有 # 号的注释可以删除掉
# COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml'
# 删掉 caddy.yml,seadoc.yml
COMPOSE_FILE='seafile-server.yml'
COMPOSE_PATH_SEPARATOR=','
SEAFILE_IMAGE=seafileltd/seafile-mc:12.0-latest
SEAFILE_DB_IMAGE=mariadb:10.11
SEAFILE_MEMCACHED_IMAGE=memcached:1.6.29
# SEAFILE_CADDY_IMAGE=lucaslorentz/caddy-docker-proxy:2.9-alpine
SEAFILE_VOLUME=/opt/seafile-data
SEAFILE_MYSQL_VOLUME=/opt/seafile-mysql/db
# SEAFILE_CADDY_VOLUME=/opt/seafile-caddy
SEAFILE_MYSQL_DB_HOST=db
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=ROOT_PASSWORD
SEAFILE_MYSQL_DB_USER=seafile
SEAFILE_MYSQL_DB_PASSWORD=PASSWORD
TIME_ZONE=Etc/UTC
# 使用 AI 随机生成一个:生成一个长度不小于 32 个字符的随机字符串,别用深度思考,深度思考太慢
JWT_PRIVATE_KEY=k9#FqL2@xP5mZ$8v!7YbW3*eR6sN4%gT
# 注意:seahub_settings_py 自 12.0 版本起不再使用 SERVICE_URL。
# 这个就是以前管理员网页设置网址的项,比如自己的域名是:cloud.myname.com:8000
# 因为有 nginx 反代,上传的那个网址自动就是:cloud.myname.com:8000/seafhttp
SEAFILE_SERVER_HOSTNAME=cloud.myname.com:8000
SEAFILE_SERVER_PROTOCOL=http
INIT_SEAFILE_ADMIN_EMAIL=me@example.com
INIT_SEAFILE_ADMIN_PASSWORD=asecret
# seadoc 相关的主要了
# SEADOC_IMAGE=seafileltd/sdoc-server:1.0-latest
# SEADOC_VOLUME=/opt/seadoc-data
# seadoc 不要了
ENABLE_SEADOC=false
# NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:12.0-latest
# NOTIFICATION_SERVER_VOLUME=/opt/notification-data
- nginx 已经在 seafile 的 image 中了,修改 seafile-server.yml 文件,打开 nginx 的端口,注释掉 caddy 相关的内容
services:
db:
image: ${SEAFILE_DB_IMAGE:-mariadb:10.11}
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:-}
- MYSQL_LOG_CONSOLE=true
- MARIADB_AUTO_UPGRADE=1
volumes:
- "${SEAFILE_MYSQL_VOLUME:-/opt/seafile-mysql/db}:/var/lib/mysql"
networks:
- seafile-net
healthcheck:
test:
[
"CMD",
"/usr/local/bin/healthcheck.sh",
"--connect",
"--mariadbupgrade",
"--innodb_initialized",
]
interval: 20s
start_period: 30s
timeout: 5s
retries: 10
memcached:
image: ${SEAFILE_MEMCACHED_IMAGE:-memcached:1.6.29}
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
seafile:
image: ${SEAFILE_IMAGE:-seafileltd/seafile-mc:12.0-latest}
container_name: seafile
# ports 注释要打开,如果80默认http,443可以使用https,自行配置证书
ports:
- "80:80"
volumes:
- ${SEAFILE_VOLUME:-/opt/seafile-data}:/shared
environment:
- DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db}
- DB_PORT=${SEAFILE_MYSQL_DB_PORT:-3306}
- DB_USER=${SEAFILE_MYSQL_DB_USER:-seafile}
- DB_ROOT_PASSWD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:-}
- DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD:?Variable is not set or empty}
- SEAFILE_MYSQL_DB_CCNET_DB_NAME=${SEAFILE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db}
- SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=${SEAFILE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db}
- SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=${SEAFILE_MYSQL_DB_SEAHUB_DB_NAME:-seahub_db}
- TIME_ZONE=${TIME_ZONE:-Etc/UTC}
- INIT_SEAFILE_ADMIN_EMAIL=${INIT_SEAFILE_ADMIN_EMAIL:-me@example.com}
- INIT_SEAFILE_ADMIN_PASSWORD=${INIT_SEAFILE_ADMIN_PASSWORD:-asecret}
- SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
- SEAFILE_SERVER_PROTOCOL=${SEAFILE_SERVER_PROTOCOL:-http}
- SITE_ROOT=${SITE_ROOT:-/}
- NON_ROOT=${NON_ROOT:-false}
- JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty}
- SEAFILE_LOG_TO_STDOUT=${SEAFILE_LOG_TO_STDOUT:-false}
- ENABLE_SEADOC=${ENABLE_SEADOC:-true}
# - SEADOC_SERVER_URL=${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}/sdoc-server
#labels:
# caddy: ${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
# caddy.reverse_proxy: "{{upstreams 80}}"
depends_on:
db:
condition: service_healthy
memcached:
condition: service_started
networks:
- seafile-net
networks:
seafile-net:
name: seafile-net
执行以下命令启动 Seafile 服务,最简化版 seafile12 启动了,现在像以前一样,可以使用 ip 和 域名+端口 访问了,当然也可以在 docker 中将 8000 和 8082 映射出来,使用已有的 nginx、caddy或其他反代。
docker compose up -d
检查一下目录结构,nginx 已经再 seafile 的包里了
root@nas1:/opt/seafile# tree -L 2
.
├── seafile-data
│ ├── logs
│ ├── nginx
│ └── seafile
├── seafile-mysql
│ └── db
└── seafile-server.yml
seafile-data 目录,配置文件都在这里
root@nas1:/opt/seafile/seafile-data# tree -L 3
.
├── logs
│ └── var-log
├── nginx
│ └── conf
│ └── seafile.nginx.conf
└── seafile
├── ccnet
├── conf
│ ├── gunicorn.conf.py
│ ├── __pycache__
│ ├── seafdav.conf
│ ├── seafevents.conf
│ ├── seafile.conf
│ └── seahub_settings.py
├── logs
├── pro-data
├── seafile-data
│ ├── current_version
│ ├── httptemp
│ ├── library-template
│ ├── storage
│ └── tmpfiles
└── seahub-data
├── avatars
├── custom
└── thumbnail
官方的手册一直写的非常好,非常清楚,点赞!