Firefox で拡張機能がLAN内のサーバーアクセスに関して動作しない

この記事を作った動機 Chromium 系列のブラウザでは動いていた拡張機能が、Firefox では動かないということがあった。原因を調査してみたところ、ネットワーク周りに問題があり、manifest.json の修正で解決できそうなことが分かった。 問題が解決するまでに試したことを記録しておきたい。 前提 拡張機能はLANにあるサーバーにアクセスすることで動作する LANにあるサーバーにアクセスするときに Firefox の環境にてエラーが発生する LAN内へのサーバーへのアクセスは、HTTPsを用いた通信であり、Firefox側にすでに証明書が入っている LAN内へのサーバーへのアクセスは、直接ブラウザでURLを叩く分には正常に動作する LAN内へのサーバーアクセスは、直接のIP指定ではなく、専用にLAN内だけで通用するドメインをあてがっている 試したこと 実装をXMLHttpRequestからfetchに変更 -> 効果なし manifest.jsonのmatchesに拡張機能がアクセスするドメインの追加 -> 効果なし manifest.jsonのpermissionsに対象ドメインを追加 -> 効果あり fetchでsame-origin -> 効果なし let res = await window.fetch(url, { credentials: 'same-origin' }) 現状のmanifest.jsonの例 { "manifest_version": 2, "name": "ext name", "description": "test123", "version": "2.2", "permissions": [ "activeTab", "https://my.domain/*" ], "icons": { "128": "imgs/test.png" }, "browser_action": { "default_popup": "action/pop.html", "default_icon": { "128": "imgs/test.png" } }, "content_scripts": [ { "js": [ "scripts/dist/bundle.js" ], "matches": [ "https://www.target.com/*", "https://my.domain/*", "https://*.my.domain/*" ] } ], "background": { "scripts": ["scripts/background.js"], "persistent": false }, "browser_specific_settings": { "gecko": { "id": "omited" } } } 参考にしたサイトとか Firefox Won’t Open Local IP Addresses? Fix It https://browserhow.com/fix-firefox-blocking-access-to-local-ip-addresses/ (2026年11月4日) Firefox add-on local area network communication capabilities - Stack Overflow https://stackoverflow.com/questions/20060162/firefox-add-on-local-area-network-communication-capabilities (2026年11月4日) 1829925 - AV software Avira breaks websites https://bugzilla.mozilla.org/show_bug.cgi?id=1829925 (2026年11月4日) ローカルLLM (Qwen-3.8-27B) (2026年11月4日)

2026年11月4日

PXE Boot で指定したTFTPサーバにたどり着かせられない(next-serverを上手く指定できない)

この記事を作った動機 デフォルトがPXEブートになっているPCがあり、CMOSクリアを何かしらの事情ですると、いちいちネットワークブートからしようとして真面目にうざいということがあった。そこで、PXEブートについて都合の良い環境を構築しようと思っていたものの、正直めっちゃめんどくさそうでに感じてかなり長いこと放置していたため、いい加減取り組もうということになった。 私はほとんどこの話題に関しては初見でよく分かっていなかったので、まずはUEFI以前のPCにおいて、pxelinuxまでたどり着くことを目標とした。とりあえず LLM に設定をある程度要件を渡して提案させ、分かる範囲で間違っている部分を公式ドキュメントなどを参考に修正しながら、Kea に DHCP の “Options” なるものを設定してみた。 そのところ、DHCP をPCが起動時に認識して、IPアドレスを取得したり正しくゲートウェイを認識したりはしたものの、“TFTP….“となってその後にTimeoutとなる挙動が繰り返されることとなった。用意しておいた TFTP サーバー自体は動いているものの tcpdump によって調べたところ、意図した TFTP サーバーに到達しておらず、DHCP サーバーをTFTP サーバーとして使おうとしている様子が観測された。 このことから、まだ現状では目的の達成には至っていないものの、マイルストーンとしてのpxelinuxを起動するところまではできたため、トラブルシュートで参照したサイトやったことなどに関して記録をまとめておきたい。 前提条件 DHCP サーバーには、kea を使っている DHCP サーバーは、PXEブートで使う TFTP サーバーとは別のPCで独立して動いている Arch Linux DHCP と TFTP(UDP/69ポート) をホストするサーバー両方において、Firewall の設定(ポート開放)が適切にされていること。 TFTP となるサーバのIPを192.168.aa.ccとする 手法に関すること TFTP をホストする yay -Sy uftpd sudo uftpd -n -o ftp=0,tftp=69 ./PXE # tftp RRQ 'pxelinux.0' from 192.168.aa.dd:2070 # tftp RRQ 'pxelinux.0' from 192.168.aa.dd:2071 # tftp RRQ 'ldlinux.c32' from 192.168.aa.dd:49152 # tftp RRQ 'pxelinux.0' from 192.168.aa.dd:2070 # tftp RRQ 'pxelinux.0' from 192.168.aa.dd:2071 # tftp RRQ 'ldlinux.c32' from 192.168.aa.dd:49152 Kea を設定する(詰まったこと) Kea の設定で難しいところがあった。TFTP のサーバーを指定するための next-server の指定に苦労した。結局のところネットで調べて、ようやく動いたという感じであった。また、LLM は間違った出力しかせず、Keaのドキュメントを参考資料として与えても改善が見られなかった。 ...

