我自建服务器部署了 Next.js 全栈项目

前言

之前我分享了我开源的两个全栈项目,《舔狗日记》 和 《吃啥好呢》,可以看前文

新作品《舔狗日记》:在爱的剧本里,我们都是自己的主角

新作品:吃啥好呢 - 个性化美食推荐

在文章里面我提到了我放弃 Vercel + Supabase,选择自建服务器自己运维。

我不建议新手和我一样,特别是对编程不熟悉的朋友,Vercel 提供了自动化的 CI/CD,Supabse Free 账户提供 2 个免费 PostgreSQL 数据库,用来折腾学习还是很不错的,如果后期你的访问量起来了或者项目变多了,我建议你学习一下容器技术(docker/k8s),自建服务器部署,这样性比价就更高,但是随之带来的就是运维成本,不过现在 AI 工具那么多,脚本命令什么的 GPT 都可以信手拈来。

如果真的一点技术不会,其实还有一个折中的办法,把项目迁移到 Cloudflare,CF 价格会低很多。

如何将全栈项目部署到自建服务器?

我使用的是 Docker 容器对应用进行管理,我写过一键安装 Docker 的脚本(开源),可以直接拿来用,脚本里面还可以一键安装 MySQL,方便的很,就算是自己手动安装使用 Docker 安装应用也是一行命令的事情。

一键安装脚本:github.com/jonssonyan/...
Docker 官网文档:docs.docker.com/engine/

以吃啥好呢为例

吃啥好呢 GitHub:github.com/jonssonyan/...

  1. clone 项目
bash 复制代码
git clone https://github.com/jonssonyan/what-to-eat.git
cd what-to-eat
  1. 构建镜像
bash 复制代码
docker build -t what-to-eat:0.1.0 .
  1. 运行容器
bash 复制代码
  docker run -d --name what-to-eat --restart always \
    --network=host \
    -e PORT="$PORT" \
    -e DATABASE_URL="$DATABASE_URL" \
    -e NEXTAUTH_URL="$NEXTAUTH_URL" \
    -e NEXTAUTH_SECRET="$NEXTAUTH_SECRET" \
    -e GOOGLE_CLIENT_ID="$GOOGLE_CLIENT_ID" \
    -e GOOGLE_CLIENT_SECRET="$GOOGLE_CLIENT_SECRET" \
    -v $APP_LOG:/app/logs \
    what-to-eat:0.1.0

这里面有几个环境变量必须设置

  • DATABASE_URL:数据库连接
  • NEXTAUTH_URL:网站公网地址(本地开发是 http://localhost:300)
  • NEXTAUTH_SECRET:密钥(不可泄露)
  • GOOGLE_CLIENT_ID:Google OAuth 的 Client ID
  • GOOGLE_CLIENT_SECRET:Google OAuth 的 Client Secret
  • APP_LOG:项目日志文件夹

申请 Google OAuth 2.0 客户端 ID:console.cloud.google.com/apis/dashbo... ,登录之后创建一个凭据即可。

打开浏览器访问 http://ip:3000 就可以访问了。

涉及到的 Dockerfile 文件以及我写好的 install.sh 文件都可以在开源项目中找到,给想知道细节的朋友作为参考。

如何管理 SSL 证书?

可以用我自己手搓的 nginx-acme(开源)自动申请和续签证书,同时还可以借助 Nginx 反向代理对请求进行转发,实现一台服务器共用 80/443 端口访问不同服务的效果。

nginx-acme GitHub:github.com/jonssonyan/...

有了 Nginx 我们还可以对网站流量进行监控、限流、负载均衡、优化提高网站并发。

nginx-acme 是定制化的程序,可以实现一键安装,申请续签证书,转发一条龙。你也可以用一些开源的 Nginx 管理面板,有可视化的页面可以配置,使用门槛更低,我这里推荐:Nginx UI:nginxui.com/zh_CN/

总结

以上就是我部署 Next.js 全栈项目的全过程,希望大家早日赚到第一桶金。

相关推荐
梦帮科技8 小时前
GRAVIS v4.0:基于Web的极速套利架构设计与实时数据流实现
前端·人工智能·rust·自动化·区块链·智能合约·数字货币
爱勇宝9 小时前
办公资料反复修改、补传、交接混乱,我做了个桌面工具来解决这件事
前端·后端·程序员
微信开发api-视频号协议9 小时前
企业微信外部群开发自动化实践过程
java·前端·微信·自动化·企业微信·ipad
甲维斯10 小时前
Fable5:20美金的顶级设计师!
前端·人工智能
kyriewen10 小时前
我同时用了 Claude Code、Cursor 和 Codex,说说三个工具的真实差距——2026 年选错工具比不用 AI 更浪费时间
前端·ai编程·claude
Jackson__10 小时前
为了拯救我的腰椎和颈椎,我做了款浏览器插件!
前端·javascript·开源
闲猫10 小时前
Python FastAPI + SQLAlchemy 入门教程:从零搭建你的第一个 Web 应用
前端·python·fastapi
林小帅11 小时前
NestJS v11 + Prisma v7 ESM 迁移配置解析
前端·javascript·后端
IT_陈寒11 小时前
React的setState竟然不是立刻生效的,害我调试半天
前端·人工智能·后端
简简单单就是我_hehe11 小时前
前端埋点日志解决方案:完整 User-Agent 解析工具实现,爬虫识别、设备品牌、操作系统、浏览器版本全解析(附完整源码)
前端·爬虫