Discourse ショートリンクルーター | サポート URL の簡素化

あなたのサイトにあるすべてのものに対して「このテーマをインストール」ボタンがあったらいいのにな、と思ったことはありますか?私はそのようなサイトを開発しました!https://discourserouter.pyxfluff.dev でご利用いただけます。

例えば、以下のように言う代わりに:

これは example.com/admin/config/emoji/settings で確認できます。

…現在は以下のようにできます:

ここで変更できます:https://discourserouter.pyxfluff.dev/admin/config/emoji/settings

サイトを初めて訪問すると、あなたのサイトを登録するよう促されますが、クッキーに記憶されるため、次回からは同じサイトを使用できます。これは直接パスの置換であり、パス接頭辞は不要です。フォーラムの URL を discourserouter.pyxfluff.dev に置き換えるだけでOKです!

紹介


これはまだ新しい製品であり、問題が発生する可能性があることにご注意ください!すべての問題、意見、その他のフィードバックはこのスレッドでご報告いただけます。私は可能な限りテストを行いましたが、100% 確実ということはあり得ません。

ソースコードは GitHub で Python (FastAPI) プロジェクトとして公開されており、プルリクエストも常に歓迎しています。

運用コスト

現在、このサービスは自宅のサーバーで稼働させているため、ドメインの年間 10 ドル以外のクラウド費用は発生せず、無料で運用できています。しかし、将来的には独自ドメインへの拡張を検討しています。現時点では公開の寄付 URL はありませんが、適切なドメインのスポンサーシップをご希望の場合は、PM でご連絡いただければ、何らかの形で調整いたします。

お楽しみいただき、ご意見をお聞かせください!:slight_smile:

「いいね!」 2

要するに、このリンクが購読されている場合、誰がどこをクリックしたのかという情報が得られるのでしょうか?:thinking: それとも、これはどのように機能するのでしょうか?

透明性の観点から、ローカル環境でテストした際のサーバーログを以下に示します:

開発用のログを誤って残してしまいましたが、このコミットをもって本番環境では無効化されています。Uvicorn によるエンドポイントへのアクセスログについては、何らかの対応をすることが難しいこと(また、セキュリティの観点から望ましくない可能性もあること)を理解しています。しかし、私の目的はプライバシーを尊重することであり、エンドポイントの URL をログに記録することではありません。いずれにせよ、サーバーログは systemd ユニット内にあり、エラーの特定などやむを得ない場合を除き、抽出する予定はありません。

また、このウェブサイトは私自身の PA インスタンス と連携しており、侵入的な分析を行わずに利用者数を把握することができます。結論として、私はあなたの IP アドレス、サイト URL、あるいはそれら以外のほとんど何も追跡していません。私に確認できるのは、誰かがサイトを訪問し、リダイレクトされたという事実のみです。ご懸念があればお気軽にお知らせください。ただし、「uvicorn がリダイレクト要求をログに記録する」という問題は、アプリの構築方法(クッキーと Jinja2 を使用)における設計上の欠陥に過ぎません。

もちろん、何らかの理由で私を信頼できない場合は、ご自身でホストすることも可能です(明日、ガイドを作成する予定です)。また、コード自体は監査可能です。コンテナは GitHub にミラーリングされています。:slight_smile:

もちろん、あなたを信頼していません。信頼すべき人はごく少数です。あなたはインターネット上の顔の見えないユーザー名に過ぎません。

でも、その「はい、その情報は入手できます」という点は受け入れますか?

「いいね!」 1

いいえ、サイト URL はブラウザのクッキーに保存されており、サーバーログには残されません。

私ができる最善のことは、ミラーされたソースを公開し、ログを示し、サイトが使用している技術を明確に説明することです(すべて私のインフラ上で)。もしその情報を確認しない、またはまだ信じないとおっしゃるなら、私にできることはほとんどありません :man_shrugging:

「いいね!」 1

こんにちは、皆さん!このプロジェクトに割り当てるリソース(個人的なメンテナンス時間、資金など)の量を決定する助けにするため、簡単なアンケートを作成しました。現在のプロジェクトに対するご意見に関わらず、このフォームにご記入いただければ大変助かります(最初の質問に「いいえ」と回答された場合は、気に入らない点を記入する欄もあります)。ありがとうございます!:slight_smile:

このようなサービスの問題点は、将来的に停止される可能性があり、URL が悪意のあるものへリダイレクトされるリスクがあることです。

あなたの善意には疑いの余地はありませんが、私の経験では、実際にそのようなことが起こります[1]。そのため、可能な限り一切依存しないようにしたいと考えています。


  1. 私が移行したフォーラムでは、サードパーティのサービスで多くの画像がホストされていましたが、数年後にすべての画像リンクが上書きされてしまいました :upside_down_face: ↩︎

「いいね!」 2

こんにちは、皆さん。利用が少ないため、公式にホストされているインスタンスを先回りして停止します。これは、どこでも使用されたという証拠がない(今週の分析ヒットが0であることを根拠としています)ため、誰かがこれを見つけて使用した後、リンク切れが発生してしまうのを防ぎたいからです。

これは単なる週末の趣味のプロジェクトだったので、あまり気にしていません。GitHub リポジトリはそのまま残りますし、問題が報告されれば重要なバグは修正しますが、当面は新しい機能は追加しません。実行に必要なリソースはほとんどありませんので、最新の Python が動作する環境であればどこでも実行できます。基本的にあらゆる用途に転用可能ですが、元の目的が「Discourse ルーター」だったため、その名前にしました。

「いいね!」 2

以前に README を書く約束をしていたような気がしますが、どうやらそうではなかったようです。いずれにせよ、セルフホストや流用方法に関する簡単なガイドを公開しました!リポジトリは引き続き GitHub にありますが、何かの理由でここから移動したくない方のために、以下に貼り付けておきます。

手順

セットアップ

venv と Python 3.13 以降(3.14 でのみテスト済みですが、3.13 でも問題ないはずです。コンパイラエラーが発生する場合は Python を更新してください)がインストールされていることを確認してください。

uv venv
source .venv/bin/activate
uv pip install .

必要に応じて設定ファイルを編集します。

nano src/backend_config.jsonc

ほとんどの設定は自明です。web.hostname は UI 上の見た目のためのものであり、機能には影響しません。

それだけです!起動しましょう。

python3 -m src

uvicorn アプリを手動で実行する必要はありません。Python モジュールが自動的に実行します。

「いいね!」 1