Docker部署Send阅后即焚云盘(Ubuntu、威联通NAS)

一次性下载、到期销毁、链接分享、服务端加密

官网:GitHub - timvisee/send: 📬 Simple, private file sharing. Mirror of https://gitlab.com/timvisee/send
Docker项目:send/docs/docker.md at master · timvisee/send · GitHub
image

Linux通用安装

创建文件夹

此文件夹用于存放Send上传文件,作为缓存区,Send会自动删除。

# 确保目录被创建,-p 会自动创建所有父级目录
sudo mkdir -p /opt/docker-stacks/Send/uploads

# 赋予 777 (rwxrwxrwx) 权限
sudo chmod 777 /opt/docker-stacks/Send/uploads

使用yaml安装

可以使用portainer.io面板安装,通过堆栈创建。

使用命令安装

使用 docker-compose up -d 命令启动 docker-compose。

威联通NAS

推送到私有仓库(可以直接访问可跳过)

步骤 C: 打标签 (Tag)

在 Ubuntu Server 上执行:

# 格式: docker tag [源镜像名] [NAS_IP:端口/镜像名]
docker pull registry.gitlab.com/timvisee/send:latest

docker tag registry.gitlab.com/timvisee/send:latest 你的私有仓库地址:端口/timvisee/send:latest

docker pull redis:6-alpine
docker tag redis:6-alpine 你的私有仓库地址:端口/redis:6-alpine

步骤 D: 推送 (Push) 到私有仓库

Bash

docker push 你的私有仓库地址:端口/timvisee/send:latest

docker push 你的私有仓库地址:端口/redis:6-alpine

创建应用

通过Docker-compose创建

注意,创建以后是对挂载文件是没有读写权的!
需要通过ssh进行修改
sudo chmod 777 /Custom_program/docker_data/Send/uploads
创建以后在fileStation中是看不见文件更改的,实际上成功了。
image

通过Container Station分别创建容器

完全绕开了“堆栈(Stack)”和“SSH 权限”这两个最大的障碍。

  • 关于权限(第1点): 如果通过 QNAP 的图形界面 (GUI) 去创建容器,并在“存储”那里指定挂载目录,QNAP 的 GUI 会在后台自动帮你处理好读写权限 (RW)。这完美绕过了 SSH。
  • 关于网络(第2点):Redis 的端口暴露(映射) 到 NAS 主机上,然后让 Send 容器去连接 NAS 的局域网 IP 注意,主机地址要固定!

第 1 步:创建 Redis 容器 (GUI)

  1. 应用名称: send-redis

  2. 镜像: 127.0.0.1:57080/redis:6-alpine

  3. 高级设置 -> 端口转发:

    • 点击“添加”

    • 主机端口:57081 自定义

    • 容器端口:6379 (这是 Redis 默认端口)

  4. 高级设置 -> 存储 (卷):

    • (推荐) 添加一个挂载,让 Redis 数据持久化。

    • 主机路径:/Custom_program/docker_data/Send/redis_data

    • 容器路径:/data

  5. 创建启动
    image
    image

第 2 步:创建 Send 容器 (GUI)

  1. 应用名称: send-send

  2. 镜像: 127.0.0.1:57080/timvisee/send:latest

  3. 高级设置 -> 端口转发:

    • 点击“添加”

    • 主机端口:9010 (或者你喜欢的)

    • 容器端口:8080

  4. 高级设置 -> 存储 (卷):

    • 点击“添加”

    • 主机路径:/Custom_program/docker_data/Send/uploads ( 重点:用 GUI 的文件浏览器去选择这个目录,QNAP 会自动处理 RW 权限)

    • 容器路径:/uploads

  5. 高级设置 -> 环境变量:

    • 点击“添加”,添加以下所有变量:

    • DETECT_BASE_URL = true

    • PORT = 8080

    • FILE_DIR = /uploads

    • REDIS_HOST = 192.168.50.201 ( 关键! 必须是你 NAS 的局域网 IP)

    • REDIS_PORT = 57081 ( 关键! 必须是你在第1步中映射的主机端口)

  6. 创建启动

image
图中的1443可以删掉。
image
image
现在,send 容器会通过 192.168.50.201:57081 成功连接到 redis 容器,并且 uploads 目录的读写权限也由 QNAP GUI 自动解决了。

docker-compose

version: '3.8'

services:
  # 1. Send 主程序
  send:
    image: registry.gitlab.com/timvisee/send:latest
    container_name: send
    restart: unless-stopped
    ports:
      # 格式: [主机端口]:[容器端口]
      # 启动后,你的局域网访问地址就是 http://[你服务器的IP]:9010
      - "9010:8080"
    volumes:
      # 将 /opt/docker-stacks/Send/uploads 目录挂载到容器的 /uploads 目录
      # !! 你需要在 docker-compose.yml 旁边创建一个 uploads 目录
      - /opt/docker-stacks/Send/uploads:/uploads
    environment:
      # !! 关键配置:自动检测访问URL !!
      # 这将自动使用你访问时的域名(局域网IP或FRP地址)来生成分享链接
      - DETECT_BASE_URL=true
      
      # 告诉 Send 容器内的端口是 8080
      - PORT=8080
      
      # 告诉 Send 文件存储在 /uploads 目录
      - FILE_DIR=/uploads
      
      # 连接到下面的 Redis 服务
      - REDIS_HOST=redis
      
      # --- 其他可选配置 (保持注释即可) ---
      # - MAX_FILE_SIZE=5368709120  # 最大 5GB
      # - DEFAULT_EXPIRE_SECONDS=3600 # 默认 1 小时

  # 2. Redis 数据库
  redis:
    image: redis:6-alpine
    container_name: send-redis
    restart: unless-stopped
    volumes:
      # 持久化 Redis 数据
      - redis_data:/data

volumes:
  # Docker 自动创建的持久化数据卷
  redis_data:
posted @ 2025-11-10 17:26  舟清颺  阅读(0)  评论(0)    收藏  举报