<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>樹莓派 | 空垠尘</title><link>/zh-hant/tags/%E6%A8%B9%E8%8E%93%E6%B4%BE/</link><description>極簡純靜態 · 邊緣無界</description><generator>Hugo -- gohugo.io</generator><language>zh-Hant</language><managingEditor>Dukang Xu</managingEditor><webMaster>Dukang Xu</webMaster><copyright>© 2026 空垠尘</copyright><lastBuildDate>Sun, 13 Sep 2026 10:00:00 +0800</lastBuildDate><atom:link href="/zh-hant/tags/%E6%A8%B9%E8%8E%93%E6%B4%BE/index.xml" rel="self" type="application/rss+xml"/><item><title>樹莓派 HomeLab 搭建與調優實戰</title><link>/zh-hant/raspberry-pi/</link><pubDate>Sun, 13 Sep 2026 10:00:00 +0800</pubDate><author>Dukang Xu</author><guid isPermaLink="true">/zh-hant/raspberry-pi/</guid><description>全面整合樹莓派無頭安裝、國內映像源配置、外部行動硬碟/SSD 自動掛載、GPIO 智慧溫控風扇調速以及必備 Docker 運行環境的一站式實戰全指南。</description><content:encoded><![CDATA[<h2 id="引言為什麼樹莓派是絕佳的家庭微型伺服器">引言：為什麼樹莓派是絕佳的家庭微型伺服器？</h2>
<p>樹莓派（Raspberry Pi）以其極低的功耗（待機僅 2~5W）、完全靜音的運行體驗以及豐富的 GPIO 擴充介面，成為了無數開發者與極客玩家構建 7×24 小時不間斷運行的 <strong>HomeLab（家庭實驗室/微型伺服器）</strong> 的首選設備。</p>
<p>然而，在實際從零折騰樹莓派的過程中，許多新手往往會踩不少坑：</p>
<ul>
<li>缺少外接螢幕與鍵盤，不知道如何進行<strong>無頭啟動（Headless Boot）</strong>；</li>
<li>軟體下載極慢，映像源配置繁瑣；</li>
<li>外接行動硬碟或 SSD 重啟後盤符變動或權限遺失；</li>
<li>散熱不佳導致 CPU 高溫降頻，或者風扇常開噪音擾民。</li>
</ul>
<p>本文將基於長期的維運與折騰實踐，從 <strong>系統初始化</strong>、<strong>儲存擴充</strong>、<strong>硬體溫控</strong> 到 <strong>Docker 基礎環境</strong>，為你提供一份條理清晰、開箱即用的全套實戰指南。</p>
<pre tabindex="0"><code class="language-mermaid" data-lang="mermaid">flowchart TD
    A[&#34;1. 無頭燒錄與系統安裝&lt;br/&gt;(SSH &amp; Wi-Fi 免螢幕配置)&#34;] --&gt; B[&#34;2. 系統源與基礎環境優化&lt;br/&gt;(APT 映像加速 / 靜態 IP)&#34;]
    B --&gt; C[&#34;3. 儲存擴容與硬碟掛載&lt;br/&gt;(UUID / fstab / 權限定義)&#34;]
    C --&gt; D[&#34;4. 硬體散熱與 GPIO 溫控&lt;br/&gt;(PWM 調速 / 壽命保護)&#34;]
    D --&gt; E[&#34;5. 部署 Docker &amp; HomeLab 服務&lt;br/&gt;(Compose / 容器矩陣)&#34;]
</code></pre><hr>
<h2 id="一-系統燒錄與無頭初始化無需螢幕與鍵盤">一、 系統燒錄與無頭初始化（無需螢幕與鍵盤）</h2>
<h3 id="1-燒錄官方系統-raspberry-pi-os--ubuntu-server">1. 燒錄官方系統 (Raspberry Pi OS / Ubuntu Server)</h3>
<p>推薦使用官方的 <strong><a href="https://www.raspberrypi.com/software/">Raspberry Pi Imager</a></strong> 燒錄工具：</p>
<ol>
<li><strong>作業系統選擇</strong>：推薦 64 位無桌面版 <code>Raspberry Pi OS Lite (64-bit)</code> 或 <code>Ubuntu Server 64-bit</code>，資源佔用極小，記憶體佔用僅 100MB 左右；</li>
<li><strong>進階預設配置（關鍵技巧）</strong>：在燒錄器中點擊右下角齒輪或按下 <code>Ctrl + Shift + X</code>（Mac: <code>Cmd + Shift + X</code>）喚出進階設定：
<ul>
<li>勾選 <strong>Set hostname</strong>（例如 <code>rpi-server</code>）；</li>
<li>勾選 <strong>Enable SSH</strong>，並設定帳號密碼或注入你的 SSH 公鑰；</li>
<li>勾選 <strong>Configure wireless LAN</strong>（填寫家中 Wi-Fi 名稱與密碼）；</li>
<li>設定時區為 <code>Asia/Taipei</code> 或 <code>Asia/Shanghai</code>。</li>
</ul>
</li>
<li>點擊燒錄到 TF 卡或 USB 固態硬碟中。</li>
</ol>
<h3 id="2-首次啟動與-ssh-遠端連接">2. 首次啟動與 SSH 遠端連接</h3>
<p>燒錄完成後，將卡插入樹莓派並接通電源。等待 1~2 分鐘系統初始化，在電腦終端直接透過主機名稱或區域網路 IP 連接：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 透過 mDNS 主機名稱直接連接</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">ssh your_username@rpi-server.local
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"># 或查詢路由器後台獲取分配的 IP 連接</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">ssh your_username@192.168.1.100
</span></span></code></pre></div><hr>
<h2 id="二-系統源替換與基礎網路調優">二、 系統源替換與基礎網路調優</h2>
<p>由於預設官方軟體源位於海外，下載軟體包可能較慢。首次登入後建議更換為就近高速映像源（以 Debian 12 Bookworm 為例）：</p>
<h3 id="1-備份並替換-apt-軟體源">1. 備份並替換 APT 軟體源</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># 備份原源檔案</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="c1"># 替換系統主源為開源映像源</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">sudo sed -i <span class="s1">&#39;s|http://deb.debian.org/debian|https://mirrors.tuna.tsinghua.edu.cn/debian|g&#39;</span> /etc/apt/sources.list
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">sudo sed -i <span class="s1">&#39;s|http://security.debian.org/debian-security|https://mirrors.tuna.tsinghua.edu.cn/debian-security|g&#39;</span> /etc/apt/sources.list
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="c1"># 替換樹莓派特有硬體驅動源</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">sudo sed -i <span class="s1">&#39;s|http://archive.raspberrypi.org/debian|https://mirrors.tuna.tsinghua.edu.cn/raspberrypi|g&#39;</span> /etc/apt/sources.list.d/raspi.list
</span></span><span class="line"><span class="ln">11</span><span class="cl">
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="c1"># 更新快取並升級基礎軟體</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">sudo apt update <span class="o">&amp;&amp;</span> sudo apt upgrade -y
</span></span></code></pre></div><h3 id="2-安裝常用基礎維運工具">2. 安裝常用基礎維運工具</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">sudo apt install -y curl wget git vim htop zsh tmux net-tools ufw
</span></span></code></pre></div><hr>
<h2 id="三-外接行動硬碟--ssd-自動掛載與持久化">三、 外接行動硬碟 / SSD 自動掛載與持久化</h2>
<p>TF 卡的讀寫壽命和隨機 I/O 效能有限，跑資料庫和下載服務極易損壞。建議將外接行動硬碟或行動固態硬碟（SSD）掛載為資料儲存盤。</p>
<pre tabindex="0"><code class="language-mermaid" data-lang="mermaid">sequenceDiagram
    autonumber
    participant USB as 外接硬碟 / SSD
    participant System as 樹莓派系統核心
    participant Fstab as /etc/fstab 設定檔
    participant Mount as 掛載點 (/mnt/data)

    System-&gt;&gt;USB: 讀取設備唯一識別碼 (UUID)
    Fstab-&gt;&gt;System: 開機解析掛載規則 (nofail, UUID, ext4)
    System-&gt;&gt;Mount: 自動掛載至指定目錄並賦予權限
</code></pre><h3 id="1-查看硬碟設備與獲取唯一-uuid">1. 查看硬碟設備與獲取唯一 UUID</h3>
<p>插入 USB 硬碟後，在終端機執行：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 查看所有儲存塊設備</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">lsblk -f
</span></span></code></pre></div><p>輸出範例：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">NAME        FSTYPE FSVER LABEL  UUID                                 MOUNTPOINT
</span></span><span class="line"><span class="ln">2</span><span class="cl">sda
</span></span><span class="line"><span class="ln">3</span><span class="cl">└─sda1      ext4   1.0   DATA   e58f2371-d41a-4d7a-8b8a-927164b18210
</span></span></code></pre></div><blockquote>
<p>⚠️ <strong>注意</strong>：絕對不要使用 <code>/dev/sda1</code> 來掛載！如果下次重啟插了其它隨身碟，盤符可能會變成 <code>/dev/sdb1</code> 導致啟動卡死。必須使用 <strong>UUID</strong>。</p>
</blockquote>
<h3 id="2-建立掛載點與配置-etcfstab">2. 建立掛載點與配置 <code>/etc/fstab</code></h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 1. 建立掛載目標目錄</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">sudo mkdir -p /mnt/data
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"># 2. 編輯 fstab 自動掛載配置</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">sudo vim /etc/fstab
</span></span></code></pre></div><p>在檔案末尾追加一行（以 <code>ext4</code> 格式為例）：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl"># &lt;file system&gt;                                 &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
</span></span><span class="line"><span class="ln">2</span><span class="cl">UUID=e58f2371-d41a-4d7a-8b8a-927164b18210     /mnt/data       ext4    defaults,nofail,noatime 0       2
</span></span></code></pre></div><blockquote>
<p>💡 <strong>參數解析</strong>：</p>
<ul>
<li><code>defaults</code>：使用預設讀寫權限；</li>
<li><code>nofail</code>：<strong>關鍵配置</strong>！即使硬碟未插上或識別失敗，系統也不會卡死在開機自檢流程；</li>
<li><code>noatime</code>：關閉每次讀取檔案更新存取時間戳記，減少寫入操作，延長磁碟與快閃記憶體壽命。</li>
</ul>
</blockquote>
<h3 id="3-測試掛載與權限設定">3. 測試掛載與權限設定</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 測試配置是否正確（不報錯即為配置無誤）</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">sudo mount -a
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"># 將掛載目錄的歸屬權分配給當前一般使用者</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">sudo chown -R <span class="nv">$USER</span>:<span class="nv">$USER</span> /mnt/data
</span></span></code></pre></div><hr>
<h2 id="四-硬體散熱與-gpio-智慧溫控風扇">四、 硬體散熱與 GPIO 智慧溫控風扇</h2>
<p>樹莓派 4B / 5 在高負載下發熱量較大。如果風扇一直全速運轉，不僅噪音刺耳，還會加速風扇軸承磨損。我們可以使用一段輕量級 Python 腳本配合 GPIO 實現<strong>智慧溫控調速</strong>。</p>
<h3 id="1-硬體接線示意">1. 硬體接線示意</h3>
<ul>
<li><strong>風扇正極（紅線）</strong> $\rightarrow$ 接 GPIO 5V（Pin 4）或 3.3V（Pin 1）</li>
<li><strong>風扇負極（黑線）</strong> $\rightarrow$ 透過三極管（如 NPN S8050）連接 GPIO GND（Pin 6）</li>
<li><strong>三極管控制基極</strong> $\rightarrow$ 接 GPIO 14（Pin 8，TXD）</li>
</ul>
<h3 id="2-智慧溫控守護腳本-temp_controlpy">2. 智慧溫控守護腳本 (<code>temp_control.py</code>)</h3>
<p>建立腳本檔案 <code>/usr/local/bin/temp_control.py</code>：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="ch">#!/usr/bin/env python3</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="c1"># -*- coding: utf-8 -*-</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="kn">import</span> <span class="nn">time</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="kn">import</span> <span class="nn">os</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="kn">import</span> <span class="nn">RPi.GPIO</span> <span class="k">as</span> <span class="nn">GPIO</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="c1"># 配置參數</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="n">FAN_PIN</span> <span class="o">=</span> <span class="mi">14</span>          <span class="c1"># 控制引腳 BCM 14</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="n">TEMP_HIGH</span> <span class="o">=</span> <span class="mf">55.0</span>      <span class="c1"># 超過 55 度開啟風扇</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="n">TEMP_LOW</span> <span class="o">=</span> <span class="mf">45.0</span>       <span class="c1"># 低於 45 度關閉風扇</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="n">GPIO</span><span class="o">.</span><span class="n">setwarnings</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="n">GPIO</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">GPIO</span><span class="o">.</span><span class="n">BCM</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="n">GPIO</span><span class="o">.</span><span class="n">setup</span><span class="p">(</span><span class="n">FAN_PIN</span><span class="p">,</span> <span class="n">GPIO</span><span class="o">.</span><span class="n">OUT</span><span class="p">,</span> <span class="n">initial</span><span class="o">=</span><span class="n">GPIO</span><span class="o">.</span><span class="n">LOW</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="k">def</span> <span class="nf">get_cpu_temp</span><span class="p">():</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">    <span class="s2">&#34;&#34;&#34;讀取 CPU 當前核心溫度&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&#34;/sys/class/thermal/thermal_zone0/temp&#34;</span><span class="p">,</span> <span class="s2">&#34;r&#34;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">        <span class="n">temp</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">())</span> <span class="o">/</span> <span class="mf">1000.0</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="k">return</span> <span class="n">temp</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">
</span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">    <span class="n">fan_state</span> <span class="o">=</span> <span class="kc">False</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">    <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">        <span class="n">temp</span> <span class="o">=</span> <span class="n">get_cpu_temp</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">        <span class="k">if</span> <span class="n">temp</span> <span class="o">&gt;=</span> <span class="n">TEMP_HIGH</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">fan_state</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">            <span class="n">GPIO</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">FAN_PIN</span><span class="p">,</span> <span class="n">GPIO</span><span class="o">.</span><span class="n">HIGH</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">            <span class="n">fan_state</span> <span class="o">=</span> <span class="kc">True</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">        <span class="k">elif</span> <span class="n">temp</span> <span class="o">&lt;=</span> <span class="n">TEMP_LOW</span> <span class="ow">and</span> <span class="n">fan_state</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">            <span class="n">GPIO</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">FAN_PIN</span><span class="p">,</span> <span class="n">GPIO</span><span class="o">.</span><span class="n">LOW</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">            <span class="n">fan_state</span> <span class="o">=</span> <span class="kc">False</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">        <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl"><span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">    <span class="n">GPIO</span><span class="o">.</span><span class="n">cleanup</span><span class="p">()</span>
</span></span></code></pre></div><h3 id="3-註冊為-systemd-開機自啟服務">3. 註冊為 systemd 開機自啟服務</h3>
<p>建立守護行程設定檔 <code>/etc/systemd/system/fan-control.service</code>：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="k">[Unit]</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="na">Description</span><span class="o">=</span><span class="s">Raspberry Pi Smart Fan Temperature Control</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="na">After</span><span class="o">=</span><span class="s">multi-user.target</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="k">[Service]</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="na">Type</span><span class="o">=</span><span class="s">simple</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="na">ExecStart</span><span class="o">=</span><span class="s">/usr/bin/python3 /usr/local/bin/temp_control.py</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="na">Restart</span><span class="o">=</span><span class="s">always</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="na">RestartSec</span><span class="o">=</span><span class="s">10</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="k">[Install]</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="na">WantedBy</span><span class="o">=</span><span class="s">multi-user.target</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 啟用並啟動溫控服務</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">sudo systemctl daemon-reload
</span></span><span class="line"><span class="ln">3</span><span class="cl">sudo systemctl <span class="nb">enable</span> --now fan-control.service
</span></span></code></pre></div><hr>
<h2 id="五-安裝-docker-與現代-homelab-運行環境">五、 安裝 Docker 與現代 HomeLab 運行環境</h2>
<p>有了穩定的儲存與散熱，最後一步是安裝 Docker 容器矩陣，讓樹莓派能輕鬆部署無數現代化開源服務：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># 1. 官方腳本一鍵安裝 Docker</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">curl -fsSL https://get.docker.com <span class="p">|</span> bash
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="c1"># 2. 將當前使用者加入 docker 群組（免 sudo 執行 docker）</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">sudo usermod -aG docker <span class="nv">$USER</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="c1"># 3. 安裝 Docker Compose 外掛</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">sudo apt install -y docker-compose-plugin
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="c1"># 4. 配置 Docker 日誌上限輪轉（防止把磁碟撐爆）</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">sudo mkdir -p /etc/docker
</span></span><span class="line"><span class="ln">12</span><span class="cl">sudo tee /etc/docker/daemon.json <span class="s">&lt;&lt;-&#39;EOF&#39;
</span></span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="s">{
</span></span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="s">  &#34;log-driver&#34;: &#34;json-file&#34;,
</span></span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="s">  &#34;log-opts&#34;: {
</span></span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="s">    &#34;max-size&#34;: &#34;20m&#34;,
</span></span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="s">    &#34;max-file&#34;: &#34;3&#34;
</span></span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="s">  }
</span></span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="s">}
</span></span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="s">EOF</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">
</span></span><span class="line"><span class="ln">22</span><span class="cl">sudo systemctl restart docker
</span></span></code></pre></div><hr>
<h2 id="總結">總結</h2>
<p>透過以上 5 步，你的樹莓派已經成為了一台<strong>功耗極低、散熱安靜、儲存充裕、開箱即用的現代化家庭伺服器</strong>。</p>
]]></content:encoded><category>樹莓派</category><category>HomeLab</category><category>Linux</category><category>硬體折騰</category><category>Docker</category><category>伺服器</category></item></channel></rss>