Восстановление SQLite
Восстановление требует SSH и административного доступа к Docker. Это операция с данными всей панели; предусмотренного мастера в интерфейсе нет. Сначала проверьте процедуру на отдельном окружении. Данные приложений восстанавливаются отдельно.
Сначала проверьте копию
Выберите тот же образ Asmy, из которого сделана копия, и существующий файл.
В примерах замените X.Y.Z и дату реальными значениями:
IMAGE="alexbidenko/admire-server-manager:X.Y.Z"
BACKUP="daily-2026-10-15.sqlite"
docker volume create asmy-restore-check
docker run --rm \
-v asmy-restore-check:/go/app/data \
-v admire-server-manager_backups:/go/app/backups:ro \
"$IMAGE" storage restore "/go/app/backups/$BACKUP"
docker run --rm -v asmy-restore-check:/go/app/data "$IMAGE" storage check
asmy-restore-check должен быть новым отдельным volume, не volume другой
установки. Команда проверяет копию и создаёт новую БД атомарно; существующую
asmy.sqlite не перезаписывает. Ошибка о существующей БД — причина проверить
выбранный volume, а не удалять его содержимое. Исходный snapshot читается без
изменений; volume копий в этих командах подключён только для чтения.
Если основной файл пропал, но остались WAL/SHM, команда также откажет. Сохраните эти файлы и выясните причину; не удаляйте их, чтобы обойти защиту. Для восстановления используйте новый volume или заранее сохраните все прежние файлы вместе.
Эта проверка не меняет рабочую панель. Для полного пробного запуска используйте изолированный Docker daemon и синтетические внешние подключения: Asmy получает широкий доступ к Docker и может применять Caddy и выполнять обновления.
Остановите панель
Убедитесь, что installer/updater не выполняется параллельно. Для Compose:
docker stop admire-server-manager_application
Для Swarm:
docker service scale admire-server-manager_application=0
В Swarm дождитесь фактической остановки task. Убедитесь, что нет работающих процессов Asmy над этими данными. Не удаляйте lock-файл, чтобы обойти отказ команды.
Сохраните прежние файлы и восстановите копию
Следующая команда сохраняет прежнюю БД вместе с WAL/SHM внутри того же volume. Она предназначена для стандартной установки и выполняется только после остановки:
docker run --rm -v admire-server-manager_data:/go/app/data \
--entrypoint sh "$IMAGE" -c '
set -eu
test -f data/asmy.sqlite
retained="data/before-restore-$(date -u +%Y%m%dT%H%M%S)"
mkdir "$retained"
for file in data/asmy.sqlite data/asmy.sqlite-wal data/asmy.sqlite-shm; do
if test -e "$file"; then mv "$file" "$retained/"; fi
done
'
docker run --rm \
-v admire-server-manager_data:/go/app/data \
-v admire-server-manager_backups:/go/app/backups:ro \
"$IMAGE" storage restore "/go/app/backups/$BACKUP"
docker run --rm -v admire-server-manager_data:/go/app/data "$IMAGE" storage check
При любой ошибке остановитесь: исходная копия и прежние файлы сохранены, панель не нужно запускать до выяснения причины. Не возвращайте старый PostgreSQL образ для открытия SQLite и не копируйте чужие WAL/SHM рядом с восстановленной БД.
Запустите и проверьте
Верните остановленный контейнер командой docker start admire-server-manager_application
или восстановите Swarm replicas командой
docker service scale admire-server-manager_application=1.
Проверьте health/logs, вход, проекты, домены и применение конфигурации Caddy.
Работайте на том же узле, где находится volume панели.
Восстанавливаются данные на момент выбранной копии. Изменения после неё будут отсутствовать. Прежние файлы и проверочный volume не удаляйте до подтверждения результата; их последующая очистка — отдельная осознанная операция.