Rocky Linux 9.5 初始設定教程:專為 Docker 場景設計

這份教程基於 Rocky Linux 9.5 的穩定性和與 RHEL 的高度相容性,專門針對使用 Docker 的雲基礎設施專案(如 Traefik、Mail 服務等)進行優化。所有專案檔案統一放置在 /opt/mycloud-infra/(可替換為 /opt/custom)。教程先後有序、詳盡完整,適合保存作為參考手冊。

前提假設

  • 使用 Vultr 作為雲提供商(其他平台步驟類似)。
  • 伺服器規格建議:至少 1 vCPU、2 GB RAM、20 GB SSD。
  • 所有命令以 root 或 sudo 執行,除非指定。
  • 安全原則:最小權限、最小暴露端口、定期備份。

教程階段

  1. 部署 Rocky Linux 9.5
  2. 系統初始化
  3. 用戶創建與權限設定
  4. 安裝與配置 Docker
  5. SSH 遠端存取安全配置
  6. 防火牆與端口管理
  7. 額外安全強化
  8. 專案目錄設定與權限最佳化
  9. 驗證與維護

1. 部署 Rocky Linux 9.5

  1. 登入 Vultr 帳戶 → "Deploy New Instance"
  2. 選擇位置(如 Singapore 或 Tokyo)
  3. 選計劃:Cloud Compute,起始規格 1 vCPU、2 GB RAM
  4. OS:選擇 "Rocky Linux 9 x64"
  5. 上傳 SSH 公鑰,設定主機名,部署
  6. 記錄 IP 並測試連線:ssh root@your_server_ip
注意: Vultr 預設鏡像已足夠,若需特定版本可上傳 ISO。

2. 系統初始化

  1. 更新系統:
    sudo dnf update -y
    sudo dnf upgrade -y
    sudo reboot
  2. 安裝基本工具:
    sudo dnf install -y epel-release
    sudo dnf install -y vim net-tools wget curl firewalld fail2ban
  3. 設定時區:
    sudo timedatectl set-timezone Asia/Taipei
  4. 啟用 NTP:
    sudo systemctl enable --now chronyd

3. 用戶創建與權限設定

  1. 創建用戶(以 jonathan 為例):
    sudo adduser jonathan
    sudo passwd jonathan
  2. 加入 wheel 與 docker 組(docker 組待安裝後):
    sudo usermod -aG wheel jonathan
    sudo usermod -aG docker jonathan

4. 安裝與配置 Docker

  1. 添加倉庫並安裝:
    sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. 啟動並加入用戶:
    sudo systemctl start docker
    sudo systemctl enable docker
    sudo usermod -aG docker jonathan
  3. 驗證:
    su - jonathan
    docker --version
    docker compose version
  4. 創建網路:
    docker network create traefik

5. SSH 遠端存取安全配置

  1. 編輯 /etc/ssh/sshd_config
    • Port 2222
    • PermitRootLogin no
    • PasswordAuthentication no
    • AllowUsers jonathan
    重啟: sudo systemctl restart sshd
  2. 產生並複製金鑰:
    ssh-keygen -t ed25519 -C "your_email@example.com"
    ssh-copy-id jonathan@your_server_ip -p 2222
  3. 測試: ssh jonathan@your_server_ip -p 2222

6. 防火牆與端口管理

  1. 啟用:
    sudo systemctl start firewalld
    sudo systemctl enable firewalld
  2. 添加常用端口:
    sudo firewall-cmd --permanent --add-port=2222/tcp
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    # Mail 端口示例
    sudo firewall-cmd --permanent --add-port=25/tcp  # SMTP
    sudo firewall-cmd --permanent --add-port=465/tcp # SMTPS
    sudo firewall-cmd --permanent --add-port=993/tcp # IMAPS
    sudo firewall-cmd --reload
    sudo firewall-cmd --list-all

7. 額外安全強化

  • SELinux:檢查 sestatus,必要時設 permissive
  • 自動更新:安裝 dnf-automatic 並啟用 timer
  • Fail2Ban:安裝並配置 sshd jail
  • 其他:強密碼政策、禁用 postfix 等

8. 專案目錄設定與權限最佳化

  1. 創建目錄:
    sudo mkdir -p /opt/mycloud-infra/traefik/letsencrypt
  2. 一鍵權限:
    sudo chown -R jonathan:jonathan /opt/mycloud-infra
    sudo chmod 750 /opt/mycloud-infra
    sudo chmod 600 /opt/mycloud-infra/traefik/.env
    sudo chmod 700 /opt/mycloud-infra/traefik/letsencrypt
    sudo chmod 600 /opt/mycloud-infra/traefik/letsencrypt/acme.json
黃金守則: 所有操作用 jonathan 帳號執行,避免 root 直接操作專案。

9. 驗證與維護

  • 驗證 Docker: docker run hello-world
  • 檢查 SSH、防火牆、端口
  • 定期:每月更新、備份 /opt/mycloud-infra/