Skip to content

PicImpact 是一个摄影师专用的摄影作品展示网站,基于 Next.js 开发。

License

Notifications You must be signed in to change notification settings

besscroft/PicImpact

Repository files navigation

PicImpact

许可证 存储库大小

开发中...

无障碍支持

已经在尽力支持了,主要基于 WAI-ARIA 规范,有爱,无障碍!

如何部署

你可以 Fork 后点击下面的按钮来一键部署到 Vercel(自定义配置及容器部署请往下看)

Deploy with Vercel

当然,如果你想部署到其它平台或者自部署也是可以的。但是由于生态兼容性,暂不支持 All Edge。

数据库

数据库请选择兼容 PostgreSQL 的数据库,我推荐 SupaBase,它的每月免费额度足够个人使用了! 创建数据库后,等待程序构建/部署成功,程序会自动初始化和更新表结构,待表结构同步完成后,将 doc/sql/data.sql 导入到数据库执行。在 DashboardSettings 找到 Database 部分,你就能查看连接信息了。 当然,只要是兼容 pg 的数据库都是可以选择的,不必局限于某个平台。

注:从 2024-01-26 起,将删除通过 IPv4 和 pgBouncer 的数据库访问方式。 在这之前部署且数据库使用 SupaBase 的用户,请更新数据库连接信息。 在 Connection parameters 里勾选 Use connection pooling 选项即可。

请确保您的数据库用户配置了正确的 Row Level Security(行级别安全性)权限,否则将无法正常访问。

如果您是第一次部署,仅需要执行 data.sql 即可,如果您是升级到涉及数据库变更的版本,请在执行对应版本编号的 sql 后再升级部署!

系统默认账号密码为:admin@qq.com / 666666

图片存储

存储你可以选择 AWS S3、阿里云 OSS 或者自建 MinIO(理论上来说兼容 S3 的都行),也可以交由你正在用的 AList 来维护。

环境变量

请在部署前设置您的环境变量,程序会去读这些值,用以更改构建步骤或函数执行期间的行为。

所有值都经过静态加密,并且对有权访问该项目的任何用户都可见。使用非敏感数据和敏感数据都是安全的。但请注意您自己不要泄露环境变量的值!

如果您更改了环境变量,它不会影响当前的部署,您需要重新构建部署后才会生效!

当然,如果您是容器化部署的,更改环境变量后只需要重启容器就行了,无需重新构建!

受限于 Nuxt3 的局限性,某些设计可能不是特别人性化(主要还是懒),望理解!

请注意,平台部署请在平台控制台填写环境变量,会自动覆盖 .env.production 的值,以免发生机密信息泄露!

项目内默认的 key 都是用作演示用途!

Key 备注
DATABASE_URL Postgre 数据库 url,如:postgres://账号:密码@aws-0-ap-northeast-1.pooler.supabase.com:5432/postgres
AUTH_SECRET 权限机密,你可以执行 npx auth secret 生成一个,反正是随机的字符串就行
SECRET_KEY 密码盐,默认值:pic-impact,你最好知道是干嘛的再去改。

容器部署

直接部署

如果你要运行我的镜像,你只需要执行下面的命令即可部署:

docker run -d --name PicImpact \
  -p 3000:3000 \
  -e DATABASE_URL="postgres://账号:密码@aws-0-ap-northeast-1.pooler.supabase.com:5432/postgres" \
  -e AUTH_SECRET="your-secret-key" \
  -e SECRET_KEY="pic-impact" \
  besscroft/picimpact:latest

看到这里您应该明白,环境变量当然要换成自己的!

自己构建镜像

如果你要 Docker Compose 执行:

version: '3'
services:
  picimpact:
    image: besscroft/picimpact:latest
    container_name: PicImpact
    ports:
      - 3000:3000
    environment:
      - DATABASE_URL="postgres://账号:密码@aws-0-ap-northeast-1.pooler.supabase.com:5432/postgres"
      - AUTH_SECRET="your-secret-key"
      - SECRET_KEY="pic-impact"

一样的,参考上面的环境变量表格,配置你自己的环境变量。

构建镜像 Q&A

Q:我 fork 仓库后,构建的镜像被人使用会有风险吗?

A:原则上没有,但如果你自己要往文件里面填写机密信息,那是你自己的问题! 别人并不知道你的环境变量的值,除非你自己泄露!

服务器面板

对于使用宝塔面板、1Panel 之类的用户,包括使用 Nginx 来提供访问服务的用户,记得配置反向代理:

location ^~ / {
  proxy_pass http://localhost:3000;
}

端口和路径之类的,就看你自己部署时,设置的什么了。

本地开发

克隆到本地开发:

git clone https://github.com/besscroft/PicImpact.git

pnpm i

pnpm run dev

如果您有任何建议,欢迎反馈!

代码贡献

提出新想法 & 提交 Bug | Fork & Pull Request

PicImpact 欢迎各种贡献,包括但不限于改进,新功能,文档和代码改进,问题和错误报告。dev 分支接受 PR

有需求和建议都可以提,有空的话我会处理,但受限于 Next / SSR 的⌈局限性⌋,很多功能的设计上可能会有取舍。

隐私安全

您使用本程序时,需要自己去维护各个平台的配置信息(毕竟跟咱没关系,需要在对应的平台配置),以及对象存储的读写权限、访问控制、防盗链、跨域设置、缓存策略和 CDN 等配置,以最大程度的避免天价账单。

如您有更多疑问,可以提交 Issue

浏览器支持

  • Last 2 versions of Chrome, Firefox, Safari and Edge
  • Firefox ESR

事实上不是过于老旧的浏览器,一般都是能用的。

技术栈

感谢

本项目使用 JetBrains 的开源许可证,基于 IntelliJ IDEA 开发,感谢!

JetBrains 徽标(主要) logo

IntelliJ IDEA logo

License

PicImpact is open source software licensed as MIT.

About

PicImpact 是一个摄影师专用的摄影作品展示网站,基于 Next.js 开发。

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages