MoonTV 部署实战:基于 Next.js 的影视聚合应用快速上线

MoonTV 部署实战:基于 Next.js 的影视聚合应用快速上线

MoonTV 是一款开箱即用、跨平台的影视聚合播放器,基于 Next.js 14、Tailwind CSS 与 TypeScript 构建,支持多源聚合搜索、在线播放、收藏同步与播放记录。它通过 Docker 一键部署,非常适合自建影视聚合站点。本文记录完整的部署流程与环境配置。

一、部署方式选型

MoonTV 官方仅支持 Docker(或基于 Docker 的平台)部署,主要提供三种资源存储方案:

  • Kvrocks 存储(推荐):兼容 Redis 协议的轻量 KV 数据库,持久化可靠,适合自托管。
  • Redis 存储:需注意开启持久化,否则升级或重启后数据可能丢失。
  • Upstash 存储:云端托管 Redis,适合不想自建数据库的场景。

二、Docker Compose 部署(Kvrocks 方案)

创建 docker-compose.yml,内容如下:

services:
  moontv-core:
    image: ghcr.io/moontechlab/lunatv:latest
    container_name: moontv-core
    restart: on-failure
    ports:
      - '3000:3000'
    environment:
      - USERNAME=admin
      - PASSWORD=admin_password
      - NEXT_PUBLIC_STORAGE_TYPE=kvrocks
      - KVROCKS_URL=redis://moontv-kvrocks:6666
    networks:
      - moontv-network
    depends_on:
      - moontv-kvrocks
  moontv-kvrocks:
    image: apache/kvrocks
    container_name: moontv-kvrocks
    restart: unless-stopped
    volumes:
      - kvrocks-data:/var/lib/kvrocks
    networks:
      - moontv-network
networks:
  moontv-network:
    driver: bridge
volumes:
  kvrocks-data:

执行启动命令:

docker compose up -d

启动后容器 moontv-core 监听 3000 端口,moontv-kvrocks 承载数据存储。

三、访问与登录

首次启动后,浏览器访问 http://<服务器IP>:3000 会自动跳转到登录页。使用 compose 中配置的 USERNAME=adminPASSWORD 即可登录管理后台。

⚠️ 为安全起见,部署时强烈建议关闭公网注册,避免未授权用户注册账号。

四、反向代理与域名绑定

生产环境通常用 Nginx 反向代理将域名指向 3000 端口,既能沿用 80/443 + HTTPS,也便于集中管理。示例站点配置:

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://127.0.0.1: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;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

五、更新与注意事项

  • 镜像更新:Docker 不会自动拉取新版本,需手动 docker compose pull 后重新 up -d
  • 空壳项目:部署完成后的应用为空壳,无内置播放源,需在管理后台配置文件设置中填写自定义配置。
  • 合规使用:请勿将实例用于商业用途或公开大规模服务。

结语

通过 Docker 与 Kvrocks 的组合,MoonTV 能在几分钟内完成部署,配合 Nginx 反代即可正式上线。清晰的存储选型和安全配置,是让这个自建影视站稳定运行的关键。

Leave a Comment