通过 Docker 部署 Seafile 网盘
前言
一切都是以换主力 VPS 为开端,虽然还剩余一年左右才到期,不过还是得早做打算,临期的 VPS 服务器,就算是当作折腾用。最近一直对 Docker 很感兴趣,尽管 SS 通过 Docker 部署的效果不太满意,但丝毫不影响对 Docker 的执念。主要的 Seafile 、Wordpress 都采用 Docker 部署,效果很不错。
步骤一
先进行 Docker 的安装。
1 2 |
curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh --mirror Aliyun |
步骤二
再完成 Nginx 、Cerbot 的安装。
1 2 |
apt -y update apt -y install curl nginx python3-certbot-nginx |
步骤三
准备目录、新建 docker-compose.yml 文件。
1 2 3 |
mkdir -p /opt/seafile cd /opt/seafile nano docker-compose.yml |
步骤四
写入 docker-compose.yml 内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
version: '3.8' services: db: image: mariadb:10.11 container_name: seafile-mysql environment: - MYSQL_ROOT_PASSWORD=dbpasswd #设置数据库 root 密码 - MYSQL_LOG_CONSOLE=true volumes: - ./mariadb-data:/var/lib/mysql 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: - "127.0.0.1:8090:80" volumes: - ./seafile-data:/shared environment: - DB_HOST=db - DB_ROOT_PASSWD=dbpasswd #与 mariadb 容器的 root 密码对应 - TIME_ZONE=Asia/Shanghai - SEAFILE_ADMIN_EMAIL=abcd@example.com #管理员账号 - SEAFILE_ADMIN_PASSWORD=adminpasswd #管理员密码 - SEAFILE_SERVER_LETSENCRYPT=false - SEAFILE_SERVER_HOSTNAME=seafile.example.com #站点域名与 nginx 的 server_name 对应 depends_on: - db - memcached networks: - seafile-net networks: seafile-net: |
步骤五
启动 Docker Seafile ,注意,必须在 /opt/seafile 目录的路径下执行。
然后新建 Seafile 的 Nginx 站点配置文件。
1 2 |
docker compose up -d nano /etc/nginx/sites-available/seafile |
步骤六
写入 Nginx 配置文件内容。
1 2 3 4 5 6 7 8 9 10 11 12 |
server { listen 80; server_name seafile.example.com; #与 docker-compose 内的环境变量 SEAFILE_SERVER_HOSTNAME 相对应 client_max_body_size 0; location / { proxy_pass http://127.0.0.1:8090; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } |
步骤七
启用站点,并签发证书。
1 2 |
ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/seafile certbot --nginx |
验证是否安装成功
登录个人 Seafile 域名网址,完成个性化设置即可,注意,必须在系统设置里面把所有两处 http 改为 https 并打勾保存,否则无法上传文件。
设置 Seafile 开机自启动
1 2 3 4 5 6 |
docker version #显示 Docker 版本信息 systemctl start docker #启动 Docker 服务 systemctl enable docker #设置 Docker 开机自启动 docker ps -a #显示 Docker 内容器详细信息 docker start $(docker ps -aq) #启动 Docker 内容器 docker update --restart=always $(docker ps -aq) #自启动 Docker 内容器 |
按部就班的完成以上所有设置之后,迎来最大的坑。
仅仅是查找这个错误代码的解决教程,可是费尽周折,很多网络上的教程均不起作用,最后阴差阳错结合几个帖子的答案,得以解决,在胡乱尝试中找到正确解法。
在文件末尾加入一行代码,关键点在于被一篇教程误导,应该是单引号,教程却写着双引号,可能是常识,吾被坑惨矣!
1 2 3 |
nano /opt/seafile/seafile-data/seafile/conf/seahub_settings.py CSRF_TRUSTED_ORIGINS = ['https://域名'] #黏贴代码后保存退出 docker compose restart #重启 docker compose 服务 |
THE END