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

news2025/1/21 1:27:49

准备

  • Ubuntu 24.04 LTS
  • Ubuntu 空闲硬盘挂载
  • Ubuntu 安装 Docker Desktop

[我的Ubuntu服务器折腾集](https://blog.csdn.net/jh1513/article/details/145222679。

安装 seafile

参考资料

  • Docker安装 Seafile + OnlyOffice 并配置OnlyOffice到Seafile,实现在线编辑功能
  • 官方教程 用 Docker 部署 Seafile 服务
  • 使用docker安装seafile 解决了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 文件

这个参考博文 使用 wget 下载 docker-compose.yml 文件,我发现下载下来的名字不对,直接在 Ubuntu 图形界面通过Firefox浏览器根据官方教程提供的下载链接把 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 服务中的密码一致
  • SEAFILE_ADMIN_EMAIL=me@example.com # 设置 Seafile 管理员的电子邮件地址
  • SEAFILE_ADMIN_PASSWORD=asecret # 设置 Seafile 管理员的密码
    后续登录 seafile需要用到上面设置好的用户名 me@example.com,密码: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)
      - SEAFILE_ADMIN_EMAIL=me@example.com  # 设置 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服务搭建提供了怎么设置seafile开机启动,但是我没有尝试成功。

开机启动 docker

查看 docker 是不是开机启动

sudo systemctl is-enabled docker

开机启动 docker

sudo systemctl is-enabled docker
开机启动 container

参考

  • Docker开机自启动与容器自动重启设置指南
  • docker设置开机启动 docker设置容器开机自启

查看 container是不是在运行

docker ps -a

在这里插入图片描述
图片中可以看出,seafile 需要运行的 container 有:

  1. seafile
  2. seafile-mysql
  3. seafile-memcached
不在运行的container

对于不在运行的感觉要,要创建一个名为“my-container”的容器,并设置其为“always”重启策略,您可以使用以下命令:

docker run -d --restart=always --name my-container <image_name>
已经在运行的container

对于已经运行的容器,可以使用docker update命令来修改容器的重启策略。运行以下命令来更新容器的重启策略为“always”:

docker update --restart=always <container_id_or_name>

最开始,我重启 ubuntu 发现 container 没重启,所以进入ubuntu后我需要重启 container 再调用 docker update 命令,因为我不会处理上面不在运行的 container 情况。

启动停止的 container 命令

docker start <container_id_or_name>

可选操作

  1. 增加一个新的管理员
docker exec -it seafile /opt/seafile/seafile-server-latest/reset-admin.sh

登录 和 配置

浏览器输出 Ubuntu IP地址可以打开 seafile

按下图配置,不然文件无法上传,但可以创建文件夹。参考使用docker安装seafile 。
在这里插入图片描述

多域名访问

安装tailscale参考Ubuntu 24.04 LTS 安装 tailscale 并访问 SMB共享文件夹。我可以通过 tailscale IP 和本地Ubuntu IP 访问。但是,上图 SERICE_ROOT_URL和FILE_SERVER_ROOT只能填一个ip,所以我 Tailscale IP不能上传文件,参考怎么让seafile使用多域名访问.

期待有人能提供帮助与教程。

完美解决 seafile FILE_SERVER_ROOT 配置导致的内网外网不能同时访问和上传下载的问题,这篇博文使用了域名来实现内外访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2279590.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用户中心项目教程(二)---umi3的使用出现的错误

目录 1.情况的说明 2.遇到的问题 1&#xff09;第一个问题-关于npx的使用 2&#xff09;第二个问题--unsupport问题 3&#xff09;第三个收获--nodejs安装问题 4&#xff09;第四个收获---nvm下载问题 5&#xff09;第五个问题--尚未解决的问题 3.个人总结 1.情况的说明…

python爬虫报错日记

python爬虫报错日记 类未定义 原因&#xff1a;代码检查没有问题**&#xff0c;位置错了**&#xff0c;测试代码包含在类里…… UnicodedecodeError错误 原因&#xff1a;字符没有自动转换成utf-8格式 KeyError&#xff1a;“href” 原因&#xff1a;前面运行正常&#x…

Debian 上安装PHP

1、安装软件源拓展工具 apt -y install software-properties-common apt-transport-https lsb-release ca-certificates 2、添加 Ondřej Sur 的 PHP PPA 源&#xff0c;需要按一次回车&#xff1a; add-apt-repository ppa:ondrej/php 3、更新软件源缓存&#xff1a; apt-g…

Vue2+OpenLayers实现车辆开始、暂停、重置行驶轨迹动画(提供Gitee源码)

前言&#xff1a;根据经纬度信息绘制一个完整的行驶路线&#xff0c;车辆根据绘制好的路线从开始点位行驶到结束点位&#xff0c;可以通过开始、暂停、重置按钮控制车辆状态。 目录 一、案例截图 二、安装OpenLayers库 三、​安装Element-UI ​ 四、代码实现 4.1、初始化…

使用傅里叶变换进行图像边缘检测

使用傅里叶变换进行图像边缘检测 今天我们介绍通过傅里叶变换求得图像的边缘 什么是傅立叶变换&#xff1f; 简单来说&#xff0c;傅里叶变换是将输入的信号分解成指定样式的构造块。例如&#xff0c;首先通过叠加具有不同频率的两个或更多个正弦函数而生成信号f&#xff08;x…

基础vue3前端登陆注册界面以及主页面设计

1.下载依赖 "element-plus/icons": "^0.0.11", "element-plus/icons-vue": "^2.3.1", "fortawesome/fontawesome-svg-core": "^6.7.2", "fortawesome/free-solid-svg-icons": "^6.7.2", &quo…

中国数字安全产业年度报告(2024)