2026年11月3日

Google-Chrome をデバックモードで開き、ローカルホスト上で待機させたい

この記事を作った動機 Google-Chrome を開発用に使っており、裏でデバックをするための実装をしていたところ、Chromeがデバッグモードとして上手く動作しないことが分かったので簡易的なメモが欲しい。 問題点 Linux 環境にて、単にローカルホストにデバックソケットを立てるように指示するだけでは不十分で、Chromeがデバックモードで立ち上がらない。すでにすべてのChromeインスタンスをpkill chromeなどで完全に排除した状態から始めて、その症状が再現する。 google-chrome-stable --remote-debugging-port=5588 対処 プロファイルの情報を保存するディレクトリを指定すると、デバックモードとして立ち上がった。以下はLinux環境向けの例であり、各自どのディレクトリにプロファイルを保存するかはOSなどに合わせて合わせる必要がある。 google-chrome-stable --remote-debugging-port=5588 --user-data-dir="/tmp/chrome_debug" 利便性の観点 /tmpはLinuxでRAM上に作成される起動時に一時的に確保されるディスク領域であり、再起動したりすると内容が消える。Guestモードに近い使い方をしたいときに有効であるが、それだといちいちブラウザを一番最初に起動した扱いとなり、初期セットアップのWindowsでいうところのOOBEみたいなのが出てきてしまう。そこで以下のオプションを指定することでそれらを抑制し、すぐにブラウザが使えるようにできる。 # --no-first-run --no-default-browser-check google-chrome-stable --remote-debugging-port=5588 --user-data-dir="/tmp/chrome_debug" --no-first-run --no-default-browser-check Chrome がデバッグモードで動いているかの検証方法 以下のURLにFirefoxなどの別のブラウザでアクセスし、JSON応答が帰ってくるか確かめる。帰ってこない場合、Chromeがデバッグモードで起動していないか、ポートが衝突しているなどのネットワーク上の不具合である可能性がある。 http://127.0.0.1:5555/json/version 参考にしたサイトとか Access local servers and Chrome instances with port forwarding | Chrome DevTools | Chrome for Developers https://developer.chrome.com/docs/devtools/remote-debugging/local-server/ (2026年10月30日) Gemma-4-31B (ローカルLLM) (2026年10月30日)

2026年10月30日

pacman のパッケージキャッシュ削除

この記事を作った動機 パッケージマネージャである pacman あたりが作るキャッシュが肥大化していき、数十~数百GB程度ディスクを食らって容量不足になることがあるので、それに対処するメモが欲しい。 なんかこの手の話はよく忘れている。 内容 sudo pacman -Sc # yay -Sc 参考にしたサイトとか pacman - ArchWiki https://wiki.archlinux.org/title/Pacman#Cleaning_the_package_cache (2026年10月27日)

2026年10月27日

Inputタグにて、zustandのストアを正しく更新したり、ユーザーの入力を正しく受け付けることができない

