Skip to content

poouo/PixLive

Repository files navigation

PixLive

PixLive 是一个自部署图片直播推流平台,包含服务端、Web 用户后台、Android/iOS 原生应用框架和一键部署脚本。

当前框架

  • 服务端:Node.js 22 + Express + TypeScript。
  • Web 后台:Vite + React + TypeScript,UI 风格参考 Forwardx 的清爽后台布局。
  • 移动端:Flutter,一套代码支持 Android/iOS,并通过 platform channel 预留原生能力。
  • 存储:本地存储已可用,WebDAV 和主流 OSS/COS/OBS/Kodo/S3/MinIO 已预留驱动接口。
  • 部署:支持 Docker、本地 systemd、一键安装、升级、卸载。
  • CI:GitHub Actions 构建服务端、Docker、APK 和 iOS IPA。

照片直播上传方式

  • 相机有线闪传:OTG 数据线连接相机和手机,实时传图。
  • 相机无线 FTP 闪传:手机端作为 FTP 接收端或连接相机 FTP,实时传图。
  • 手机本地上传:从手机相册批量上传。
  • 读卡器上传:读取外接读卡器文件并批量上传。
  • 电脑上传:通过 Web 工作台上传。

本地开发

pnpm install
pnpm dev

Web 开发服务器:

pnpm dev:web

构建:

pnpm build
pnpm start

默认后台账号来自 .env.example

  • 用户名:admin
  • 密码:PixLive@123456

一键安装/升级/卸载

下面的命令会从 https://github.com/poouo/PixLive.git 拉取完整脚本并执行。默认安装目录是 /opt/pixlive,默认端口是 3002

本地 systemd 部署:

curl -fsSL https://raw.githubusercontent.com/poouo/PixLive/main/scripts/pixlive.sh -o pixlive.sh
sudo bash pixlive.sh install

Docker 部署:

curl -fsSL https://raw.githubusercontent.com/poouo/PixLive/main/scripts/pixlive.sh -o pixlive.sh
sudo bash pixlive.sh docker

升级当前部署:

curl -fsSL https://raw.githubusercontent.com/poouo/PixLive/main/scripts/pixlive.sh -o pixlive.sh
sudo bash pixlive.sh upgrade

卸载服务端:

curl -fsSL https://raw.githubusercontent.com/poouo/PixLive/main/scripts/pixlive.sh -o pixlive.sh
sudo bash pixlive.sh uninstall

非交互卸载并删除源码和数据:

curl -fsSL https://raw.githubusercontent.com/poouo/PixLive/main/scripts/pixlive.sh -o pixlive.sh
sudo PIXLIVE_UNINSTALL_CONFIRM=yes bash pixlive.sh uninstall

保留数据卸载:

curl -fsSL https://raw.githubusercontent.com/poouo/PixLive/main/scripts/pixlive.sh -o pixlive.sh
sudo PIXLIVE_UNINSTALL_KEEP_DATA=1 bash pixlive.sh uninstall

可配置环境变量:

PIXLIVE_REPO_URL=https://github.com/poouo/PixLive.git
PIXLIVE_BRANCH=main
PIXLIVE_APP_DIR=/opt/pixlive
PORT=3002

也可以直接使用仓库内脚本:

bash scripts/install.sh
bash scripts/install-docker.sh
bash scripts/upgrade.sh
bash scripts/uninstall.sh

Android 应用内更新

Android App 会在启动后检查 GitHub 最新 Release:

https://api.github.com/repos/poouo/PixLive/releases/latest

如果发现高于当前 mobile/pubspec.yamlversion 的版本,并且 Release assets 中有 .apk 文件,App 会弹窗提示用户更新。用户点击“立即更新”后,App 会从 GitHub 下载 APK,并打开 Android 系统安装界面。

要实现覆盖安装,Android APK 必须满足:

  • 固定包名:com.poouo.pixlive
  • 每次发布都使用同一套 release keystore 签名。
  • versionCode 必须递增。

GitHub Actions 支持通过 Secrets 注入同一套签名证书:

  • PIXLIVE_ANDROID_KEYSTORE_BASE64:release keystore 的 base64 内容。
  • PIXLIVE_ANDROID_KEYSTORE_PASSWORD
  • PIXLIVE_ANDROID_KEY_ALIAS
  • PIXLIVE_ANDROID_KEY_PASSWORD

如果没有配置这些 Secrets,构建出的 APK 可能无法覆盖安装已安装版本,Android 会要求卸载旧包后再安装。

发布 Android 新版本时,建议使用 tag:

git tag v0.0.2
git push origin v0.0.2

GitHub Actions 的 Mobile workflow 会在 tag 推送时构建 APK,并把 APK 附加到 GitHub Release。第一版版本号为合法 SemVer 0.0.1,后续 Release tag 建议形如 v0.0.2,这样 App 和后台都能正确比较版本。后台和 Android 端检测到更高版本都会提示更新;项目版本号只在明确发布新版本时调整。

Android 原生工程由 Flutter 生成后,需要应用更新补丁:

cd mobile
flutter create --platforms=android .
node scripts/patch_android_update.mjs
flutter pub get
flutter build apk --release

patch_android_update.mjs 会自动补充:

  • REQUEST_INSTALL_PACKAGES 权限。
  • OtaUpdateFileProvider
  • InstallResultReceiver
  • res/xml/filepaths.xml
  • Android desugaring 配置。

移动端

本地有 Flutter 环境时:

cd mobile
flutter create --platforms=android,ios .
node scripts/patch_android_update.mjs
flutter pub get
flutter run

本地没有 Android/iOS 环境时,推送到 GitHub 后可在 Actions 里运行 Mobile workflow 构建 APK 和 iOS IPA。

API 入口

  • GET /api/health
  • GET /api/config/public
  • GET /api/albums
  • GET /api/albums/:albumId/media
  • POST /api/albums:新增图片直播,需要提交标题、直播地点、开始/结束时间,可选备注和定位坐标。
  • POST /api/mobile/register
  • POST /api/albums/:albumId/upload
  • POST /api/upgrade/check
  • GET /api/upgrade/check
  • POST /api/upgrade/start
  • GET /api/upgrade/status

移动端上传需要先注册设备,拿到 deviceToken 后使用 Authorization: Bearer <token>

后台在线升级

系统设置页会调用 GitHub latest Release 检测更新;发现更高版本后可以点击“在线升级”。服务端会执行 PIXLIVE_UPGRADE_COMMAND 指定的命令,如果没有配置,则默认执行仓库内 scripts/upgrade.sh

本地部署推荐使用默认命令;Docker 部署如果需要在容器内触发宿主机升级,可以将 PIXLIVE_UPGRADE_COMMAND 配置为你自己的安全升级脚本。

About

开源的摄影师图片直播软件!

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages