使用指南

管理后台

管理后台各页面的用途、管理员与普通用户的权限差别、配额与上传频控、上传 Token 的完整生命周期,以及登录、会话与界面偏好。

登录

管理后台就在站点根路径,例如 https://img.example.com/。

首次启动时内置管理员的登录名是 admin,密码是出厂默认值 imgyoung123。用它登录后,后台会直接进入「设置管理员密码」页。 这项限制在服务端执行:仍用出厂密码的会话只能改密、退出和查看当前账号,其余后台接口(包括后台上传、签发 Token、管理渠道)一律返回 403 须先修改出厂默认密码,不论请求来自后台页面还是脚本。 默认密码是公开的,实例暴露到公网之前务必先完成这一步。忘记密码见 重置密码。

没有用来设置初始管理员密码的环境变量,也没有由环境变量提供的引导 Token:这类一次性种子设过一次就不再起作用,却会一直留在部署文件里,让人分不清值从哪来。没有界面的部署,首次登录改密后在后台签发 Token 即可。

页面导览

左侧栏分三组,普通用户只看得到其中一部分:

分组页面谁能看到
内容总览、图片、上传 Token全部用户
站点存储渠道、用户、疑似重复、待清理、审计日志管理员
其他使用指南全部用户
其他设置管理员

顶栏有页面搜索(⌘K / Ctrl+K 打开命令面板)、语言切换与主题切换。侧栏底部的账号菜单里有「修改密码」与「退出登录」。

总览

管理员看到全站概况:

  • 指标卡:图片、存储用量(原图字节合计,副本不重复计)、用户、访问次数(附估算流量)、待清理、疑似重复。
  • 「存储渠道」:每个渠道的健康状态与已存字节。
  • 「告警」:当前未恢复的告警,条件不再成立时自动恢复;「历史记录」跳到设置里的告警历史。告警类型有渠道不健康、副本补齐失败、渠道用量超阈值、渠道排空失败、备份失败。
  • 「热门图片」:按访问次数排序的前 10 张。
  • 本机磁盘以外没有健康的渠道时,顶部显示「数据只存在这台主机上」:图片副本和元数据库快照都只在这台主机上,主机损坏即全部丢失。判定条件是找不到一个健康、不在清理中、且驱动不是 local 的渠道,一个健康渠道都没有时同样显示。添加一个对象存储或网盘渠道即可解除;已经有了,就到「存储渠道」页查看它为什么不健康。

普通用户看到自己的图片数、已用空间与配额。站里还没有图片时,总览显示三步快速开始。

访问次数与估算流量的口径见 访问图片。

图片

图片网格,管理员看全站(「全站图片」),普通用户只看自己的(「我的图片」)。

  • 搜索:按短 ID 或文件名。
  • 「筛选」:「上传来源 Token」、「上传时间」、「仅看已豁免」;管理员另有「归属用户」。
  • 「选择」后可多选「批量删除」,一次最多 100 张。
  • 「上传图片」:后台直接上传,见 上传。

点开一张图是详情抽屉:

  • 「分享链接」:完整链接,「复制为」URL、Markdown、HTML、BBCode;下方列出可用的缩放宽度,点一下复制带 ?w= 的链接。设置了对外站点地址时链接用它的域名。
  • 元数据:格式、尺寸、大小、归属、来源 Token、引用数、上传时间、最近访问、访问次数、到期(含「修改有效期」)、清理豁免、SHA-256。
  • 「副本分布」:这张图在每个渠道上的副本状态(待补齐 / 上传中 / 就绪 / 失败)、尝试次数与最近错误。
  • 「删除」;管理员另有「审计记录」,跳到以这张图为目标的审计日志。

有效期与清理豁免的含义见 生命周期与查重。

上传 Token

签发与管理数据接口的凭证,见下文 上传 Token。

存储渠道

