当前位置: 首页 > news >正文

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

准备

  • 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-mysqlenvironment:  # 设置环境变量- 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-memcachedentrypoint: memcached -m 256      # 设置 Memcached 启动时的命令,指定内存大小为 256MBnetworks:  # 定义服务所连接的网络- seafile-net                    # 连接到 seafile-net 网络seafile:  # Seafile 主服务image: seafileltd/seafile-mc:11.0-latest  # 使用 Seafile 官方提供的最新版本镜像container_name: seafile             # 容器名称为 seafileports:  # 映射端口- "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                           # 依赖缓存服务 memcachednetworks:  # 定义服务所连接的网络- 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 配置导致的内网外网不能同时访问和上传下载的问题,这篇博文使用了域名来实现内外访问。

我的解决办法:没有公网IP实现seafile本地IP访问和虚拟局域网IP同时访问和上传文件

相关文章:

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

准备 Ubuntu 24.04 LTSUbuntu 空闲硬盘挂载Ubuntu 安装 Docker Desktop [我的Ubuntu服务器折腾集](https://blog.csdn.net/jh1513/article/details/145222679。 安装 seafile 参考资料 Docker安装 Seafile OnlyOffice 并配置OnlyOffice到Seafile&#xff0c;实现在线编辑…...

Open3D 最小二乘拟合平面(直接求解法)【2025最新版】

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 博客长期更新,本文最近更新时间为:2025年1月18日。 一、算法原理 平面方程的一般表达式为:...

【CC2640R2F】香瓜CC2640R2F之SPI读写W25Q80

本文最后修改时间&#xff1a;2022年01月08日 10:45 一、本节简介 本节以simple_peripheral工程为例&#xff0c;介绍如何使用SPI读写W25Q80&#xff08;外部flash&#xff09;。 二、实验平台 1&#xff09;CC2640R2F平台 ①协议栈版本&#xff1a;CC2640R2 SDK v1.40.00.4…...

探秘Shortest与Stagehand:开启高效测试与自动化新篇

探秘Shortest与Stagehand&#xff1a;开启高效测试与自动化新篇 在数字化浪潮的推动下&#xff0c;网页自动化工具如同繁星般涌现&#xff0c;为众多行业带来了效率的变革。在这些工具中&#xff0c;Shortest和Stagehand凭借其出色的表现&#xff0c;成为了众多开发者、测试人…...

llama 3 笔记

0.简介 llama 3 是在 15 万亿个 Token 上预训练的语言模型,具有 8B 和 70B 两种参数规模,可以支持广泛的用户场景,在各种行业基准上取得了最先进的性能,并提供了一些新功能,包括改进的推理能力。 1.改进亮点 参数规模与模型架构:Llama 3提供了8B和70B两种参数规模的模…...

写作利器:如何用 PicGo + GitHub 图床提高创作效率

你好呀&#xff0c;欢迎来到 Dong雨 的技术小栈 &#x1f331; 在这里&#xff0c;我们一同探索代码的奥秘&#xff0c;感受技术的魅力 ✨。 &#x1f449; 我的小世界&#xff1a;Dong雨 &#x1f4cc; 分享我的学习旅程 &#x1f6e0;️ 提供贴心的实用工具 &#x1f4a1; 记…...

【文件篇】11.磁盘文件系统

上一篇博客中我们介绍到如果我们要访问文件首先需要打开这个文件&#xff0c;而文件是在磁盘上存储的&#xff0c;也就是说需要在磁盘上找到这个文件的路径。但是磁盘上有很多文件&#xff0c;这些文件都有自己的路径的&#xff0c;这些文件还有内容和属性&#xff0c;它们都是…...

嵌入式产品级-超小尺寸热成像相机(从0到1 硬件-软件-外壳)

Thermal_Imaging_Camera This is a small thermal imaging camera that includes everything from hardware and software. 小尺寸热成像相机-Pico-LVGL-RTOS 基于RP2040 Pico主控与RTOS&#xff0c;榨干双核性能实现LVGL和成图任务并行。ST7789驱动240280屏&#xff0c;CST8…...

三维扫描赋能文化:蔡司3D扫描仪让木质文化遗产焕发新生-沪敖3D

挪威文化历史博物馆在其修复工作中融入现代3D扫描技术&#xff0c;让数百年的历史焕发新生。 文化历史博物馆的工作 文化历史博物馆是奥斯陆大学的一个院系。凭借其在文化历史管理、研究和传播方面的丰富专业知识&#xff0c;该博物馆被誉为挪威博物馆研究领域的领先机构。馆…...

《自动驾驶与机器人中的SLAM技术》ch8:基于预积分和图优化的紧耦合 LIO 系统

目录 1 预积分 LIO 系统的经验 2 预积分图优化的顶点 3 预积分图优化的边 3.1 NDT 残差边&#xff08;观测值维度为 3 维的单元边&#xff09; 4 基于预积分和图优化 LIO 系统的实现 4.1 IMU 静止初始化 4.2 使用预积分预测 4.3 使用 IMU 预测位姿进行运动补偿 4.4 位姿配准部…...

Linux下PostgreSQL-12.0安装部署详细步骤

一、安装环境 postgresql-12.0 CentOS-7.6 注意&#xff1a;确认linux系统可以正常连接网络&#xff0c;因为在后面需要添加依赖包。 二、pg数据库安装包下载 下载地址&#xff1a;PostgreSQL: File Browser 选择要安装的版本进行下载&#xff1a; 三、安装依赖包 在要安…...

STL—stack与queue

目录 Stack stack的使用 stack的模拟实现 queue queue的使用 queue的模拟实现 priority_queue priority_queue的用法 priority_queue的模拟实现 容器适配器 种类 Stack http://www.cplusplus.com/reference/stack/stack/?kwstack stack是栈&#xff0c;后入先出 stack的…...

docker 使用远程镜像启动一个容器

使用前提&#xff1a; 首先你得安装docker,其次你得拥有一个远程镜像 docker run --name io_11281009 --rm -it -p 2233:22 -v .:/root/py -e ed25519_rootAAAAC3NzaC1lZDI1********Oy7zR7l7aUniR2rul ghcr.lizzie.fun/fj0r/io srv对上述命令解释&#xff1a; 1.docker run:…...

简述mysql 主从复制原理及其工作过程,配置一主两从并验证

第一种基于binlog的主从同步 首先对主库进行配置&#xff1a; [rootopenEuler-1 ~]# vim /etc/my.cnf 启动服务 [rootopenEuler-1 ~]# systemctl enable --now mysqld 主库的配置 从库的配置 第一个从库 [rootopenEuler-1 ~]# vim /etc/my.cnf [rootopenEuler-1 ~]# sys…...

oracle之行转列

对于Oracle的行转列功能一直云里雾里&#xff0c;马马虎虎&#xff0c;对行转列的使用场景和使用方法都不够深刻&#xff0c;最近有空理解一下。 Oracle 11g后有专门的函数pivot&#xff0c;对于特定的场景可以直接套用。 需求&#xff1a;求各份job不同员工工资是多少&#xf…...

Windows电脑安装USB Redirector并实现内外网跨网USB共享通信访问

文章目录 前言1. 安装下载软件1.1 内网安装使用USB Redirector1.2 下载安装cpolar内网穿透 2. 完成USB Redirector服务端和客户端映射连接3. 设置固定的公网地址 前言 我们每天都在与各种智能设备打交道&#xff0c;从手机到电脑&#xff0c;再到各种外设&#xff0c;它们已经…...

kafka学习笔记4-TLS加密 —— 筑梦之路

1. 准备证书文件 mkdir /opt/kafka/pkicd !$# 生成CA证书 openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -keyout ca.key -out ca.crt -subj "/CNKafka-CA"# 生成私钥 openssl genrsa -out kafka.key 4096# 生成证书签名请求 (CSR) openssl req -new -key …...

grafana + Prometheus + node_exporter搭建监控大屏

本文介绍生产系统监控大屏的搭建&#xff0c;比较实用也是实际应用比较多的方式&#xff0c;希望能够帮助大家对监控系统有一定的认识。 0、规划 grafana主要是展示和报警&#xff0c;Prometheus用于保存监控数据&#xff0c;node_exporter用于实时采集各个应用服务器的事实状…...

深度学习在语音识别中的应用

引言 语音识别技术是人工智能领域中的一个重要分支&#xff0c;它使得机器能够理解和转换人类的语音为文本。深度学习的出现极大地推动了语音识别技术的发展。本文将介绍如何使用深度学习构建一个基本的语音识别系统&#xff0c;并提供一个实践案例。 环境准备 在开始之前&a…...

RabbitMQ 高级特性

目录 1.消息确认 1.1 消息确认机制 1.2 手动确认方法 1. 2.1肯定确认 1.2.2 否定确认 1.3 SpringBoot 代码示例 1.3.1 配置确认机制 1.3.2 配置队列,交换机,绑定关系 1.3.3 生产者(向 rabbitmq 发送消息) 1.3.4 消费者(消费队列中的信息) 2.持久性 2.1 交换机…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

macOS 终端智能代理检测

&#x1f9e0; 终端智能代理检测&#xff1a;自动判断是否需要设置代理访问 GitHub 在开发中&#xff0c;使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新&#xff0c;例如&#xff1a; fatal: unable to access https://github.com/ohmyzsh/oh…...

raid存储技术

1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划&#xff0c;涵盖存储系统的布局、数据存储策略等&#xff0c;它明确数据如何存储、管理与访问&#xff0c;为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...

基于Uniapp的HarmonyOS 5.0体育应用开发攻略

一、技术架构设计 1.混合开发框架选型 &#xff08;1&#xff09;使用Uniapp 3.8版本支持ArkTS编译 &#xff08;2&#xff09;通过uni-harmony插件调用原生能力 &#xff08;3&#xff09;分层架构设计&#xff1a; graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...