常见问题
MT Photos收费吗?
MT Photos 服务端收费,支持试用1个月;
试用结束后,服务端将停止扫描新增的文件,App也将停止备份新的照片、视频;
苹果、安卓、鸿蒙App免费使用,下载地址请查看App下载;
服务端订阅可以换设备吗?
可以,在新的设备上安装好服务端后,重新绑定下激活码即可将订阅转到新设备上。
如需数据备份与迁移,请查看 如何备份MT Photos的数据、文件?
支持多用户使用吗?
支持,可以在【用户管理】中添加、管理用户;
支持哪些类型的图片、视频
支持图片的格式有:JPEG, HEIC, HEIF, HIF, PNG, GIF, BMP, TIFF, PSD, AVIF, WEBP
支持RAW照片的格式有:3FR, ARW, CR2, CR3, CRW, DCR, DCRAW,DNG, ERF, IIQ, K25, KDC, MEF, MRW, NEF, NRW, ORF, PEF, RAF, RAW, RMF, RW2, SR2, SRF, X3F
如果一个文件夹下有同名的jpg+raw格式文件,会合并显示
支持视频的格式有:MOV, MP4, MPEG, 3GP, M4V, WEBM, MKV, WMV, AVI, RM, RMVB, FLV, OGG, M2T, M2TS, MTS, VOB (其中MOV和MP4文件在App和网页支持播放,其他的格式需要生成转码文件或者调用外部播放器播放)
外网访问的安全性
访问方式
如果需要在局域网以外访问相册,可以使用以下方式访问:
- 1、有公网ip的情况下,使用
DDNS+路由器的端口映射(强烈建议申请ssl证书,然后开启https访问)- 开启HTTPS访问的方法
- 另外可以开启nginx的HTTP基本认证(Basic access authentication)来验证访问来源,网页和App中都支持HTTP基本认证;
- 开启HTTP基本认证后,任何访问来源都需要输入这个认证的账号密码,可以拦住一切非法访问,比如各种爬虫、漏洞扫描工具的访问;如果相册不需要对外分享链接访问建议开启;
- 2、如果没有公网IP,那么就需要使用
内网穿透(比如:frp、Zerotier等)或者异地组网(WireGuard等) 来访问内网的服务;
外网访问安全性分析表:从“夯”到“拉”
| 安全 | 技术方案 | 核心特征 | 风险/评价 |
|---|---|---|---|
| 夯 | 异地组网 | 服务不暴露在公网,通过加密隧道(如 Tailscale/WireGuard)访问。 | 极高:隐身模式,只有授权设备能连接,防御维度最全。 |
| 顶级 | HTTPS + Basic Auth | 传输层加密 + 强制性的 Web 访问身份核验。 | 较高:即便 URL 泄露,没有HTTP基本认证的账号密码也无法看到内容,防扫描。 |
| NPC | HTTPS 访问 | 仅通过 SSL/TLS 证书加密传输路径。 | 中等:防止了数据被窃听,但服务入口完全暴露,全看应用自身抗打能力。 |
| 拉 | HTTP 访问 | 全明文传输,无任何加密或防护。 | 极低:在公网上等同于“裸奔”,极易被中间人截获账号密码或被运营商劫持。 |
账号登录保护
针对登录接口防爆破的保护,登录接口默认一分钟中只能请求10次,超过后需要等待1分钟后再试;
如果需要提升这个次数上限,可以在容器的环境变量中配置LOGIN_RPM,比如 -e LOGIN_RPM=100,将一分钟内的请求上限提升到100次;
二步验证
另外还可以开启二步验证,进一步增加账号登录的安全性;
- 网页端点击 右上角的用户名 -> 二步验证 中开启
- App 点击 设置 -> 二步验证 中开启
登录日志
打开容器的日志,或者网页中打开系统配置底部的系统日志,可以看到用户的登录记录,比如:
User [root] logged in successfully, IP: 192.168.1.225, Time: Tue Nov 18 2025 10:31:20 GMT+0800 (中国标准时间)
如果配置了反向代理,请确认配置中有这些配置; 如果未添加,显示的IP为变成nginx所在服务器的ip
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
文件存储的安全性
3-2-1 备份原则:数据安全的“黄金法则”
3-2-1 原则 是确保数据永不丢失的核心策略,具体包含:
-
3 份副本: 除了原始数据,至少保留 2 份备份。
-
2 种介质: 将备份存储在不同的设备上(如:硬盘 + NAS 或 U盘)。
-
1 份异地: 必须有 1 份存放在物理上的不同地点(如:云存储或另一处住所)。
为什么它至关重要?
单一的备份无法应对所有风险。电脑坏了有备份,但如果发生火灾、盗窃或勒索软件攻击,本地的所有设备可能全军覆没。该原则通过冗余和空间隔离,对冲了硬件故障和灾难性意外,是你文件安全的最后一道防线。
RAID 不是备份
RAID 只能防御单块或部分硬盘的物理故障。如果发生误删除、勒索病毒加密、灾难性意外,RAID 上的数据会同时损坏。
功能更新计划
- 相册增加更多的自动添加、排除规则;
- 文件夹收藏功能
- iOS App备份增加相册选择
- App备份增加自动同步相册
- 增加API key管理
- 增加选中照片后堆叠显示
已支持的功能
- 时间线模式查看照片
- 文件夹视图查看照片
- 使用相册、收藏夹来整理照片
- 基于人脸识别自动生成人物相册
- 基于照片、视频exif中的GPS信息自动生成地点相册
- 基于内容识别自动生成场景相册
- 基于照片类型自动生成分类相册(屏幕截图、自拍照、视频、动态照片、RAW图片)
- 照片、相册的分享功能
- 支持动态照片的备份、展示(比如:iOS、安卓、鸿蒙、WindowsPhone 各平台的动态照片格式)
- App备份手机相册(支持选择备份位置、文件夹生成规则、按拍摄日期重命名等)
- 管理照片的标签、备注、评分
- 多用户管理
- 基于文件MD5的重复文件检查及清理
- App支持在后台备份照片
- App、网页增加对 HTTP基本认证 (Basic Authorization)的支持
- App、网页增加对 STUN内网穿透 访问的支持
- App、网页支持简体中文、繁体中文、英文3种语言的选择
- 登录增加二步验证
- 图片文字识别
- 基于OpenAI CLIP模型的以文搜图
浏览器端执行人脸识别、场景识别任务- 管理员整理人物相册
- 网页批量下载照片
- 批量修改图片的GPS信息
- 批量或单个修改拍摄日期
- App隐私锁
- 相册支持按人物、标签、文件夹创建及自动更新
- TV端App
- 那年今日功能
- 幻灯片播放功能
- 搜索增加更丰富的查询条件
- 隐藏图片功能
- 在相册内直接上传文件
- 根据图片相似度清理重复文件
- 相册的分享链接中支持上传文件
- 鸿蒙版本App
- 图片旋转功能
- 按年月分文件夹整理已上传的文件
- 管理员增加整理人物相册,合并人物、设置默认名称
什么样的照片会被识别为动态照片?
当一个文件夹下有同名的图片和视频时, 比如 IMG_001.HEIC 和 IMG_001.MOV ,会合并显示为动态照片
图片可以是JPG、HEIC、HEIF格式,视频可以是MP4、MOV格式
Docker容器启动后,无法访问页面
请查看容器的日志,确认容器内/config或者/upload是否有写入权限;
更多内容查看 常见错误及解决方法
无法访问授权服务器
请检查容器内是否能访问外网,一般是DNS解析错误导致的;
解决方法查看 DNS解析错误
App开启备份后,不备份照片
请检查开启备份时,是否选了【仅备份新照片】
App备份是如何判断文件已存在的
当照片备份设置中,重名文件 为 跳过 的情况下;
App在备份时,会检查服务端对应的文件夹下有没有同名且MD5值相同的文件;
如果存在,则会使用服务端已存在的文件,不上传这个文件;
App备份时,文件上传到服务端哪个文件夹 由这些设置决定:
- 1、备份目的地
- 2、目录风格
- 3、按拍摄日期重命名
比如: 备份目的地为 /upload/mt/iPhone 15; 目录风格 为默认; 按拍摄日期重命名为关闭状态;
假设:有一张2025-01-20号拍摄的照片,文件名为IMG_001.HEIC
那么这张照片会上传到 /upload/mt/iPhone 15/DCIM/2025/01/IMG_001.HEIC
App在备份时,服务端会检查有没有/upload/mt/iPhone 15/DCIM/2025/01/IMG_001.HEIC这个文件,如果存在,则根据文件大小和MD5值判断文件是否需要上传;
导入照片后,日期不对
请检查照片的exif信息中是否有拍摄日期 ( DateTimeOriginal 或者 MediaCreateDate)
(查看方法:MT Photos网页端,打开照片然后点击右上角信息按钮,在照片信息中有【查看文件EXIF信息】按钮);
当照片exif信息中没有拍摄日期,会尝试识别文件名称中是否包含日期;
如果以上2个日期都没有,那么最后会尝试识别照片路径中的日期及照片的最后修改日期;
文件路径支持以下这些格式:
- 文件路径日期格式1:2021/01/09
- /photos/2021/01/09/a.jpg
- 文件路径日期格式2:2009-02-14
- /photos/2009-02-14/a.jpg
文件名称支持以下这些格式:
- 文件名称日期格式1:xxx_20220810_171108
- /photos/upload/IMG_20220810_171108.jpg
- /photos/upload/IMG_2022-08-10 171108.jpg
- /photos/upload/IMG_2022_08_10 171108.jpg
- /photos/upload/IMG_2022.08.10 171108.jpg
- /photos/upload/IMG_2022.08.10 17.11.08.jpg
- /photos/upload/IMG_2022-08-10 17-11-08.jpg
- /photos/upload/IMG_2022_08_10_17_11_08.jpg
- 文件名称日期格式2:xxx_1611713414335
- /photos/upload/mmexport1611713414335.jpg
- /photos/upload/IMG_1655521800000.jpg
或者可以用NewFileTime这样的工具,批量修改照片的修改日期,然后点击【扫描图库】来更新照片的日期;
总结:照片的日期优先级为:exif信息中的拍摄日期 > 文件名中的日期 > 路径中的日期 > 文件最后修改日期
导入照片后,没有位置信息
查看照片Exif信息中是否有GPSLatitude、GPSLongitude这2项信息
在网页中打开照片的信息,然后点击查看EXIF信息
如果有这2项信息,在系统设置中配置了GPS信息识别,等待GPS识别任务处理完成即可显示位置
如果没有GPSLatitude、GPSLongitude或者这2项值为空,则需要检查原始照片是否有位置信息
手机相册内照片有位置,但是备份的照片没有位置信息
检查手机相册是否有安全分享、发送时抹除隐私信息、隐私保护之类的设置
比如:
MIUI 或 HyperOS 在手机相册的设置中,找到安全分享,然后关闭 默认抹除照片位置 和 默认抹除照片拍摄信息
ColorOS 在手机相册的设置中,找到发送时抹除隐私信息,然后关闭 抹除位置信息 和 抹除拍摄数据
从xmp文件中读取信息
MT Photos支持从相同文件夹下,与文件同名的xmp文件中读取备注、评分、拍摄日期、标签、地图位置这些Exif信息;
比如:
IMG_20241002_192802.jpg
IMG_20241002_192802.jpg.xmp
IMG_20241002_192816.mp4
IMG_20241002_192816.mp4.xmp
IMG_20241002_192910.HEIC
IMG_20241002_192910.HEIC.xmp
IMG_20241002_193005.MOV
IMG_20241002_193005.MOV.xmp
当在MT Photos内编辑文件的备注、评分、拍摄日期、标签、地图位置这些时,会将数据写入到同名的.xmp文件中;
xmp文件支持需要升级MT Photos版本至1.34.1或更高版本
如果需要关闭xmp文件识别和写入,可以在图库管理顶部的图库设置中关闭
浏览器中播放HEVC视频
在Windows中,需要安装HEVC扩展后,浏览器才能播放hevc视频;
安装步骤:
- 1、先安装hevc扩展,安装方法参考:https://www.bilibili.com/opus/872000729025347588
- 如果扩展下载失败,可以从 网盘分享 中下载 SW_DVD5_HEVC_Codec_64BIT_MultiLang_-11_MLF_X23-60420.ISO 解压后安装
- 2、浏览器的设置中,保持图形加速是开启的
- 3、刷新网页后播放视频
如果使用的是Edge浏览器,需要打开浏览器的设置,然后在 系统和性能 / 系统 中把增强视频关闭,增强视频和HEVC视频硬件解码有冲突会导致视频黑屏;
容器占用的内存很高
部分系统中会显示容器占用的内存比较多,比如超过3个G;
这个显示的内存占用会包含系统共享内存, 通过重启容器可以显示正常;
打开这个容器的终端,输入 top 可以查看内存 RES那一列的值;
一般没有识别任务时,智能识别或人脸识别容器 大概占用1百多MB内存;
如何备份MT Photos的数据、文件?
MT Photos需要备份的数据、文件包含以下几类:
- 1、数据库文件,文件位置:/config/pgsql (Windows服务端为 %AppData%\mt-photos-server\pgsql 文件夹)
- 2、生成的缩略图等缓存文件,文件位置:/config/cache (Windows服务端为选择的缓存文件夹)
- 3、手机App、网页端端上传的照片,文件位置:/upload (Windows服务端为选择的照片备份文件夹)
- 4、通过目录映射导入的照片,位置文件:自定义
注意: 这些路径都是指在容器内的路径,对于在宿主机中所在的路径,请结合各自docker容器的目录映射关系来查找。
1、备份数据库:
建议在 系统设置 -> 数据库备份 中开启自动备份;
另外也可以点击【生成数据库备份】,来生成数据库备份文件
如果点击生成数据库备份出错,可以参考这里的命令来创建备份文件: 从数据库导出到文件中
2、备份缓存文件:
/config/cache文件夹中的缩略图等文件,可以直接备份整个文件夹;
也可以选择不备份,当文件丢失后,可以通过系统维护工具中的【修复无法显示的缩略图】来重新生成缩略图。
3、备份上传的照片:
/upload文件夹,可以直接备份整个文件夹;
4、目录映射导入的照片:
备份照片所在的文件夹
使用反向代理后,App播放视频很慢
如果使用 ip:端口 作为服务端地址时,播放速度正常;但是使用反向代理后,App无法播放视频或很慢;
请查看 增加Range请求的支持
打开部分相册提示 could not resize shared memory segment
原因:
PostgreSQL 使用 动态共享内存 (Dynamic Shared Memory, DSM) 来处理并行查询(Parallel Queries)。在 Linux 系统中,这通常映射到 /dev/shm 目录。
Docker 容器默认分配给 /dev/shm 的空间非常小,通常只有 64MB。
当图库的照片数量多,执行某些查询时就会因为/dev/shm空间不足而报错。
比如:
FATAL: could not resize shared memory segment "/PostgreSQL.xxx": No space left on device
解决方法:
-
如果使用 docker run: 增加 --shm-size 参数:
docker run --name mt_photos -d --shm-size=1g [...此处省略其他的参数] mtphotos/mt-photos:latest -
如果使用 docker-compose, 在 mtphotos 服务下添加 shm_size 配置,然后重新构建;
version: "3" services: mtphotos: image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos:latest shm_size: 1gb # 增加这一行 container_name: mtphotos restart: always ports: - 8063:8063 # ... 省略其他无需改动的内容
MT Photos会收集隐私数据吗?
服务端不会收集任何个人信息,除了联网验证订阅状态,与官方服务器不会有别的请求;
当配置的GPS API之后,服务端会请求高德或mapbox的接口来识别GPS对应的城市信息;
App端集成了高德地图SDK(用于地图模式查看照片),SDK会收集位置信息、传感器信息、设备标识信息、设备参数及系统信息;
App详细隐私政策请查看隐私政策 ;
服务端支持断网使用吗?
默认的激活方式服务端一周至少需要联网验证一次,不支持完全离线使用;
如需要在局域网内离线运行,可以使用离线激活
需要联网验证的原因:
基于docker容器运行,无法基于硬件生成固定的唯一ID;
因此也无法避免一个订阅在多台机器上使用的情况;
所以需要定时联网来验证订阅状态;
如果联网验证服务器关了,功能是不是都不能用了?
- 只要还有用户在使用,联网验证服务器是不会关了的
- 如果联网验证服务器要关,肯定会提前把联网验证机制关闭
- 已有的功能肯定是可以继续使用的,因为功能都是由你部署的服务端提供的
会不会收集照片数据?
服务端不会收集任何照片数据,这也是MT Photos 存在的核心价值;
大家也是不想照片被各种云服务分析数据,才会考虑自建照片服务;
如果有这方面的顾虑,可以针对服务端、App的网络请求进行抓包分析;
离线激活
服务端更新到1.32.0以上版本,支持使用离线激活的方式来绑定订阅;
使用离线激活的方式后,订阅将绑定机器,无法再更换别的机器使用;
问题反馈
如果在使用过程中遇到问题,请发送邮件至 support@mtmt.tech
或者 查看其他联系方式
