You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于触发条件自动重启Docker容器的方案咨询

解决Synology NAS上Docker容器(Plex/xTeVe)无响应但健康检查正常的重启方案

一、自动检测重启方案

针对容器无响应但默认健康检查未触发的问题,可通过自定义检测逻辑实现自动重启:

1. 定时执行自定义检测脚本

在Synology NAS的「任务计划」中添加定时任务,周期性检测服务可用性,失败则重启容器:

  • 编写检测脚本(保存为check_and_restart.sh):
#!/bin/bash
# 配置NAS IP和容器路径
NAS_IP="192.168.1.100"
COMPOSE_PATH="/volume1/docker/media"

# 检测Plex服务
curl -s --connect-timeout 5 "http://${NAS_IP}:32400/web" > /dev/null
if [ $? -ne 0 ]; then
  docker-compose -f "${COMPOSE_PATH}/docker-compose.yml" restart plex
fi

# 检测xTeVe服务
curl -s --connect-timeout 5 "http://${NAS_IP}:34400" > /dev/null
if [ $? -ne 0 ]; then
  docker-compose -f "${COMPOSE_PATH}/docker-compose.yml" restart xteve
fi
  • 给脚本添加执行权限:chmod +x check_and_restart.sh
  • 在Synology任务计划中创建「用户定义的脚本」,设置每5分钟执行一次,执行用户选择有Docker操作权限的账号(如admin)。

2. 监控工具联动Webhook重启

用Uptime Kuma(可部署在Docker或你的Web服务器)监控服务端口,触发宕机时调用Webhook执行重启:

  • 在Uptime Kuma中添加Plex/xTeVe的监控项,设置检测端口(32400/34400)
  • 配置Webhook动作,当监控状态变为「宕机」时,调用你Web服务器上的重启脚本(脚本逻辑同上面的SSH执行命令)

二、家属友好型手动触发方案

1. 简易网页按钮

在你的Web服务器上部署一个极简页面,点击按钮即可触发重启:

  • 前端HTML(restart.html):
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>媒体服务器重启</title>
  <style>button{padding:10px 20px;font-size:18px;margin:10px;}</style>
</head>
<body>
  <h3>媒体服务器重启工具</h3>
  <button onclick="restartService('plex')">重启Plex</button>
  <button onclick="restartService('xteve')">重启xTeVe</button>
  <script>
    function restartService(service) {
      fetch(`/restart.php?service=${service}`)
        .then(res => res.text())
        .then(msg => alert(msg));
    }
  </script>
</body>
</html>
  • 后端PHP脚本(restart.php):
<?php
$service = $_GET['service'] ?? '';
if (!in_array($service, ['plex', 'xteve'])) {
  echo "无效服务";
  exit;
}

// 配置NAS登录信息(提前配置Web服务器免密SSH登录NAS)
$nasUser = "admin";
$nasIp = "192.168.1.100";
$composePath = "/volume1/docker/media";

$command = "ssh {$nasUser}@{$nasIp} \"cd {$composePath} && docker-compose restart {$service}\"";
exec($command);
echo "{$service}正在重启,请稍等...";
?>
  • 提前配置Web服务器的用户免密登录NAS:将Web服务器的公钥添加到NAS用户的~/.ssh/authorized_keys文件中。

2. 智能家居物理/虚拟按钮

如果部署了HomeAssistant,可添加一键重启按钮:

  • 在configuration.yaml中添加配置:
# 定义重启命令
shell_command:
  restart_plex: 'ssh admin@192.168.1.100 "cd /volume1/docker/media && docker-compose restart plex"'
  restart_xteve: 'ssh admin@192.168.1.100 "cd /volume1/docker/media && docker-compose restart xteve"'

# 创建虚拟按钮
input_button:
  restart_plex:
    name: 重启Plex服务器
    icon: mdi:server-restart
  restart_xteve:
    name: 重启xTeVe服务器
    icon: mdi:server-restart
  • 重启HomeAssistant后,在控制面板添加这两个按钮;如果有物理智能按钮(如Aqara、小米开关),可关联按钮触发对应的shell_command。

3. Alexa语音指令

通过HomeAssistant关联Alexa,实现语音触发重启:

  • 在HomeAssistant的「设置-设备与服务」中添加Alexa集成,将上述input_button暴露给Alexa
  • 在Alexa APP中创建自定义语音指令,比如“重启Plex服务器”关联HomeAssistant的「重启Plex服务器」按钮
  • 家属只需说“Alexa,重启Plex服务器”即可触发容器重启

内容的提问来源于stack exchange,提问作者astorm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:39:37