2026年1月11日

PostmarketOS 中 的 docker 無法外連的問題

PostmarketOS 是衍生自 alpine
不過我沒有在實機安裝過 alpine ,也不知道這是 PostmarketOS 還是 alpine 的問題

問題在於 Docker 原生是為 iptables 設計的,它會自動生成大量的 iptables 規則。雖然現代核心有提供相容層(iptables-nft),但當 Alpine 同時運行原生 nftables 服務時,兩者的規則鏈(Chains)會像兩道獨立的關卡。

即使你的 iptables 顯示為 ACCEPT,封包到了 nftables 那一關可能就被預設的規則丟棄(DROP)了。

1. 檢查 nftables 是否攔截了流量
nft list ruleset

如果看到類似 chain input { type filter hook input priority 0; policy drop; } 或 chain forward { ... policy drop; },Docker 封包就出不去。
因為 Docker 只會去改 iptables,不會去幫改 nftables。

2. 解決方案
方案 A:關閉 nftables
如果不需要 Alpine 本身作為複雜的防火牆,直接關閉它,讓 Docker 完全接管 iptables:
sudo systemctl disable --now nftables

方案 B:在 nftables 中允許轉送
如果一定要用 nftables,你必須手動允許 Docker 網橋的流量通過 forward 鏈。 在 /etc/nftables.nft 中,確保 forward 鏈的政策是 accept,或者加入以下規則:

table inet filter {
    chain forward {
        type filter hook forward priority 0; policy accept;
    }
}


3.
重啟 Docker:
sudo systemctl restart docker

2024年7月14日

在Podman中,從Container內連線到Host的Port

在Podman中,大部份的情況是將Container的Port暴露給Host,由Host連線進Container中的服務,可以簡單用 --port 8080:80 的參數來將Container的 80 port 服務開在Host的 8080 port上。

但如果要從Container中連線到Host就沒有這麼容易了,目前找到有兩種方法

1.  

--network host

如果使用這個方法,在Container裡可以直接使用localhost來連線Host的所有Port,Host也會將來自Container的連線看成是localhost發出的。

如果Host上有服務會因為來源IP不同而有不同行為的話就要注意安全性問題,像是PostgreSQL預設如果從localhost連線就不需要密碼


2.

--network slirp4netns:allow_host_loopback=true

使用這個方法,Podman會在Container的/etc/hosts中加入類似以下內容

192.168.0.2     host.containers.internal host.docker.internal

在Container中就可以使用 host.containers.internal 或 host.docker.internal 來連線到Host,而Host則會把這些連線當作是外部來的連線處理
 

在Podman中,記憶體還很多卻OOM

之前使用container去build android時,發生明明記憶體還剩很多的情況下,卻直接報出OOM編譯失敗的情況,查了許久才發現是pids滿了。

在預設的情況下Podman會限制一個容器只能執行2048個process,而build android在-j 32的時候,有可能會突然跑到四千多個process,這時就會直接失敗

可以在run container時加上--pids-limit -1 來解除限制,例如:

$ podman run -it --rm --pids-limit -1 ubuntu:16.04


也可以修改 /etc/containers/containers.conf 中的 pids_limit 讓所有Container都套用相同設定

2024年3月16日

不用手動介入,在Linux下建立新User並設定密碼

export USERNAME="newuser"
export PASSWD="password"
useradd -m $USERNAME -s /bin/bash -g users
echo -e "$PASSWD\n$PASSWD" | passwd $USERNAME


2024年3月9日

最近在用的Archlinux桌面環境

留個套件名字
下次換新電腦還可以裝

顯示管理 greetd + regreet
視窗管理 hyprland
啟動器 rofi
輸入法 fcitx5
終端機 qterminal + bash
檔案管理 dolphin

2023年3月18日

Stable diffusion prompt收集

 

最近Stable diffusion、AI繪圖很紅,所以我也稍微玩了一下 

以下收集了一些prompt詞,以後需要的時候回來查比較快 




2022年12月24日

Firefox 108 滑鼠游標消失的問題

最近Firefox 升級到 108 之後發現

自訂的游標圖示會顯示錯誤,甚至有時後會直接消失

檢查Log發現是Firefox無法讀取到我的自訂游標

firefox-bin[2959]: Unable to load hand2 from the cursor theme firefox-bin[2959]: Unable to load left_ptr from the cursor theme firefox-bin[2959]: Unable to load xterm from the cursor theme

而且是放在~/.icons下的游標才會有這個問題

所以目前有一個Workaround方式就是將目前使用的游標放到

mv ~/.icons/* /usr/share/icons/

目前已經有人發了 Issue 給 Mozilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1802877