- 创建者: 虚拟的现实,上次更新时间:1月 30, 2024 需要 4 分钟阅读时间
简介
Seafile 8.0.4 版本的安装配置可以参考“Seafile 8.0.4 安装配置指南”。自9.0版本开始,不支持CentOS 系统直接安装(CentOS 的内核版本更新太落后),仅支持容器方式的部署。
本文的部署环境基于 Ubuntu20.24,安装方式参考“Ubuntu20.04 Docker 安装”。
安装配置
修改容器配置文件
版本下载URL: docker-compose.yml
根据实际环境修改该文件。尤其是以下几项配置:
MySQL root 用户的密码 (MYSQL_ROOT_PASSWORD and DB_ROOT_PASSWD)
持久化存储 MySQL 数据的 volumes 目录 (volumes)
持久化存储 Seafile 数据的 volumes 目录 (volumes)
持久化存储 Elasticsearch 索引数据的 volumes 目录 (volumes)
mkdir -p /opt/seafile/seafile-elasticsearch/data && chmod 777 -R /opt/seafile/seafile-elasticsearch/data vim docker-compose.yml
version: '2.0' services: db: image: mariadb:10.5 container_name: seafile-mysql environment: - MYSQL_ROOT_PASSWORD=password # Requested, set the root's password of MySQL service. - MYSQL_LOG_CONSOLE=true volumes: - /opt/seafile/seafile-mysql/db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store. networks: - seafile-net memcached: image: memcached:1.5.6 container_name: seafile-memcached entrypoint: memcached -m 256 networks: - seafile-net elasticsearch: image: elasticsearch:7.16.2 container_name: seafile-elasticsearch environment: - discovery.type=single-node - bootstrap.memory_lock=true - xpack.security.enabled=false - "ES_JAVA_OPTS=-Xms1g -Xmx1g" volumes: - /opt/seafile/seafile-elasticsearch/data:/usr/share/elasticsearch/data # Requested, specifies the path to Elasticsearch data persistent store. networks: - seafile-net seafile: image: seafile-pro:9.0.5ida # image: docker.seafile.top/seafileltd/seafile-pro-mc:latest container_name: seafile ports: - "80:80" # - "443:443" # If https is enabled, cancel the comment. volumes: - /opt/seafile/seafile-data:/shared # Requested, specifies the path to Seafile data persistent store. environment: - DB_HOST=db - DB_ROOT_PASSWD=password # 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=13502886986@139.com # Specifies Seafile admin user, default is 'me@example.com' - SEAFILE_ADMIN_PASSWORD=password # Specifies Seafile admin password, default is 'asecret' - SEAFILE_SERVER_LETSENCRYPT=false # Whether to use https or not - SEAFILE_SERVER_HOSTNAME=yunpan.myj.com # Specifies your host name if https is enabled depends_on: - db - memcached - elasticsearch networks: - seafile-net networks: seafile-net:
启动 Seafile 服务
执行以下命令启动 Seafile 服务
docker-compose up -d
容器启动始化操作完成后,在浏览器上访问http://yunpan.myj.com打开 Seafile 主页。
更多配置项
使用 Let's encrypt SSL 证书
如果把 SEAFILE_SERVER_LETSENCRYPT 设置为 true,该容器将会自动申请一个 letsencrypt 机构颁发的 SSL 证书,并开启 https 访问:
seafile: ... ports: - "80:80" - "443:443" ... environment: ... - SEAFILE_SERVER_LETSENCRYPT=true - SEAFILE_SERVER_HOSTNAME=seafile.example.com ...
使用SSL 证书用来持久化存储 Seafile 数据的目录为 /opt/seafile/seafile-data,创建 /opt/seafile/seafile-data/ssl 目录,然后拷贝证书文件和密钥文件到ssl目录下。
按照如下示例修改 Nginx 的配置文件/opt/seafile-data/nginx/conf/seafile.nginx.conf。不要更改该配置文件的文件名。
server { listen 80; server_name example.seafile.com default_server; location / { rewrite ^ https://$host$request_uri? permanent; } } server { listen 443; ssl on; ssl_certificate /shared/ssl/your-ssl-crt.crt; ssl_certificate_key /shared/ssl/your-ssl-key.key; ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS; server_name example.seafile.com; ...
重新加载 Nginx 的配置文件。
docker exec -it seafile /usr/sbin/nginx -s reload
查找日志
Seafile 容器中 Seafile 服务本身的日志文件存放在 /shared/logs/seafile 目录下,可以在宿主机上 Seafile 容器的卷目录中找到这些日志,例如:/opt/seafile/seafile-data/logs/seafile
同样 Seafile 容器的系统日志存放在 /shared/logs/var-log 目录下,或者宿主机目录 /opt/seafile/seafile-data/logs/var-log。
增加新的管理员
确保各容器正常运行,然后执行以下命令:
docker exec -it seafile /opt/seafile/seafile-server-latest/reset-admin.sh
根据提示输入用户名和密码,您现在有了一个新的管理帐户。
Seafile 目录结构
/shared 共享卷的挂载点。
/shared/seafile: Seafile 服务的配置文件,日志文件以及数据文件
/shared/seafile/logs: Seafile 服务运行产生的日志文件目录。可以在 /shared/seafile/logs/seafile.log 文件中看到 seaf-server 的日志
/shared/seafile/seafile-data: 如果没有配置S3或者OSS等对象存储,那么用户上传的数据将会存放到该目录下。
/shared/logs: 日志目录
/shared/logs/var-log: 我们将容器内的/var/log链接到本目录。您可以在/shared/logs/var-log/nginx/中找到 nginx 的日志文件
/shared/ssl: 存放证书的目录,默认不存在
备份和恢复
seafile 数据卷路径是 /opt/seafile/seafile-data,备份数据存放到 /opt/seafile/seafile-backup 目录下。先创建一个类似以下 /opt/seafile/seafile-backup 的目录结构:
- /opt/seafile/seafile-backup
- ---- databases/ 用来存放 MySQL 容器的备份数据
- ---- data/ 用来存放 Seafile 容器的备份数据
要备份的数据文件:
- /opt/seafile-data/seafile/conf # configuration files
- /opt/seafile-data/seafile/seafile-data # data of seafile
- /opt/seafile-data/seafile/seahub-data # data of seahub
备份数据
1、备份 MySQL 数据库数据;
2、备份 Seafile 数据目录;
备份数据库
# 建议每次将数据库备份到一个单独的文件中。至少在一周内不要覆盖旧的数据库备份。
cd /opt/seafile/seafile-backup/databases docker exec -it seafile-mysql mysqldump -uroot -p** --opt ccnet_db > ccnet_db.sql docker exec -it seafile-mysql mysqldump -uroot -p** --opt seafile_db > seafile_db.sql docker exec -it seafile-mysql mysqldump -uroot -p** --opt seahub_db > seahub_db.sql
备份 Seafile 资料库数据
直接复制整个数据目录
cp -R /opt/seafile/seafile-data/seafile /opt/seafile-backup/data/ cd /opt/seafile/seafile-backup/data && rm -rf ccnet
使用 rsync 执行增量备份
rsync -az /opt/seafiel/seafile-data/seafile /opt/seafile-backup/data/ cd /opt/seafile/seafile-backup/data && rm -rf ccnet
恢复数据
恢复数据库
docker cp /opt/seafile/seafile-backup/databases/ccnet_db.sql seafile-mysql:/tmp/ccnet_db.sql docker cp /opt/seafile/seafile-backup/databases/seafile_db.sql seafile-mysql:/tmp/seafile_db.sql docker cp /opt/seafile/seafile-backup/databases/seahub_db.sql seafile-mysql:/tmp/seahub_db.sql docker exec -it seafile-mysql /bin/sh -c "mysql -uroot -p** ccnet_db < /tmp/ccnet_db.sql" docker exec -it seafile-mysql /bin/sh -c "mysql -uroot -p** seafile_db < /tmp/seafile_db.sql" docker exec -it seafile-mysql /bin/sh -c "mysql -uroot -p** seahub_db < /tmp/seahub_db.sql"
恢复 seafile 数据
cp -R /opt/seafile-backup/data/* /opt/seafile-data/seafile/
问题排查
运行 docker exec 之类的docker命令来查找错误
docker exec -it seafile /bin/bash
修改已有容器内容
docker cp /tmp/seafile-controller seafile:/tmp/ docker cp /tmp/seaf-server seafile:/tmp/ docker exec -it seafile /bin/bash docker images docker ps sudo docker commit -m "seafile-pro-9.0.5 ida" -a "zyfeng" 5d1d283f12d3 seafile-pro:9.0.5ida docker images sudo docker save -o seafile-pro-ida9.0.5.tar seafile-pro:9.0.5ida
- 无标签
0 评论