fregie/pho

Dartpho.tools
AndroidiOS

alternativa a Google Photos

A serverless application for viewing and synchronizing photos to cloud storage

backupphotosgolangfluttergallery-imagesnasfossgoogle-photos-alternativegrpchomelabnfsphoto-gallery
Crescimento de estrelas
Estrelas
1.2k
Forks
94
Crescimento semanal
+2
Issues
55
5001k
abr. de 2023mai. de 2024jul. de 2025set. de 2026
README



Pho - 一个用于查看和上传照片的无服务端应用

中文 | English

安装

开源版(仅 Android APK):

  • 下载 APK — 仅含 SMB / WebDAV / NFS,无 Pro 功能

Pro 版(含全部功能,需付费):

  • App Store — iOS 版,支持 AES 加密、并行上传、筛选器、百度网盘等
  • Google Play — Android 版,支持 AES 加密、并行上传、筛选器、百度网盘等

开源仓库仅提供 APK 下载。iOS 用户请前往 App Store、Android 用户请前往 Google Play 下载 Pro 版(支持免费试用基础功能后购买 Pro)。

介绍

该应用的目的是替代手机上的自带相册应用,并且能够将照片同步到网络储存.
功能简单,只是用于查看照片以及同步照片到网络储存.试图做到优秀的体验.

功能

  • 本地照片查看
  • 云端照片查看
  • 增量同步照片到云端
  • 后台定期同步
  • 无数据库,无服务端
  • 以时间组织云端存储的目录结构

支持的网络储存

  • Samba
  • Webdav
  • NFS
  • 阿里网盘
  • oneDrive
  • google drive
  • google photo

与 Pro 版本差异

本仓库为 Pho 开源版,仅包含核心的照片查看与同步功能.以下功能仅在 Pro 版本中提供(未开源):

  • AES 加密上传(支持 AES-128-CFB 与 AES-256-GCM,加密视频支持 Range 播放)
  • 并行上传调优(多文件并发上传)
  • 文件筛选器(按类型/日期等条件过滤同步)
  • 目录结构配置(可选 YYYY/MM/DDYYYYMMDD 组织方式)
  • 主题色自定义
  • 百度网盘支持

开源版仅支持 Samba / WebDAV / NFS 三种网络储存.

Pro 版在 App Store 和 Google Play 提供: App Store / Google Play

Screenshots

本地相册 云端相册 同步页面 照片查看

roadmap

  • 支持放大/缩小图片
  • 支持上传/浏览视频
  • 支持NFS
  • 支持IOS端
  • 支持desktop端
  • 支持中文

构建

环境要求

构建步骤

# 1. 生成 protobuf 代码 (Go + Dart stubs)
make prebuild      # 安装 protoc 插件
make protobuf

# 2. 构建嵌入式 Go 服务端
make server-aar     # Android: android/app/libs/server.aar (需 gomobile)
make server-ios     # iOS: ios/Frameworks/RUN.xcframework
make server-linux   # Linux: linux/lib/run.so
make server-windows # Windows: windows/lib/run.dll

# 3. 构建 Flutter 应用
make apk           # Android APK
make ipa           # iOS IPA

# 4. 运行测试 (需要 Docker 用于 SMB/WebDAV/NFS 测试容器)
make test

注: flutter run 不会自动构建 android/app/libs/server.aar,需先执行 make server-aar,否则 Go 服务端无法启动.

Contribute

感谢各位的积极反馈

给本项目提需求的还不少,但是我一个人精力有限,如果你有兴趣,欢迎加入.

可以在issue中回复沟通,帮忙一起做一些功能,提出你的pull request.

文件储存逻辑

本着尽可能简单的逻辑来储存文件,以时间为目录结构,以文件名为文件名储存源文件.在根目录创建一个.thumbnail目录来储存生成的缩略图,缩略图的目录结构与源文件相同.
你可以随时以其他形式利用你备份上去的照片,而不用依赖此app. 目录结构示意图:

├── 2022
│   ├── 07
│   │   ├── 02
│   │   │   ├── 20220702_100940.JPG
│   │   │   ├── 20220702_111416.JPG
│   │   │   └── 20220702_111508.JPG
│   │   └── 03
│   │       ├── 20220703_101923.DNG
│   │       ├── 20220703_112336.DNG
│   │       └── 20220703_112338.DNG
├── 2023
│   └── 01
│       └── 03
│           ├── 20230103_112348.JPG
│           ├── 20230103_124634.JPG
│           └── 20230103_124918.DNG
└── .thumbnail
     └── 2022
         └── 07
             ├── 02
             │   ├── 20220702_100940.JPG
             │   ├── 20220702_111416.JPG
             │   └── 20220702_111508.JPG
             └── 03
                 ├── 20220703_101923.DNG
                 ├── 20220703_112336.DNG
                 └── 20220703_112338.DNG

Star History

Star History Chart

Repositórios relacionados
restic/restic

Fast, secure, efficient backup program

GoGo ModulescliBSD 2-Clause "Simplified" Licensegorestic
restic.net
36k1.9k
MichaelCade/90DaysOfDevOps

This repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.

ShellOtherdevopskubernetes
90daysofdevops.com
29.7k6.8k
duplicati/duplicati

Store securely encrypted backups in the cloud!

C#appOtherduplicatibackup
15k1.1k
kopia/kopia

Cross-platform backup tool for Windows, macOS & Linux with fast, incremental backups, client-side end-to-end encryption, compression and data deduplication. CLI and GUI included.

GoGo ModulesApache License 2.0deduplicationbackup
kopia.io
14.1k723
borgbackup/borg

Deduplicating archiver with compression and authenticated encryption.

PythonPyPIcliOtherpythoncompression
borgbackup.org
13.7k874
nextcloud/all-in-one

📦 The official Nextcloud installation method. Provides easy deployment and maintenance with most features included in this one Nextcloud instance.

PHPPackagistGNU Affero General Public License v3.0nextcloudbackup
nextcloud.com/blog/nextcloud-all-in-one-introduces-automatic-domain-acquisition-dns-setup/
10.4k1.1k
velero-io/velero

Backup and migrate Kubernetes applications and their persistent volumes

GoGo ModulesApache License 2.0kubernetesdisaster-recovery
velero.io
10.3k1.6k
alexanderepstein/Bash-Snippets

A collection of small bash scripts for heavy terminal users

ShelltutorialMIT Licensebashcurrency-converter
10k840
databasus/databasus

PostgreSQL backup tool with Point-In-Time-Recovery and restore verification

TypeScriptnpmApache License 2.0backupbackups
databasus.com
8.5k529
BlueMatthew/WechatExporter

Wechat Chat History Exporter 微信聊天记录导出备份程序

C++appGNU General Public License v2.0wechatexport
8.4k960
elasticsearch-dump/elasticsearch-dump

Import and export tools for elasticsearch & opensearch

JavaScriptnpmcliApache License 2.0javascriptelasticsearch
7.9k867
XayahSuSuSu/Android-DataBackup

DataBackup for Android 7.0+

KotlinappGNU General Public License v3.0backuproot
databackupofficial.github.io
7.3k316