Zipline:自建文件分享服务,ShareX 截图自动上传利器

Zipline:自建文件分享服务,ShareX 截图自动上传利器

Zipline 是一款基于 Next.js 的轻量级自托管文件托管服务,与 ShareX 深度集成,截图后自动上传并将分享链接复制到剪贴板,彻底告别第三方图床的隐私和稳定性问题。


目录

  1. [为什么选择 Zipline](#为什么选择 Zipline)
  2. 服务器配置
  3. [Docker Compose 部署](#Docker Compose 部署)
  4. 环境变量配置
  5. [Caddy 反向代理](#Caddy 反向代理)
  6. 创建管理员账户
  7. 文件上传与管理
  8. [ShareX 集成详细教程](#ShareX 集成详细教程)
  9. 进阶功能配置
  10. [S3 存储对接](#S3 存储对接)
  11. 总结

为什么选择 Zipline

在截图工具领域,ShareX 是 Windows 下的绝对标杆------强大的截图、录屏、标注功能,加上高度可定制的上传目标,让它拥有大量忠实用户。但默认的图床方案(Imgur、Gyazo 等)存在隐私泄露风险、文件被删风险,以及访问速度不稳定等问题。

Zipline 正是为解决这些问题而生:

  • 完全自控:文件存储在自己的服务器,不受第三方服务条款限制
  • 与 ShareX 原生集成 :一键下载 .sxcu 配置文件,导入即用
  • 功能丰富:文件画廊、图片/视频内联预览、URL 短链、文件过期、密码保护上传
  • 用户系统:支持多用户、OAuth 登录(GitHub/Discord/Google)
  • 轻量高效:Next.js 构建,1 核 2GB 即可流畅运行

服务器配置

Zipline 基于 Next.js,资源占用极低,推荐使用 1 核 2GB 机型即可满足日常使用需求(包括 PostgreSQL 数据库在内)。

可考虑 雨云服务器 rainyun-com ,注册填码 2026off 领 5 折,选择 Ubuntu 22.04 系统,非常适合个人图床场景。


Docker Compose 部署

创建项目目录:

bash 复制代码
mkdir -p /opt/zipline
cd /opt/zipline
mkdir -p uploads

创建 docker-compose.yml

yaml 复制代码
version: "3.8"

services:
  zipline:
    image: ghcr.io/diced/zipline:latest
    container_name: zipline
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - CORE_SECRET=${SECRET}
      - CORE_DATABASE_URL=postgresql://zipline:${POSTGRES_PASSWORD}@postgres:5432/zipline
      - CORE_HOST=0.0.0.0
      - CORE_PORT=3000
      - DATASOURCE_TYPE=local
      - DATASOURCE_LOCAL_DIRECTORY=/uploads
      - TZ=Asia/Shanghai
    volumes:
      - ./uploads:/uploads
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: postgres:15-alpine
    container_name: zipline-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_DB=zipline
      - POSTGRES_USER=zipline
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U zipline"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  postgres_data:
    driver: local

环境变量配置

创建 .env 文件:

bash 复制代码
# 生成随机密钥(32字节十六进制)
SECRET=$(openssl rand -hex 32)

cat > .env << EOF
# 应用密钥,用于会话加密,请妥善保管
SECRET=${SECRET}

# PostgreSQL 密码
POSTGRES_PASSWORD=$(openssl rand -hex 16)

# 数据库连接(在 docker-compose.yml 中引用)
# CORE_DATABASE_URL 已在 compose 文件中配置

# 文件存储类型:local 或 s3
DATASOURCE_TYPE=local
DATASOURCE_LOCAL_DIRECTORY=/uploads
EOF

echo ".env 文件已创建,SECRET: ${SECRET}"

重要配置说明

变量 说明
CORE_SECRET 会话加密密钥,更换后所有用户需重新登录
CORE_DATABASE_URL PostgreSQL 连接字符串
DATASOURCE_TYPE 存储类型,local 本地磁盘或 s3 对象存储
DATASOURCE_LOCAL_DIRECTORY 本地存储时的文件目录
CORE_HOST 监听地址,0.0.0.0 接受所有连接
CORE_PORT 服务端口,默认 3000

启动服务:

bash 复制代码
docker compose up -d
docker compose logs -f zipline

等待日志出现 ready - started server on 0.0.0.0:3000 即表示启动成功。


Caddy 反向代理

安装 Caddy:

bash 复制代码
apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
apt update && apt install caddy

编辑 /etc/caddy/Caddyfile

caddyfile 复制代码
files.example.com {
    reverse_proxy localhost:3000

    # 上传文件大小限制(根据需要调整)
    request_body {
        max_size 100MB
    }

    header {
        Strict-Transport-Security "max-age=31536000"
        X-Content-Type-Options "nosniff"
    }
}

重载 Caddy:

bash 复制代码
systemctl reload caddy

创建管理员账户

Zipline 首次访问时会自动引导创建管理员账户:

  1. 打开浏览器访问 https://files.example.com
  2. 系统检测到无账户,自动跳转到初始化页面
  3. 填写管理员用户名和密码
  4. 点击 Create Administrator

登录后进入仪表盘,可看到文件统计、最近上传等信息。

基本设置(Settings → General):

  • Site Name:网站名称,显示在页面标题
  • Invite Only:是否仅允许邀请注册
  • Default Upload Expiry:默认文件过期时间

文件上传与管理

手动上传文件

  1. 进入 Zipline 主界面,点击 Upload 按钮
  2. 拖拽文件或点击选择文件
  3. 可设置:
    • Expires At:文件过期时间(如 7 天后自动删除)
    • Password:访问密码保护
    • Max Views:最大查看次数(超过后自动删除)
  4. 上传完成后自动复制分享链接

文件画廊视图

Files 页面可以:

  • 图片和视频直接内联预览,无需下载
  • 按日期、文件名、大小排序
  • 批量删除文件
  • 查看每个文件的访问统计(查看次数、最后访问时间)

URL 短链功能

URLs 页面可以创建短链接:

  1. 粘贴原始 URL
  2. 可选自定义短码
  3. 生成类似 https://files.example.com/go/abcd 的短链接

ShareX 集成详细教程

这是 Zipline 最强大的特性,以下是完整配置流程:

第一步:下载 .sxcu 配置文件

  1. 登录 Zipline 管理界面
  2. 进入 Account → ShareX Config(或点击右上角用户头像)
  3. 点击 Download .sxcu 按钮,下载 zipline.sxcu 配置文件

该文件包含:

json 复制代码
{
  "Version": "14.0.0",
  "Name": "Zipline",
  "DestinationType": "ImageUploader, FileUploader",
  "RequestMethod": "POST",
  "RequestURL": "https://files.example.com/api/upload",
  "Headers": {
    "Authorization": "your-api-token-here"
  },
  "Body": "MultipartFormData",
  "FileFormName": "file",
  "URL": "$json:files[0]$"
}

第二步:导入 ShareX

  1. 打开 ShareX
  2. 在左侧菜单找到 Destinations → Custom uploader settings
  3. 点击 Import → From file ,选择下载的 zipline.sxcu
  4. 配置自动导入,弹出确认窗口,点击 Yes

第三步:设置为默认上传目标

  1. 在 ShareX 主界面,点击 Destinations
  2. Image Uploader 设为 Custom Image Uploader
  3. File Uploader 设为 Custom File Uploader

第四步:配置快捷键

  1. 进入 Task Settings → Hotkeys
  2. 推荐设置:
    • Print Screen:截取全屏并上传
    • Ctrl+Print Screen:截取区域并上传
  3. 截图完成后,Zipline 的分享链接会自动复制到剪贴板

测试截图上传

按下快捷键截图,等待约 1-2 秒,剪贴板中会自动出现类似 https://files.example.com/u/xK3mP9 的链接,粘贴即可分享。


进阶功能配置

文件过期设置

Settings → Default Expiry 中可设置全局默认过期时间,也可在每次上传时单独指定:

  • never:永不过期
  • 1h1d7d30d:对应时间后删除

密码保护上传

上传时勾选 Password Protect,设置密码后,访问者需输入密码才能查看文件。适用于分享敏感文件。

OAuth 登录配置

docker-compose.yml 的 environment 中添加:

yaml 复制代码
# GitHub OAuth
- OAUTH_GITHUB_CLIENT_ID=your_github_client_id
- OAUTH_GITHUB_CLIENT_SECRET=your_github_client_secret

# Discord OAuth
- OAUTH_DISCORD_CLIENT_ID=your_discord_client_id
- OAUTH_DISCORD_CLIENT_SECRET=your_discord_client_secret

在对应平台创建 OAuth 应用,回调 URL 设为 https://files.example.com/api/auth/callback/github(以 GitHub 为例)。

用户管理

管理员可在 Admin → Users 中:

  • 创建新用户并发送邀请链接
  • 查看每个用户的存储使用量
  • 设置用户存储配额
  • 禁用账户

S3 存储对接

当本地磁盘空间不足时,可切换到 S3 兼容存储(AWS S3、Cloudflare R2、MinIO 等):

修改 .env 文件:

bash 复制代码
DATASOURCE_TYPE=s3
DATASOURCE_S3_ACCESS_KEY_ID=your_access_key
DATASOURCE_S3_SECRET_ACCESS_KEY=your_secret_key
DATASOURCE_S3_BUCKET=your-bucket-name
DATASOURCE_S3_REGION=us-east-1
# 如果使用 Cloudflare R2 或 MinIO,需要指定 endpoint
DATASOURCE_S3_ENDPOINT=https://your-minio-endpoint.com
# 是否强制路径风格(MinIO 需要设为 true)
DATASOURCE_S3_FORCE_PATH_STYLE=true

修改后重启容器:

bash 复制代码
docker compose down && docker compose up -d

注意 :切换存储后,原有本地文件不会自动迁移,需要手动将 uploads/ 目录中的文件上传至 S3 存储桶。


总结

Zipline 将自建文件托管的门槛降至最低:1 核 2GB 的轻量服务器,几分钟完成部署,与 ShareX 完美集成后,截图工作流变得无缝流畅。完全掌控自己的文件数据,不受任何第三方限制,是追求效率与隐私的开发者和创作者的理想选择。

相关推荐
三言老师6 小时前
mv移动文件、重命名文件实战案例
linux·服务器·网络·centos
向夏威夷 梦断明暄6 小时前
C# 弃元模式:从语法糖到性能利器的深度解析
服务器·数据库·c#
晚来的棠棠6 小时前
彻底解决 github 无法访问或者访问慢的问题_github打开太慢了
github
tokenKe6 小时前
ego-lite:给 AI Agent 用的最快浏览器 | SSP Github Daily
人工智能·github
乱世刀疤7 小时前
Claude Code提高工作效率案例:自动化分析工作流程时效性,缩短工单流转时长
运维·自动化
AOwhisky7 小时前
云原生 DevOps 工具链从入门到实战(第二期)——Jenkins安装与基础配置——CICD核心引擎
linux·运维·ci/cd·云原生·jenkins·devops
一叶之秋14127 小时前
Linux网络初识
linux·服务器·网络
盐焗鹌鹑蛋7 小时前
【Linux】基础开发工具yum和vim
linux·运维·vim
AOwhisky7 小时前
Linux(CentOS)系统管理入门笔记(第十四期)——计划任务与进程调度管理:atcron 与 nicechrt
linux·运维·笔记·centos·云计算·进程调度·计划任务
软件工程师文艺7 小时前
NewsNow 技术原理与架构
github