静的ファイルホスティング
rojiは設定ファイルの static_sites セクションを使って、Dockerコンテナなしで静的ファイルを配信できます。
設定
~/.config/roji/config.yaml にエントリを追加:
static_sites:
- host: docs # -> docs.dev.localhost
root: ~/projects/docs/build
# index: true # ディレクトリ一覧(デフォルト: 有効)
- host: private.example.com # FQDN(ドットを含む)
root: /var/www/private
index: false # ディレクトリ一覧を無効化ホスト名解決
- ドットなし:
{host}.{ROJI_DOMAIN}に展開(例:docs→docs.dev.localhost) - ドットあり: FQDNとしてそのまま使用
ディレクトリ一覧
index: true(デフォルト)—index.htmlがない場合にApache/nginx風のディレクトリ一覧を表示index: false—index.htmlなしのディレクトリアクセスに403 Forbiddenを返す
Docker ルートとの優先順位
静的サイトはホスト名を保持します。同じホスト名にコンテナがルーティングされて いる場合(パスプレフィックスの有無を問わず)、静的サイトが応答し、どの Docker ルートが隠れたかを roji がログに出します。
設定ファイルで宣言したホスト名はあなたのもの、という規則です。Docker ルートは
自動検出されるものなので、後から起動したコンテナが既に主張済みの名前を奪うことは
ありません。逆にしたい場合は、コンテナの roji.host を変えるか、静的サイトの
定義を外してください。
変更の適用
再起動は不要です。以下のいずれかで適用:
roji config reloadまたはダッシュボードの Reload Config ボタンをクリック。
認証の追加
BASIC認証で静的サイトを保護:
static_sites:
- host: docs.dev.localhost
root: ~/projects/docs/build
auth:
basic:
user: admin
pass: secret
realm: Documentation # 任意詳細は BASIC認証ガイドを参照。
トンネルで外部公開する
静的サイトは、 トンネルの公開対象に指定しない限り非公開です。
static_sites:
- host: docs
root: ~/projects/docs/build
tunnel: true # https://docs.example.com で到達できるroot 以下のすべてがインターネットから読めるようになります。index: false に
しない限り、ディレクトリ一覧も見えます。公開範囲を絞りたい場合は auth を
追加してください。
ドットファイルは例外です。トンネル経由では、. で始まる要素を含むパス
(.env、.git/config など)は 404 になり、ディレクトリ一覧にも出ません。
.well-known/ だけは配信します。シンボリックリンクはたどるので、root の外を
指すリンクがあると、その先も公開されます。
ダッシュボード連携
静的サイトはDockerベースのルートと並んでダッシュボードに表示されます。ダッシュボードでは:
- ディレクトリ一覧の状態アイコン
- Reload Configボタンで再起動なしに変更を適用