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 有:
- seafile
- seafile-mysql
- 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>
可选操作
- 增加一个新的管理员
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,实现在线编辑…...
Open3D 最小二乘拟合平面(直接求解法)【2025最新版】
目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 博客长期更新,本文最近更新时间为:2025年1月18日。 一、算法原理 平面方程的一般表达式为:...
【CC2640R2F】香瓜CC2640R2F之SPI读写W25Q80
本文最后修改时间:2022年01月08日 10:45 一、本节简介 本节以simple_peripheral工程为例,介绍如何使用SPI读写W25Q80(外部flash)。 二、实验平台 1)CC2640R2F平台 ①协议栈版本:CC2640R2 SDK v1.40.00.4…...
探秘Shortest与Stagehand:开启高效测试与自动化新篇
探秘Shortest与Stagehand:开启高效测试与自动化新篇 在数字化浪潮的推动下,网页自动化工具如同繁星般涌现,为众多行业带来了效率的变革。在这些工具中,Shortest和Stagehand凭借其出色的表现,成为了众多开发者、测试人…...
llama 3 笔记
0.简介 llama 3 是在 15 万亿个 Token 上预训练的语言模型,具有 8B 和 70B 两种参数规模,可以支持广泛的用户场景,在各种行业基准上取得了最先进的性能,并提供了一些新功能,包括改进的推理能力。 1.改进亮点 参数规模与模型架构:Llama 3提供了8B和70B两种参数规模的模…...
写作利器:如何用 PicGo + GitHub 图床提高创作效率
你好呀,欢迎来到 Dong雨 的技术小栈 🌱 在这里,我们一同探索代码的奥秘,感受技术的魅力 ✨。 👉 我的小世界:Dong雨 📌 分享我的学习旅程 🛠️ 提供贴心的实用工具 💡 记…...
【文件篇】11.磁盘文件系统
上一篇博客中我们介绍到如果我们要访问文件首先需要打开这个文件,而文件是在磁盘上存储的,也就是说需要在磁盘上找到这个文件的路径。但是磁盘上有很多文件,这些文件都有自己的路径的,这些文件还有内容和属性,它们都是…...
嵌入式产品级-超小尺寸热成像相机(从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,榨干双核性能实现LVGL和成图任务并行。ST7789驱动240280屏,CST8…...
三维扫描赋能文化:蔡司3D扫描仪让木质文化遗产焕发新生-沪敖3D
挪威文化历史博物馆在其修复工作中融入现代3D扫描技术,让数百年的历史焕发新生。 文化历史博物馆的工作 文化历史博物馆是奥斯陆大学的一个院系。凭借其在文化历史管理、研究和传播方面的丰富专业知识,该博物馆被誉为挪威博物馆研究领域的领先机构。馆…...
《自动驾驶与机器人中的SLAM技术》ch8:基于预积分和图优化的紧耦合 LIO 系统
目录 1 预积分 LIO 系统的经验 2 预积分图优化的顶点 3 预积分图优化的边 3.1 NDT 残差边(观测值维度为 3 维的单元边) 4 基于预积分和图优化 LIO 系统的实现 4.1 IMU 静止初始化 4.2 使用预积分预测 4.3 使用 IMU 预测位姿进行运动补偿 4.4 位姿配准部…...
Linux下PostgreSQL-12.0安装部署详细步骤
一、安装环境 postgresql-12.0 CentOS-7.6 注意:确认linux系统可以正常连接网络,因为在后面需要添加依赖包。 二、pg数据库安装包下载 下载地址:PostgreSQL: File Browser 选择要安装的版本进行下载: 三、安装依赖包 在要安…...
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是栈,后入先出 stack的…...
docker 使用远程镜像启动一个容器
使用前提: 首先你得安装docker,其次你得拥有一个远程镜像 docker run --name io_11281009 --rm -it -p 2233:22 -v .:/root/py -e ed25519_rootAAAAC3NzaC1lZDI1********Oy7zR7l7aUniR2rul ghcr.lizzie.fun/fj0r/io srv对上述命令解释: 1.docker run:…...
简述mysql 主从复制原理及其工作过程,配置一主两从并验证
第一种基于binlog的主从同步 首先对主库进行配置: [rootopenEuler-1 ~]# vim /etc/my.cnf 启动服务 [rootopenEuler-1 ~]# systemctl enable --now mysqld 主库的配置 从库的配置 第一个从库 [rootopenEuler-1 ~]# vim /etc/my.cnf [rootopenEuler-1 ~]# sys…...
oracle之行转列
对于Oracle的行转列功能一直云里雾里,马马虎虎,对行转列的使用场景和使用方法都不够深刻,最近有空理解一下。 Oracle 11g后有专门的函数pivot,对于特定的场景可以直接套用。 需求:求各份job不同员工工资是多少…...
Windows电脑安装USB Redirector并实现内外网跨网USB共享通信访问
文章目录 前言1. 安装下载软件1.1 内网安装使用USB Redirector1.2 下载安装cpolar内网穿透 2. 完成USB Redirector服务端和客户端映射连接3. 设置固定的公网地址 前言 我们每天都在与各种智能设备打交道,从手机到电脑,再到各种外设,它们已经…...
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搭建监控大屏
本文介绍生产系统监控大屏的搭建,比较实用也是实际应用比较多的方式,希望能够帮助大家对监控系统有一定的认识。 0、规划 grafana主要是展示和报警,Prometheus用于保存监控数据,node_exporter用于实时采集各个应用服务器的事实状…...
深度学习在语音识别中的应用
引言 语音识别技术是人工智能领域中的一个重要分支,它使得机器能够理解和转换人类的语音为文本。深度学习的出现极大地推动了语音识别技术的发展。本文将介绍如何使用深度学习构建一个基本的语音识别系统,并提供一个实践案例。 环境准备 在开始之前&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 交换机…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
VSCode 使用CMake 构建 Qt 5 窗口程序
首先,目录结构如下图: 运行效果: cmake -B build cmake --build build 运行: windeployqt.exe F:\testQt5\build\Debug\app.exe main.cpp #include "mainwindow.h"#include <QAppli...
