Skip to Content
全部文章我的开源项目我开源了我的个人摄影照片展示应用-iphoto

我开源了我的个人摄影照片展示应用-iphoto

iPhoto 项目简介

本项目是一个个人摄影照片(图床)的应用,包含后端服务、web照片管理、web照片展示首页。后端使用Nest.js框架,前端使用Vue 3 + VantUi + Vite构建。

项目github地址 如果无法访问,可以访问gitee(我尽量保持经常同步到gitee,如需最新请查看github地址) 项目gitee地址

本项目采用pnpm单仓管理,具有以下特点:

  • 高效依赖管理:pnpm采用硬链接和符号链接的方式管理依赖,节省磁盘空间并提高安装速度。
  • 工作区支持:通过pnpm - workspace.yaml可以方便地管理多个子项目。

存储方式多样,支持:本地文件、腾讯云COS、阿里云OSS、WebDav(通过Alist链接更多的云盘、网盘、cos)

待完善内容

如果有什么你想要的功能,给我提issue,如果有意义,我会抽时间来实现。 后期如果有时间我可能会实现以下功能:

  • 图片附加信息管理:手动选择分类、接入ai自动分析图片分类、exif信息编辑、描述等。
  • 首页根据分类展示图片
  • 简单访问量上报及查看
  • 图片点赞交互
  • 数据迁移:修改存储方式后,通过异步任务把数据从一个地方复制到另一个地方。
  • 优化管理端界面

已更新

  • SQLite数据库支持:不再要求一定要先安装mysql了

示意图

运行效果: https://sojs.cn/blog 或者 https://iphoto.sojs.cn

推荐实用移动端查看,pc端没有专门做对应的页面,适配一般。

展示页面

移动端效果

1

2

pc端效果

6

管理页面

3

4

5

Docker部署

下载镜像

如果你的机器可以直接访问dockerhub,请从官网安装

docker run -d\ --name iphoto \ -p {你的端口}:4000 \ -v {你机器的数据目录}:/app/userdata \ juyangjia5/iphoto:latest

端口设置成你机器的端口号,数据目录请指定一个,你的配置等数据都会在这个目录,以后重新安装你的数据不会掉。

如果你的机器无法访问dockerhub下载镜像,我已经把镜像上传到了我自己的服务器,你可以从这里 https://file.sojs.cn/iphoto.tar ,把这个文件放到你已经安装docker的服务器上, 然后在服务器上执行:

# 删除已有的镜像 docker rmi iphoto # 加载镜像,先把上面下载的镜像放到你的服务器上 docker load -i iphoto.tar # 启动容器 docker run -d\ --name iphoto \ -p {你的端口}:4000 \ -v {你机器的数据目录}:/app/userdata \ iphoto:latest

端口设置成你机器的端口号,数据目录请指定一个,你的配置等数据都会在这个目录,以后重新安装你的数据不会掉。

访问项目

打开浏览器访问 http://你的ip或域名:你的端口,如果你反向代理,请使用你的域名访问即可。

首次打开页面会进入初始化模式,需要配置你的数据库信息,配置完之后会自动跳转到管理页面,你可以在管理页面配置你的网站信息。

自行部署

本来想制作docker镜像安装,发现docker现在被墙得太厉害,太折腾了,有空再弄,比较推荐使用 1panel的运行环境来部署,它内部会自动把代码打包成docker镜像来运行。

自己部署流程

安装依赖

这些只执行一次

# 安装全局依赖 npm install -g pnpm # 安装项目依赖 pnpm install # 编译前端 pnpm build:web

之后项目启动推荐实用如下命令(使用pm2)

# 启动服务端(使用pm2), 启动后可以通过http://127.0.0.1:4000访问 pnpm start:server # 如果要停止服务端 pnpm stop:server

如果你是特殊的环境(1panel的运行环境),不能后台运行(后台运行会被判定为服务启动失败),你也可以使用这个命令自己运行服务

pnpm start:server-nopm2

这两种启动方式的区别主要在于使用pm2能够修改系统级配置后自动重启服务生效。

如果你使用pnpm start:server启动服务会使用pm2来管理服务,好处是他会后台运 行,你修改系统配置(数据库配置等)之后,会自动重启服务让你的系统配置生效。但是如果你不用这种方 式启动服务,修改系统配置(数据库配置等)则不会立即生效,需要你手动重启服务。

访问项目

打开浏览器,访问 http://你的ip或域名:4000 即可查看项目, 首次使用会进入配置模式,如果页面没自动跳转,手动访问 http://你的ip或域名:4000/systemconfig

你需要做的事情

  1. 首次使用配置数据库、存储方式等信息 http://你的ip或域名:4000/systemconfig,管理员密码请设置复杂点,谨防暴力破解。多次部署实例名称和数据库名称不一样则会是两套隔离数据的系统,如果重装系统再次部署,需要原来的数据,请保持实例名称和数据库名称和上次部署填写的一致。
  2. 配置完进入 http://你的ip或域名:4000/admin 输入你的管理员密码,对站点进行配置,配置完站点之后,请一定要点击应用按钮,否则配置不会生效。站点配置页面中的域名也要配置(配置和你访问的域名是一致的就行),不然图片会因为跨域无法加载。

如果有异常,先看看/admin页面的系统配置页面中的日志,可以帮助你排查问题,当然你也可以登录服务器查看日志文件。

注意事项

  • 请确保你的Node.js版本在18.x以上。
  • 后端服务默认使用4000端口,前端服务默认使用3000端口。

配置文件

服务端项目使用 /package/server/.env 文件进行配置,请根据实际情况修改相关配置。

项目github地址 欢迎fork二次开发修改,欢迎给我提新功能和优化改进的建议

其他交代

  • 系统配置都在项目根目录 /userdata/config.json 文件中,你可以手动修改这个文件来修改配置。修改完记得重启服务。
  • 如果你选了本地存储,你的所有图片都在项目根目录 /userdata/${实例名称}

二次开发流程

如果你想自己接着开发功能,你可以按照以下步骤进行:

你需要对nest.js、vue3有一定了解,然后按照以下步骤进行:

安装依赖

# 安装全局依赖 npm install -g pnpm # 安装项目依赖 pnpm install

启动前端服务

建议先启动前端,因为后端会转发静态资源到前端服务

# 启动调试 pnpm dev:web

启动服务端

# 启动调试 pnpm dev:server

然后打开 http://localhost:4000 访问 ,http://localhost:4000/admin 访问管理端

最后编辑于

hi