github 项目地址

安装 Docker & Docker Compose

新建部署目录、创建yml文件

mkdir -p /opt/lunatv
cd /opt/lunatv

nano docker-compose.yml

version: '3.8'

services:
  moontv-core:
    image: ghcr.io/moontechlab/lunatv:latest
    container_name: moontv-core
    restart: unless-stopped
    ports:
      - '3000:3000'
    environment:
      - USERNAME=admin               # 登录账号
      - PASSWORD=your_password       # 登录密码(改成强密码)
      - NEXT_PUBLIC_STORAGE_TYPE=redis
      - REDIS_URL=redis://moontv-redis:6379
    networks:
      - moontv-network
    depends_on:
      - moontv-redis

  moontv-redis:
    image: redis:alpine
    container_name: moontv-redis
    restart: unless-stopped
    networks:
      - moontv-network
    volumes:
      - ./data:/data  # 持久化存储

networks:
  moontv-network:
    driver: bridge

启动 LunaTV

docker compose up -d

浏览器打开:http://服务器IP:3000

其他指令(在你保存 docker-compose.yml 的目录执行)
重启

docker compose restart

更新:

docker compose pull && docker compose up -d

单独重启某个容器

如果只想重启 LunaTV 主程序:

docker restart moontv-core

如果只想重启 Redis:

docker restart moontv-redis

Nginx 配置

多源自动代理版,避免跨域(CORS)配置
这样 LunaTV 在浏览器端就不会因为跨域报“请检查网络连接”了

server {
    listen 80;
    server_name yourdomain.com;

    # 反代 LunaTV 前端
    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;
    }

    # 多源自动 API 反代
    location ~ ^/proxy/(.*) {
        resolver 8.8.8.8 ipv6=off;  # DNS 解析器,可换成你本地DNS
        proxy_pass $1$is_args$args;

        # CORS 头
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
        add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        add_header Access-Control-Expose-Headers 'Content-Length,Content-Range';

        # 预检请求直接返回
        if ($request_method = OPTIONS) {
            return 204;
        }
    }
}

重载 Nginx

nginx -t
systemctl reload nginx

LunaTV 后台配置示例
比如你的资源站 API 是:https://xxx.com/xxx/vod
那在 LunaTV 里填:

{
  "api_site": {
    "zy": {
      "api": "http://yourdomain.com/proxy/https://xxx.com/xxx/vod",
      "name": "资源网",
      "detail": "https://zyapi.cn"
    }
  }
}

配置订阅

可以使用这个订阅

https://gist.githubusercontent.com/senshinya/5a5cb900dfa888fd61d767530f00fc48/raw/gistfile1.txt

有自己的订阅地址可以更换

效果

最后修改:2025 年 08 月 14 日 06 : 03 PM