自建相册管理系统Photoview,NAS极简部署内网穿透远程访问,摄影师RAW格式完美支持
作者
小编
发布时间

项目介绍
Photoview 是一款专为摄影爱好者打造的自建相册管理系统,基于 Go 和 React 构建。它提供了一个简洁高效的照片浏览体验,能够快速处理数千张高分辨率照片。
系统会自动扫描你指定目录下的所有照片和视频,并生成缩略图加速浏览。照片在网页上的组织方式与你的文件系统完全一致,让你可以轻松管理和分享珍贵的回忆。特别是对于摄影师常用的 RAW 格式和 EXIF 数据,Photoview 都提供了完美的支持。
项目地址:点我跳转
部署安装
如果你需要在外网访问家里的相册库,可以配置内网穿透服务来实现。推荐使用帕斯内网穿透这样的工具,先注册账号备好。具体的详细操作步骤可以参考这份完整攻略,包含了全平台上手的详细说明。
快速部署指南
准备工作
确保你的 NAS 或服务器上已经安装了 Docker 和 Docker Compose。
第一步:下载配置文件
从项目的 docker-compose 示例文件夹中下载所有配置文件到你想要存放 Photoview 数据的目录。
第二步:配置文件修改
复制下列的配置文件到你的部署目录,命名为 'docker-compose.yml':
1services:2 photoview-prepare:3 image: photoview/photoview:24 hostname: photoview-prepare5 container_name: photoview-prepare6 user: root7 entrypoint: []8 command: /bin/bash -c "sleep 1 && chown -R photoview:photoview /home/photoview/media-cache"9 cap_add:10 - CHOWN11 volumes:12 - "/etc/localtime:/etc/localtime:ro"13 - "/etc/timezone:/etc/timezone:ro"14 - "${HOST_PHOTOVIEW_LOCATION}/storage:/home/photoview/media-cache"1516 photoview:17 image: photoview/photoview:218 hostname: photoview19 container_name: photoview20 restart: unless-stopped21 ports:22 - "8000:80"23 depends_on:24 photoview-prepare:25 condition: service_completed_successfully26 mariadb:27 condition: service_healthy28 environment:29 PHOTOVIEW_DATABASE_DRIVER: mysql30 PHOTOVIEW_MYSQL_URL: "${MARIADB_USER}:${MARIADB_PASSWORD}@tcp(photoview-mariadb)/${MARIADB_DATABASE}"31 PHOTOVIEW_LISTEN_IP: "0.0.0.0"32 MAPBOX_TOKEN: ${MAPBOX_TOKEN}33 volumes:34 - "/etc/localtime:/etc/localtime:ro"35 - "/etc/timezone:/etc/timezone:ro"36 - "${HOST_PHOTOVIEW_LOCATION}/storage:/home/photoview/media-cache"37 - "${HOST_PHOTOVIEW_MEDIA_ROOT}:/photos:ro"3839 mariadb:40 image: mariadb:lts41 hostname: photoview-mariadb42 container_name: photoview-mariadb43 restart: unless-stopped44 environment:45 MARIADB_AUTO_UPGRADE: "1"46 MARIADB_DATABASE: ${MARIADB_DATABASE}47 MARIADB_USER: ${MARIADB_USER}48 MARIADB_PASSWORD: ${MARIADB_PASSWORD}49 MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}50 volumes:51 - "/etc/localtime:/etc/localtime:ro"52 - "/etc/timezone:/etc/timezone:ro"53 - "${HOST_PHOTOVIEW_LOCATION}/database/mariadb:/var/lib/mysql"54 healthcheck:55 test: healthcheck.sh --connect --innodb_initialized56 interval: 1m57 timeout: 5s58 retries: 559 start_period: 3m
同时创建 '.env' 文件,配置必要的环境变量:
1# 数据存储位置(修改为你的实际路径)2HOST_PHOTOVIEW_LOCATION=/path/to/photoview/data34# 照片存储位置(修改为你的照片所在目录)5HOST_PHOTOVIEW_MEDIA_ROOT=/path/to/your/photos67# 数据库配置8MARIADB_DATABASE=photoview9MARIADB_USER=photoview10MARIADB_PASSWORD=your_secure_password_here11MARIADB_ROOT_PASSWORD=your_root_password_here1213# 可选:Mapbox 地图功能(需要在 https://account.mapbox.com 申请免费 token)14MAPBOX_TOKEN=
第三步:启动服务
打开飞牛 NAS 或其他 NAS 设备的终端,进入到你放置 docker-compose.yml 的目录,执行以下命令启动 Photoview:
1docker-compose up -d
系统会自动下载所需的镜像并启动所有服务。首次启动可能需要几分钟时间。
第四步:初始化配置
启动完成后,在浏览器中访问 'http://你的NAS地址:8000'
第一次访问时会看到初始化向导:
1. 输入管理员用户名和密码
2. 在'照片路径'字段中填入 '/photos'(这是容器内的路径,对应你在 docker-compose.yml 中挂载的实际照片目录)
3. 点击完成创建账户
第五步:扫描照片
新建的账户会自动获得访问权限。首次使用需要手动扫描照片:
- 登录后进入 Settings(设置)
- 点击 'Scan All' 按钮开始扫描
- 系统会自动识别照片、生成缩略图并解析 EXIF 信息
环境变量说明
必须设置
- 'HOST_PHOTOVIEW_LOCATION':Photoview 数据和缓存的存储位置
- 'HOST_PHOTOVIEW_MEDIA_ROOT':你的照片存储位置
- 'MARIADB_PASSWORD':数据库密码(建议使用复杂密码)
- 'MARIADB_ROOT_PASSWORD':数据库 root 密码
可选设置
- 'MAPBOX_TOKEN':用于启用地图功能的 Mapbox API 密钥(可选,不填也能正常使用)
- 'PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION':视频硬件加速(支持 qsv、vaapi、nvenc)
端口说明
- 8000:Photoview 网页界面访问端口。如果 8000 端口被占用,可以修改 docker-compose.yml 中的 'ports' 字段,例如改为 '8001:80' 即可使用 8001 端口访问。容器内部始终运行在 80 端口,修改前面的数字不会影响应用功能。
数据持久化
系统会在以下位置保存数据,确保这些目录有足够的存储空间:
- '${HOST_PHOTOVIEW_LOCATION}/storage':照片缓存和缩略图
- '${HOST_PHOTOVIEW_LOCATION}/database/mariadb':数据库文件
常见问题
密码包含特殊字符
如果数据库密码中包含 '@' 等特殊字符,需要进行 URL 编码。例如 'p@ss' 应该改为 'p%40ss'。
照片权限问题
确保 Photoview 容器有权限读取你的照片文件夹。如果遇到权限错误,可以运行:
1chmod -R 755 /path/to/your/photos
首次扫描很慢
首次扫描需要生成所有照片的缩略图并提取 EXIF 信息,数量越多耗时越长。这是正常的,耐心等待即可。后续增加的新照片扫描速度会更快。
项目特色
✨ 摄影师友好:完美支持 RAW 格式和 EXIF 数据,保留照片的所有信息
🎬 视频支持:自动优化常见视频格式用于网页播放
👥 人脸识别:自动检测照片中的人脸,将同一个人的照片聚合在一起
🔒 安全可靠:所有媒体资源都有 Cookie 令牌保护,密码采用安全哈希存储
⚡ 性能优异:自动生成缩略图,大图片按需加载,浏览体验流畅
🌍 多用户支持:支持多用户管理,每个用户可以拥有独立的照片库
🔗 灵活分享:支持公开链接分享相册或单张照片,可选密码保护
本篇教程结束。祝你使用愉快!