環境変数
Holloは環境変数を使って設定を行います。
環境変数はプロジェクトの最上位ディレクトリに*.env*ファイルを作成するか、
Dockerの-e/--envオプションを使うか、
Railwayのenvironment variablesメニューから設定できます。
PORT オプション Railwayでは使われない
Section titled “PORT ”サーバーが受信するポート番号。デフォルトは3000です。
BIND オプション Railwayでは使われない
Section titled “BIND ”サーバーが受信するアドレス。有効なIPアドレスまたはlocalhostである必要があります。
DATABASE_URL Railwayでは使われない
Section titled “DATABASE_URL ”PostgreSQLのデータベースのURL。例:postgresql://hollo:password@localhost/hollo
SECRET_KEY Railwayでは使われない
Section titled “SECRET_KEY ”セッションを保護するための秘密鍵。44文字以上である必要があります。 次のコマンドで安全なランダムな秘密鍵を生成できます:
openssl rand -hex 32TZ オプション
Section titled “TZ ”アプリケーションの等時帯(time zone)。
有効な等時帯識別子である必要があります。
例:UTC、America/New_York、Asia/Tokyo。
デフォルトはUTCです。
NODE_TYPE オプション
Section titled “NODE_TYPE ”このプロセスで実行するコンポーネントを制御します。有効な値は:
all(デフォルト):Webサーバー、Fedifyメッセージキュー、 インポートワーカー、クリーンアップワーカー、リモート返信取得ワーカーと投票通知タスクをすべて実行web:Webサーバー(HTTP API)のみ実行worker:ワーカーのみ実行(Fedifyメッセージキュー + インポートワーカー + クリーンアップワーカー + リモート返信取得ワーカー + 投票通知タスク)
これにより、スケーラビリティを向上させるためにWebサーバーとバックグラウンドワーカーを分離できます。 フォロワーが多い高トラフィックインスタンスを運営する場合、ワーカーを分離することでパフォーマンスが向上します。
デフォルトはallです。
インポート、クリーンアップ、リモート返信収集、投票通知はワーカーノードの分離で説明する専用タスクキューを使います。全ノードのタスク定義に互換性が必要です。
BEHIND_PROXY オプション Railwayでは使われない
Section titled “BEHIND_PROXY ”Holloがリバースプロキシの後ろにある場合はtrueに設定します。
HolloがL7ロードバランサーの後ろにある場合(通常はそうする必要があります)、
このオプションを有効にします。
基本的にはオフになっています。
有効にすると、カンマ区切りの X-Forwarded-Host と X-Forwarded-Proto
ヘッダーの最初の空でない値を使用します。無効な転送ホストは無視され、元の
Host ヘッダーが使用されます。クライアントが送信した転送ヘッダーをプロキシで
上書きし、信頼できるプロキシだけが Hollo に直接接続できるようにしてください。
HANDLE_HOST オプション
Section titled “HANDLE_HOST ”ドメイン分離 WebFinger 設定で使用するフェディバースの
ハンドルドメインです。このオプションを設定すると、フェディバースの
ハンドルは@user@HANDLE_HOSTの形式になりますが、Hollo自体は
WEB_ORIGINで動作します。
WEB_ORIGINと一緒に設定する必要があり、片方だけを設定すると
Holloは起動に失敗します。最初のアカウントを作成する前に
両方の変数を設定してください。連合が始まった後にハンドルドメインを
変更すると、リモートフォロー関係が壊れます。
デフォルトでは設定されていません。
WEB_ORIGIN オプション
Section titled “WEB_ORIGIN ”ドメイン分離 WebFinger 設定でHolloの ActivityPub
サーバーが実際に動作するオリジン(スキーム + ホスト)です。例:
https://ap.example.com。アクターURI、インボックスURLなどの
連合エンドポイントは、すべてこのオリジンを基に構築されます。
HANDLE_HOSTと一緒に設定する必要があり、
片方だけを設定するとHolloは起動に失敗します。
デフォルトでは設定されていません。
ALLOW_PRIVATE_ADDRESS オプション
Section titled “ALLOW_PRIVATE_ADDRESS ”このオプションをtrueに設定すると、サーバーサイドリクエストフォージェリ(SSRF)攻撃の防止を解除します。
ローカルネットワークでテストする場合は、このオプションをオンにする必要がある場合があります。
デフォルトではオフになっています。
HOME_URL オプション
Section titled “HOME_URL ”設定された場合、トップページへにアクセスした時にこのURLにリダイレクトされます。 設定されていない場合、トップページにはアカウント一覧が表示されます。
MARKDOWN_EXTENSIONS オプション
Section titled “MARKDOWN_EXTENSIONS ”ローカル投稿で使う任意のMarkdown拡張をカンマで区切って指定します。
指定できる名前はfootnote、deflist、sub、sup、mark、ruby、
ins、abbr、tasklist、mathです。たとえば
MARKDOWN_EXTENSIONS=footnote,ruby,mathで脚注、ルビ、数式を有効にします。
名前の前後の空白は無視され、重複は許可されます。不明な名前があると起動に
失敗します。未設定または空の場合、任意の拡張はすべて無効です。
表と取り消し線はこの設定なしでも使えます。
ローカル投稿の作成時と明示的な編集時に適用され、プロフィールの自己紹介や フィールドには適用されません。設定を変えても既存の投稿の保存済みソースや HTMLは変わらず、更新も送信しません。編集時は現在の設定で描画するため、 拡張を無効にしてから編集すると、その構文が文字として表示される場合があります。
構文、エスケープ、連合時の制限はMarkdownガイドを参照してください。
GUKHANMUN オプション
Section titled “GUKHANMUN ”Gukhanmunで漢字にハングルの読みを付けるローカル投稿のロケールタグ
パターンを、カンマ区切りで指定します。パターンは大文字と小文字を区別せず、
*は任意の長さの文字列に一致します。たとえばGUKHANMUN=ko,ko-*は、
ko、ko-KR、ko-Kore-KR、ko-KPに一致します。
ko-*パターンはko自体には一致しないため、両方を処理する場合は両方の
パターンを指定してください。地域サブタグがKPのロケールではko-kp変換
プリセットを使用し、それ以外ではko-krを使用します。単語の読みは選択した
辞書によって決まります。下記のGUKHANMUN_DICTSを参照してください。
この変数が未設定または空の場合、Gukhanmunは読み込まれません。新規作成または 編集されたローカル投稿だけを処理し、既存の投稿とリモート投稿は変更しません。 Gukhanmunの読み込みまたは変換に失敗すると、投稿リクエストも失敗します。
GUKHANMUN_DICTS オプション
Section titled “GUKHANMUN_DICTS ”Gukhanmunで使用する辞書を、優先順位の高い順にカンマ区切りで指定します。
最初に一致する辞書の読みを使用します。たとえば
GUKHANMUN_DICTS=loanwords,stdictは、標準国語大辞典より外来語表記用例を
優先します。
指定できる名前はloanwords(国立国語院の外来語表記用例)、
stdict(標準国語大辞典)、opendict:general(ウリマルセムの一般語)、
opendict:north-korean(北朝鮮語)、opendict:dialect(方言)、
opendict:archaic(古語)です。opendictは、その位置で一般語、北朝鮮語、
方言、古語の順に展開されます。
デフォルトはloanwords,opendict:general,opendict:dialect,stdictです。
すべてのロケールで同じ一覧を使用します。北朝鮮語辞書の読みを優先するには、
opendict:north-koreanを先に指定してください。
名前の前後の空白と空の項目は無視します。空の値では単語辞書を読み込みませんが、
Unihanの文字単位の読みは適用されます。不明な名前を指定すると変換に失敗します。
この設定だけでは変換は有効になりません。処理するロケールはGUKHANMUNで
指定してください。
REMOTE_ACTOR_FETCH_POSTS オプション
Section titled “REMOTE_ACTOR_FETCH_POSTS ”リモートアクターが最初に発見された場合に読み込む最新の公開投稿の数。
デフォルトは10です。
REMOTE_REPLIES_SCRAPE_DEPTH オプション
Section titled “REMOTE_REPLIES_SCRAPE_DEPTH ”バックグラウンドで取得するリモート返信の階層数です。投稿に FEP-f228 の
context コレクションがあれば先に読み、必要に応じて replies に
フォールバックします。0 にすると両方を無効にします。コンテキスト
コレクションに含まれない祖先の投稿は取得しません。親がない投稿は保存しますが、
ステータスコンテキストの返信ツリーではその親に接続されません。
デフォルトは 2 です。
REMOTE_REPLIES_SCRAPE_MAX_ITEMS オプション
Section titled “REMOTE_REPLIES_SCRAPE_MAX_ITEMS ”コンテキスト取得の各試行で走査する項目数の上限です。保存済みの投稿も
含みます。replies ジョブでは保存する返信数を制限します。上限に達すると
部分取得として記録し、起点となる投稿の replies にフォールバックします。
デフォルトは 100 です。
REMOTE_REPLIES_SCRAPE_MAX_REQUESTS オプション
Section titled “REMOTE_REPLIES_SCRAPE_MAX_REQUESTS ”取得の各試行でのドキュメントローダー呼び出し数の上限です。コレクションの
走査と投稿・アクターの保存で共有します。キャッシュと組み込み JSON-LD
コンテキストは除外し、独自の JSON-LD コンテキストは含めます。ローダー
内部のリダイレクト・署名再試行、WebFinger、NodeInfo、メディア取得、
プレビューカードのリクエストは制限しません。上限に達すると部分取得として
記録し、replies にフォールバックします。
デフォルトは 200 です。
REMOTE_EMOJI_REACTIONS_FETCH_MAX_ITEMS オプション
Section titled “REMOTE_EMOJI_REACTIONS_FETCH_MAX_ITEMS ”リモート投稿を保存するときに、リモートのemojiReactionsコレクション
から読み込んで保存する絵文字リアクションアイテムの最大数。
0に設定すると、リモート絵文字リアクションの取得を無効にします。
デフォルトは100です。
REMOTE_REPLIES_SCRAPE_INTERVAL_SECONDS オプション
Section titled “REMOTE_REPLIES_SCRAPE_INTERVAL_SECONDS ”同じoriginへのリモート返信取得リクエスト間の最小待機秒数。
デフォルトは5です。
REMOTE_REPLIES_SCRAPE_BACKOFF_SECONDS オプション
Section titled “REMOTE_REPLIES_SCRAPE_BACKOFF_SECONDS ”リモートサーバーがRetry-Afterを返さずHTTP 429を返した場合に、
リモート返信取得ジョブを再試行するまでの待機秒数。
デフォルトは300です。
REMOTE_REPLIES_SCRAPE_COOLDOWN_SECONDS オプション
Section titled “REMOTE_REPLIES_SCRAPE_COOLDOWN_SECONDS ”完了したリモート取得ジョブが同じコレクションの重複ジョブを抑制する時間です。
失敗したコンテキストジョブにも適用しますが、起点となる投稿は replies に
フォールバックできます。
デフォルトは 300 秒です。
MEDIA_PROXY オプション
Section titled “MEDIA_PROXY ”リモートサーバー上のメディア(アバター、ヘッダー、添付メディア、 カスタム絵文字、プレビューカードの画像)をHolloがクライアントに対して どう配信するかを制御します。指定可能な値:
off(デフォルト):MastodonクライアントAPIとウェブUIは リモートのURLをそのままクライアントに渡します。これまでと同じ 動作です。proxy:すべてのリモートメディアURLを署名付きの/proxy/<sig>/<b64url>パスに書き換えます。Holloはリクエストごとに アップストリームのバイト列をストリーミングして応答し、ディスクには 書き込みません。クライアントからはHolloのオリジンしか見えないため、 リモートサーバーのCORS設定の影響を受けず、訪問者のIPアドレスも 外部に漏れません。cache:URLの書き換えはproxyと同じですが、ストリーミングした 本文を設定済みのストレージバックエンドのproxy/<sha256>.binに 保存し、Content-Type情報を持つサイドカーをproxy/<sha256>.jsonに 一緒に保存します。以降のリクエストはアップストリームを再取得 しません。ローカルアカウントと承認済みのフォロー関係がある リモートactorのアバターも、actorが保存または更新されるときに このキャッシュへ事前取得されます。管理ダッシュボードの /thumbnail_cleanup から必要に応じてキャッシュを消去できます。
真偽値の同義語としてtrue / on / 1はproxyの別名、
false / off / 0はoffの別名として受け付けます。ディスク
キャッシュはcacheで明示的に有効化する必要があります。
proxyとcacheモードでは、HolloはHTTP(S)以外のスキームをプロキシ
しません。アップストリームのURLとすべてのリダイレクト先に対してSSRF
チェックを行い、本文は32 MiBに制限し、image/svg+xmlはHolloのオリジン
上で実行され得るインラインスクリプトを含むため一切プロキシしません。
デフォルトはoffです。
REMOTE_MEDIA_THUMBNAILS オプション
Section titled “REMOTE_MEDIA_THUMBNAILS ”投稿を取り込む際に、Holloがリモートの添付メディアをダウンロードして
ローカルのWebPサムネイルを生成するかを制御します。値はon / true /
1(これまでの動作)またはoff / false / 0です。
offに設定すると、Holloは受信した添付に対してアップストリームの取得
とSharpパイプラインを完全にスキップし、リモートURLをそのまま
サムネイルURLとして保存します。MEDIA_PROXY=proxyまたはcacheと
組み合わせれば、クライアントはレンダリング時に依然として同一オリジンの
URLを受け取り、MEDIA_PROXY=offの場合はアップストリームのURLを直接
受け取ります。多数のメディア投稿を取り込むインスタンスでは、大量の
ディスク容量を節約できます。
デフォルトはonです。
REMOTE_ACTOR_STALENESS_DAYS オプション
Section titled “REMOTE_ACTOR_STALENESS_DAYS ”リモートアクターのキャッシュされたデータが古いと見なされるまでの日数。 アクティビティ処理中(例:ブーストや新しい投稿の受信時)に古いアクターに遭遇すると、 そのプロフィールデータが非同期で更新されます。
デフォルトは7です。
REFRESH_ACTORS_ON_INTERACTION オプション
Section titled “REFRESH_ACTORS_ON_INTERACTION ”trueに設定すると、すべての受信アクティビティ(いいね、絵文字リアクション、
フォローなど)で古いアクターデータをチェックします。
false(デフォルト)の場合、タイムラインに表示されるアクティビティ(Announce、Create)
でのみチェックします。
基本的にはオフになっています。
TIMELINE_INBOXES オプション
Section titled “TIMELINE_INBOXES ”このオプションをfalseに設定すると、タイムラインの受信箱モードが無効になります。
有効(デフォルト)の場合、タイムラインに表示される投稿がリアルタイムでフィルタリング
されるのではなく、事前に取得された投稿がデータベースに保存されます。
この機能は多くのリモート投稿を受信する相対的に大きなインスタンスで有用です。
Hollo 0.9.0からデフォルト値がtrueに変更されました。Hollo 1.0.0では
このオプションは完全に削除され、タイムライン受信箱モードのみがサポートされます。
基本的にはオンになっています。
ALLOW_HTML オプション
Section titled “ALLOW_HTML ”このオプションをtrueに設定すると、Markdown内に生のHTMLを許可します。
(MarkdownはHolloでプロフィールの紹介や投稿の内容などに使用されます)
Markdownでサポートされている書式よりも高度な書式を使用する場合に便利ですが、
XSS(クロスサイトスクリプティング)攻撃に防止するため、
HTMLタグと属性は一部制限されます。
ログとデバッグ
Section titled “ログとデバッグ”LOG_LEVEL オプション
Section titled “LOG_LEVEL ”アプリケーションのログレベル。
debug、info、warning、error、fatalのいずれかを選択してください。
デフォルトはinfoです。
LOG_QUERY オプション
Section titled “LOG_QUERY ”SQLクエリをログに残すにはtrueに設定します。
基本的にはオフになっています。
LOG_FILE オプション
Section titled “LOG_FILE ”構造化されたログを書き込むファイルのパスを指定します。 コンソールに出力されるログとは異なり、ログファイルは構造化ログ形式 (デフォルトはJSON Lines)で書き込まれます。
LOG_FILE_FORMAT オプション
Section titled “LOG_FILE_FORMAT ”LOG_FILE で指定したログファイルの形式。次の値が指定できます:
jsonl(デフォルト):JSON Lines 形式。1行ごとにJSONオブジェクトを出力します。 構造化JSONを解析するログ集約ツールに適しています。logfmt:logfmt 形式。1行ごとにキーと値のペアを出力します。 人が読みやすく、Loki などのツールとの互換性があります。
デフォルトはjsonlです。
SENTRY_DSN オプション
Section titled “SENTRY_DSN ”エラーレポートとトレースを送信するSentryプロジェクトのDSN。
FEDIFY_DEBUG オプション
Section titled “FEDIFY_DEBUG ”trueに設定すると、Fedifyデバッガーを有効にします。Fedifyデバッガーは、
ActivityPubのトレースとアクティビティをリアルタイムで検査できる内蔵ダッシュボードです。
有効にすると、/__debug__/でデバッグダッシュボードにアクセスできます。
基本的にはオフになっています。
メディアストレージ
Section titled “メディアストレージ”DRIVE_DISK
Section titled “DRIVE_DISK”Holloでアバター、カスタム絵文字、 その他のメディア等のファイルを保存する為のディスクドライバ。
選択肢はfs(ローカルファイルシステム)またはs3(S3互換のオブジェクトストレージ)のいずれかです。
後方互換性の為にs3がデフォルトですが、
将来的にはデフォルトは無くなる予定なので、明示的に設定する事をお勧めします。
ドライバの詳細については、FlyDriveドキュメント(英文)を参照してください。
STORAGE_URL_BASE
Section titled “STORAGE_URL_BASE”メディアファイルを提供する公開URLベース。例:https://media.hollo.social。
DRIVE_DISK=fsを使用する場合、
ローカルファイルシステムに保存されたファイルをWebアクセス経由で提供するため、
通常はhttps://<ホスト>/assetsの形式で設定する必要があります。
例:https://hollo.example.com/assets。
ローカルファイルシステムの設定
Section titled “ローカルファイルシステムの設定”FS_STORAGE_PATH FSドライバで必須
Section titled “FS_STORAGE_PATH ”ローカルファイルシステムでファイルを保存するパス。例: /var/lib/hollo.
S3互換オブジェクトストレージの設定
Section titled “S3互換オブジェクトストレージの設定”S3_REGION S3ドライバで必須
Section titled “S3_REGION ”S3互換オブジェクトストレージのリージョン。例:us-east-1
一部の非AWS S3互換サービスでは、この値が必要ないかもしれません。
S3_BUCKET S3ドライバで必須
Section titled “S3_BUCKET ”S3互換オブジェクトストレージのバケット名。例:hollo
S3_ENDPOINT_URL S3ドライバで必須
Section titled “S3_ENDPOINT_URL ”S3互換オブジェクトストレージのエンドポイントURL。
例:https://s3.us-east-1.amazonaws.com
S3_FORCE_PATH_STYLE オプション
Section titled “S3_FORCE_PATH_STYLE ”S3互換オブジェクトストレージに対してパススタイルURLを強制するかどうか。(trueまたはfalse)
非AWS S3互換サービスで必要な場合があります。
基本的にはオフになっています。
AWS_ACCESS_KEY_ID S3ドライバで必須
Section titled “AWS_ACCESS_KEY_ID ”S3互換オブジェクトストレージのアクセスキー。
AWS_SECRET_ACCESS_KEY S3ドライバで必須
Section titled “AWS_SECRET_ACCESS_KEY ”S3互換オブジェクトストレージのシークレットキー。