자체 호스팅한 Discourse 설치를 한 VPS에서 다른 VPS로 마이그레이션한 최근 경험을 공유합니다. 이는 Discourse의 제작자들과 관리자 커뮤니티에 '감사합니다!'라고 전하는 취지입니다. 이 마이그레이션은 LetsEncrypt SSL 및 이메일 구성을 그대로 유지합니다.
원래 설치 환경은 Google Cloud Platform (GCP)의 g1-small 인스턴스 유형(1 vCPU, 1.7 GB RAM)이었으며, 공식 가이드(INSTALL-cloud.md)를 따르고 tests-passed 브랜치를 추적하고 있었습니다.
새로운 설치 환경은 Evolution Host의 ‘Developer’ 유형 KVM VPS(2 CPU 코어, 2 GB RAM, 40 GB SSD, 재빌드 시간 7분 23초, 월 €10)입니다. Ubuntu Server 18.04.4 minimal이 설치되어 있으며, 1GB 스왑 파티션이 존재합니다(템플릿 기반일 가능성이 높음).
호스트에 추가 소프트웨어가 설치되어 있었다면, 웹 서버와 같은 불필요한 소프트웨어를 제거하고 호스트를 보강(기본 사용자 이름, 비밀번호, sshd 설정 등)하는 것을 잊지 마세요.
아래는 루트 권한으로 실행한 터미널 명령어 목록이며, 설치 환경에 특화된 데이터는 삭제되어 있습니다(대문자로 표기된 부분은 본인 정보로 대체하세요). 수정 사항이나 질문이 있다면 댓글로 남겨 주세요!
새 호스트 준비
apt update && apt -y dist-upgrade
apt install -y byobu mosh htop iotop hugepages curl git && byobu-enable
hugeadm --thp-never
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
echo '/swapfile swap swap auto 0 0' | tee -a /etc/fstab
echo 'vm.swappiness = 10' > /etc/sysctl.d/30-discourse-swap.conf
git clone https://github.com/discourse/discourse_docker.git /var/discourse
reboot
기존 호스트 준비 및 Discourse 파일 백업
cd /var/discourse
./launcher rebuild app
./launcher enter app
discourse backup
exit
(Discourse 백업 파일 이름을 확인하세요)
cp -v containers/app.yml ~
cd shared/standalone
cp -v settings.yml ~
tar cvf ~/ssl.tar ssl
tar cvf ~/letsencrypt.tar letsencrypt
cd ~
scp -C ssl.tar letsencrypt.tar app.yml settings.yml USERNAME@NEW-HOST-IP:~
scp /var/discourse/shared/standalone/backups/default/YOUR-DISCOURSE-BACKUP.tar.gz USERNAME@NEW-HOST-IP:~
exit
새 호스트에서 Discourse 복원
(위에서 scp로 복사한 파일들을 루트 사용자의 홈 디렉토리로 이동하세요)
echo 'NEW-HOST-IP YOUR-DISCOURSE-FQHN' | tee -a /etc/hosts
cd /var/discourse
cp -v ~/app.yml containers
mkdir -v shared/standalone
cd shared/standalone
cp -v ~/settings.yml .
tar xvf ~/ssl.tar
tar xvf ~/letsencrypt.tar
cd /var/discourse
./discourse-setup
(discourse-setup는 오류 없이 완료되어야 하며, 관련 구성 정보를 확인할 수 있어야 합니다)
mkdir -v shared/standalone/backups/default
cp -v ~/YOUR-DISCOURSE-BACKUP.tar.gz shared/standalone/backups/default
./launcher enter app
discourse enable_restore
discourse restore YOUR-DISCOURSE-BACKUP.tar.gz
discourse disable_restore
로컬 머신에서 테스트
echo 'NEW-HOST-IP YOUR-DISCOURSE-FQHN' | tee -a /etc/hosts
https://YOUR-DISCOURSE-FQHN/admin/email 로 이동하세요.
페이지 하단에서 이메일 주소를 입력하여 이메일 전송을 테스트하고, Discourse 사이트를 둘러보며 정상 작동 여부를 확인하세요.
모든 것이 정상적으로 작동한다고 판단되면, YOUR-DISCOURSE-FQHN의 DNS A 레코드를 새 호스트의 IP 주소로 변경하세요.