Last translated: 26 Jun 2025

Translation Not Available Yet

This repository's README hasn't been translated yet. Once translated, it will be easier to read and understand in your native language (中文).

After translating, add the links to README so others can view it directly.

CloudPaste - 在线剪贴板 📋

中文 | English

paste

基于Cloudflare的在线剪贴板及文件分享服务,支持Markdown编辑与文件上传

Ask DeepWiki License GitHub Stars Powered by Cloudflare Docker Pulls

📸 功能展示✨ 功能特性🚀 部署指南🔧 技术栈💻 开发📄 许可协议

📸 功能展示

✨ 功能特性

📝 Markdown编辑与分享

  • 强大编辑器:集成Vditor,支持GitHub风味Markdown、数学公式、流程图、脑图等
  • 安全分享:可为内容设置访问密码保护
  • 灵活时效:支持设置内容过期时间
  • 访问控制:可限制最大查看次数
  • 个性定制:自定义分享链接与备注
  • 支持原始文本直链:类似GitHub的Raw直链,用于通过YAML配置文件启动的服务
  • 多格式导出:支持导出PDF、Markdown、HTML、PNG图片和Word文档
  • 便捷分享:一键复制链接与生成二维码
  • 自动保存:支持草稿自动保存

📤 文件上传与管理

  • 多存储支持:兼容各类S3存储服务(Cloudflare R2、Backblaze B2、AWS S3等)
  • 存储配置:可视化界面配置多存储空间,灵活切换默认存储源
  • 高效上传:通过预签名URL直传S3存储
  • 实时反馈:上传进度实时显示
  • 自定义限制:单次上传限制与最大容量限制
  • 元数据管理:文件备注、密码、过期时间、访问限制
  • 数据分析:文件访问统计与趋势分析
  • 直连服务器传输:支持调用API进行文件上传、下载等操作

🛠 便捷文件/文本操作

  • 统一管理:支持文件/文本的创建、删除与属性修改
  • 在线预览:常见文档、图片及媒体文件的在线预览与直链生成
  • 分享工具:生成短链接与二维码实现跨平台分享
  • 批量管理:文件/文本的批量操作与展示

🔄 WebDAV与挂载点管理

  • WebDAV协议支持:通过标准WebDAV协议访问管理文件系统
  • 网络驱动器挂载:支持部分第三方客户端挂载
  • 灵活挂载点:支持创建连接不同存储服务的多个挂载点
  • 权限控制:细粒度的挂载点访问权限管理
  • API密钥集成:通过API密钥实现WebDAV访问授权
  • 大文件支持:自动采用分片上传机制处理大文件
  • 目录操作:完整支持目录创建、上传、删除、重命名等操作

🔐 轻量级权限管理

管理员权限控制

  • 系统管理:全局系统设置配置
  • 内容审核:管理所有用户内容
  • 存储管理:S3存储服务的添加、编辑与删除
  • 权限分配:API密钥的创建与权限管理
  • 数据分析:完整访问统计数据

API密钥权限控制

  • 文本权限:创建/编辑/删除文本内容
  • 文件权限:上传/管理/删除文件
  • 存储权限:可选择特定存储配置
  • 读写分离:可设置只读或读写权限
  • 时间控制:自定义有效期(从小时到数月)
  • 安全机制:自动过期与手动吊销功能

💫 系统特性

  • 高适应性:响应式设计,适配移动设备与桌面端
  • 多语言:中英文双语界面支持
  • 视觉模式:明亮/暗黑主题切换
  • 安全认证:基于JWT的管理员认证系统
  • 离线体验:PWA支持,可离线使用与桌面安装

🚀 部署指南

前置准备

开始部署前,请确保已准备以下内容:

  • Cloudflare账号(必需)
  • 若使用R2:开通Cloudflare R2服务并创建存储桶(需绑定支付方式)
  • 若使用Vercel:注册Vercel账号
  • 其他S3存储服务的配置信息:
    • S3_ACCESS_KEY_ID
    • S3_SECRET_ACCESS_KEY
    • S3_BUCKET_NAME
    • S3_ENDPOINT
👉 查看完整部署指南

📑 目录索引


Action自动化部署

使用GitHub Actions可在代码推送后自动部署应用。

配置GitHub仓库

  1. Fork或克隆仓库 https://github.com/ling-drag0n/CloudPaste
  2. 进入你的GitHub仓库设置
  3. 导航至Settings → Secrets and variables → Actions → New Repository secrets
  4. 添加以下Secrets:
