Digital Ocean 搬遷 Droplet 紀錄

原因

遇到了 ubuntu 24.10 支援終止的問題,才發現之前裝的版本不是 LTS(Long-Term Support),然後因為想切回 old-releases.ubuntu.com 重新升級系統但是沒有成功,也想試試現有架構全部在新環境部署有沒有什麼問題,所以花了一些時間搬家。

How

舊的 droplet 上面跑了5個 container,分別是:

  1. 這個網站的 Next.js Server
  2. 這個網站的內容管理系統(CMS)Strapi
  3. Wakawaka 前端後端各一個
  4. Ocean Keep Diving 的 Next.js Server

開始盤點有哪些檔案需要搬,因為大部分伺服器的檔案一開始為了版控,都是寫成 shell script 送到伺服器,不會在伺服器端做更改,後台資料則是有 DB 處理,所以看著檔案稍微檢查就可以。

server-script
|-- docker
|   |-- iamivanwu-web.tar
|   |-- scp-iamivanwu-web-to-server.sh
|   `-- command
|       |-- load-iamivanwu.sh
|       |-- start-iamivanwu.sh
|       |-- scp-load-iamivanwu.sh
|       `-- scp-start-iamivanwu.sh
`-- nginx
    |-- iamivanwu.conf
    |-- restart-iamivanwu-nginx.sh
    |-- scp-iamivanwu-to-server.sh
    |-- scp-error-html-to-server.sh
    `-- scp-iamivanwu-restart-nginx-to-server.sh

接下來連到伺服器把該裝的套件都裝好

sudo apt update && sudo apt upgrade -y
apt install -y ca-certificates curl git nginx

# docker
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
    -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" \
  > /etc/apt/sources.list.d/docker.list
apt update
apt install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin
systemctl enable --now docker
docker --version
docker compose version
nginx -v

# certbot
apt install -y certbot python3-certbot-nginx
sudo certbot --nginx \
  -d iamivanwu.com \
  -d www.iamivanwu.com

比上次多是這次裝了 certbot,之前 https 都是靠 cloudflare 幫我處理,但看了安全建議後決定自己處理一遍