You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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工具均可)

部署步骤

  1. 树莓派安装Node.js 18+版本:
    curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
  2. 进入项目目录安装生产依赖:
    npm install --production
    
  3. 启动Next.js生产服务:
    npm start
    
    (默认端口3000,可通过PORT=80 npm start直接使用80端口)
  4. 配置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
      
  5. 配置服务自启动(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配置)

部署步骤

  1. 将项目文件(含Docker相关配置)传输到树莓派
  2. 进入项目目录启动容器:
    docker-compose up -d
    
  3. 验证服务状态: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:20:35