新建、编辑、探测与删除渠道,设置优先级、加密与 302 直链,查看各渠道的副本水位。表单字段与各类渠道的配置细节见 存储渠道,这里只列使用后台时要知道的几点:

  • 网盘模板在授权控件上方有「应用 Client ID」「应用 Client Secret」两个字段,随渠道配置加密保存。一键授权必须先填 Client ID;粘贴令牌时,如果授权用的是自建应用也要填,因为令牌续期要用签发它的同一个应用。
  • 编辑渠道时,凭证类参数显示为掩码:除密码、密钥、令牌外,访问密钥 ID、WebDAV 用户名、Client ID 等也是。不改就保留原值。
  • 渠道装载失败(配置解不开、驱动构造失败等)时,列表里显示为「异常」,原因以 装载失败: 开头。健康检查每轮自动重试装载,「重新探测」也会先重试装载;装上且探测通过后才恢复健康、重新参与读写。
  • 设置里「新渠道默认加密」开启时,新建渠道的「服务端加密」保持「继承全局默认」就会加密,此时「允许 302 直链」不可用;要用直链,把服务端加密设为「强制关闭」。
  • 「测试连接」时如果服务商刷新了授权令牌,测试结论下方提示「服务商在测试时刷新了授权令牌,表单已换用新令牌,保存时提交的就是它;原令牌可能已失效。」,授权字段显示「已授权」,接着保存即可。编辑时沿用的已存令牌被刷新,会直接写回该渠道。
  • 渠道行菜单的「导出 rclone 配置」(清理中的渠道没有这一项)下载该渠道的 rclone 配置文件 imgyoung-channel-<渠道 ID>.rclone.conf,标准 rclone 凭它即可脱离 ImgYoung 读写这个渠道上的数据;加密渠道另有一个加密层远端,经它读出的就是明文。 文件里含渠道凭证与授权令牌(加密渠道还有解密密码),要和主密钥一样离线妥善保存;每次下载都记入审计日志。文件内容与用法见 渠道存储加密 与 存储渠道。

删除渠道时,弹窗里的「同时删除本服务写在该渠道上的数据」默认勾选,确认按钮是「删除并清理」:图片副本与元数据库快照在后台逐个删除(深探测留下的残留文件一并删除),期间渠道显示为「清理中」,删完自动移除;不是本服务写的文件不动。 取消勾选,按钮变为「仅移除」:渠道立即移除,远端的图片副本与元数据库快照原样保留,需要时自行到存储商处理。

「删除并清理」删对象失败时:

  • 第一次失败就把原因写进渠道的探测结果,在渠道列表里可见,同时开启「渠道排空失败」告警。单次清理任务超时、服务停机打断的不算失败。
  • 之后按退避间隔一直自动重试,不会停止;渠道临时不可用,恢复后会自己清完。
  • 凭证已失效或存储桶已不存在、再重试也删不掉时,对该渠道点「直接移除」:立即移除渠道,尚未删除的远端对象原样保留。确定删不掉的渠道,删除时也可以一开始就选「仅移除」。

用户

列出全部账号及其图片数、用量 / 配额、默认有效期。可以「建号」、「编辑」、「重置密码」、「删除」,见下文 角色与权限 与 配额与上传频控。

疑似重复与待清理

两个裁决队列:「疑似重复」并排比较感知哈希相近的图片对,决定合并或忽略;「待清理」列出长期无人访问的冷图,决定保留或删除。见 生命周期与查重。

审计日志

管理操作的只追加记录,可按「动作」、「操作者」(用户 ID)、「目标」(图片短 ID、渠道 ID、Token ID 等,精确匹配)与「时间范围」筛选。记录的动作:

对象动作
渠道新建渠道、编辑渠道、删除渠道、导出渠道 rclone 配置
Token签发 Token、吊销 Token、轮换 Token、删除 Token
用户新建用户、更新用户(含改密与重置密码)、删除用户
图片修改图片(有效期、清理豁免)、删除图片(含 S3 DeleteObject)
裁决合并重复图、忽略重复图
设置修改配置、添加防盗链白名单、移除防盗链白名单
数据导出数据、立即备份、恢复备份

上传本身与到期自动删除不记审计。保留期由「审计日志保留天数」audit_retention_days 决定,出厂 0 表示永久保留。

使用指南

后台内置的速查页,curl、PicGo、S3 客户端的配置示例里直接填好了当前站点的地址,所有用户可见。

