Skip to content

系统设置

CloudPaste 提供了丰富的系统设置选项,让您可以根据需要自定义系统的各项功能。

全局设置

文件上传页限制设置

最大上传文件大小: 此功能仅对上传页面生效,挂载浏览页无限制

新文件默认使用代理: 在上传页面所上传后的文件,文件管理页将显示该文件,如开启该功能则上传的文件分享链接默认是由Worker代理去加载(如果是docker部署那就是对应服务器代理).如关闭,那默认的分析链接就是指向S3存储直链的链接。

文件覆盖模式: 上传的文件回到对应存储桶中,如开启:存储桶中对应文件要是有相同文件名则会直接覆盖,如关闭:存储桶中对应文件要是有相同文件名不会覆盖,会在末尾以document-a1B2c3.pdf增加额外标识。

代理签名设置

此处的全局签名是你在对应挂载管理中的挂载点下开启 web 代理才有用的。打个比方: 你的后端域名是 xxx。你访问对应挂载点下的文件,分几种情况:

对应挂载点中:

不开启web代理: 签名没有作用,访问的所有文件都是S3直链形式,流量不走后端。

开启web代理,不开启签名:访问的所有文件都是cf中转,流量走后端(cf)。同时对应的预览地址为: “https://xxx/api/p/挂载点/文件名” 。这个预览地址是永久。

开启web代理,开启签名: 同理,但是地址是 “https://xxx/api/p/挂载点/文件名sign=xxxxxxxxxx&ts=1xxxx” 的形式, 签名过期后预览地址也会销毁 ,若签名时间为0 则是永久地址。

如挂载点和全局都设置了签名的时间,那么按照覆盖规则是: 挂载点 > 全局设置。

预览设置

基础文件类型

配置哪些扩展名的文件可以预览,用逗号分隔:

  • 文本类型:txt,md,go,tsx,log,json 等
  • 图片类型:jpg,jpeg,png,gif,webp,heic 等(支持 HEIC 和 Live Photo 实况图片【文件夹下必须得有同名的图片和视频文件才可触发实况】)
  • 视频类型:mp4,webm,ogg,mov 等
  • 音频类型:mp3,wav,m4a,flac 等
  • Office 类型:doc,docx,xls,xlsx,ppt,pptx(支持本地渲染 docx/xlsx/pptx,其余通过微软/谷歌在线服务/第三方服务)
  • epub/mobi/azw3/fb2/cbz 类型: 支持这些类型在线预览
  • 压缩包类型:zip,rar,7z,tar,gz,bz2,xz,tar.gz,tar.bz2,tar.xz 等
  • 其他类型:包括但不限于obj(3D),xmind,dwg, dxf(CAD)等等预览(需要安装第三方服务来支持渲染,如KKFileView)

如遇到文件无法预览,可在对应位置加上扩展名,只要浏览器支持即可预览。

预览规则编辑器

预览规则用于控制特定文件的预览方式和预览服务。

作用:

  • 为不同文件设置专门的预览方式(如 README 用 Markdown 预览)
  • 为同一文件提供多个预览选项(如 Office 文件可选微软或谷歌预览)
  • 通过优先级控制规则匹配顺序

两种编辑模式:

  1. 可视化模式(推荐):通过表单界面配置规则

    • 拖拽调整规则优先级
    • 展开/折叠规则卡片
    • 添加/删除预览服务
  2. JSON 模式(高级):直接编辑 JSON 配置

