如何在Raspberry Pi 4上托管自定义域名的Next.js动态网站?
部署动态Next.js网站到Raspberry Pi 4及替代方案
方案一:直接部署到Raspberry Pi 4
前置准备
- 树莓派安装最新64位Raspberry Pi OS(Next.js对64位架构支持更完善)
- 已完成DNS解析,将自定义域名指向树莓派公网IP,同时开放路由器80/443端口(公网访问需配置)
- 本地项目根目录执行
npm run build生成生产环境包,将.next、package.json、package-lock.json(或yarn.lock)传输到树莓派(用scp或FTP工具均可)
部署步骤
- 树莓派安装Node.js 18+版本:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs - 进入项目目录安装生产依赖:
npm install --production - 启动Next.js生产服务:
(默认端口3000,可通过npm startPORT=80 npm start直接使用80端口) - 配置Nginx反向代理+SSL(使用你已有的证书):
- 安装Nginx:
sudo apt install nginx - 创建并编辑配置文件
/etc/nginx/sites-available/your-domain.conf:server { listen 80; server_name your-domain.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name your-domain.com; ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } - 启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/your-domain.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
- 安装Nginx:
- 配置服务自启动(systemd):
- 创建服务文件
/etc/systemd/system/nextjs.service:[Unit] Description=Next.js Production Service After=network.target [Service] User=pi WorkingDirectory=/home/pi/your-nextjs-project ExecStart=/usr/bin/npm start Restart=always Environment=PORT=3000 [Install] WantedBy=multi-user.target - 启动并设置开机自启:
sudo systemctl daemon-reload sudo systemctl start nextjs sudo systemctl enable nextjs
- 创建服务文件
方案二:Docker部署到Raspberry Pi 4
前置准备
- 树莓派安装Docker和Docker Compose:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker pi sudo apt install docker-compose - 项目根目录创建适配ARM64的
Dockerfile:FROM node:18-bullseye-slim WORKDIR /app COPY package*.json ./ RUN npm install --production COPY .next ./.next COPY public ./public COPY next.config.js ./ EXPOSE 3000 CMD ["npm", "start"] - 创建
docker-compose.yml:version: '3.8' services: nextjs: build: . ports: - "3000:3000" restart: always nginx: image: nginx:alpine ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf - /path/to/your/certs:/etc/nginx/certs restart: always depends_on: - nextjs - 编写
nginx.conf(将proxy_pass目标改为http://nextjs:3000,其余同方案一的Nginx配置)
部署步骤
- 将项目文件(含Docker相关配置)传输到树莓派
- 进入项目目录启动容器:
docker-compose up -d - 验证服务状态:
docker-compose ps
方案三:第三方服务部署(无需树莓派硬件)
AWS Amplify
- 将代码推送至GitHub/GitLab/Bitbucket仓库
- 登录AWS Amplify控制台,导入目标仓库,选择Next.js项目类型
- 确认构建配置(Amplify会自动识别Next.js,默认配置即可)
- 在域名管理模块绑定自定义域名,支持导入你的已有SSL证书或自动申请免费证书
- 完成配置后,Amplify自动处理CDN加速、HTTPS及部署流程
Replit
- 打开Replit创建新的Node.js项目,直接导入GitHub仓库或上传本地项目文件
- 在Replit Shell中执行
npm install和npm run build - 修改运行命令为
npm start - 在项目设置中绑定自定义域名,支持导入你已有的SSL证书完成HTTPS配置
内容的提问来源于stack exchange,提问作者user16435384
相关产品推荐
相关产品推荐

