Upgrade/Backup/Restore
업그레이드~
페이지: [톱니바퀴 아이콘] -> Upgrade
이미 AoT가 설치되어 있다면 웹 인터페이스의 Upgrade 옵션을 사용하거나(권장) 터미널에서 다음 명령을 실행하여 최신 AoT 릴리스로 업그레이드할 수 있습니다. 업그레이드 과정의 로그는 /var/log/aot/aotupgrade.log 에 생성되며 [톱니바퀴 아이콘] -> AoT Logs 페이지에서도 확인할 수 있습니다.
Docker 배포판 업그레이드~
페이지: [톱니바퀴 아이콘] -> Upgrade
Docker 배포판은 디스크의 파일을 갈아치우는 방식으로 업그레이드하지 않습니다. 발행된 이미지를 받아 컨테이너를 다시 만드는 것이 업그레이드입니다. Upgrade 페이지는 이를 감지해 다르게 동작합니다.
업데이트 가용 여부는 릴리스 목록이 아니라 컨테이너 레지스트리에서 판정합니다. 릴리스 태그는 밀자마자 GitHub에 생기지만, 이미지는 멀티아키텍처 빌드가 끝나는 몇 분 뒤에야 받을 수 있습니다. 그래서 실제로 발행된 이미지를 레지스트리에 물어봅니다. 화면에 "업데이트 있음"이 뜨면 지금 바로 설치할 수 있는 상태입니다.
업데이터 서비스 (선택)~
원클릭 업데이트와 자동 업데이트에는 작은 부가 서비스가 필요합니다. 없어도 Upgrade 페이지는 정확한 상태를 보여주며, 업데이트는 호스트에서 직접 적용합니다:
docker compose -f docker/docker-compose.prod.yml pull
docker compose -f docker/docker-compose.prod.yml up -d
앱은 자기 자신을 업데이트할 수 없습니다. 컨테이너를 다시 만드는 순간 그 명령을 실행하던 프로세스까지 함께 교체되어 명령이 중간에 죽기 때문입니다. 그래서 이 일은 별도 서비스가 맡습니다.
활성화하려면 docker/.env 에 두 값을 넣습니다:
AOT_PROJECT_DIR=/opt/AoT # 이 체크아웃의 절대 경로
AOT_HEALTH_KEY=$(openssl rand -hex 24) # 업데이터가 새 빌드를 확인하는 데 쓰는 키
그리고 업데이터 오버레이와 함께 기동합니다:
이 서비스는 호스트의 Docker 를 조작할 수 있습니다
업데이터는 Docker 소켓을 쥐고 있으며, 이는 호스트의 root 권한과 같습니다. 일부러 아주 작게 만들었고 공식 AoT 이미지만 받아오지만, 그 점을 받아들일 때만 켜십시오. 특권 컨테이너를 두고 싶지 않다면 같은 일을 호스트의 systemd 타이머로 할 수 있습니다 — install/aot-docker-update.service 를 참고하십시오.
업데이트 중에 일어나는 일~
- 먼저 데이터베이스와 업로드 파일을 백업합니다.
- 새 이미지를 내려받습니다.
- 데몬을 정상 종료합니다 — 종료 전에 출력을 지정된 정지 상태로 전환할 시간을 줍니다.
- 새 이미지로 컨테이너를 다시 만들고, 스키마는 자동으로 마이그레이션됩니다.
- 새 버전이 서비스 중이며 마이그레이션까지 반영됐다고 보고해야 성공으로 봅니다.
- 정상적으로 뜨지 않으면 이전 버전으로 자동 복구합니다. 마이그레이션이 이미 실행된 경우에는 데이터베이스도 함께 되돌립니다 — 이미지만 되돌리면 옛 코드가 새 스키마 위에서 도는 상태가 되기 때문입니다.
진행 상황은 Upgrade 페이지에 실시간으로 표시되고, 끝난 뒤에는 마지막 시도 결과가 남습니다.
업데이트 중에는 제어가 멈춥니다
컨테이너가 다시 뜨는 동안 출력은 제어되지 않습니다. 보통 몇 분이며, 그 시점에 진행 중이던 관수·보광·시퀀스는 중단됩니다.
자동 업데이트~
업데이터 서비스가 떠 있으면 Upgrade 페이지에 다음이 나타납니다.
- 업데이트 자동 설치 — 기본은 꺼짐입니다.
- 업데이트 시각 — 매일 이 시각에 한 번 확인합니다.
[톱니바퀴 아이콘] -> Configuration에 설정한 현지 시각 기준입니다.
시각이 되면 레지스트리를 확인해 새 버전이 발행돼 있으면 버튼을 눌렀을 때와 똑같이 설치합니다. 새 버전이 없으면 아무것도 하지 않고 확인했다는 기록만 로그에 남깁니다.
중요한 작동이 없는 시각을 고르십시오. 아직 "작동 중이면 연기" 기능은 없습니다. 지정한 시각이 되면 출력이 켜져 있더라도 컨테이너를 다시 만듭니다.
데이터~
데이터베이스, 업로드 파일, 시설 3D 모델, 백업, 사용자 스크립트는 모두 Docker 볼륨에 있어 이미지를 교체해도 보존됩니다. 이전 버전으로 되돌리려면 docker/.env 의 AOT_IMAGE_TAG 를 바꾸고 컨테이너를 다시 만들면 됩니다 — 마지막으로 정상 동작한 태그는 업데이터가 같은 파일에 AOT_IMAGE_TAG_PREV 로 기록해 둡니다.
백업 / 복원~
페이지: [톱니바퀴 아이콘] -> Backup Restore
시스템이 업그레이드되거나 웹 인터페이스의 [톱니바퀴 아이콘] -> Backup Restore 페이지에서 지시를 받으면 /var/AoT-backups 에 백업이 생성됩니다.
백업을 복원해야 하는 경우 [톱니바퀴 아이콘] -> Backup Restore 페이지에서 복원할 수 있습니다(권장). 복원하려는 백업을 찾아 그 옆의 Restore 버튼을 누르세요. 웹 인터페이스에 접근할 수 없는 경우 명령줄을 통해서도 복원을 시작할 수 있습니다. 다음 명령을 사용하여 복원을 시작하세요. [backup_location] 에는 복원할 백업의 전체 경로를 입력해야 합니다(예: 따옴표 없이 "/var/AoT-backups/AoT-backup-2018-03-11_21-19-15-5.6.4/").