MENU

在minecraft面板服务器部署owncast

在挂机刷游戏时,为了实时监控脚本运行状态,我们通常会使用远程桌面或直接开启显示器.但这些操作往往会触发分辨率刷新或鼠标位移,导致脚本失效.

虽然可以通过 OBS 推流至 YouTube 等平台解决,但在游戏中包含背景版权音乐时,容易触发版权限制.因此,自建 Owncast 成了最优解.鉴于常规 VPS 价格及线路延迟问题,利用便宜大碗的 Minecraft 面板服务器 部署推流服务是一个极具性价比的方案.


🚀 工作原理

Minecraft 面板通常通过 Docker 容器运行 java -jar server.jar.服务器主机通过将预分配的端口转发至该容器来实现玩家连接.

利用这一原理,我们可以将 server.jar 替换为自定义的二进制文件或脚本:

  1. 引导程序:将一个自定义的 JAR 包重命名为 server.jar.
  2. 劫持执行:该 JAR 包运行后会调用系统 Bash 执行 start.sh,从而实现在容器内运行任意程序(如 Owncast、HAProxy 等).

🛠️ 准备工作

面板要求

  • 支持上传或自定义 server.jar.
  • 容器镜像内包含 bash.
  • 已知可用面板:Pterodactyl、MCSManager、xserver.

工具清单

工具说明下载地址
引导 JAR核心引导,用于调用 sh 脚本Google Drive
Supervisord进程守护,确保服务挂掉后自动重启GitHub Releases
Owncast开源自建直播推流服务GitHub Releases
FFmpegOwncast 必需的视频转码组件GitHub Releases
HAProxy端口复用工具(仅单端口面板需要)GitHub Releases

[!TIP]
如果担心引导 JAR 包的安全性,可以根据工作原理自行编写并编译.


📂 环境配置与文件上传

  1. 初始化环境:在面板中安装任意版本的 Minecraft (建议选择 Java 1.21 镜像).
  2. 清理文件:删除 worlds 目录及其他不必要的文件.
  3. 替换核心:将下载的“引导 JAR”上传并重命名为 server.jar.
  4. 创建目录结构

    • worlds/etc (存放配置文件)
    • worlds/usr/bin (存放二进制文件)
    • worlds/usr/local/owncast (存放 Owncast 主程序)
    • worlds/var/log (存放日志文件)
  5. 归位二进制文件 (请确保文件名准确):

    • supervisord -> worlds/usr/bin/supervisord
    • owncast -> worlds/usr/local/owncast/owncast
    • ffmpeg -> worlds/usr/bin/ffmpeg
    • haproxy -> worlds/usr/bin/haproxy

📝 配置文件说明

1. 启动脚本 (start.sh)

server.jar 同级目录下创建 start.sh,内容如下:

#!/bash
# 自动修改权限并启动进程守护
cur_dir=$(pwd)
echo "Current Directory: ${cur_dir}"
echo "User: $(whoami)"

chmod -R 0755 ${cur_dir}
export CUR_DIR=${cur_dir}

# 启动 Supervisor
${cur_dir}/worlds/usr/bin/supervisord -c ${cur_dir}/worlds/etc/supervisor.conf

[!IMPORTANT]
关键步骤:保存并点击面板“启动”.看到输出 Current Directory 后立即停止.记录该路径(例如 Pterodactyl 是 /home/container,MCSManager 是 /workspace),接下来的配置文件需据此修改.

2. Supervisor 配置

创建 worlds/etc/supervisor.conf

[program:owncast]
autorestart=true
directory=/home/container/worlds/usr/local/owncast
stderr_logfile=/home/container/worlds/var/log/owncast.err.log
stdout_logfile=/home/container/worlds/var/log/owncast.out.log
environment=OWNCAST_FFMPEG_PATH=/home/container/worlds/usr/bin/ffmpeg,PATH=/home/container/worlds/usr/bin:%(ENV_PATH)s
command=/home/container/worlds/usr/local/owncast/owncast -webserverport 8080 -rtmpport 1935

[!NOTE]
如果面板支持多端口,请将 webserverportrtmpport 替换为你记录的实际端口.


🔗 端口复用 (HAProxy)

如果面板仅提供一个端口,必须利用 HAProxy 根据流量协议进行转发.

  1. 创建 worlds/etc/haproxy.cfg
global
    log stdout format raw local0
    maxconn 4096
    daemon

defaults
    log     global
    mode    tcp
    timeout connect 5s
    timeout client  1m
    timeout server  1m

frontend fe_http_rtmp
    bind *:20186  # 替换为面板分配给你的实际端口
    mode tcp
    tcp-request inspect-delay 1s
    tcp-request content accept if HTTP
    use_backend http_back if HTTP
    default_backend rtmp_back

backend http_back
    server http_server 127.0.0.1:8080 check

backend rtmp_back
    server rtmp_server 127.0.0.1:1935 check
  1. supervisor.conf 末尾追加 HAProxy 守护
[program:haproxy]
command = /home/container/worlds/usr/bin/haproxy -f /home/container/worlds/etc/haproxy.cfg -db
directory = /home/container/worlds/etc
autostart = true
autorestart = true
stderr_logfile = /home/container/worlds/var/log/haproxy_err.log
stdout_logfile = /home/container/worlds/var/log/haproxy_out.log

💡 特定面板注意事项

MCSManager

  • 特权环境:MCSManager 的容器通常基于 Debian 且为 Root 权限.
  • 环境补全:在 start.shwhoami 下方增加 apt update && apt install haproxy -y.
  • 路径调整

    • 路径前缀应为 /workspace.
    • HAProxy 的 command 路径通常为 /usr/sbin/haproxy.
    • 面板默认端口请设为 25565.

xserver

懒的写了

都能用上xserver了,那应该能自己改好配置文件和解决问题.

🎬 最后

现在你可以启动面板并尝试推流了.
注意:通过 HAProxy 转发后,推流地址中的端口应填入 面板分配的外部端口,而非 Owncast 默认的端口

最后编辑于: 2026 年 05 月 24 日
996.icu 996.icu