Secret名称必填用途
CLOUDFLARE_API_TOKENCloudflare API令牌(需具备Workers、D1和Pages权限)
CLOUDFLARE_ACCOUNT_IDCloudflare账户ID
ENCRYPTION_SECRET敏感数据加密密钥(未提供时将自动生成)

获取Cloudflare API令牌

  1. 访问 Cloudflare控制面板

  2. 创建新API令牌

  3. 选择"Edit Cloudflare Workers"模板,并添加D1数据库编辑权限

    D1

后端自动化部署

Fork仓库后填写secrets,然后运行workflow!!! 当backend目录下的文件发生变更并推送至mainmaster分支时,将自动触发部署。工作流程如下:

  1. 自动创建D1数据库(如不存在)
  2. 通过schema.sql初始化数据库(创建表与初始数据)
  3. 设置ENCRYPTION_SECRET环境变量(从GitHub Secrets获取或自动生成)
  4. 自动将Worker部署至Cloudflare
  5. 建议设置自定义域名替换原Cloudflare域名(否则部分地区可能无法访问)

⚠️ 请记录您的后端域名

前端自动化部署

Cloudflare Pages(推荐)

Fork仓库后填写secrets,然后运行workflow。 当frontend目录下的文件发生变更并推送至mainmaster分支时,将自动触发部署。部署完成后需在Cloudflare Pages控制面板设置环境变量:

  1. 登录 Cloudflare控制面板

  2. 导航至Pages → 您的项目(如"cloudpaste-frontend")

  3. 点击"Settings" → "Environment variables"

  4. 添加环境变量:

    • 名称:VITE_BACKEND_URL

    • 值:您的后端Worker URL(如https://cloudpaste-backend.your-username.workers.dev)不带末尾"/"。建议使用自定义worker后端域名。

    • 请务必输入完整的后端域名,格式为"https://xxxx.com"

  5. 重要步骤:然后再次运行前端workflow以完成后端域名加载!!!

    test-1

请严格按步骤操作,否则后端域名加载将失败

Vercel

Vercel建议按以下方式部署:

  1. Fork后导入您的GitHub项目
  2. 配置部署参数:
Framework Preset: Vite
Build Command: npm run build
Output Directory: dist
Install Command: npm install
  1. 配置下方环境变量:输入:VITE_BACKEND_URL和您的后端域名
  2. 点击"Deploy"按钮进行部署

☝️ 任选上述方式之一


手动部署

后端手动部署

  1. 克隆仓库
git clone https://github.com/ling-drag0n/CloudPaste.git
cd CloudPaste/backend
  1. 安装依赖

    npm install
    
  2. 登录Cloudflare

    npx wrangler login
    
  3. 创建D1数据库

    npx wrangler d1 create cloudpaste-db
    

    记录输出中的数据库ID。

  4. 修改wrangler.toml配置

    [[d1_databases]]
    binding = "DB"
    database_name = "cloudpaste-db"
    database_id = "YOUR_DATABASE_ID"
    
  5. 部署Worker

    npx wrangler deploy
    

    记录输出中的URL,此为您的后端API地址。

  6. 初始化数据库(自动) 访问您的Worker URL触发初始化:

    https://cloudpaste-backend.your-username.workers.dev
    

⚠️ 安全提示:系统初始化后请立即修改默认管理员密码(用户名:admin,密码:admin123)。

前端手动部署

Cloudflare Pages

  1. 准备前端代码

    cd CloudPaste/frontend
    npm install
    
  2. 配置环境变量 创建或修改.env.production文件:

    VITE_BACKEND_URL=https://cloudpaste-backend.your-username.workers.dev
    VITE_APP_ENV=production
    VITE_ENABLE_DEVTOOLS=false
    
  3. 构建前端项目

    npm run build
    

    构建时请注意!!

  4. 部署至Cloudflare Pages

    方式一:通过Wrangler CLI

    npx wrangler pages deploy dist --project-name=cloudpaste-frontend
    

    方式二:通过Cloudflare控制面板

    1. 登录 Cloudflare控制面板
    2. 选择"Pages"
    3. 点击"Create a project" → "Direct Upload"
    4. 上传dist目录中的文件
    5. 设置项目名称(如"cloudpaste-frontend")
    6. 点击"Save and Deploy"

Vercel

  1. 准备前端代码

    cd CloudPaste/frontend
    npm install
    
  2. 安装并登录Vercel CLI

    npm install -g vercel
    vercel login
    
  3. 配置环境变量,同Cloudflare Pages

  4. 构建并部署

    vercel --prod
    

    按提示配置项目。


ClawCloud云剪贴板部署教程

每月10GB免费流量,仅适合轻度使用

第一步:

注册链接:Claw Cloud(无#AFF) 无需信用卡,只要GitHub注册时间超过180天,每月可得$5额度。

第二步:

注册后点击首页APP Launchpad,然后点击右上角创建应用

image.png

第三步:

先部署后端,如图所示(仅供参考): image.png

后端数据存储在这里: image.png

第四步:

然后是前端,如图所示(仅供参考): image.png

部署完成即可使用,可按需配置自定义域名
👉 Docker部署指南

📑 目录索引


Docker命令行部署

后端Docker部署

CloudPaste后端可通过官方Docker镜像快速部署。

  1. 创建数据存储目录

    mkdir -p sql_data
    
  2. 运行后端容器

    docker run -d --name cloudpaste-backend \
      -p 8787:8787 \
      -v $(pwd)/sql_data:/data \
      -e ENCRYPTION_SECRET=your-encryption-key \
      -e NODE_ENV=production \
      -e RUNTIME_ENV=docker \
      dragon730/cloudpaste-backend:latest
    

    记录部署URL(如http://your-server-ip:8787),前端部署时将需要此地址。

⚠️ 安全提示:务必自定义ENCRYPTION_SECRET并妥善保管,该密钥用于加密敏感数据。

前端Docker部署

前端使用Nginx提供服务,并在启动时配置后端API地址。

docker run -d --name cloudpaste-frontend \
  -p 80:80 \
  -e BACKEND_URL=http://your-server-ip:8787 \
  dragon730/cloudpaste-frontend:latest

⚠️ 注意:BACKEND_URL必须包含完整URL(含协议http://或https://) ⚠️ 安全提示:系统初始化后请立即修改默认管理员密码(用户名:admin,密码:admin123)。

Docker镜像更新

当项目发布新版本时,可按以下步骤更新Docker部署:

  1. 拉取最新镜像

    docker pull dragon730/cloudpaste-backend:latest
    docker pull dragon730/cloudpaste-frontend:latest
    
  2. 停止并移除旧容器

    docker stop cloudpaste-backend cloudpaste-frontend
    docker rm cloudpaste-backend cloudpaste-frontend
    
  3. 使用相同run命令启动新容器(保留数据目录与配置)

Docker Compose一键部署

使用Docker Compose可一键部署前后端服务,是最简便的推荐方式。

  1. 创建docker-compose.yml文件
version: "3.8"

services:
  frontend:
    image: dragon730/cloudpaste-frontend:latest
    environment:
      - BACKEND_URL=https://xxx.com # Fill in the backend service address
    ports:
      - "8080:80" #"127.0.0.1:8080:80"
    depends_on:
      - backend # Depends on backend service
    networks:
      - cloudpaste-network
    restart: unless-stopped

  backend:
    image: dragon730/cloudpaste-backend:latest
    environment:
      - NODE_ENV=production
      - RUNTIME_ENV=docker
      - PORT=8787
      - ENCRYPTION_SECRET=custom-key # Please modify this to your own security key
    volumes:
      - ./sql_data:/data # Data persistence
    ports:
      - "8787:8787" #"127.0.0.1:8787:8787"
    networks:
      - cloudpaste-network
    restart: unless-stopped

networks:
  cloudpaste-network:
    driver: bridge
  1. 启动服务
docker-compose up -d

⚠️ 安全提示:系统初始化后请立即修改默认管理员密码(用户名:admin,密码:admin123)。

  1. 访问服务

前端:http://your-server-ip:80 后端:http://your-server-ip:8787

Docker Compose更新

需要更新至新版本时:

  1. 拉取最新镜像

    docker-compose pull
    
  2. 使用新镜像重建容器(保留数据卷)

    docker-compose up -d --force-recreate
    

💡 提示:如有配置变更,可能需要备份数据并修改docker-compose.yml文件

Nginx反向代理示例

server {
    listen 443 ssl;
    server_name paste.yourdomain.com;  # Replace with your domain name

    # SSL certificate configuration
    ssl_certificate     /path/to/cert.pem;  # Replace with certificate path
    ssl_certificate_key /path/to/key.pem;   # Replace with key path

    # Frontend proxy configuration
    location / {
        proxy_pass http://localhost:80;  # Docker frontend service address
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # Backend API proxy configuration
    location /api {
        proxy_pass http://localhost:8787;  # Docker backend service address
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        client_max_body_size 0;

        # WebSocket support (if needed)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # WebDAV Configuration
    location /dav {
        proxy_pass http://localhost:8787/dav;  # Points to your backend service

        # WebDAV necessary headers
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # WebDAV method support
        proxy_pass_request_headers on;

        # Support all WebDAV methods
        proxy_method $request_method;

        # Necessary header processing
        proxy_set_header Destination $http_destination;
        proxy_set_header Overwrite $http_overwrite;

        # Handle large files
        client_max_body_size 0;

        # Timeout settings
        proxy_connect_timeout 3600s;
        proxy_send_timeout 3600s;
        proxy_read_timeout 3600s;
    }
}

⚠️ 安全提示:建议配置HTTPS及反向代理(如Nginx)以增强安全性。

👉 S3跨域配置指南

R2 API 获取与跨域配置

  1. 登录 Cloudflare 控制面板

  2. 点击 R2 存储并创建存储桶

  3. 创建 API 令牌 R2api R2rw

  4. 创建后保存所有数据,后续会用到

  5. 配置跨域规则:点击对应存储桶,点击设置,按如下示例编辑 CORS 策略:

[
  {
    "AllowedOrigins": ["http://localhost:3000", "https://replace-with-your-frontend-domain"],
    "AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
    "AllowedHeaders": ["*"],
    "ExposeHeaders": ["ETag"],
    "MaxAgeSeconds": 3600
  }
]

B2 API 获取与跨域配置

  1. 若没有 B2 账号,请先注册,然后创建存储桶 B2账号注册

  2. 侧边栏点击 Application Key,创建密钥并参照图示操作 B2key

  3. 配置 B2 跨域;B2 跨域配置较为复杂,请注意 B2cors

  4. 可先尝试方案 1 或 2,进入上传页面测试能否上传。若 F12 控制台显示跨域错误,则采用方案 3。永久解决方案请直接使用方案 3。

    B21

关于方案 3 配置,由于面板无法配置,需手动配置,请下载 B2 CLI 工具。详情参考:"https://docs.cloudreve.org/zh/usage/storage/b2"。

下载后,在对应下载目录 CMD 中输入以下命令:

b2-windows.exe account authorize   //Log in to your account, following prompts to enter your keyID and applicationKey
b2-windows.exe bucket get <bucketName> //You can execute to get bucket information, replace <bucketName> with your bucket name

Windows 配置使用 ".\b2-windows.exe xxx", Python CLI 类似:

b2-windows.exe bucket update <bucketName> allPrivate --cors-rules "[{\"corsRuleName\":\"CloudPaste\",\"allowedOrigins\":[\"*\"],\"allowedHeaders\":[\"*\"],\"allowedOperations\":[\"b2_upload_file\",\"b2_download_file_by_name\",\"b2_download_file_by_id\",\"s3_head\",\"s3_get\",\"s3_put\",\"s3_post\",\"s3_delete\"],\"exposeHeaders\":[\"Etag\",\"content-length\",\"content-type\",\"x-bz-content-sha1\"],\"maxAgeSeconds\":3600}]"

替换为你的存储桶名称。跨域允许的 allowedOrigins 可根据需求配置,此处为允许全部。

  1. 跨域配置完成

MinIO API 获取与跨域配置

  1. 部署 MinIO 服务

    使用以下 Docker Compose 配置(参考)快速部署 MinIO:

    version: "3"
    
    services:
      minio:
        image: minio/minio:RELEASE.2025-02-18T16-25-55Z
        container_name: minio-server
        command: server /data --console-address :9001 --address :9000
        environment:
          - MINIO_ROOT_USER=minioadmin # 管理员用户名
          - MINIO_ROOT_PASSWORD=minioadmin # 管理员密码
          - MINIO_BROWSER=on
          - MINIO_SERVER_URL=https://minio.example.com # S3 API 访问地址
          - MINIO_BROWSER_REDIRECT_URL=https://console.example.com # 控制台访问地址
        ports:
          - "9000:9000" # S3 API 端口
          - "9001:9001" # 控制台端口
        volumes:
          - ./data:/data
          - ./certs:/root/.minio/certs # SSL 证书(如需)
        restart: always
    

    运行 docker-compose up -d 启动服务。

  2. 配置反向代理(参考)

    为确保 MinIO 正常工作,特别是文件预览功能,需正确配置反向代理。推荐 OpenResty/Nginx 设置:

    MinIO S3 API 反向代理 (minio.example.com)

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    
        # HTTP 优化
        proxy_http_version 1.1;
        proxy_set_header Connection "";  # 启用 HTTP/1.1 长连接
    
        # 关键:解决 403 错误 & 预览问题
        proxy_cache off;
        proxy_buffering off;
        proxy_request_buffering off;
    
        # 无文件大小限制
        client_max_body_size 0;
    }
    

    MinIO 控制台反向代理 (console.example.com)

    location / {
        proxy_pass http://127.0.0.1:9001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    
        # WebSocket 支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    
        # 关键设置
        proxy_cache off;
        proxy_buffering off;
    
        # 无文件大小限制
        client_max_body_size 0;
    }
    
  3. 访问控制台创建存储桶 & 访问密钥

    详细配置参考官方文档:
    https://min.io/docs/minio/container/index.html
    中文:https://min-io.cn/docs/minio/container/index.html

    minio-1

  4. 额外配置(可选)

    允许的来源必须包含你的前端域名。
    minio-2

  5. 在 CloudPaste 中配置 MinIO

    • 登录 CloudPaste 管理面板
    • 进入 "S3 存储设置" → "添加存储配置"
    • 选择 "其他 S3 兼容服务" 作为提供商
    • 输入详细信息:
      • 名称:自定义名称
      • 终端地址:MinIO 服务地址(如 https://minio.example.com
      • 存储桶名称:预先创建的存储桶
      • 访问密钥 ID:你的 Access Key
      • 密钥:你的 Secret Key
      • 区域:留空
      • 路径样式访问:必须启用!
    • 点击 "测试连接" 验证
    • 保存设置
  6. 故障排除

    • 注意:若使用 Cloudflare 的 CDN,可能需要添加 proxy_set_header Accept-Encoding "identity",且有缓存问题需考虑。建议仅使用 DNS 解析。
    • 403 错误:确保反向代理包含 proxy_cache offproxy_buffering off
    • 预览问题:检查 MINIO_SERVER_URLMINIO_BROWSER_REDIRECT_URL 是否正确设置
    • 上传失败:检查 CORS 设置;允许的来源必须包含前端域名
    • 控制台无法访问:验证 WebSocket 配置,特别是 Connection "upgrade"

更多 S3 相关配置即将到来......

👉 WebDAV 配置指南

WebDAV 配置与使用指南

CloudPaste 提供简单的 WebDAV 协议支持,可将存储空间挂载为网络驱动器,方便通过文件管理器直接访问和管理文件。

WebDAV 服务基本信息

  • WebDAV 基础地址https://你的后端域名/dav
  • 支持的认证方式
    • 基础认证(用户名+密码)
  • 支持的权限类型
    • 管理员账号 - 完整操作权限
    • API 密钥 - 需启用挂载权限(mount_permission)

权限配置

1. 管理员账号访问

使用管理员账号和密码直接访问 WebDAV 服务:

  • 用户名:管理员用户名
  • 密码:管理员密码

2. API 密钥访问(推荐)

更安全的访问方式,建议创建专用 API 密钥:

  1. 登录管理界面
  2. 进入 "API 密钥管理"
  3. 新建 API 密钥,确保勾选 "挂载权限"
  4. 使用方式:
    • 用户名:API 密钥值
    • 密码:与用户名相同的 API 密钥值

NGINX 反向代理配置

若使用 NGINX 作为反向代理,需添加特定 WebDAV 配置以确保所有 WebDAV 方法正常工作:

# WebDAV Configuration
location /dav {
    proxy_pass http://localhost:8787;  # Points to your backend service

    # WebDAV necessary headers
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # WebDAV method support
    proxy_pass_request_headers on;

    # Support all WebDAV methods
    proxy_method $request_method;

    # Necessary header processing
    proxy_set_header Destination $http_destination;
    proxy_set_header Overwrite $http_overwrite;

    # Handle large files
    client_max_body_size 0;

    # Timeout settings
    proxy_connect_timeout 3600s;
    proxy_send_timeout 3600s;
    proxy_read_timeout 3600s;
}

常见问题与解决方案

  1. 连接问题

    • 确认 WebDAV URL 格式正确
    • 验证认证凭据是否有效
    • 检查 API 密钥是否具备挂载权限
  2. 权限错误

    • 确认账号具备所需权限
    • 管理员账号应具备完整权限
    • API 密钥需单独启用挂载权限
  3. ⚠️⚠️ WebDAV 上传问题

    • 预签名上传模式下需注意对应 S3 存储的跨域配置
    • WebDAV 自动推荐模式下,小于 10MB 文件使用直传模式,10-50MB 文件使用分片上传模式,大于 50MB 文件使用预签名上传模式
    • 关于 Cloudflare Worker 上传限制,建议使用预签名或直传模式,避免使用分片上传
    • Docker 部署只需注意 nginx 代理配置,任何上传模式均可
    • Windows、Raidrive 等客户端暂不支持拖拽上传,其余功能正常

🔧 技术栈

前端

  • 框架:Vue.js 3 + Vite
  • 样式:TailwindCSS
  • 编辑器:Vditor
  • 国际化:Vue-i18n
  • 图表:Chart.js + Vue-chartjs

后端

  • 运行时:Cloudflare Workers
  • 框架:Hono
  • 数据库:Cloudflare D1 (SQLite)
  • 存储:多种 S3 兼容服务(支持 R2、B2、AWS S3)
  • 认证:JWT 令牌 + API 密钥

💻 开发

API 文档

API 文档

服务器直传文件 API 文档 - 服务器直传文件接口的详细说明

本地开发环境搭建

  1. 克隆项目仓库

    git clone https://github.com/ling-drag0n/cloudpaste.git
    cd cloudpaste
    
  2. 后端设置

    cd backend
    npm install
    # 初始化 D1 数据库
    wrangler d1 create cloudpaste-db
    wrangler d1 execute cloudpaste-db --file=./schema.sql
    
  3. 前端设置

    cd frontend
    npm install
    
  4. 配置环境变量

    • backend 目录创建 wrangler.toml 文件设置开发环境变量
    • frontend 目录配置 .env.development 文件设置前端环境变量
  5. 启动开发服务器

    # 后端
    cd backend
    npm run dev
    
    # 前端(另开终端)
    cd frontend
    npm run dev
    

项目结构

CloudPaste/
├── frontend/                # Frontend Vue.js application
│   ├── src/                 # Source code
│   │   ├── components/      # Vue components
│   │   ├── api/             # API clients and services
│   │   ├── i18n/            # Internationalization resource files
│   │   ├── utils/           # Utility functions
│   │   └── assets/          # Static assets
│   └── ...
└── backend/                 # Cloudflare Workers backend
    ├── worker.js            # Main Worker file
    ├── schema.sql           # D1 database schema
    └── ...

自定义 Docker 构建

如需自定义 Docker 镜像或在开发时调试,可按以下步骤手动构建:

  1. 构建后端镜像

    # 在项目根目录执行
    docker build -t cloudpaste-backend:custom -f docker/backend/Dockerfile .
    
    # 运行自定义构建的镜像
    docker run -d --name cloudpaste-backend \
      -p 8787:8787 \
      -v $(pwd)/sql_data:/data \
      -e ENCRYPTION_SECRET=development-test-key \
      cloudpaste-backend:custom
    
  2. 构建前端镜像

    # 在项目根目录执行
    docker build -t cloudpaste-frontend:custom -f docker/frontend/Dockerfile .
    
    # 运行自定义构建的镜像
    docker run -d --name cloudpaste-frontend \
      -p 80:80 \
      -e BACKEND_URL=http://localhost:8787 \
      cloudpaste-frontend:custom
    
  3. 开发环境 Docker Compose

    创建 docker-compose.dev.yml 文件:

    version: "3.8"
    
    services:
      frontend:
        build:
          context: .
          dockerfile: docker/frontend/Dockerfile
        environment:
          - BACKEND_URL=http://backend:8787
        ports:
          - "80:80"
        depends_on:
          - backend
    
      backend:
        build:
          context: .
          dockerfile: docker/backend/Dockerfile
        environment:
          - NODE_ENV=development
          - RUNTIME_ENV=docker
          - PORT=8787
          - ENCRYPTION_SECRET=dev_secret_key
        volumes:
          - ./sql_data:/data
        ports:
          - "8787:8787"
    

    启动开发环境:

    docker-compose -f docker-compose.yml up --build
    

📄 许可证

Apache License 2.0

本项目采用 Apache License 2.0 许可证 - 详见 LICENSE 文件。

❤️ 贡献

  • 赞助:维护项目不易。如果你喜欢这个项目,不妨给作者一点鼓励。你的每一份支持都是我持续前进的动力~

Star 历史

Star History Chart

如果你觉得项目不错,希望可以给个免费的 star✨✨,非常感谢!