Docker搭建轻量个人文件分享服务-文件传输自由

临时小文件分享,远程文件传输,自建网盘

开放文件临时分享以及大宝学校的学习资料:https://file.carlzeng.top:3

2024.1.2 转化方案到Alist

2024.1.30 Aria2离线下载到该Alist目录教程

有什么用

临时文件分享,远程文件传输,网盘平替

Docker搭建轻量个人文件分享服务-文件传输自由

专注于文件分享的高颜值轻量小工具
A self-hosted file sharing platform that combines lightness and beauty, perfect for seamless and efficient file sharing.

预览

相关内容

实现方法(pingvin-share已弃用)

1
2
3
4
5
6
7
8
9
10
11
12
version: '3.8'
services:
pingvin-share:
image: stonith404/pingvin-share
restart: unless-stopped
ports:
- 6000:3000
- 6001:3333
volumes:
- "./data:/opt/app/backend/data"
- "./data/images:/opt/app/frontend/public/img"
# - "./data/framework-0c7baedefba6b077.js:/opt/app/frontend/.next/static/chunks/framework-0c7baedefba6b077.js" #个人用于添加matomo统计JS

上面完成端口映射,不知道怎么回事8080端口映射出来是无法访问的。(原来文档有误,看日志,应该是3333端口); 后来又发现只有这个6001也是能正常能使用的(符合日志内容)

开放防火墙允许访问映射出来的端口。

部分日志:

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
Attaching to pingvin-share_pingvin-share_1
pingvin-share_1 |
pingvin-share_1 | > pingvin-share-backend@0.21.1 prod
pingvin-share_1 | > prisma migrate deploy && prisma db seed && node dist/src/main
pingvin-share_1 |
pingvin-share_1 | Environment variables loaded from prisma/.env
pingvin-share_1 | Prisma schema loaded from prisma/schema.prisma
pingvin-share_1 | Datasource "db": SQLite database "pingvin-share.db" at "file:../data/pingvin-share.db"
pingvin-share_1 |
pingvin-share_1 | 17 migrations found in prisma/migrations
pingvin-share_1 |
pingvin-share_1 |
pingvin-share_1 | No pending migrations to apply.
pingvin-share_1 | ▲ Next.js 13.5.6
pingvin-share_1 | - Local: http://localhost:3333
pingvin-share_1 | - Network: http://0.0.0.0:3333
pingvin-share_1 |
pingvin-share_1 | ✓ Ready in 3.9s
pingvin-share_1 | Environment variables loaded from prisma/.env
pingvin-share_1 | Running seed command `ts-node prisma/seed/config.seed.ts` ...
pingvin-share_1 |
pingvin-share_1 | 🌱 The seed command has been executed.
pingvin-share_1 | ┌─────────────────────────────────────────────────────────┐
pingvin-share_1 | │ Update available 5.0.0 -> 5.7.1 │
pingvin-share_1 | │ Run the following to update │
pingvin-share_1 | │ npm i --save-dev prisma@latest │
pingvin-share_1 | │ npm i @prisma/client@latest │
pingvin-share_1 | └─────────────────────────────────────────────────────────┘
pingvin-share_1 | [Nest] 34 - 12/23/2023, 3:03:35 AM LOG [NestFactory] Starting Nest application...
pingvin-share_1 | [Nest] 34 - 12/23/2023, 3:03:35 AM LOG [InstanceLoader] PrismaModule dependencies initialized +230ms

发布到NAS中

思路是:NAS中硬盘比较大,方便直接做分享,也不用太担心磁盘轻易被塞满的问题。

ssh shell进群晖NAS,想要找到docker的类似于BT中的预览Docker Container文件目录的办法,一直找不到具体文件路径。

1
2
3
4
5
> root@DS918:/var/packages/Docker/var/docker/containers# ls                                        
086decff0f0ff981d6458d792b6d4f2efe96a0a16cc339b0963c8e319c8917b5
2ea60beefe6d9bab1a3910785a310bac528723055c7004f3d15eb55a07abfd70

> root@DS918:/var/packages/Docker/var/docker/

暂时没办法,只能在BT中配置好,测试好以后,把映射的文件都挪到群晖NAS中去.

  1. 先将映射出来的文件都复制到NAS的个人特定文件夹下

    1
    2
    3
    4
    5
    6
    > scp -r /www/server/panel/data/compose/pingvin-share/data/ CarlNote@192.168.6.203:/volume2/KingchuxingSSD512G/docker/pingvin-share/data
    CarlNote@192.168.6.203's password:
    pingvin-share.db 100% 140KB 9.2MB/s 00:00
    logo.png 100% 526KB 34.5MB/s 00:00
    favicon.ico 100% 675 857.4KB/s 00:00
    framework-0c7baedefba6b077.js 100% 138KB 46.7MB/s 00:00

    这是方便得登录Debian的ssh,然后把文件夹(或文件,/data目录)批量的传输给NAS的特定文件夹(/volume2/KingchuxingSSD512G/docker/pingvin-share/)。下次可以更简便的把上级目录一次性传输过去(适用于首次迁移文件)

    1
    2
    #从Debian中传输单个文件到NAS,更新情况,单个单个文件同步
    > scp docker-compose.yml root@192.168.6.203:/volume2/KingchuxingSSD512G/docker/pingvin-share/
  2. 同理,把NPM修改到NAS对应的这个6000端口(根据docker-compose中的配置)

