以下是 Docker 安装 Seafile 的详细步骤,涵盖基础安装和常用配置:
一、准备工作
-
安装 Docker 和 Docker Compose
- 确保系统已安装 Docker 和 Docker Compose。
-
创建工作目录
mkdir ~/seafile && cd ~/seafile
二、使用官方简化镜像
Seafile 提供了预编译的简化版 Docker 镜像,适合快速测试和小规模使用。
1. 拉取镜像
docker pull seafile/seafile:latest
2. 运行容器(基础版)
# 运行 Seafile 核心服务(SQLite 数据库存储)
docker run -d \--name seafile \-p 8000:8000 \-v ~/seafile/data:/data \seafile/seafile:latest
-p 8000:8000
:将容器的 8000 端口映射到主机。-v ~/seafile/data:/data
:挂载数据卷,持久化存储文件和数据库。
3. 访问 Web 界面
- 浏览器访问
http://localhost:8000
,首次访问会引导创建管理员账号。
三、生产环境推荐方案(Nginx + PostgreSQL)
1. 拉取组件镜像
# Seafile 核心服务
docker pull seafile/seafile:latest# Nginx 反向代理
docker pull nginx:alpine# PostgreSQL 数据库
docker pull postgres:14
2. 创建配置文件
mkdir -p ~/seafile/conf/nginx && mkdir -p ~/seafile/conf/postgresql# PostgreSQL 初始化脚本(创建数据库和用户)
cat <<EOF > ~/seafile/conf/postgresql/init.sql
CREATE DATABASE seafile;
CREATE USER seafile WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE seafile TO seafile;
EOF# Nginx 配置文件(seafile.conf)
cat <<EOF > ~/seafile/conf/nginx/seafile.conf
server {listen 80;server_name your_domain.com;location / {proxy_pass http://seafile:8000;proxy_set_header Host \$host;proxy_set_header X-Real-IP \$remote_addr;}
}
EOF
3. 运行容器
# 启动 PostgreSQL 数据库
docker run -d \--name postgres \-p 5432:5432 \-v ~/seafile/conf/postgresql:/docker-entrypoint-initdb.d \-e POSTGRES_PASSWORD=your_password \postgres:14# 启动 Seafile 核心服务(连接 PostgreSQL)
docker run -d \--name seafile \-p 8000:8000 \-v ~/seafile/data:/data \-e DB_HOST=postgres \-e DB_PORT=5432 \-e DB_USER=seafile \-e DB_PASSWORD=your_password \seafile/seafile:latest# 启动 Nginx 反向代理
docker run -d \--name nginx \-p 80:80 \-v ~/seafile/conf/nginx:/etc/nginx/conf.d \nginx:alpine
四、配置 HTTPS(推荐)
1. 获取 SSL 证书
使用 Let’s Encrypt 免费证书:
# 安装 certbot 和 nginx-certbot
sudo apt-get install certbot python3-certbot-nginx# 生成证书
sudo certbot certonly --non-interactive --agree-tos --email your_email@example.com \--domain your_domain.com --nginx
2. 更新 Nginx 配置
将生成的证书路径添加到 Nginx 配置中:
server {listen 443 ssl;server_name your_domain.com;ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;location / {proxy_pass http://seafile:8000;...}
}
五、数据备份与恢复
1. 备份数据卷
# 备份 Seafile 数据
docker exec seafile tar czvf /data/backup_$(date +%F).tar.gz /data/# 备份 PostgreSQL 数据
docker exec postgres pg_dumpall -U seafile -f /data/postgres_backup.sql
2. 恢复数据
# 恢复 Seafile 数据
docker exec seafile tar xzvf /path/to/backup_*.tar.gz -C /data/# 恢复 PostgreSQL 数据
docker exec postgres psql -U seafile -d seafile < /path/to/postgres_backup.sql
六、常见问题
1. 无法访问 Web 界面
2. 数据库连接失败
3. 文件同步异常
- 确保客户端和服务器时间一致。
- 检查防火墙规则,开放
8000
和443
端口。
七、高级配置(可选)
- 分布式存储:添加多个存储节点,提升吞吐量。
- LDAP 集成:使用企业级用户目录(如 Active Directory)。
- 监控报警:集成 Prometheus + Grafana 监控 Seafile 性能。
通过以上步骤,您可以在 Docker 中快速部署 Seafile 并配置为生产环境。如果遇到问题,建议参考 Seafile 官方文档 获取更多支持。