---
# System prepended metadata

title: '簡單的前後端部署（Docker, Caddy, AWS）'

---

# 簡單的前後端部署（Docker, Caddy, AWS）
## 開機器
1. 先去 AWS 開機器，配置可以改，這是我選的配置。
  ![](https://i.imgur.com/EdgGuCe.png)
2. 下面的 443 和 80 port 記得開
  ![](https://i.imgur.com/mXziqr2.png)
3. 開完之後就可以 ssh 進去機器了。如果剛剛選 key 的時候是選 Create new key pair 的話，記得下載 key。簡單的 ssh 配置：
    1. 在 `~/.ssh/config` 中寫
        ```
        Host {你想要的 host 名稱}
          HostName {host 的 ip}
          User ubuntu
          IdentityFile {你的 key 放的位置}
        ```
    2. `ssh {你想要的 host 名稱}`
4. 現在應該 ssh 就可以進去你的機器了

## 環境
1. 裝 Docker: https://docs.docker.com/engine/install/ubuntu/
    ```bash
    sudo apt-get update
    sudo apt-get install ca-certificates curl gnupg lsb-release
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
    ```
2. 裝 Docker Compose
    ```bash
    sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    docker-compose version
    ```
3. 裝 Caddy: https://caddyserver.com/docs/install#debian-ubuntu-raspbian
    ```bash
    sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
    sudo apt update
    sudo apt install caddy
    ```

## Docker
1. 把 docker-compose.yaml 貼進來
2. `sudo docker-compose up -d`
3. 用 `sudo docker ps` 確認 container 有跑起來

## Caddy
1. `sudo vim /etc/caddy/Caddyfile` 裡面應該會有預設的設定檔
2. 寫 config 檔 (以 port 7001 為例)
    ```
    your.domain.name {
        reverse_proxy localhost:7001
    }
    ```
3. `sudo systemctl reload caddy`
4. 去你的 DNS service 把 domain name 用 A 紀錄導到這台的 public ip。