ethusdt
0.01D
V2EX  ›  Next.js

nextjs 有更优雅的自部署方案么?

By ethusdt at 2025 年 12 月 31 日 · 3820 次点击

官方文档 Nextjs Deploying

用 nextjs 部署到自己服务器有点麻烦的,必须部署到 vercel 这种 serverless 才方便。

我使用过笨办法,在服务器上克隆整个项目,服务器执行 build ,然后 start ( tmux/screen/systemctl )。

或者麻烦一点用 docker 打包一个镜像,配置 github action 的 ci ,某个打包分支有提交会自动打包镜像,服务器再 pull 镜像就比较方便了。但还是要折腾一下 ci 和 docker 。

或者自己本地打包后 rsync 到服务器,但要踩一下 standalone 之类的坑( node runtime 依赖 node_modules )。

难道就没优雅一点的么?

web 页面和 server api 都在一块确实好用,对前端入门后端来讲也算个不错的选择。

22 条回复    2026-01-02 03:52:16 +08:00
GzhiYi
   1
GzhiYi  
   2025 年 12 月 31 日   ❤️ 2
github + docker 不是很好了吗?推送后就自动构建部署无感部署
rocmax
   2
rocmax  
   2025 年 12 月 31 日 via Android
ethusdt
   3
ethusdt  
OP
   2025 年 12 月 31 日
@rocmax 之前这个官方的镜像模板有 Docker volumes 权限问题。不确定是否有改好没。
NNNNzs
   4
NNNNzs  
   2025 年 12 月 31 日
@GzhiYi 我就是这么部署的,具体的配置可以参考我的项目
@ethusdt https://github.com/NNNNzs/react.nnnnzs.cn
kulove
   5
kulove  
   2025 年 12 月 31 日 via Android
不太有 我现在 vercel 每月两百刀左右的费用 上个月找了两三种替代方案 比如 railway 都差点意思 有的测试没问题 但生产一切换就不行了
woodchen
   6
woodchen  
   2025 年 12 月 31 日
我一般就是 github 打包 docker, nextjs 使用 standalone 模式, 稳定后还是比较方便的. 也可以集成 dokploy 自动构建部署.

https://www.sunai.net/t/topic/352

https://github.com/woodchen-ink/ipinfo/blob/master/Dockerfile

供参考
doveyoung
   7
doveyoung  
   2025 年 12 月 31 日
最近才试过,standalone + docker ,Dockerfile 里要注意把静态文件也拷贝一份,用的 node:22-alpine 镜像,最终大小在 300M 。
在 vercel 部署的话,好像不遵循 standalone ,我单独做了个 build:vercel 的编译命令
334132462
   8
334132462  
   2025 年 12 月 31 日
如果能解决网络问题 dokku 是一个很不错的方案
noway5566
   9
noway5566  
   2025 年 12 月 31 日
我都是免费蹭 cloudflare 的额度,比 vercel 方便多了。。
lscho
   10
lscho  
   2025 年 12 月 31 日
github + docker 就是最好的方式
cqx2005
   11
cqx2005  
   2025 年 12 月 31 日
frontend:
container_name: frontend
command: /bin/bash -c "cd /app && ./node_modules/.bin/next start"
restart: always
image: node:20.18.0
environment:
TZ: Asia/Shanghai
NODE_ENV: production
logging:
options:
max-size: "10m"
max-file: "10"
ports:
- "3000:3000"
volumes:
- "./frontend:/app"
C64NRD
   12
C64NRD  
   2025 年 12 月 31 日
给全栈项目写了个部署的命令行工具( github+docker ) https://nodebbs.com/topic/58
wuzhanggui
   13
wuzhanggui  
   2025 年 12 月 31 日
我是前后端一起的,github 上配个 ci ,配的时候是麻烦,但是一劳永逸,提交代码了就部署上去了
参考我的 https://github.com/wurencaideli/dumogu-admin
bbbblue
   14
bbbblue  
   2025 年 12 月 31 日
我几个全是官方 docker 模版部署的
但是自己部署就是坑。。
很多特性自部署是负优化 比如 static 生成(不是全部 static 导出) ppr 这类 缓存相关( vercel 会把他们部署到边缘节点去 自己 docker 部署就全在内存里了) 都会导致内存大量增加。。。一个总共加起来不到 100 个页面,十来个 route 的 nextjs 服务开着这些功能能吃掉上 G 内存。。。
rocmax
   15
rocmax  
   2025 年 12 月 31 日 via Android
@ethusdt 我司从 nextjs13 开始就使用 standalone 模式部署在 eks ,你说的 volume 权限是什么场景?
如果愿意折腾的话有开源的部署方案 https://opennext.js.org/ 但我觉得这么搞不如给 vercel 交钱。
ethusdt
   16
ethusdt  
OP
   2025 年 12 月 31 日
@rocmax #15 依稀记得之前踩过的坑是这样的:docker build 时候用的 root 权限,但是最终 dockercompose 运行时候镜像内部用户降权无法访问一些资源。并且 volumn 卷权限问题表现不一致,服务器经常用 root 来跑,而本地 mac 环境又不是 root 运行 docker 。可能是 Dockerfile 内部这个 nextjs user 权限导致的,即使配置了 gid/uid 也是有点问题。忘记当时是怎么解决了,可能 AI 给解决了,当时没查下到底是啥问题。
minmaxflow
   17
minmaxflow  
   2025 年 12 月 31 日
我最近也碰到一样的问题,我是因为用户在国内,项目部署在阿里云上,使用 ansible(rsync) 配合 standalone 模式, 使用 nginx+pm2, 是比较繁琐。
frayesshi1
   18
frayesshi1  
PRO
   1 月 1 日
直接 tmux+npm run
keithwhisper
   19
keithwhisper  
   1 月 1 日
我推荐用 Coolify 部署
https://coolify.io/
tangxiangpi325
   20
tangxiangpi325  
   1 月 1 日 via Android
coolify + vps + 容器,非常简单。vercel 玩玩可以,跑生产费用惊人
lmoon
   21
lmoon  
   1 月 1 日
dokploy 或者 coolify ,最近在用 dokploy ,感觉很不错
gargar
   22
gargar  
   1 月 2 日
小应用,cloudflare 的羊毛够我薅的了
© 2026 V2EX · 97ms · 3.9.8.5