数字安全是指&#xff0c;在全球数字化背景下&#xff0c;合理控制个人、组织、国家在各种活动中面临的数字风险&#xff0c;保障数字社会可持续发展的政策法规、管理措施、技术方法等安全手段的总和。 数字安全领域可从三个方面对应新质生产力的三大内涵:一是基于大型语言模型…

从CRUD到高级功能:EF Core在.NET Core中全面应用(三)

目录 IQueryable使用 原生SQL使用 实体状态跟踪 全局查询筛选器 并发控制使用 IQueryable使用 在EFCore中IQueryable是一个接口用于表示可查询的集合&#xff0c;它继承自IEnumerable但具有一些关键的区别&#xff0c;使得它在处理数据库查询时非常有用&#xff0c;普通集…

【VRChat · 改模】Unity2019、2022的版本选择哪个如何决策,功能有何区别;

总览 1.Unity2019、2022的版本的选择 2.Unity添加着色器教程 一、Unity2019、2022的版本的选择 1.Unity2019 和 Unity2022 的区别&#xff0c;VRChat SDK 为何要区分两个版本 我是外行&#xff0c;最开始以为的是&#xff0c;2019 和 2022 的变化是基于这个模型本身的。 也…

人工智能之深度学习-[1]-了解深度学习

文章目录 深度学习1. 神经网络的基础2. 深度学习中的重要概念3. 深度学习的工作流程4. 深度学习的应用5. 深度学习的挑战6. 深度学习与传统机器学习的比较7.深度学习的特点 8. 常见的深度学习模型9.深度学习发展史[了解] 深度学习 深度学习&#xff08;Deep Learning&#xff…

彻底理解JVM类加载机制

文章目录 一、类加载器和双亲委派机制1.1、类加载器1.2、双亲委派机制1.3、自定义类加载器1.4、打破双亲委派机制 二、类的加载 图片来源&#xff1a;图灵学院   由上图可知&#xff0c;创建对象&#xff0c;执行其中的方法&#xff0c;在java层面&#xff0c;最重要的有获取…

第148场双周赛:循环数组中相邻元素的最大差值、将数组变相同的最小代价、最长特殊路径、所有安放棋子方案的曼哈顿距离

Q1、循环数组中相邻元素的最大差值 1、题目描述 给你一个 循环 数组 nums &#xff0c;请你找出相邻元素之间的 最大 绝对差值。 **注意&#xff1a;**一个循环数组中&#xff0c;第一个元素和最后一个元素是相邻的。 2、解题思路 这个问题的核心是遍历循环数组并计算相邻…

电脑换固态硬盘

参考&#xff1a; https://baijiahao.baidu.com/s?id1724377623311611247 一、根据尺寸和缺口可以分为以下几种&#xff1a; 1、M.2 NVME协议的固态 大部分笔记本是22x42MM和22x80MM nvme固态。 在京东直接搜&#xff1a; M.2 2242 M.2 2280 2、msata接口固态 3、NGFF M.…

opengrok_windows_环境搭建

软件列表 软件名下载地址用途JDKhttps://download.java.net/openjdk/jdk16/ri/openjdk-1636_windows-x64_bin.zipindex 使用java工具tomcathttps://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98-windows-x64.zipweb服务器opengrokhttps://github.com/o…

《offer 来了:Java 面试核心知识点精讲 -- 原理篇》

在 Java 面试的战场上,只知皮毛可不行,面试官们越来越看重对原理的理解。今天就给大家分享一本能让你在面试中脱颖而出的 “武林秘籍”——《offer 来了:Java 面试核心知识点精讲 -- 原理篇》。 本书详细介绍了Java架构师在BAT和移动互联网公司面试中常被问及的核心知识,内…

Linux之网络套接字

Linux之网络套接字 一.IP地址和端口号二.TCP和UDP协议2.1网络字节序 三.socket编程的常见API四.模拟实现UDP服务器和客户端五.模拟实现TCP服务器和客户端 一.IP地址和端口号 在了解了网络相关的基础知识之后我们知道了数据在计算机中传输的流程并且发现IP地址在其中占据了确定…

迈向 “全能管家” 之路:机器人距离终极蜕变还需几步?

【图片来源于网络&#xff0c;侵删】 这是2024年初Figure公司展示的人形机器人Figure 01&#xff0c;他可以通过观看人类的示范视频&#xff0c;在10小时内经过训练学会煮咖啡&#xff0c;并且这个过程是完全自主没有人为干涉的&#xff01; 【图片来源于网络&#xff0c;侵删】…

几何数据结构之四叉树与八叉树

几何数据结构之四叉树与八叉树 四叉树的定义四叉树深度的计算公式推导假设&#xff1a;计算过程&#xff1a;1. 划分空间&#xff1a;2. 节点容纳的最小距离&#xff1a;3. 解出深度&#xff1a;4. 考虑常数项&#xff1a; 总结&#xff1a; 八叉树 四叉树的定义 四叉树&#…

(一)相机标定——四大坐标系的介绍、对应转换、畸变原理以及OpenCV完整代码实战(C++版)

一、四大坐标系介绍 1&#xff0c;世界坐标系 从这个世界&#xff08;world&#xff09;的视角来看物体 世界坐标系是3D空间坐标&#xff0c;每个点的位置用 ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw​,Yw​,Zw​)表示 2&#xff0c;相机坐标系 相机本身具有一个坐标系&…

嵌入式知识点总结 C/C++ 专题提升(一)-关键字

针对于嵌入式软件杂乱的知识点总结起来&#xff0c;提供给读者学习复习对下述内容的强化。 目录 1.C语言宏中"#“和"##"的用法 1.1.(#)字符串化操作符 1.2.(##)符号连接操作符 2.关键字volatile有什么含意?并举出三个不同的例子? 2.1.并行设备的硬件寄存…