Pi-holeをdocker runだけで起動する

Pi-holeのDocker公式イメージはdocker-composeでの起動が案内されている。しかしNAS製品の多くはGUIからコンテナを管理する設計であり、docker-composeを使うにはSSHでログインする必要がある。Pi-holeを動かすためだけにSSHの管理を増やすのは合理的でない。

実際にはdocker-composeの設定はすべて docker run のオプションに変換できるため、docker-compose無しでもPi-holeは起動できる。本稿では、公式のdocker-compose設定を docker run コマンドに変換した例を示し、あわせて各オプションの意味を整理する。

docker runコマンド

以下は、Pi-hole公式のdocker-compose設定と同等の docker run コマンドである。

docker run -d \\
  --name pihole \\
  -p 53:53/tcp \\
  -p 53:53/udp \\
  -p 80:80/tcp \\
  -p 443:443/tcp \\
  -e TZ='Asia/Tokyo' \\
  -e FTLCONF_webserver_api_password='任意のパスワード' \\
  -e FTLCONF_dns_listeningMode='ALL' \\
  -v /path/to/etc-pihole:/etc/pihole \\
  --cap-add=NET_ADMIN \\
  --cap-add=SYS_TIME \\
  --cap-add=SYS_NICE \\
  --restart unless-stopped \\
  pihole/pihole:latest

NASのコンテナ管理GUIにこれらのパラメータを入力するか、SSH不要でコマンドを実行できる手段があればそれを利用する。

オプションの説明

ポートマッピング(-p)

  • 53:53/tcp および 53:53/udp: DNS用ポート。TCP/UDPの両方が必要
  • 80:80/tcp: 管理用WebインターフェースのHTTPポート
  • 443:443/tcp: 管理用WebインターフェースのHTTPSポート。Pi-hole FTLが自己署名証明書を自動生成する

Pi-holeをDHCPサーバとしても使用する場合は -p 67:67/udp を追加する。NTPサーバとしても使用する場合は -p 123:123/udp を追加する。

