TGViewer
Записки IT специалиста Записки IT специалиста @interface31 · 8.99K subscribers
Post #6835 541
Автоматический перезапуск Aspia в Docker
 
Не так давно мы рассказывали, как запустить популярную систему удаленного доступа Aspia в Docker - https://t.me/interface31/6296/
 
И вот некоторое время назад пользователи начали сталкиваться с проблемами, перестает работать ретранслятор, но сам контейнер остается рабочим и Docker его не перезапускает.
 
С чем связаны падения ретранслятора пока непонятно, но по всем признакам проблема внешняя, так как на совершенно разных установках ретрансляторы падают практически одновременно.
 
Что делать? Перезапускать контейнеры руками? Но это не наш метод, да и где взять столько рук. Поэтому обратимся к средствам автоматизации, существует проект autoheal, который позволяет следить за здоровьем контейнера и перезапускать его, если что-то пошло не так.
 
Откроем docker-compose.yml в папке проекта Aspia и приведем его к следующему виду:

services:
  aspia-server:
    image: paprikkafox/aspia-server:latest
    container_name: aspia-server
    hostname: aspia.example.com
    environment:
      - EXTERNAL_IP=203.0.113.6
    ports:
      - "8070:8070"
      - "8060:8060"
    volumes:
      - ./data/database:/var/lib/aspia:rw
      - ./data/config:/etc/aspia:rw
    restart: always
     labels:
      - "autoheal=true"
    healthcheck:
      test: ["CMD-SHELL", "pidof aspia_relay && pidof aspia_router || exit 1"]
      interval: 10s      
      timeout: 5s        
      retries: 2         
      start_period: 15s  

 
Мы добавили метку, чтобы autoheal мог контролировать данный контейнер и добавили проверки процессов роутера или ретранслятора, если хоть один из них упал, то после двух неудачных проверок контейнер перейдет в статус unhealthy.
 
Теперь создадим отдельную директорию:
 
mkdir  /opt/autoheal
 
И разместим в ней следующий docker-compose.yml:
 
services:
  autoheal:
    image: willfarrell/autoheal:latest
    container_name: autoheal
    restart: always
    environment:
      - TZ=Europe/Moscow
      - AUTOHEAL_CONTAINER_LABEL=autoheal
      - AUTOHEAL_DELAY=2
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

 
В данном случае мы отслеживаем только контейнеры с меткой autoheal=true и перезапускаем их с задержкой в 2 секунды.

Запускаем все это добро и радуемся жизни, схема рабочая, проверена на практике.
 
Но есть один неочевидный момент. По умолчанию autoheal запускается с опцией:
 
AUTOHEAL_ONLY_MONITOR_RUNNING=false
 
Это означает, что он будет мониторить даже незапущенные контейнеры и автоматически будет поднимать их, даже если вы руками их остановите. Чтобы избежать этой ситуации добавьте в секцию environment опцию:

- AUTOHEAL_ONLY_MONITOR_RUNNING=true
 
Подобным образом мы можем отслеживать далеко не только Aspia, но и вообще любой сервис по любому нужному нам показателю, который не приводит к аварийному завершению контейнера, но влияет на его пользовательские характеристики. Главное – правильно написать условия проверки.
  • 👍 8
  • 🔥 1
More from @interface31
  1. Oct 3, 2026Post #6834
  2. Oct 2, 2026До первого сервис-пака не ставить На фоне некоторых коллег, которые бегут ставить свежий с…
  3. Oct 2, 2026Post #6832
  4. Oct 2, 2026Без лишнего шума и пыли вышла Aspia 3.0. Ключевые изменения в выжимке ниже: 1️⃣ Архитектур…
  5. Oct 2, 2026Post #6826
  6. Oct 1, 2026V2V миграция при помощи Vinchin Backup & Recovery Виртуализация сегодня – норма жизни, даж…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →