#Nginx 設定
http {
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets on;
}
測試
openssl s_client -connect host:443 -reconnect -state
2026年7月28日 星期二
IDs assigned but not accepted
HSTS(Strict Transport Security)
#Nginx 設定
server {
listen 443 ssl http2;
server_name example.com;
# 啟用 HSTS(建議維持至少 1 年 = 31536000 秒)
# includeSubDomains: 套用至所有子網域
# preload: 允許加入瀏覽器預載清單
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
}
#Apache2 設定
<VirtualHost *:443>
ServerName example.com
# 啟用 HSTS
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</VirtualHost>
測試
chrome://net-internals/#hsts
curl -I https://127.0.0.1
Plaintext
HTTP/2 200
...
strict-transport-security: max-age=31536000; includeSubDomains; preload
...
Qualys SSL Labs(權威檢測)
網址:https://www.ssllabs.com/ssltest/
HSTS Preload 狀態檢查
網址:https://hstspreload.org/
2026年7月23日 星期四
請透過 Squid Proxy 下載 docker hub 公開 image
#異動 docker 設定
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf
Environment="HTTP_PROXY=http://squid:3128"
Environment="HTTPS_PROXY=http://squid:3128"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com"
EOF
#重新載入設定並重啟 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
#確認是否生效
sudo docker info | grep -i proxy
auth.docker.io
透過 Squid Proxy 下載 ollama models
#編輯 /etc/systemd/system/ollama.service
[Service] 區塊中加入
Environment="HTTPS_PROXY=http://squid:3128"
Environment="HTTP_PROXY=http://squid:3128"
# 重新載入並重啟 Ollama
sudo systemctl daemon-reload
sudo systemctl restart ollama
#確認是否生效
sudo systemctl show ollama --property=Environment
2026年7月20日 星期一
Proxmox VE local vm snt 設定範例
#!/bin/sh
iptables -F -t nat
echo "1" > /proc/sys/net/ipv4/ip_forward
OIF=vmbr0
IIF=vmbr9
SNIP=172.16.255.0/24
# 1. 建立 NAT:將來自 vmbr9 網段的封包,在從 vmbr0 出去時轉換為 vmbr0 的 IP
iptables -t nat -A POSTROUTING -o ${OIF} -s ${SNIP} -j MASQUERADE
# 2. 允許 eth9 到 eth0 的轉發流量 (建立連線)
iptables -A FORWARD -i ${IIF} -o ${OIF} -s ${SNIP} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# 3. 允許從 eth0 回到 eth9 的已建立連線流量 (回應封包)
iptables -A FORWARD -i ${OIF} -o ${IIF} -d ${SNIP} -m state --state ESTABLISHED,RELATED -j ACCEPT
#NAT PORT
OPORT=8007
IPORT=8007
IIP=172.16.255.1
iptables -t nat -A PREROUTING -i ${OIF} -p tcp --dport ${OPORT} -j DNAT --to-destination ${IIP}:${IPORT}
# 2. 確保轉發鏈允許該流量通過 (如果你的 FORWARD 預設是 DROP)
iptables -A FORWARD -p tcp -d ${IIP} --dport ${IPORT} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
OPORT=8443
IPORT=8443
IIP=172.16.255.2
iptables -t nat -A PREROUTING -i ${OIF} -p tcp --dport ${OPORT} -j DNAT --to-destination ${IIP}:${IPORT}
iptables -A FORWARD -p tcp -d ${IIP} --dport ${IPORT} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Proxmox VE 7/8/9 initrd 損毀無法開機
mkdir /mnt/pve
mount /dev/pve/root /mnt/pve
#mount /dev/sda2 /mnt/pve/boot/efi # <--- EFI 分區代號
for i in dev proc sys run;do mount -o bind /${i} /mnt/pve/${i};done
chroot /mnt/pve
# 為所有已安裝的 Kernel 重新生成 initrd 映像檔
update-initramfs -u -k all
# 適用於 PVE 7/8/9 使用 proxmox-boot-tool 的系統)
proxmox-boot-tool refresh
update-grub
exit
umount -R /mnt/pve
reboot
2026年7月17日 星期五
Proxmox VE 9.x Alternative Names 重新自動掃描與產生
# 刪除 PVE 指令產生的設定
rm -f /usr/local/lib/systemd/network/50-pve-*.link
rm -f /usr/local/lib/systemd/network/50-pmx-*.link
# 刪除系統安裝時的設定
rm -f /etc/systemd/network/50-pve-*.link
rm -f /etc/systemd/network/50-pmx-*.link
#更新開機映像檔
update-initramfs -u -k all
#掃描並自動產生全新 Pinning
pve-network-interface-pinning generate
#更新開機映像檔
update-initramfs -u -k all
2026年7月2日 星期四
Task Spooler 使用摘要
Debian 13 安裝
apt install task-spooler
新增任務到佇列
tsp 指令
查看目前佇列狀態
tsp
查看特定任務的輸出
tsp -c jobid
即時追蹤任務輸出
tsp -t jobid
刪除或取消任務
tsp -r jobid
調整任務的優先順序
ts -u jobid
調整並行數量
ts -S 數量
環境變數
TS_SOCKET
Linux nq 筆記
nq 說明
Linux 輕量、無需設定的命令列任務佇列工具
完全依賴檔案系統鎖(File-system lock)來管理佇列,不需要任何額外的設定或維護。
Debian 安裝
apt install nq
nq 環境變數
NQDIR:存放任務佇列目錄。預設為目前的執行目錄,透過 NQDIR 設定不同的路徑,可以同時管理多個佇列。
NQJOBID:nq 回傳給執行中任務的 Job ID,可用於腳本中追蹤。
使用範例
建立專屬 nq 佇列
export NQDIR="$HOME/nq"; mkdir -p ${NQDIR}
執行方式
export NQDIR="$HOME/nq"
nq ./my-script.sh
nq ./my-script2.sh
nq ./my-script3.sh
nq ./my-script4.sh
nq ./my-script5.sh
查詢目前 nq 佇列 Job
ls -lF ${NQDIR} ## Ctrl-C 離開不中斷執行
查詢結果說明
-rw-r--r-- 1 root root 47 Jul 2 10:38 ,19f20aeff65.125177 已執行完畢
-rwxr--r-- 1 root root 22 Jul 2 10:38 ,19f20af01e5.125180* <-* 表示目前正在執行
-rw-r--r-- 1 root root 20 Jul 2 10:38 ,19f20b17894.125225 未執行
-rw-r--r-- 1 root root 20 Jul 2 10:38 ,19f20b17bb4.125228 未執行
-rw-r--r-- 1 root root 20 Jul 2 10:38 ,19f20b17dc3.125231 未執行
,19f20af01e5.125180 <- ,開頭為 nq 狀態檔案,19f20af01e5 Job 送出時間,125180 系統執行的 process id
刪除 nq 佇列 Job ,19f20b17dc3.125231
rm ${NQDIR}/,19f20b17dc3.125231
中斷 nq 佇列 Job ,19f20b17dc3.125231
kill 125231
查詢 nq 佇列 Job ,19f20b17dc3.125231 執行內容或結果
cat ${NQDIR}/,19f20b17dc3.125231
刪除已執行完畢 nq 佇列Job ,19f20b17dc3.125231
rm ${NQDIR}/,19f20b17dc3.125231
查詢目前 Job 執行狀態
nqtail # Ctrl-C 離開,不中斷程式
共用 nq 佇列
nqdir=/var/spool/nq
nqgroup=nqusers
mkdir -p ${nqdir}
chown :${nqgrou} ${nqdir}
chmod 2775 ${nqdir}
更多的 指令說明
man nq
man nqtail