lifecarelog
개발일지

n8n 자동 업그레이드 사고 회고, credential이 사라진 날

n8n 컨테이너 자동 업그레이드 후 credential과 데이터가 사라진 사고를 복구한 기록. 암호화 키 고정, 버전 고정, 백업 3가지로 재발을 막았어요.

5분 읽기

아침에 알림이 조용하길래 이상해서 n8n 대시보드를 열어 봤어요. 워크플로 9개가 전부 멈춰 있고, credential 목록은 비어 있었어요. 전날 밤 돌아간 자동 업그레이드가 원인이었어요.

무슨 일이 있었나

셀프호스팅한 n8n을 최신으로 유지하고 싶어서 컨테이너 자동 업데이트를 켜 둔 상태였어요. 이미지 태그를 latest로 두면 새 버전이 나올 때마다 컨테이너를 지우고 새로 만들거든요. 문제는 이 과정에서 데이터 볼륨이 새 경로로 붙으면서, 기존 데이터베이스와 암호화 키를 못 찾게 된 거예요.

n8n은 credential을 암호화 키로 잠가서 저장해요. 키를 환경변수로 고정하지 않으면 처음 실행할 때 하나 만들어 볼륨 안에 보관하고요. 새 볼륨으로 시작되니 키도 새로 생기고, 옛 데이터는 열 수 없는 상태가 됐어요.

자동 업그레이드컨테이너 재생성새 볼륨 마운트암호화 키 불일치credential 복호화 실패

복구하면서 확인한 것

직접 복구를 해 보니 다행히 서버에 옛 볼륨이 그대로 남아 있었어요. 컨테이너만 새로 만들어졌지 디스크가 지워진 건 아니었거든요. 볼륨 목록을 확인해 보니 이름이 비슷한 볼륨이 2개였고, 옛것을 다시 마운트하니 워크플로와 credential 7개가 돌아왔어요. 여기까지 3시간 정도 걸렸어요.

아찔했던 건 그다음 상상이에요. 만약 정리한다고 안 쓰는 볼륨을 지워 뒀다면 복구할 방법이 없었어요. 백업이 없었으니까요.

재발 방지로 바꾼 3가지

  • 암호화 키를 환경변수로 고정했어요. 키가 밖에 있으면 컨테이너가 몇 번 다시 만들어져도 credential이 안 깨져요.
  • 이미지 태그를 버전으로 고정했어요. 업그레이드는 릴리스 노트를 읽고 손으로 해요.
  • 볼륨을 매일 1회 압축해서 다른 디스크로 보내요. 스크립트 작성은 10분이면 충분했어요.
  • 암호화 키 환경변수 고정
  • 이미지 버전 태그 고정
  • 볼륨 매일 백업

적용해 봤더니 업그레이드가 조금 번거로워진 대신 밤이 편해졌어요. 라이프케어로그 블로그 발행 자동화도 이 n8n 위에서 돌고 있어서, 파이프라인이 멈추면 콘텐츠 운영이 같이 멈추거든요.

마무리

혼자 운영하다 보면 편의 기능부터 켜고 싶어져요. 그런데 자동 업데이트는 편의라기보다 위험을 자동화하는 쪽에 가까웠어요. 셀프호스팅 도구를 쓰고 있다면 오늘 두 가지만 확인해 보세요. 암호화 키가 환경변수에 있는지, 백업이 실제로 돌고 있는지요.

#n8n#자동화#셀프호스팅

라이프케어로그 서비스가 궁금하신가요?

AI 기반 건강·일정·재활 관리 앱을 직접 써보세요.

서비스 살펴보기

관련 글

댓글

아직 댓글이 없어요. 첫 댓글을 남겨주세요.