# 安裝一台新的 Debian 指南
# Update Log
2023-12-28 | 更新為 Debian 12 |
# 環境說明
- Debian 12
- Akamai Connected Cloud (Linode)
# 更新 Debian
apt-get update; apt-get upgrade
# 設定 Static IP
Linode 預設試用 dhcp 取得 IP ,這邊我會改成使用 static IP 的設定方式
# The primary network interface
allow-hotplug eth0
# iface eth0 inet dhcp
iface eth0 inet static
address [your-ip]/24
gateway [your-gateway]
# To add a private IP address:
iface eth0 inet static
address [your-private-ip]/17
# To add a IPv6 address:
iface eth0 inet6 static
address [your-ipv6]/64
gateway fe80::1
# 安裝一些好用的 util
apt-get install htop vim zsh ntpdate git tmpreaper ncdu
# 安裝 Oh My Zsh
Oh My Zsh 是強化 zsh 的輔助程式,有主題、有外掛,增加使用 shell 的效率。
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
可以透過 .zshrc
設定檔設定你的 zsh
這邊是院長用的設定,有分為 一般 user (opens new window) 跟 root user (opens new window)
curl https://gist.githubusercontent.com/onlinemad/e0444bc8dc50b6fea810/raw/662a2c3655c8cb524baff0148be48db092060143/root.zshrc > .zshrc
# 設定 tmpreaper
tmpreaper
是可以定時刪除 /tmp
下面檔案的輔助程式,院長有好幾次翻車都是因為 /tmp
滿了。
vi /etc/tmpreaper.conf
把 SHOWWARNING
這個設定註解起來,這樣就會開始運作了,預設是清除超過 7 天的檔案。
# SHOWWARNING=true
# 新增管理 user 帳號
建立一個用來管理 server 的 admin 帳號,因為一般不會使用 root 帳號來管理 server 。
adduser [username]
# 增加 user 到 sudo 群組
vigr
在 sudo
這個群組後面加上 username
sudo:x:27:[username]
# 編輯 sudo 設定檔
vi /etc/sudoers
將 %sudo
這邊的設定取消註解
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# 調整 locales
我會調整成 zh_TW.UTF8
dpkg-reconfigure locales
# 設定時區
選擇 Asia → Taiwan
tzselect
dpkg-reconfigure tzdata
# 對時
ntpdate -u pool.ntp.org
# 設定 cronjob 定時對時
每天對一次就可以了
crontab -e
0 0 * * * ntpdate -u pool.ntp.org
# 調整 SSH 設定
vi /etc/ssh/sshd_config
# 修改 port 號
不要用預設的 22
號 port ,減少被亂試的機率
Port 123456
# 關閉 root 登入
設定改為 no
PermitRootLogin no
# 設定 MaxAuthTries
設定最多嘗試幾次 SSH 連線
MaxAuthTries 6
# 關閉使用密碼登入
PasswordAuthentication no
WARNING
要記得先用 ssh-copy-id 把 key 傳到 server 上
# 關閉 X11Forwarding
X11Forwarding no
# 重啟 ssh server
service sshd restart
# 設定 hostname
hostnamectl set-hostname your-name
# 編輯 /etc/hosts
把 your-name 加在 localhost 後面
127.0.0.1 localhost your-name
# 設定 resolv.conf
預設會有 Linode 自己的 DNS,預設的不要動,在後面加上額外的 DNS ( Cloudflare 、 Google 、 TWNIC ),然後再加上 options rotate
跟 options timeout:1
這兩個參數,讓 DNS 反解以 rotate 的方式順序使用,另外如果 DNS 死掉 1 秒沒有回應換下一個 DNS ,因為之前 Linode DNS 曾經爛掉,導致服務中斷。
nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 101.101.101.101
options rotate
options timeout:1
# 除不需要的 service
用 ss -tunlp
看有哪些 port 是在 LISTEN
狀態,不需要的就把這些 service 關閉或是移除,院長這邊會都關到只剩下 SSH 的 port 。
# UDP Port 323
UDP Port 323 是 Chrony 的對時服務,我是用 ntpdate
對時,所以也可以關掉
systemctl stop chronyd
systemctl disable chronyd
# 參考資料
- How to change hostname on Debian 12/11/10 Linux - nixCraft (opens new window)
- Network Configuration Using ifupdown | Linode Docs (opens new window)
- How To Configure SSH Key-Based Authentication on a Linux Server | DigitalOcean (opens new window)
- Chrony Configuration - PCoIP Management Console 20.07 Administrators Guide (opens new window)