规则包含:

  • 优先级:数字越小越优先(如 1 比 10 优先)
  • 匹配条件:扩展名(如 pdf,docx)或正则表达式(如 /^readme$/i
  • 预览类型:text、image、video、audio、pdf、office、epub、archive、iframe、download
  • 预览服务:native(项目原生)、microsoft(Office Online)、google(谷歌文档)或自定义 URL

常见场景:

  1. 多预览服务:为 Office 文件添加微软和谷歌两种预览选项,用户可在预览时切换
  2. 特殊文件处理:让无扩展名的 README 文件用 Markdown 预览
  3. 禁止预览:某些敏感文件(如 .key、.pem)只允许下载不预览

URL 模板变量:

系统支持 7 个模板变量,用于在预览服务 URL 中替换为实际值:

变量编码方式说明使用场景
$name无编码原始文件名URL 路径中的文件名
$e_nameURL 编码编码后的文件名查询参数中的文件名
$url无编码原始预览 URL少数服务接受原始 URL
$e_urlURL 编码编码后的预览 URL最常用,作为查询参数
$e_download_urlURL 编码编码后的下载 URL需要下载链接的服务
$b64e_urlBase64+URL 编码Base64 编码后再 URL 编码的预览 URL需要 Base64 格式的服务
$b64e_download_urlBase64+URL 编码Base64 编码后再 URL 编码的下载 URL需要 Base64 格式的下载链接

使用示例:

微软 Office Online(使用 URL 编码):

https://view.officeapps.live.com/op/embed.aspx?src=$e_url

谷歌文档查看器(使用 URL 编码):

https://docs.google.com/viewer?url=$e_url&embedded=true

自定义服务(需要 Base64 编码):

https://your-service.com/preview?file=$b64e_url

在此提供外部预览服务KKFileView教程

官方部署教程:https://kkview.cn/zh-cn/docs/home.html

HuggingFace 部署(自用即可):

dockerfile
FROM ymlisoft/kkfileview

USER root

RUN apt-get update && apt-get install -y xvfb && rm -rf /var/lib/apt/lists/*

ENV SERVER_PORT=7860
ENV KKFILEVIEW_SECURITY_TRUST_HOST=default

RUN printf '#!/bin/bash\n\
echo "=== Environment Variables ==="\n\
echo "SERVER_PORT: $SERVER_PORT"\n\
echo "KKFILEVIEW_SECURITY_TRUST_HOST: $KKFILEVIEW_SECURITY_TRUST_HOST"\n\
echo ""\n\
echo "Starting Xvfb..."\n\
Xvfb :99 -screen 0 1024x768x24 &\n\
export DISPLAY=:99\n\
sleep 2\n\
echo "Starting kkFileView on port 7860..."\n\
/opt/kkFileView/bin/kkFileView --server.port=7860\n' > /start.sh && \
chmod +x /start.sh

EXPOSE 7860

CMD ["/start.sh"]

部署后在对应系统设置下的预览设置中规则添加:

  • 规则ID:随意填写
  • 预览类型:iframe
  • 匹配扩展名:只要KKFileView支持的任意文件类型即可(具体看官方文档)
  • 预览器列表:https://你的域名/onlinePreview?url=$b64e_url

站点设置

站点标题

可自定义站点标题,用于页面标题和浏览器标题。

站点图标

可自定义站点图标,用于浏览器标签页和 favicon。

页脚内容

可自定义页脚内容,用于显示在页面底部。不填则不显示。

公告栏

可自定义公告栏内容,用于在页面首页显示弹出公告。可选关闭。

自定义头部

可自定义页面头部内容,用于在页面顶部显示。

比如:

👉 点击展开:自定义头部示例
<!--Polyfill支持-->
<script src="https://polyfill.alicdn.com/v3/polyfill.min.js?features=String.prototype.replaceAll"></script>

<!--引入字体,全局字体使用-->
<link rel="stylesheet" href="https://npm.elemecdn.com/lxgw-wenkai-webfont@1.1.0/lxgwwenkai-regular.css" />

<!--不蒜子计数器-->
<script async src="https://busuanzi.9420.ltd/js"></script>

<!-- Font Awesome图标字体-->
<link type="text/css" rel="stylesheet" href="https://npm.elemecdn.com/font6pro@6.3.0/css/fontawesome.min.css" media="all" />
<link href="https://npm.elemecdn.com/font6pro@6.3.0/css/all.min.css" rel="stylesheet" />

<style>
/* 设置CSS变量 - 这是关键! */
:root {
  /* 亮色模式背景图 */
  --custom-bg-light: url("https://images.unsplash.com/photo-1506905925346-21bda4d32df4?ixlib=rb-4.0.3&auto=format&fit=crop&w=1920&q=80");
  /* 暗色模式背景图 */
  --custom-bg-dark: url("https://images.unsplash.com/photo-1419242902214-272b3f66ee7a?ixlib=rb-4.0.3&auto=format&fit=crop&w=1920&q=80");
  /* 表面透明效果 */
  --custom-surface-light: rgba(255, 255, 255, 0.5);
  --custom-surface-dark: rgba(0, 0, 0, 0.5);
  /* 文字颜色 */
  --custom-text-light: rgb(17, 24, 39);
  --custom-text-dark: rgb(243, 244, 246);
}

/* 全局字体设置 */
* {
  font-family: 'LXGW WenKai', -apple-system, BlinkMacSystemFont, sans-serif !important;
  font-weight: bold !important;
}

/* 背景图片设置 */
.bg-custom-bg-50 {
  background-image: var(--custom-bg-light) !important;
  background-repeat: no-repeat !important;
  background-size: cover !important;
  background-attachment: fixed !important;
  background-position: center !important;
}

.bg-custom-bg-900 {
  background-image: var(--custom-bg-dark) !important;
  background-repeat: no-repeat !important;
  background-size: cover !important;
  background-attachment: fixed !important;
  background-position: center !important;
}

/* 透明效果 */
.bg-custom-surface,
.bg-custom-surface-dark,
.card {
  backdrop-filter: blur(10px) !important;
  border: 1px solid rgba(255, 255, 255, 0.2) !important;
  border-radius: 12px !important;
}

/* 按钮透明效果 */
.btn-primary, .btn-secondary {
  backdrop-filter: blur(10px) !important;
  border: 1px solid rgba(255, 255, 255, 0.2) !important;
}

/* 输入框透明效果 */
.form-input {
  backdrop-filter: blur(10px) !important;
  border: 1px solid rgba(255, 255, 255, 0.2) !important;
}

/* 代码块透明效果 */
pre {
  background-color: rgba(255, 255, 255, 0.1) !important;
  backdrop-filter: blur(10px) !important;
}
</style>

自定义body

可自定义页面body内容,在此处设置的任何内容都会自动放置在网页正文的末尾。

👉 点击展开:自定义body示例
<style>
.cloudpaste-custom-footer {
  margin-top: auto;
  padding: 16px 0;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  background: rgba(0, 0, 0, 0.05);
  backdrop-filter: blur(8px);
  text-align: center;
  font-size: 11px;
  opacity: 0.9;
}

.cloudpaste-stats {
  display: flex;
  justify-content: center;
  gap: 15px;
  margin-top: 8px;
  flex-wrap: wrap;
}

.cloudpaste-stats span {
  color: #60a5fa;
  font-weight: bold;
}

.hitokoto-text {
  font-style: italic;
  margin-bottom: 8px;
  color: rgba(255, 255, 255, 0.9);
  line-height: 1.4;
}

@media (max-width: 640px) {
  .cloudpaste-stats {
    gap: 10px;
    font-size: 10px;
  }
}
</style>

<div class="cloudpaste-custom-footer">
  <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
    <div class="hitokoto-text">
      <span id="hitokoto_text">"人生最大的遗憾,就是在最无能为力的时候遇到一个想要保护一生的人."</span>
    </div>
    <div class="cloudpaste-stats" id="busuanzi-container">
      <span>本页访问 <span id="busuanzi_page_pv">-</span> 次</span>
      <span>总访问量 <span id="busuanzi_site_pv">-</span> 次</span>
      <span>访客数 <span id="busuanzi_site_uv">-</span> 人</span>
    </div>
    <div style="margin-top: 8px; font-size: 10px; opacity: 0.6;">
      Powered by CloudPaste © 2025
    </div>
  </div>
</div>

<!-- 一言API -->
<script src="https://v1.hitokoto.cn/?encode=js&select=%23hitokoto_text" defer></script>

<!-- 不蒜子统计 -->
<script async src="https://busuanzi.9420.ltd/js"></script>

基于 Apache License 2.0 许可发布