この記事を作った動機 React + Zustand + TypeScirpt の組み合わせで、Input タグにて躓いたことがあったので記録したい。具体的な症状としては、要素の内容を変更しようとしても、一切微動だにせず、値を変えることができないという症状がある。 問題の挙動 期待する挙動 問題が起こったコード 問題がない部分 // ... <LabelTextEntryItem name="IP / URL" callback={(resultString:string) => { setNetwork((prev) => ({ ...prev, IPorDomainName: resultString })) }} init={getNetwork().IPorDomainName} ></LabelTextEntryItem> // ... 問題がある部分 // ... export function LabelTextEntryItem({ name , init , callback}:{ name:string, init:string , callback:(result:string) => void }){ return <div className="flex flex row mb-4"> <div className="label text-xl noSelect">{name}:</div> <div className="ml-auto"> <HoverAnimation> // 問題の箇所 -------------------- // 問題の箇所 -------------------- <input className="ml-auto text-xl w-30" id="entry" value={init} type="text" onChange={(event:ChangeEvent<HTMLInputElement>) => { callback(event.target.value) }}></input> // 問題の箇所 -------------------- // 問題の箇所 -------------------- </HoverAnimation> </div> </div> } // ... 解決に至った方法 問題が再現する条件として、Zustandで定義したストアの内容をInputタグにて表示するときにvalueの引数としてそれを指定していることがある。解決のためには、defaultValueとしてZustand内の内容を表示するようにすることで解決された。なぜこれで症状が解決するのかは分かってない。コンソールでコールバックが呼ばれたときの内容を確認してみたところ、valueとして引数にZustandの内容を与えても、値自体は更新された値がコールバックに正しく伝達できていることが確認でき、コールバック内の値の更新処理が上手くいかない理由が不明である。defaultValueとvalueのinputタグにおける違いとは多分値の拘束力なのではないか?と思われる。valueに固定値を指定してしまうと、編集不能になるとかでもあるのだろうか? ...

2026年10月14日

SOGo でタスクが登録できない、未完了タスク以外が見えない

この記事を作った動機 最近 Mailcow によるメールサーバを使っているが、SOGo という内蔵されたフロントエンドがあり、メール送受信だけでなく、カレンダー機能もついている。これについてタスク管理機能を試したところ、分かりづらいところや不具合があったのでそれに対してどうできるか一例を記録する。 タスクが登録できない件について 問題の様子 対処 SOGo の設定において、短い日付形式が空だと、日本語の言語設定のとき、フロントエンドのJSがクラッシュしタスクの日付を正しく設定できないことがあることが分かった。そのため、そこを明示することで対処した。 完了したタスクを表示する フィルター設定の中に、日付だけではなく、完了したタスクを表示するかの項目もひとまとまりになっている。その中の項目をスクロールして完了タスクを表示するように選択する。 使った画像とか mailcow: dockerized documentation https://docs.mailcow.email/ (2026年8月4日) SOGo | Free Open Source Webmail https://www.sogo.nu/ (2026年9月14日) 関連する記事とか Mailcow を使いたい 参考にしたサイトとか 特になし。

2026年9月14日

ニコニコ動画にパスワードログインできない件について、yt-dlp のリポジトリに issue を立ててしまう

この記事を作った動機 最近ニコニコ動画を久しぶりに見てみて、動画をいくつか yt-dlp コマンドによってダウンロードしようとしたところ、パスワードとユーザ名によるログイン機能がうまく機能しない場合があることが分かった。 普段であれば、誰かが勝手に issue でも立てるだろうと放置していただろうが、何を血迷ったのか issue を自分で立てたので、そのことについて記録したい。Issue に関してはすでに yt-dlp の方を見ればわかることなので、周辺情報について適当に書きたい。 前回の記事 yt-dlpコマンドで、年齢制限を何とかする yt-dlpコマンドで、年齢制限を何とかするの追記 issue へのリンク [niconico] Unable to log in: HTTP Error 404: Not Found (caused by <HTTPError 404: Not Found>) · Issue #17667 · yt-dlp/yt-dlp https://github.com/yt-dlp/yt-dlp/issues/17667 (2026年9月11日) yt-dlp をコンパイルする 前提条件として、すでに作業ディレクトを作成して移動しており、anaconda 環境であることと、Linux 環境であることを置く。ニコニコ動画に関していくつか API エンドポイントの URL について候補があり試したかったというのがあり、コードを改変したあと、コンパイルする必要がったことが背景にある。結局どれもうまくいかなかったが。 リポジトリをクローン git clone https://github.com/yt-dlp/yt-dlp.git cd yt-dlp 環境を作成 conda create -n ytDlp conda activate ytDlp conda install python conda install pip 依存関係のインストールやコンパイル、バイナリ生成 yt-dlpリポジトリのコンパイルの項目を参考に、以下のようにして yt-dlp のバイナリを生成する。 ...

2026年9月11日

pexpect において、標準出力にログを出力させながら、端末の出力に関係なくコマンドを実行させたいとき