灵感来源

pingvin-share

【好玩儿的Docker项目】Pingvin Share——一个专注于文件分享的高颜值轻量小工具!原创


Alist方案

alist, 替换file share方案

影片自由,丝滑流畅,Docker容器基于WebDav协议通过Alist挂载(百度网盘/阿里云盘)Python3.10接入

1
2
3
4
5
6
7
8
docker run -d --name="alist"
-v /volume2/KingchuxingSSD512G/Download:/opt/alist/data
-v /volume2/KingchuxingSSD512G/Download:/myfiles/sdb1/aria2
#-v /mnt/sdb1/Tube:/myfiles/sdb1/Tube
#-v /mnt/sdb1/qbit:/myfiles/sdb1/qbit
-p 5244:5244
--restart=always
xhofe/alist:latest
1
2
3
4
5
6
7
8
9
10
11
version: "3"
services:
alist:
container_name: alist
volumes:
- ./data:/opt/alist/data
- /volume2/KingchuxingSSD512G/Download:/myfiles/sdb1/aria2
ports:
- 5244:5244
restart: always
image: xhofe/alist:latest

配置本地的storage

Mount Path: /aria2

Root folder pah:/myfiles/sdb1/aria2

这样aria2下载的文件,都会放到aria2的文件夹下了。 下一步打算公开配置好的私人aria2的本地工具,然后aria2下载后,可以方便用户来下载(或webdav加载到本地)

等待映射出来 /assets/index-legacy.2629d851.js

如何让Docker中的alist映射出更多目录

用于分享NAS中的更多文件夹

  • /volume2/KingchuxingSSD512G/SWITCH:/home/share1
  • /volume2/KingchuxingSSD512G/passwordDict:/home/share2
  • /volume2/KingchuxingSSD512G/dockerEmbyMedia:/home/share3
  • /volume2/KingchuxingSSD512G/docker/zlib-searcher:/home/share4
  • /volume2/KingchuxingSSD512G/docker/compose:/home/share5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: "3"
services:
alist:
container_name: alist
volumes:
- ./data:/opt/alist/data
- /volume2/KingchuxingSSD512G/Download:/myfiles/sdb1/aria2
- /volume2/KingchuxingSSD512G/SWITCH:/home/share1
- /volume2/KingchuxingSSD512G/passwordDict:/home/share2
- /volume2/KingchuxingSSD512G/dockerEmbyMedia:/home/share3
- /volume2/KingchuxingSSD512G/docker/zlib-searcher:/home/share4
- /volume2/KingchuxingSSD512G/docker/compose:/home/share5
ports:
- 5244:5244
restart: always
image: xhofe/alist:latest

步骤:

原来是需要docker-compose down, 然后重新docker-compose up 才能映射成功(docker-compose restart是不行的)
1. 先到 alist的管理界面 添加这些本机存储
2. docker-compose up -d
3. docker exec -it alist /bin/bash
进去新建这些对应的share文件夹
4. 返回 alist的管理界面 编辑&保存 这些本机存储
状态变为 work
然后在alist的guest页面点击这些新建的存储是没有内容的(但至少不报错了)
5. docker-compose down && docker-compose up -d

远程新增或修改文件分享

  1. 打开frpc

    1. 命令如下: frp % frpc -c frpc.ini
    2. 具体请参见本站文章:Docker搭建FRP内网穿透服务(花生壳、Ngrok平替)
  2. 用ssh连接NAS的终端

    1. 命令如下:ssh 127.0.0.1 -p 22223
  3. 切换到相应目录:/volume2/KingchuxingSSD512G/docker/compose/alist

  4. 编辑docker-compose.yml文件,将相应的目录映射上(具体入上个章节所示)

  5. docker-compose down

  6. docker-compose up -d

  7. 登录并设置 Alist 的管理后台 映射相应目录

  8. 效果:大宝学校学习资料

Aria2离线下载到该Alist目录教程

作为代理(远程+离线+无人值守)下载网盘大文件的方式,大致步骤如下:

  1. 打开Aria2的终端UI:AriaNg
  2. 点击 “新建”
  3. 粘贴网盘页面中,通过插件获取的某度或某克网盘链接
    1. 选择需要下载的大文件
    2. 点击 “下载助手” 》 “API下载”
    3. 复制API下载弹窗中的链接地址
  4. 点击 “立即下载”
  5. 下载可实时查看下载百分比,待下载完成
  6. 浏览下载所得的文件,在Alist的目录下:Aria2下载文件夹
  7. 选中文件点击下载,即可下载到本地磁盘(此时下载速度在3MB/s左右)