🎥 OmeTV Clone 安装教程

宝塔面板 Linux 版 · 完整部署指南

📁 项目路径: /storage/emulated/0/ometv
1 建站
2 数据库
3 配置
4 依赖
5 启动
1

创建网站

⏱ 约2分钟

宝塔面板 →「网站」→「添加站点

域名你的域名或IP(本地测试用 服务器IP
根目录/storage/emulated/0/ometv
PHP版本7.4 / 8.0 / 8.1 / 8.2 均可
数据库先选「不创建」,后面手动建
域名:your-domain.com
根目录:/storage/emulated/0/ometv
PHP:PHP-74 ✓
⚡ 务必勾选 HTTPS 证书(Let's Encrypt),WebRTC 需要 HTTPS
⚠️
WebRTC 必须 HTTPS!
浏览器要求摄像头权限只能在 localhost 或 HTTPS 下使用。服务器 IP 访问需通过 HTTPS 或使用域名。
💡
若使用宝塔反向代理或需要绑定 WS 端口,请记住站点根目录,后面要用到。
2

创建数据库 & 导入表结构

⏱ 约3分钟

宝塔面板 →「数据库」→「添加数据库

数据库名ometv
用户名ometv
密码自定义(如 OmeTV@2024)← 记下来
字符集utf8mb4
访问权限本地服务器(localhost)

初始化表结构(二选一):

方法A — 浏览器访问:

浏览器打开:https://你的域名/config/init_db.php

看到 ✅ 数据库表创建成功! 即可。

🔒
完成后删除 config/init_db.php,防止被他人访问!

方法B — SSH 命令行:

bash
cd /storage/emulated/0/ometv
php config/init_db.php
3

修改配置文件

⏱ 约2分钟

编辑 📄 config/database.php

php
define('DB_HOST', '127.0.0.1');
define('DB_NAME', 'ometv');
define('DB_USER', 'ometv');
define('DB_PASS', '你设置的密码');   // ← 改为第2步的密码
define('SITE_URL', 'https://你的域名.com');

// WebSocket 配置
define('WS_HOST', '0.0.0.0');
define('WS_PORT', '8282');

再编辑 📄 js/app.js,修改第8行 WebSocket 地址:

javascript
WS_URL: 'wss://你的域名:8282',  // ← 改为你的域名
💡
两种写法:① wss://域名:8282(需放行端口)② wss://域名/ws/(Nginx代理,推荐)
4

安装 PHP 依赖 + 放行端口

⏱ 约5分钟

安装 Composer 依赖:

宝塔面板 → 软件商店 → 安装「Composer」→ 然后 SSH 执行:

bash
# 进入项目目录
cd /storage/emulated/0/ometv
# 安装依赖
composer install

看到 Generating autoload files 即成功,此时项目下会出现 vendor/ 文件夹。

📦
若提示 composer command not found,使用宝塔全局命令 composerphp /www/server/php/74/bin/composer install

放行端口 8282:

宝塔面板安全 → 防火墙 → 添加 8282 TCP
云服务器安全组 → 添加入方向规则 → 8282 TCP
系统防火墙firewall-cmd --zone=public --add-port=8282/tcp --permanent && firewall-cmd --reload
💡
如果使用 Nginx 反向代理(见第6步),则无需放行 8282 端口。
5

启动 WebSocket 服务器

⏱ 约2分钟

前台启动(调试用):

bash
cd /storage/emulated/0/ometv
php server.php start

成功输出:

----------------------- WORKERMAN -----------------------
Workerman version:4.1.x          PHP version:7.4.x
------------------------ WORKERS ------------------------
worker            listen                    processes status
OmeTV-WebSocket   websocket://0.0.0.0:8282     2      [OK]

看到 [OK] 即启动成功。Ctrl+C 停止。

后台运行(Linux 守护模式):

bash
php server.php start -d    // 启动(守护进程)
php server.php status      // 查看状态
php server.php stop        // 停止
php server.php restart     // 重启
Linux 下 -d 守护模式完美支持,可直接后台运行。
6

设置开机自启(推荐)

⏱ 约3分钟

为防止服务器重启后 WS 服务停止,用 systemd 注册守护。

创建服务文件:

bash
# 创建 systemd 服务
cat > /etc/systemd/system/ometv.service << 'EOF'
[Unit]
Description=OmeTV WebSocket Server
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/storage/emulated/0/ometv
ExecStart=/www/server/php/74/bin/php server.php start
ExecStop=/www/server/php/74/bin/php server.php stop
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
EOF

启动并设置自启:

bash
# 重新加载 systemd
systemctl daemon-reload
# 启动服务
systemctl start ometv
# 设置开机自启
systemctl enable ometv
# 查看运行状态
systemctl status ometv
⚠️
注意 PHP 路径 要根据实际版本调整。宝塔 PHP 7.4 通常在 /www/server/php/74/bin/php,可用 which php 查询。
7

Nginx 反向代理(可选但推荐)

⏱ 约3分钟

通过 Nginx 代理 WebSocket,复用 443 端口,无需额外开放 8282

宝塔 → 网站 → 你的站点 →「配置文件」→ 在 server { } 中添加:

nginx
# WebSocket 代理
location /ws/ {
    proxy_pass http://127.0.0.1:8282;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_read_timeout 86400s;
}

然后 js/app.js 中改为:WS_URL: 'wss://你的域名/ws/'

最后 重载 Nginx:宝塔首页 → Nginx → 重载配置,或 SSH 执行 nginx -s reload

验证测试

① 网页打开 https://你的域名/,看到毛玻璃欢迎页
② API访问 /api/index.php?action=online_count,返回 JSON
③ WebSocketF12 → Network → WS,点击匹配应有连接
④ 视频两个浏览器窗口同时打开,点击匹配,能互见视频
⑤ 服务状态SSH 执行 systemctl status ometv 查看是否 running
🎉
全部通过即部署成功!
?

常见问题排查

摄像头没有画面?

① 检查是否使用 HTTPS(非 localhost 必须)
② 浏览器是否允许摄像头权限
③ 摄像头是否被其他应用占用

匹配一直转圈连不上?

php server.php statussystemctl status ometv 确认 WS 运行中
② 检查防火墙/安全组是否放行 8282
③ F12 → Console 查看 WebSocket 连接错误
④ 确认 js/app.js 中 WS_URL 正确

匹配成功但看不到对方视频?

① 双方 NAT 可能对称型,需 TURN 服务器中转
② 检查 peerConnection 的 ICE 状态(F12 → Console)
③ 生产环境建议部署 coturn TURN 服务器

数据库连接失败?

① 确认 MySQL 服务已启动
② 检查 config/database.php 中密码是否正确
③ 宝塔面板中检查数据库用户权限(需允许 localhost 访问)

composer 命令找不到?

① 宝塔软件商店安装 Composer
② 或使用完整路径:php /www/server/php/74/bin/composer install

systemd 服务启动失败?

① 检查 PHP 路径是否正确:which php
② 查看日志:journalctl -u ometv -f
③ 确认端口 8282 未被占用:netstat -tlnp | grep 8282

📐

技术架构速览

前端原生 HTML5 + CSS3(毛玻璃) + JavaScript(WebRTC API)
信令服务PHP Workerman WebSocket(端口 8282)
视频传输WebRTC P2P(浏览器直连,不经过服务器)
NAT 穿透Google STUN(开发用)/ 自建 TURN(生产用)
数据库MySQL(用户、匹配记录、举报、消息)
运行环境宝塔 Linux 版 + Nginx + PHP 7.4+
进程守护systemd(开机自启、崩溃重启)