【Docker+ntfy】ntfyをDockerでどっかーんするだけ
最近、XよりMisskeyの方が利用頻度が増えてきたので手持ちのデバイス全部に通知が来るようにしたくなりました。
「WebPushでええやん」ってなりそうですが、iOS26(dev beta)だと"ホーム画面に追加"の項目がバグり散らかしててホーム画面に追加できない -> 通知を登録できないという悲しいことになっちゃったのでできないわけです。(というか、Appleが厳しいのもあるのか以前使ったときも通知が来ない事が多かったのですが)
てなわけで、Misskeyのwebhookをcf workersに送りつけて、それをntfyで全デバイスに送りつける構成を作ろうと思います。が、今回はntfy構築の部分しか話しません。(まだ作ってないし)
cf workersでwebhookごにょごにょする話はまた今度します。
Dockerインストール
前もやりましたが、一応。
パッケージ削除(Ubuntu 24.04 minimal installであれば要らないと思います)
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt remove $pkg; done
インストール
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
コピペで終わります。
compose.ymlを書く
docsを参考にかきかき
services:
ntfy:
image: binwiederhier/ntfy
container_name: ntfy
command:
- serve
environment:
- TZ=JST # optional: set desired timezone
- NTFY_ATTACHMENT_CACHE_DIR=/var/lib/ntfy/attachments
volumes:
- /var/cache/ntfy:/var/cache/ntfy
- /etc/ntfy:/etc/ntfy
ports:
- 10000:80
healthcheck: # optional: remember to adapt the host:port to your environment
test: ["CMD-SHELL", "wget -q --tries=1 http://localhost:80/v1/health -O - | grep -Eo '\"healthy\"\\s*:\\s*true' || exit 1"]
interval: 60s
timeout: 10s
retries: 3
start_period: 40s
restart: unless-stopped
私はnginxの背後にntfyを置くのでホスト側のポートを10000にしていますが、そのまま公開しちゃいたい場合は
- - 10000:80
+ - 80:80
にしてください。
sudo docker compose upで念の為起動を確認。動けばokです。
細かい設定
ここにserver.ymlのexampleがあるので、/etc/ntfy/server.ymlにコピペしちゃいます。
あとはdocsを見ながらいじいじ。
私の場合は、とりあえず認証周りをいじくりました。L94付近にあるはずです。
auth-file: "/var/lib/ntfy/user.db"
auth-default-access: "deny"
リバプロを使っている場合はこれも(L112付近)
behind-proxy: true
proxy-forwarded-header: "X-Forwarded-For"
iOS版の場合、バックグラウンド処理が行えないのでプッシュ通知のためにntfy.shを経由することになります。使う場合はL238付近を編集します。
iOS users:
upstream-base-url: "https://ntfy.sh"
base-urlも念の為。(L14付近)
base-url: "https://example.ruka.local"
その他は各自好きなようにいじってください。
ユーザー追加
sudo docker exec -it ntfy ntfy user add --role=admin r64
あとは設定するパスワードを尋ねられるのでそれに従うだけです。
Done 🎉
おわり!!!!トピック設定とかはdocs読んでください(投げやり)
Discussion