From ae2a256a1a469ad1ee8d9523507c87043a339043 Mon Sep 17 00:00:00 2001 From: gapul <92638132+gapul@users.noreply.github.com> Date: Fri, 21 Aug 2026 12:04:23 +0900 Subject: [PATCH] =?UTF-8?q?fix(rallly,spliit):=20postgres=20=E3=81=AE?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=83=87=E3=82=A3=E3=83=AC=E3=82=AF?= =?UTF-8?q?=E3=83=88=E3=83=AA=E3=82=92=20uid=2070=20=E6=89=80=E6=9C=89?= =?UTF-8?q?=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #394 をデプロイしたら両方の DB コンテナが起動に失敗した。 mkdir: can't create directory '/var/lib/postgresql/18/': Permission denied tmpfiles で 0700 root root で作っていたが、postgres のイメージは uid 70 で 動くので書き込めない。既存の miniflux/db を見たら uid 70 所有だったので、 最初からそちらに揃えるべきだった。 実機で 0700 70 70 のディレクトリに postgres:18-alpine を当てて、 "database system is ready to accept connections" まで到達することを確認済み。 calnode と readeck が root 所有で動いていたのは、あちらのイメージが コンテナ内 root で動くから。DB だけが uid を落とす。 --- nix/homelab/rallly.nix | 6 +++++- nix/homelab/spliit.nix | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/nix/homelab/rallly.nix b/nix/homelab/rallly.nix index abf09d2c..491a1d2e 100644 --- a/nix/homelab/rallly.nix +++ b/nix/homelab/rallly.nix @@ -24,8 +24,12 @@ # (podman の userns root) 所有なので、その下に root 所有のディレクトリを作った # 後さらに中へ降りると systemd が unsafe path transition で拒否する。calnode で # 実際に踏んだ (詳細は calnode.nix)。なので db 用は入れ子にせず並べる。 + # + # 所有者が root ではなく 70 なのは、postgres のイメージが uid 70 で動くため。 + # root 所有の 0700 だと `mkdir: can't create directory '/var/lib/postgresql/18/': + # Permission denied` で起動に失敗する。既存の miniflux/db も uid 70 所有だった。 systemd.tmpfiles.rules = [ - "d /var/lib/homelab/rallly-db 0700 root root -" + "d /var/lib/homelab/rallly-db 0700 70 70 -" ]; virtualisation.oci-containers.containers."rallly" = { diff --git a/nix/homelab/spliit.nix b/nix/homelab/spliit.nix index 5c3506d1..9c8daf92 100644 --- a/nix/homelab/spliit.nix +++ b/nix/homelab/spliit.nix @@ -15,8 +15,12 @@ { # rallly.nix と同じ理由で1階層。/var/lib/homelab の下に入れ子を作ろうとすると # tmpfiles が unsafe path transition で拒否する (calnode.nix 参照)。 + # + # 所有者が root ではなく 70 なのは、postgres のイメージが uid 70 で動くため。 + # root 所有の 0700 だと `mkdir: can't create directory '/var/lib/postgresql/18/': + # Permission denied` で起動に失敗する。既存の miniflux/db も uid 70 所有。 systemd.tmpfiles.rules = [ - "d /var/lib/homelab/spliit-db 0700 root root -" + "d /var/lib/homelab/spliit-db 0700 70 70 -" ]; virtualisation.oci-containers.containers."spliit" = {