この記事を作った動機 Onenote代替品の作成の研究の一環で、pexpect を使って端末のセッションを維持させながらとにかくコマンドを実行させたいということがあり、その過程で試行錯誤があったため記録したい。 現状使っているもの 以下は現状使っている実装の参考例である。一定時間置いた後に、1000文字(出力に対して、十分大きい数字を設定する)ずつターミナルを読み出している。作ったセッション内のターミナルに何が出力されるかわからないが、とにかくコマンドを実行させて、その結果を出力することに以下のスクリプトは特化している。 待ち時間は適宜調整する必要がある。 スクリプト本体 (新しい 2026/9/21 時点) import pexpect,time,sys session = pexpect.spawn("/bin/bash",timeout=5, encoding='utf-8') session.logfile_read = sys.stdout session.sendline("ls") time.sleep(1) session.flush() session.read_nonblocking(1000,timeout=None) session.sendline("gcc") time.sleep(1) session.flush() session.read_nonblocking(1000,timeout=None) スクリプト本体 (古い) 一定時間置いたあとに、何でもマッチングするexpectを配置しているのは、標準出力であるstdoutに対して、コマンドの実行結果を吐き出させたいためである。 import pexpect,time,sys session = pexpect.spawn("/bin/bash",timeout=5, encoding='utf-8') session.logfile_read = sys.stdout session.sendline("ls") time.sleep(1) session.expect(".+") session.sendline("gcc") time.sleep(1) session.expect(".+") 実行結果 python main1.py ls # ⠀aaaa ⠀main.py ⠀main1.py ⠀readme.md ⠀test/ gcc # gcc: fatal error: 入力ファイルがありません # compilation terminated. 追記 (2026/9/16) このやり方は非常に簡易的にしか動作せず、副作用があることが分かった。具体的には".+“でexpectさせるとログが出てくるのは、pexpectが期待した文字列を待機している状態になるからであることが分かった。つまるところ、タイムアウトに引っかかると例外を出して強制終了してしまう。 それを防ぐには、pexpectにおいては、waitという専用の関数があるため、それを利用することができることが分かった。ただこれだとログが出てこない(”.*“と同じ挙動になる)ため、なにかさらに工夫が必要そうなことが分かっている。 また、pexpect にて同じ端末に出力を出させると端末の表示がぐちゃぐちゃになってしまう。最近考えていることとして個別にファイルとしてlogをテキストファイルとして書き出させてそれをwatch -n 0.1 "cat log | tail -n 10"みたいにすればよいのではないかと思い始めている。 ...

2026年9月9日

Firefox でサイトに対する権限を設定するUIを開く

この記事を作った動機 Firefox にて、LAN にアクセスする拡張機能を移植したところ動かなった。そこで、LAN へのアクセスの許可を特定サイトに対して出そうとしたところ、UI が奥まったところにあり分かりづらかったので記録。 UI の開き方(画像のみ) 参考にしたサイトとか Site Permissions panel | Firefox Help https://support.mozilla.org/en-US/kb/site-permissions-panel (2026年8月30日)

2026年8月30日

QEMU で Nvidia 製 GPU において GPU パススルー以外で、ハードウェアアクセラレーションを利用する方法について

この記事を作った動機 簡易的に GTX 1080 Ti と Linux 環境において、Virtio(OpenGL) や Venus(Vulkan) による GPU アクセラレーションを利用する方法について、今まで諦めていた。それでも諦めきれずに定期的に調べていたところ、対処方法が見つかった。それについて、簡易的に症状とやったことを記録したい。 デモ 以下の動画は、RDP 経由で Venus による 仮想 GPU を利用して Vulkan や OpenGL のアプリが動作している事を示している。マインクラフトの操作については、今回の RDP セットアップの仕様上、絶対座標しか送られておらず視点を動かすことができていなかったり、VPN など遠隔地から RDP 接続をして動かしているため、ラグが大きくぎこちないものとなっている。 前座 Virtio における GPU 加速 Virt-Manager において標準で利用できる仮想 GPU である。AMD や Intel の GPU 環境では特別なことをしなくても、私個人の体験としては利用できたが、Nvidia 環境ではそうならなかった。 Venus における GPU 加速 最近あたらしい GPU 加速手段の一つとして実装されたもので、デフォルトでは Virt−Manager などからはまだ利用できるようにはなっていない模様である。これについては直接 QEMU をコマンドラインから起動することが私が現在できていることであり、Virt-Manager からは XML の設定をいじってみたものの成功していない。 今回犠牲になっている事 今回提示する解決策は、最低限 仮想 GPU が Nvidia の GTX1080Ti において動作するようにする事を目的としており、以下の負担や犠牲がある。 ...

2026年8月29日