引言
最近伺服器出現一些硬體異常就順便剛好重灌 Linux 伺服器,本篇文章將介紹如何安裝 Ubuntu 作為自己的工作伺服器。
部署 Linux 伺服器可以做很多事情,包含:
- DNS 伺服器:用來阻擋廣告等相關應用。
- 遠端開發:可隨時在信任的電腦上連線進行不中斷的開發。
- 網頁伺服器:使用 Nginx 或 Apache 架設網站,並搭配資料庫服務。
- 代理伺服器:實現翻牆或 NAT 穿透等行為。
- 簡易檔案伺服器:不建議作為標準 NAS,資料維護成本高,建議使用現成的 NAS 方案。
- 本地端 AI 模型運行:可在伺服器或樹莓派(Raspberry Pi)等低功耗裝置上部署如 DeepSeek R1 14B 等輕量化 AI 模型,進行推理或語言處理任務。適用於開發、測試及自動化應用,特別是在資源受限的環境下運行基本的 NLP 任務。
伺服器的性能需求應基於個別需求來確定。例如,設置網頁伺服器需要考慮防火牆等安全措施;而運行人工智能模型則需要評估外接顯卡、記憶體和中央處理器的性能,以確保運作流暢。
主機選擇
在安裝 Linux 伺服器前,首先需要選擇適合的執行環境。常見的主機環境包含:
- 實體主機(本地伺服器):直接在硬體上安裝 Linux,常見的硬體選項包括迷你電腦如 Intel NUC 和 Raspberry Pi 等。
- 虛擬化主機:透過 WSL、Docker 等技術,在現有系統內部部署與管理 Linux 環境,實現輕量級虛擬化。
- 雲端主機:
- 虛擬主機(Shared Hosting):多個使用者共享伺服器資源,但彼此的環境相對獨立。常見於小型網站、部落格。適合新手,無須管理系統。
- 虛擬私有伺服器(virtual private server,VPS):將一台實體伺服器分割成多個獨立的虛擬伺服器,每個 VPS 具有獨立的作業系統與管理權限。擁有完整管理權限,適合需要自訂環境的開發者。
- 裸金屬伺服器(Bare Metal Server):提供一整台實體伺服器,沒有虛擬化層,所有硬體資源完全由單一租戶使用。適合高效能應用與企業級部署。
我的主機選擇
根據我自身的應用需求是自己組裝硬體設備,包含:機殼、主機板、CPU、RAM、SSD、電源供應器。主要用途為:
- 遠端開發與管理
- 網頁爬蟲與資料處理
- 網頁伺服器與應用程式部署
如果目標是建置擋廣告伺服器,例如像是部署 AdGuard Home,或是使用 Home Assistant 控制智慧家電,建議選擇 Raspberry Pi。其 ARM 架構 具備更低的功耗與成本優勢。
如果不想使用實體主機,可以選擇 VPS,但與實體主機相比,VPS 使用上會有硬體資源限制及潛在的資料安全疑慮。
常見的第三方 VPS 供應商
- 亞馬遜雲服務(Amazon Web Services,AWS)
- Google 雲端平台(Google Cloud Platform,GCP)
- 微軟 Azure(Microsoft Azure)
- DigitalOcean
- Vultr
- Linode
這些服務的計費方式依據使用量或按月度收費。以輕量級服務預估費用為 0.093~0.15 USD/hour 或 10~30 USD/month。
選擇 Linux 發行版
由於我主要用於進行服務、網頁等架設與開發,因此選擇了 Ubuntu Server 24.04 進行安裝。然而,有些 SDK 要求開發環境使用 Ubuntu 18.04。在選擇發行版時,應根據個人的開發需求和環境來決定。
對比於不同的發行版,以下是它們的適合對象與特點:
發行版 | 適合對象 | 主要特色 |
---|---|---|
Ubuntu | 一般使用者、開發者、新手 | 最流行的 Linux,支援廣泛,LTS 版穩定,短期版較新。 |
Linux Mint | Windows 轉換使用者 | 友好界面、穩定,適合日常使用,提供多種桌面環境。 |
MX Linux | 輕量級需求 | 適合舊電腦,內建系統管理工具,穩定且易用。 |
Debian | 伺服器、開發者 | 穩定性極高,長期支援,但新軟體版本較舊。 |
Pop!_OS | 生產力、STEM 學生 | 提供自動視窗排列、適合科學計算與開發,內建隱私功能。 |
Fedora | 想用最新技術的開發者 | 採用新技術快、官方支持好,適合開發但非長期穩定。 |
openSUSE | 企業、伺服器 | 分為穩定版(Leap)與滾動更新版(Tumbleweed),適合企業與專業使用者。 |
EndeavourOS | 想學 Arch 的人 | 提供簡化的 Arch 安裝,保持原生 Arch 體驗,滾動更新。 |
Manjaro | Arch 初學者 | 內建驅動管理、較穩定的 Arch 變體,適合桌面使用。 |
使用 Ubuntu 的主要原因是它對新手友好,可以避免遇到許多僅專業人士才會遇到的困難。此外,大多數工作在任何發行版上基本上都能正常進行開發。因此,在選擇發行版時,不需要過於糾結,只需選擇自己喜歡的即可。
安裝 Ubuntu Server 24.04 時的磁碟分割
在安裝 Ubuntu Server 24.04 的過程中,介面主要依靠鍵盤進行互動,因此操作相對簡單。
安裝過程會遇到硬碟的磁碟分割,可以參考 Ubuntu 磁碟空間建議與策略。
分區 | 容量 | 我的配置 |
---|---|---|
/ | 至少 15 GB | 30 GB (ext4) |
/boot | 250 MB ~ 1 GB | 500 MB (ext4) |
/var | 2 GB | 2 GB (ext4) |
swap | RAM 的大小 | 8 GB, (ext4) |
/home | 剩餘硬碟空間 | 151.34 GB (ext4) |
/
為根分區,官方建議至少配置 15 GB。由於日誌檔案、臨時緩存及安裝包等因素,根分區隨時間可能逐漸被填滿,從而導致系統性能下降或運作故障。為降低此類風險,我將分區容量設為建議值的兩倍。儘管如此,仍建議定期清理根分區內的檔案,或在空間不足時調整分區大小。/boot 大多數的 UEFI 為 500 MB ~ 1 GB。
一般桌面系統使用時,可以將 /var 分配 1-2 GB 就足夠了。如果是伺服器系統,特別是會產生大量系統日誌(如網頁伺服器),建議 /var 分區分配 5 GB 或更大的空間,以防止日誌檔案佔滿根目錄。使用 Docker 時,建議為 /var 分配至少 20 到 50 GB 的磁碟空間。如果一開始規劃的空間過小,可以修改 /etc/docker/daemon.json,將預設路徑 /var/lib/docker/ 更改到其他目錄,或是使用符號連結來解決。
swap 使用與系統 RAM 約 1.5 ~ 2 倍的配置,例如 4 GB 的 RAM,可以將 SWAP 設為 6 GB。或是如果是 8 GB 以上的 RAM,則 SWAP 可以配置 1 倍即可。
其餘的空間都留給 /home,或者根據需要特別規劃其他分區。
確認所有分割設定無誤後,即可開始正式安裝系統。安裝完成並重新啟動後,系統便會順利進入 Ubuntu。
配置網路設定
⚠️ 系統安裝完成後,建議第一時間檢查網路環境能否正常運作,包括 IP 配置、DNS 伺服器可用性,以及能否順利連線外部網路。若網路連線不穩定或中斷,後續的套件安裝、遠端管理與系統維護都將受到嚴重影響。
|
|
在輸出結果中,可以找到有線網路的介面名稱(例如 enp8s0
):
|
|
自 Ubuntu 17.10 起,網路統一透過 netplan 進行管理。可使用下列指令檢查 /etc/netplan
內的設定檔,常見的檔案名稱可能是 01-netcfg.yaml
或 50-cloud-init.yaml
:
|
|
在 Netplan 配置中,01-netcfg.yaml
具有較高的優先權,若該檔案存在,系統將優先套用其設定。目前,我的伺服器僅包含 50-cloud-init.yaml
設定檔案,可透過以下指令進行編輯:
|
|
在檔案中填入以下設定,此範例將 enp8s0 設為透過 DHCP 自動取得 IP,並使用 1.1.1.1 和 8.8.8.8 作為 DNS 伺服器。請根據您的網路環境進行調整與配置:
|
|
若需要固定 IP,可改用以下範例,並依實際子網路調整:
|
|
編輯完成後,透過以下指令將配置套用到系統:
|
|
成功後,請以 ping
命令測試外網聯通狀態,例如:
|
|
正常情況會輸出類似下列訊息,表示網路已就緒:
|
|
透過以上步驟,可以確認網路連線是否正常。
確保系統與套件處於最新狀態
|
|
遠端環境建立
確保伺服器已成功連上網際網路後,接下來我們可以安裝 Tailscale 與 SSH,以便進行遠端開發。
安裝 Tailscale
若需要遠端連線此電腦,強烈建議使用 Tailscale,而非直接將伺服器暴露於公共網際網路。
詳細安裝指南請參考:《使用 Tailscale 輕鬆建立安全且私密的通道》。
|
|
執行 sudo tailscale up
後,終端機會顯示一個網址。請使用瀏覽器或是第三方裝置開啟該網址以完成登入 Tailscale 帳戶,完成身份驗證後,系統將自動將此裝置加入到你的 tailnet 私有內網。
⚠️ 我在安裝 Tailscale 後,有遇到網卡名稱異動或 DNS 設定被 Tailscale 控制,導致無法正常 ping 出去的問題。
建議安裝後重新啟動系統,並檢查網路連線是否正常。如有需要,請更新網路配置。
配置 SSH
請參考《使用 SSH 金鑰進行無密碼遠端連線》。
上述配置完畢後,應該可以透過 Tailscale + SSH 進行第三方裝置遠端連線與操作。
系統基礎設定與安裝
系統時區與語言設定
使用以下指令將系統時區設定為 Asia/Taipei:
|
|
針對其他地區,可透過 timedatectl list-timezones
查詢所有可用時區,並使用 grep
過濾相關時區名稱,例如:
|
|
執行以下指令產生 zh_TW.UTF-8
語言環境:
|
|
可以透過 locale -a
檢查系統的可用語言,輸出如下:
|
|
使用 update-locale
指令來更新 /etc/default/locale
檔案,並將 LANG
設為 zh_TW.UTF-8
:
|
|
最後透過 locale
指令檢查,輸出如下:
|
|
系統的預設語言和區域設定,涵蓋了字符編碼、時間格式、數字格式、貨幣格式等。設定為 zh_TW.UTF-8 表示系統使用繁體中文(臺灣)並且使用 UTF-8 編碼來處理字符。LANGUAGE 變數用來指定語言優先順序,控制翻譯語言的選擇。如果這個變數為空,系統將僅依賴 LANG 來設定語言環境。
安裝 Net tools
Net-tools
提供一套實用的網路管理與故障排除工具。不過,自 Ubuntu 18.10 起,該套件已 不再預設安裝,部分指令(如 ifconfig
和 netstat
)亦逐步被更現代的工具(如 ip
和 ss
指令)取代。
如果仍需使用 Net-tools
,可手動安裝:
|
|
安裝建置工具包
部分開發工具依賴 GCC、G++、Make 等編譯工具,建議安裝 build-essential 套件以確保基礎的開發與建置環境。
|
|
安裝 ble.sh
ble.sh 是一個為 Bash 提供即時語法高亮和更強大功能(如自動完成等)的腳本。
|
|
安裝 Homebrew
Homebrew 為 macOS 提供了一種更快速的軟體包安裝方式,能夠方便地安裝、更新和管理軟體包。同樣,它也支援 Ubuntu 等 Linux 系統。
|
|
安裝後,會要求在執行額外兩行指令,使其 Bash 自動載入 Homebrew 的安裝目錄。
|
|
安裝 fzf
fzf 是一個命令行模糊查找工具,可以用來高效地從檔案、命令歷史、Git 提交記錄等中進行模糊搜索。極大地提高開發者在命令行中的工作效率。
|
|
安裝 Node.js
JavaScript 執行環境,有需要開發前後端再進行安裝。
官網的安裝教學寫得非常清楚。建議使用 nvm 進行安裝。
|
|
安裝 tldr
tldr 提供簡明易懂的命令行工具說明和實用範例,比起 Linux 下的 man 指令更加直觀。
|
|
使用方法只要 tldr
|
|
更新 Git 到最新版本
Git 不一定要更新到最新版本,部分工具版本太舊,需要配合舊版的 Git,如果安裝最新版的 Git 可能會遇到版本相容的問題。
git-core/ppa 是一個 Personal Package Archive (PPA),由 Git 社區維護,提供 Git 軟體的最新版本。
|
|
設定 Git 使用者
|
|
其他進階設定
關閉 IPv6 連線
如果 ISP 同時提供 IPv4 和 IPv6 地址,基於安全性或特定需求考量,建議僅使用 IPv4。此時,我們可以選擇關閉 IPv6,以確保所有網路流量僅透過 IPv4 傳輸,進而減少潛在的攻擊面。
透過 sysctl 禁用 IPv6
在 Ubuntu 17.10 之前,系統沒有使用 Netplan,可以透過 sysctl
修改內核參數來關閉 IPv6:
|
|
在檔案底部新增以下內容:
|
|
儲存後,使用以下指令重新載入 sysctl 設定:
|
|
透過 Netplan 禁用 IPv6
自 Ubuntu 17.10 起,網路管理統一改為 Netplan
。如果需要停用特定網卡的 IPv6,可透過 Netplan 進行設定:
|
|
在目標網卡(例如 enp8s0
)的設定中,新增 link-local: [ ipv4 ]
,範例如下:
|
|
正式應用設定:
|
|
最後透過 ip a
或是 ifconfig
檢查該網路介面狀態。會發現只剩下 IPv4 的地址。
設定 VS Code 為 SSH 遠端開發的預設編輯器
透過 SSH 連線至 Ubuntu 時,可將 VS Code 設為預設編輯器,讓終端機內的編輯體驗更直覺,並可直接使用 code 指令開啟檔案。
首先需要修改 .bashrc
檔案(若使用 zsh,請修改 ~/.zshrc
)。執行以下指令,在 VS Code 中開啟 .bashrc
:
|
|
接著,在檔案底部新增以下內容,以確保系統使用 VS Code 作為預設編輯器:
|
|
完成後,儲存 (Ctrl + S
) 並關閉檔案。
最後,執行以下指令重新載入設定,或直接開啟新的終端機讓變更生效:
|
|
如此一來,若需編輯需要權限的檔案,可透過終端機中的 sudoedit
直接在 VS Code 中開啟、寫入;或是使用 crontab -e
編輯排程任務(cron jobs),同樣會自動啟動 VS Code 進行編輯,提升遠端開發的便利性。
設定 Ubuntu Pro 安全性
啟動 Ubuntu Pro 可以更加即時修正系統漏洞,提升系統的安全性和穩定性。
首先在 Ubuntu 官網上註冊並獲取一個 Ubuntu Pro 免費訂閱。可以在 Ubuntu Pro 頁面上進行註冊。
註冊後,透過sudo pro attach <YOUR_TOKEN>
Ubuntu Pro 訂閱:
|
|
輸出如下:
|
|
結論
以上基本環境配置好後就可以快樂的進行遠端開發了🥳。
參考文獻
- 什麼是 VPS?
- Ubuntu Server documentation
- DiskSpace - Community Help Wiki
- Ubuntu Bionic: Netplan
- ble.sh
- fzf
- tldr-pages/tldr
- 初次設定 Git
- Use UFW to lock down an Ubuntu server
- networking - I have both IPv4 and IPv6 public addresses. Why?
- Fine-Tuning the Ubuntu 24.04 Kernel for low latency, throughput, and power efficiency
- How to configurate a IPv4 disabled and IPv6 on…