设置

仅管理员可见,分四个标签:

  • 「运行配置」:全部运营配置,按访问与链接、上传限制、生命周期、按需处理、查重、可靠性与渠道、CDN 缓存清理、告警与审计分组;改完点「保存修改」即时生效,不需要重启。 页面下方的「引导配置」卡片只读展示环境变量(监听地址、数据目录、信任的反代网段、/metrics 放行网段)、服务端版本与内置的登录限速参数。见 配置。 网段类变量未设置时显示出厂默认网段;显式设为空串时,「信任的反代网段」显示「空:不采信任何转发头」,「/metrics 放行网段」显示「空:不对任何地址开放」。
  • 「防盗链」:Referer 白名单与「空 Referer 放行」开关,见 访问图片。
  • 「备份与导出」:元数据库快照按「备份间隔」自动写到每个健康渠道,各渠道各自保留最近几份。快照表列出快照、大小、时刻与「所在渠道」(持有它的渠道,按优先级排列),可「立即备份」、「下载」、「恢复」;另有「导出 JSON」导出全量元数据。 「立即备份」时有渠道没写成会报错,错误形如 备份失败:快照 imgyoung-….db 有 k/n 个渠道未写成: …,写成的渠道仍保留这份快照;没有健康渠道时报 没有健康渠道可存放快照。「下载」与「恢复」按优先级从持有该快照的健康渠道读取,读不到就换下一个。见 备份与恢复。
  • 「告警历史」:全部告警的开启与恢复记录。告警 Webhook 见 监控。

角色与权限

账号只能由管理员在「用户」页创建,不开放注册。角色有两种:

能力管理员普通用户
上传(Token、后台、S3)可以可以
查看、删除图片全站只限自己的
修改图片有效期全站只限自己的
设置清理豁免可以不可以
签发、轮转自己的 Token,查看自己 Token 的 S3 配置可以可以
查看、吊销、删除别人的 Token可以不可以
存储渠道、用户、疑似重复、待清理、审计日志、设置可以不可以

普通用户之间互相看不到对方的图片与 Token;访问别人的图片详情得到 404 图片不存在。图片链接本身是公开的,知道链接的人都能访问。

可以有多个管理员。内置管理员(用户 ID 为 default)受保护:不能被禁用、降级或删除,可以改名。任何管理员都不能删除自己。

在「用户」页:

  • 「建号」:登录名、初始密码(至少 8 位,建好即可登录)、角色、配额、默认有效期。
  • 「编辑」:改登录名、角色、配额、默认有效期,或勾选「禁用」。禁用立即结束该用户的全部会话,其 Token 也无法再上传。
  • 「重置密码」:设新密码,该用户的全部会话立即失效。
  • 「删除」:名下还有图片时拒绝,需先删掉图片;删除时其 Token 与会话一并删除,审计记录保留。

配额与上传频控

  • 配额:在建号或编辑时为每个用户设置,单位 MB 或 GB,留空或填 0 表示不限。按引用计全额:每张图都按其物理文件的完整大小计入,后台查重合并不减少已用量。口径只有这一种,也无法靠上传与别人相同的图来少计用量。上传后会超出配额时返回 403。 用户可在总览看到已用空间与配额,管理员在「用户」页的「用量 / 配额」列查看。
  • 上传频率上限:「设置 → 运行配置」的 upload_rate_per_min,对每个用户统一生效,出厂 0 表示不启用;同一用户经 Token、后台、S3 的上传共享额度。
  • 上传并发上限:max_concurrent_uploads,全站共享,出厂 8。

超限时的行为与状态码见 上传。

上传 Token

上传 Token 是数据接口(/api/upload、/api/upload/url)与 S3 协议的凭证,只能用于上传,不能登录后台、也不能调用后台接口。

凭证只有两种:后台用密码加会话,数据接口与 S3 用上传 Token(S3 的签名用的也是同一批 Token)。Token 不能调用后台接口,是为了把它泄露时的影响限制在「以这个用户的身份上传」,后台接口另有 CSRF 防护。Token 的权限也只有上传一种:每个客户端签发一枚、可以单独吊销,已经足以止损。