環境変数(-e)

  • TZ: タイムゾーン。IANA形式で指定する(日本の場合は Asia/Tokyo
  • FTLCONF_webserver_api_password: 管理用Webインターフェースのパスワード。未指定の場合はランダムなパスワードが自動生成される
  • FTLCONF_dns_listeningMode: DNSの待ち受けモード。Dockerのデフォルトネットワーク(bridgeモード)を使用する場合は ALL を指定する

ボリューム(-v)

  • /path/to/etc-pihole:/etc/pihole: Pi-holeのデータベースと設定ファイルの永続化先。コンテナを再作成してもデータが保持される。/path/to/etc-pihole は実際のパスに置き換える

Pi-hole v5からv6へ移行する場合で、以前にdnsmasqのカスタム設定を使用していた場合は、初回起動時のみ /path/to/etc-dnsmasq.d:/etc/dnsmasq.d のマウントと環境変数 FTLCONF_misc_etc_dnsmasq_d=true の追加が必要になる。移行完了後は不要になる。v6から新規導入する場合はこの設定は不要である。

ケーパビリティ(--cap-add)

  • NET_ADMIN: Pi-holeをDHCPサーバとして使用する場合に必要。DNSのみの用途では不要だが、公式設定に含まれているためそのまま指定している
  • SYS_TIME: Pi-holeをNTPクライアントとして使用し、ホストのシステム時刻を設定する場合に必要
  • SYS_NICE: Pi-holeのプロセスに高い処理優先度を付与する。任意の設定

再起動ポリシー(--restart)

  • unless-stopped: 手動で停止した場合を除き、コンテナが停止したときに自動で再起動する。NASの再起動後もPi-holeが自動的に起動するようになる

docker-compose(日本語注釈版)

参考として、公式のdocker-compose設定に日本語の注釈を付けたものを以下に示す。

services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    ports:
      # DNSポート(TCP/UDP両方必要)
      - "53:53/tcp"
      - "53:53/udp"
      # 管理画面 HTTPポート
      - "80:80/tcp"
      # 管理画面 HTTPSポート(FTLが自己署名証明書を自動生成)
      - "443:443/tcp"
      # DHCPサーバとして使う場合は以下を有効にする
      #- "67:67/udp"
      # NTPサーバとして使う場合は以下を有効にする
      #- "123:123/udp"
    environment:
      # タイムゾーンをIANA形式で指定(日本: Asia/Tokyo)
      TZ: 'Asia/Tokyo'
      # 管理画面のパスワード(未指定ならランダム生成)
      FTLCONF_webserver_api_password: '任意のパスワード'
      # Dockerのbridgeネットワーク使用時は'ALL'を指定
      FTLCONF_dns_listeningMode: 'ALL'
    volumes:
      # データベースと設定ファイルの永続化
      - './etc-pihole:/etc/pihole'
      # v5からv6への移行時のみ必要(初回起動後は削除可)
      # 環境変数 FTLCONF_misc_etc_dnsmasq_d: 'true' も併せて設定すること
      # v6新規導入の場合は不要
      #- './etc-dnsmasq.d:/etc/dnsmasq.d'
    cap_add:
      # DHCPサーバとして使う場合に必要
      - NET_ADMIN
      # NTPクライアントとしてホストの時刻を設定する場合に必要
      - SYS_TIME
      # プロセスの処理優先度を上げる(任意)
      - SYS_NICE
    # 手動停止以外では自動再起動
    restart: unless-stopped

Read more

Capture Oneに待望のネガフィルム変換機能が来た

2026年4月3日、Capture One 16.7.4 がリリースされた。目玉はなんといっても Negative Film Conversion(ネガフィルム変換) の搭載だ。これまで Cultural Heritage エディション限定だったネガ反転処理が、ついに通常の Capture One Pro / Studio でも使えるようになった。 何が変わったのか 従来、Capture One でネガフィルムをポジに変換するには、Cultural Heritage(CH)エディションを使う必要があった。CH は文化財デジタル化向けの専用製品で、Base Characteristics ツールに Film Negative / Film Positive モードが用意されていた。しかし一般の写真愛好家がフィルムスキャンのためだけに CH を導入するのは現実的ではなく、多くのユーザーは Lightroom とそのプラグイン(Negative Lab

By Sakashita Yasunobu

雨の中、歩くべきか走るべきか

傘を忘れた日の永遠の問い、歩くか、走るか、いやいっそ雨宿りをするのか。物理で決着をつける。 モデル 人体を直方体で近似。上面積 $A_{\text{top}}$(頭・肩)、前面積 $A_{\text{front}}$(胸・顔)。雨は鉛直一様(落下速度 $v_r$、数密度 $n$)、距離 $d$ を速度 $v$ で直線移動する。 人体の直方体モデルは、上から見た水平断面が $A_{\text{top}}$、正面から見た鉛直断面が $A_{\text{front}}$ の二面で構成される。移動方向は水平、雨は鉛直に降る。 受ける雨滴数は、上面が $n v_r A_{\text{top}

By Sakashita Yasunobu

T-GRAIN・Core-Shell・旧式乳剤の定量比較

Kodak T-GRAIN、Ilford Core-Shell、旧式立方晶乳剤。写真フィルムの性能を左右する三つの乳剤技術を、特許文献と数式に基づいて比較する。 1. 出発点: 旧式乳剤の構造と限界 T-MAXやDeltaが何を改良したのかを理解するには、まず従来の乳剤がどのようなものだったかを押さえておく必要がある。 1980年代以前、標準的なハロゲン化銀乳剤はAgBrやAgBr(I)の結晶が立方体(cubic)か不定形(irregular)の形をしていた。Tri-XやHP5の祖先にあたるこれらの乳剤では、結晶のアスペクト比(直径対厚さの比)はおおむね1:1から2:1。三次元的にほぼ等方的な粒子が乳剤層にランダムに散らばっていた。 この形態が感度と粒状性のトレードオフに直結する。立方晶粒子を一辺 $a$ の立方体として近似すると、表面積と体積、そしてその比は次のとおりである。 $$ S_{\text{cubic}} = 6a^2, \quad V_{\text{cubic}} = a^3, \quad \frac{S}{V} = \frac{6}

By Sakashita Yasunobu

クジラはなぜがんにならないのか

体が大きい動物ほど細胞の数が多い。細胞が多ければ、そのうちどれかががん化する確率も高くなるはずだ。ところが現実には、クジラやゾウのがん発生率はヒトよりも低い。1977年、疫学者リチャード・ピートがこの矛盾を指摘した。以来この問いは「ピートのパラドックス」と呼ばれ、比較腫瘍学における最大の謎のひとつであり続けている。 種の中では予測通り、種の間では崩れる 同じ種の中では、直感どおりの傾向が確認されている。身長の高いヒトはそうでないヒトよりがんの発生率がやや高く、年齢を重ねるほどがんは増える。細胞の数が多いほど、細胞分裂の回数が多いほど、がん化の確率は上がる。 しかし種を超えて比較すると、この関係が崩壊する。シロナガスクジラの細胞数はヒトの約1000倍にのぼるが、がんの発生率がヒトの1000倍になるわけではない。哺乳類全体を見渡しても、体サイズとがんリスクの間に明確な正の相関は長い間見つかっていなかった。がんの発生率は種が異なっても約2倍の範囲にしか収まらないとされてきた。体サイズの差は100万倍を超えるにもかかわらず。 ゾウが持つ余分ながん抑制遺伝子 最もよく知られた説明は

By Sakashita Yasunobu