Ubuntu 24.04 LTS 通过 docker desktop 安装 seafile 搭建个人网盘

准备

我的Ubuntu服务器折腾集\](https://blog.csdn.net/jh1513/article/details/145222679。 ### 安装 seafile 参考资料 * [Docker安装 Seafile + OnlyOffice 并配置OnlyOffice到Seafile,实现在线编辑功能](https://www.cnblogs.com/Magiclala/p/18296867) * 官方教程 [用 Docker 部署 Seafile 服务](https://cloud.seafile.com/published/seafile-manual-cn/docker/%E7%94%A8Docker%E9%83%A8%E7%BD%B2Seafile.md) * [使用docker安装seafile](https://blog.csdn.net/make_progress/article/details/138750824) 解决了seafile安装好后不能上传文件的问题 #### 在外置硬盘上准备seafile文件夹 外置硬盘被挂在到 /media/mydisk了,在上面穿件文件夹 seafile,在 seafile 文件夹下创建 seafile-data 和 seafile-mysql 文件夹 cd /media/mydisk mkdir seafile cd seafile mkdir seafile-data # 我配置的Seafile数据持久化目录是 /data/seafile-data mkdir seafile-mysql # 我配置的MySQL数据持久化目录是 /data/seafile-mysql/db #### 下载 docker-compose.yml 文件 [这个参考博文](https://www.cnblogs.com/Magiclala/p/18296867) 使用 wget 下载 docker-compose.yml 文件,我发现下载下来的名字不对,直接在 Ubuntu 图形界面通过Firefox浏览器[根据官方教程](https://cloud.seafile.com/published/seafile-manual-cn/docker/%E7%94%A8Docker%E9%83%A8%E7%BD%B2Seafile.md)提供的[下载链接](https://cloud.seafile.com/d/f4e8883db63845d29350/)把 11.0 版本的 docker-compose.yml 文件下载到本地。然后把这个文件拷贝进前面创建的文件夹 seafile-data 中。 ##### docker-compose.yml 文件解析 需要修改的地方: * /opt/seafile-mysql/db:/var/lib/mysql # 指定宿主机路径 /opt/seafile-mysql/db 持久化 MySQL 数据 * /opt/seafile-data:/shared # 指定宿主机路径 /opt/seafile-data 用于存储 Seafile 数据 * 端口映射 "80:80" # 将宿主机的 80 端口映射到容器的 80 端口(HTTP) * DB_ROOT_PASSWD=db_dev # 设置数据库 root 用户的密码,必须与 db 服务中的密码一致 * [email protected] # 设置 Seafile 管理员的电子邮件地址 * SEAFILE_ADMIN_PASSWORD=asecret # 设置 Seafile 管理员的密码 后续登录 seafile需要用到上面设置好的用户名 `[email protected]`,密码:`asecret `。 services: # 定义服务(容器)部分 db: # 数据库服务 image: mariadb:10.11 # 使用 MariaDB 10.11 版本的镜像 container_name: seafile-mysql # 容器名称为 seafile-mysql environment: # 设置环境变量 - MYSQL_ROOT_PASSWORD=db_dev # 设置 MySQL root 用户的密码,默认为 db_dev - MYSQL_LOG_CONSOLE=true # 启用控制台日志输出 - MARIADB_AUTO_UPGRADE=1 # 启用 MariaDB 自动升级功能 volumes: # 挂载数据卷,用于持久化存储 - /opt/seafile-mysql/db:/var/lib/mysql # 指定宿主机路径 /opt/seafile-mysql/db 持久化 MySQL 数据 networks: # 定义服务所连接的网络 - seafile-net # 连接到 seafile-net 网络 memcached: # 缓存服务 image: memcached:1.6.18 # 使用 Memcached 1.6.18 版本的镜像 container_name: seafile-memcached # 容器名称为 seafile-memcached entrypoint: memcached -m 256 # 设置 Memcached 启动时的命令,指定内存大小为 256MB networks: # 定义服务所连接的网络 - seafile-net # 连接到 seafile-net 网络 seafile: # Seafile 主服务 image: seafileltd/seafile-mc:11.0-latest # 使用 Seafile 官方提供的最新版本镜像 container_name: seafile # 容器名称为 seafile ports: # 映射端口 - "80:80" # 将宿主机的 80 端口映射到容器的 80 端口(HTTP) # - "443:443" # 如果启用了 HTTPS,可以取消注释该行来映射 443 端口 volumes: # 挂载数据卷,用于持久化存储 - /opt/seafile-data:/shared # 指定宿主机路径 /opt/seafile-data 用于存储 Seafile 数据 environment: # 设置环境变量 - DB_HOST=db # 指定 MySQL 数据库主机为 db(即上面的 db 服务) - DB_ROOT_PASSWD=db_dev # 设置数据库 root 用户的密码,必须与 db 服务中的密码一致 - TIME_ZONE=Asia/Shanghai # 设置时区为上海时区(可选,默认为 UTC) - [email protected] # 设置 Seafile 管理员的电子邮件地址 - SEAFILE_ADMIN_PASSWORD=asecret # 设置 Seafile 管理员的密码 - SEAFILE_SERVER_LETSENCRYPT=false # 是否使用 Let's Encrypt 来生成证书(false 表示不使用) - SEAFILE_SERVER_HOSTNAME=seafile.example.com # 设置 Seafile 服务器的主机名 depends_on: # 依赖的服务 - db # 依赖数据库服务 db - memcached # 依赖缓存服务 memcached networks: # 定义服务所连接的网络 - seafile-net # 连接到 seafile-net 网络 networks: # 网络定义部分 seafile-net: # 定义名为 seafile-net 的网络 #### 在 Docker Desktop 中配置共享路径 在 Docker Desktop 中,特别是运行在 Ubuntu 上时,你需要配置共享文件夹路径,使得 Docker 能够访问宿主机上的某些路径。 * 打开 docker desktop * 点击右上角设置 * 左侧列表找到 resources -\> file sharing * 右侧出现内容底部有 "virtual file shares",其中有 browse 添加我外置硬盘上seafile路径 /media/mydisk/seafile 如果没有这么设置,在运行安装代码 `docker compose up -d`时会报错。 Error response from daemon: Mounts denied: The path /media/mydisk/seafile/seafile-mysql/db is not shared from the host and is not known to Docker. You can configure shared paths from Docker -\> Preferences... -\> Resources -\> File Sharing. See https://docs.docker.com/ for more info. #### 安装 在 docker-compose.yml 文件所在文件夹下运行`docker compose up -d`,等带进度条完成即可。 cd seafile-data docker compose up -d #### 开机启动 [基于Docker 部署 Seafile服务搭建](https://blog.csdn.net/weixin_34910922/article/details/128795220)提供了怎么设置seafile开机启动,但是我没有尝试成功。 ##### 开机启动 docker 查看 docker 是不是开机启动 sudo systemctl is-enabled docker 开机启动 docker sudo systemctl is-enabled docker ##### 开机启动 container 参考 * [Docker开机自启动与容器自动重启设置指南](https://cloud.baidu.com/article/2908088) * [docker设置开机启动 docker设置容器开机自启](https://www.cnblogs.com/hengdin/articles/17838930.html) 查看 container是不是在运行 docker ps -a ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/016bff758b974e8e8370a68b9c7ad6a9.png) 图片中可以看出,seafile 需要运行的 container 有: 1. seafile 2. seafile-mysql 3. seafile-memcached ###### 不在运行的container 对于不在运行的感觉要,要创建一个名为"my-container"的容器,并设置其为"always"重启策略,您可以使用以下命令: docker run -d --restart=always --name my-container ###### 已经在运行的container 对于已经运行的容器,可以使用docker update命令来修改容器的重启策略。运行以下命令来更新容器的重启策略为"always": docker update --restart=always 最开始,我重启 ubuntu 发现 container 没重启,所以进入ubuntu后我需要重启 container 再调用 docker update 命令,因为我不会处理上面不在运行的 container 情况。 启动停止的 container 命令 docker start #### 可选操作 1. 增加一个新的管理员 docker exec -it seafile /opt/seafile/seafile-server-latest/reset-admin.sh #### 登录 和 配置 浏览器输出 Ubuntu IP地址可以打开 seafile 按下图配置,不然文件无法上传,但可以创建文件夹。参考[使用docker安装seafile](https://blog.csdn.net/make_progress/article/details/138750824) 。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2a4563b634f04ceeb43b35c4e6aeb409.png) ### 多域名访问 安装tailscale参考[Ubuntu 24.04 LTS 安装 tailscale 并访问 SMB共享文件夹](https://blog.csdn.net/jh1513/article/details/145241299)。我可以通过 tailscale IP 和本地Ubuntu IP 访问。但是,上图 SERICE_ROOT_URL和FILE_SERVER_ROOT只能填一个ip,所以我 Tailscale IP不能上传文件,参考[怎么让seafile使用多域名访问](https://bbs.seafile.com/t/seafile/2421). 期待有人能提供帮助与教程。 [完美解决 seafile FILE_SERVER_ROOT 配置导致的内网外网不能同时访问和上传下载的问题](https://hellodk.cn/post/1188),这篇博文使用了域名来实现内外访问。 我的解决办法:[没有公网IP实现seafile本地IP访问和虚拟局域网IP同时访问和上传文件](https://blog.csdn.net/jh1513/article/details/145276479?sharetype=blogdetail&sharerId=145276479&sharerefer=PC&sharesource=jh1513&spm=1011.2480.3001.8118)

相关推荐
漫谈网络5 分钟前
Systemd构建自动化备份服务与外部存储管理
linux·运维·自动化·systemd
千航@abc15 分钟前
grep命令: 过滤
linux·运维·grep·过滤
yyywxk26 分钟前
Linux / Windows 下 Mamba / Vim / Vmamba 安装教程及安装包索引
linux·windows·vim
jay丿44 分钟前
Linux动态监控进程利器:top命令详解
linux·运维·服务器
gsls2008081 小时前
使用dockerbuildx在x86机器上构建arm版docker镜像
arm开发·docker·容器
JhonKI2 小时前
【Linux】日志模块实现详解
linux·运维·服务器
終不似少年遊*3 小时前
操作系统、虚拟化技术与云原生及云原生AI简述
docker·ai·云原生·容器·华为云·云计算·k8s
学也不会3 小时前
Ubuntu-安装redis
linux·运维·ubuntu
共享家95274 小时前
Linux常用命令详解:从基础到进阶
linux·服务器·数据库
小徐Chao努力5 小时前
【centos】经常使用的脚本
linux·运维·centos