签发

在「上传 Token」页点「签发 Token」:

  • 「用途名称」:如 picgo、blog-script,最长 64 字节。同一用户的有效 Token 不能重名;同名的旧 Token 已过期时,签发新 Token 会自动吊销那条过期记录。
  • 「有效期」:永久、7 天、30 天、90 天或 365 天。到期后与吊销同样失效。

签发成功后弹窗显示 Token 明文(形如 imgy_ 加 43 个字符),只显示这一次,关掉就再也看不到。数据库只存它的 SHA-256 与前 12 个字符的识别前缀;Token 是高熵随机串,普通哈希即可,不需要密码那样的慢哈希。 用法是请求头 Authorization: Bearer <token>。

列表与状态

列表显示名称、识别前缀、状态(有效 / 已过期 / 已吊销)、到期、最近使用与签发时间。「最近使用」大约每分钟批量更新一次。 每张图记着经由哪个 Token 上传,「图片」页可以按「上传来源 Token」筛选。

行操作

点行末的「更多操作」:

操作适用作用
「S3 客户端配置」自己的有效 Token查看这枚 Token 对应的 S3 access key、secret 与端点,可以反复查看,见 上传客户端
「轮转」自己的有效 Token原子地签发一枚同名新 Token 并吊销旧的。新明文同样只显示一次;旧 Token 与它的 S3 凭证立即失效。原来是永久的仍为永久,原来有有效期的从现在起按同样时长重新计算
「吊销」有效 Token立即失效,使用它的客户端无法再上传,S3 凭证同步失效。记录保留
「删除记录」已吊销或已过期的 Token从列表移除,审计记录保留。有效的 Token 不能删除,需先吊销

管理员查看别人的 Token

管理员可以用「按用户查看」切换到任意用户的 Token 列表,对其中的 Token「吊销」或「删除记录」。 「轮转」与「S3 客户端配置」只对本人开放:它们会交出可用的凭证,对别人的 Token 执行等于接管对方的上传权限。

会话与安全

机制做法
密码存储argon2id(64 MiB 内存、3 轮、单线程),每个密码独立随机盐。密码至少 8 位
登录限速按客户端 IP 与登录名分别计:各允许连续 5 次尝试,之后每 12 秒恢复 1 次,超出返回 429。登录成功清零。经信任的反向代理时,客户端 IP 取自 X-Forwarded-For
防用户名枚举用户名不存在与密码错误返回同样的错误,校验耗时相近
会话登录后下发 256 位随机会话 ID,放在 HttpOnly、SameSite=Lax 的 cookie imgyoung_session 里,客户端到站点是 HTTPS 时加 Secure。服务端只存哈希,数据库泄露也不能据此冒用会话。有效期固定 30 天,不随使用延长
CSRF会话绑定一个 CSRF 令牌,所有改动状态的请求必须在 X-CSRF-Token 头里带上它,后台页面自动处理
出厂密码内置管理员仍用出厂默认密码时,服务端只放行改密、退出与查看当前账号,其余后台接口返回 403
改密「修改密码」需要旧密码;改完该用户全部设备下线,需要重新登录
禁用与重置禁用或重置密码立即结束该用户的全部会话;被禁用的用户无法登录,其 Token 全部失效
页面防护全站响应带 X-Frame-Options: DENY 与 X-Content-Type-Options: nosniff;后台页面另带内容安全策略(CSP):脚本与接口请求只允许来自本站,不允许被其他页面嵌入

HTTPS 判定与客户端 IP 都依赖反向代理的转发头,只有来自 IMGYOUNG_TRUSTED_PROXIES 网段的转发头才被采信。见 反向代理。

界面语言与主题

  • 语言:顶栏的语言按钮在简体中文与 English 之间切换。首次访问时按浏览器语言选择(中文环境用简体中文,其余用英文),之后记住你的选择一年。
  • 主题:顶栏的主题按钮可选浅色、深色、跟随系统,默认深色,选择同样会记住。

两项偏好都只保存在当前浏览器里,不随账号同步。

本页目录