🎬 MoonCakeTV 月饼TV - 一个超级简单的影视聚合搜索服务
bash <(curl -fsSL https://raw.githubusercontent.com/MoonCakeTV/MoonCakeTV/main/deploy.sh)脚本会自动:
- 安装 Docker(如果没有)
- 生成配置文件
- 配置 SSL 证书(Caddy + Let's Encrypt)
- 启动服务
支持系统:Debian, Ubuntu, Rocky Linux, AlmaLinux, Oracle Linux, Arch Linux
docker run -d \
--name mooncaketv \
-p 3333:3333 \
-e JWT_SECRET=修改此处换成随机字符串 \
-e NODE_ENV=production \
-e ALLOW_HTTP_COOKIES=1 \
-v /your/data/path:/app/data \
--restart unless-stopped \
ghcr.io/mooncaketv/mooncaketv:latestSynology NAS 示例:
docker run -d \
--name mooncaketv \
-p 3333:3333 \
-e JWT_SECRET=$(openssl rand -hex 32) \
-e NODE_ENV=production \
-e ALLOW_HTTP_COOKIES=1 \
-v /volume1/docker/mooncaketv/data:/app/data \
--restart unless-stopped \
ghcr.io/mooncaketv/mooncaketv:latest飞牛NAS (fnOS) 示例:
docker run -d \
--name mooncaketv \
-p 3333:3333 \
-e JWT_SECRET=$(openssl rand -hex 32) \
-e NODE_ENV=production \
-e ALLOW_HTTP_COOKIES=1 \
-v /vol1/1000/docker/mooncaketv/data:/app/data \
--restart unless-stopped \
ghcr.io/mooncaketv/mooncaketv:latestservices:
mooncaketv:
image: ghcr.io/mooncaketv/mooncaketv:latest
container_name: mooncaketv
ports:
- "XXXX:3333"
environment:
- JWT_SECRET=修改此处,换成一个随机字符串
- NODE_ENV=production
- ALLOW_HTTP_COOKIES=1
volumes:
- ./data:/app/data
restart: unless-stoppedALLOW_HTTP_COOKIES=1:允许在 HTTP 下使用 cookies(登录功能必需)-v /your/data/path:/app/data:数据持久化目录,存储收藏、历史、设置- 端口:容器内部端口是
3333,可映射到任意外部端口,XXXX替换为任意端口,比如6666 - 访问地址:
http://你的IP地址:3333
- 🔍 多源聚合搜索(苹果CMS v10 协议)
▶️ 在线播放(HLS.js)- 💾 收藏功能
- 📝 观看历史
- ⚙️ 自定义视频源
- 📱 响应式设计
- 🌙 深色模式
- 🔒 可选密码保护
- 📁 文件存储(无需数据库)
- 创建目录并下载配置:
mkdir mooncaketv && cd mooncaketv- 创建
.env:
# JWT密钥(必需)
JWT_SECRET=your_random_secret_here
# 域名(必需,用于 HTTPS)
DOMAIN=mooncake.example.com生成随机 JWT 密钥:
openssl rand -hex 32- 创建
Caddyfile:
{$DOMAIN} {
reverse_proxy mooncaketv:3000
}
- 创建
compose.yml:
services:
mooncaketv:
image: ghcr.io/mooncaketv/mooncaketv:latest
restart: unless-stopped
environment:
- JWT_SECRET=${JWT_SECRET}
- NODE_ENV=production
volumes:
- ./data/mc_data:/app/data
expose:
- "3000"
caddy:
image: caddy:2-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
environment:
- DOMAIN=${DOMAIN}
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./data/caddy_data:/data
- ./data/caddy_config:/config
depends_on:
- mooncaketv- 启动:
docker compose up -d访问 /settings 页面,配置视频源。
格式:名称 域名(每行一个)
茅台资源 mtzy.tv
极速资源 jisuzy.com
支持 苹果CMS v10 协议的采集站。可在 饭太硬 找到更多源。
所有数据存储在 data/ 目录:
data/
├── mc_data/user-data.json # 用户数据(收藏、历史、设置)
├── caddy_data/ # SSL 证书
└── caddy_config/ # Caddy 缓存
备份:
cp -r data/ backup/迁移:
scp -r data/ user@new-server:/path/to/mooncaketv/首次访问 /login 页面可设置密码。
- 设置密码 = 需要登录才能访问
- 不设置密码 = 公开访问
重置密码:
# 编辑 data/mc_data/user-data.json,将 password_hash 设为空字符串 ""# 查看日志
docker compose logs -f
# 重启服务
docker compose restart
# 更新镜像
docker compose pull && docker compose up -d
# 停止服务
docker compose down系统要求:Node.js >= 22.0.0
# 克隆代码
git clone https://github.com/MoonCakeTV/MoonCakeTV.git
cd MoonCakeTV
# 安装依赖
npm install
# 配置环境变量
cp .env.example .env
# 编辑 .env 设置 JWT_SECRET
# 开发模式
npm run dev
# 代码检查
npm run lint
# 类型检查
npm run typecheck
# 构建
npm run buildMIT
- Next.js
- Caddy
- HLS.js
- Radix UI
- Tailwind CSS
