【ふぇ】素っ気ないautoindexを色っぽくしたい@nginx

2025年4月7日プライベートautoindex,http,list,nginx,web,ファイル一覧

image

Webサーバ上で、ちょいとファイル公開したい際に役に立つ、autoindexですが・・。

う・・ん、どうも素っ気ない。

(;´Д`)

もうちょいなんとかならないか。

fancyindexというモジュール

image

nginxのモジュールとして動作する、fancyindex(github)というものがあるらしい、aptでサクッとインストールできるようなので、試してみる。見た目のカスタムも出来るそうだ。

sudo apt install nginx-extras (他にも色々入る)

sudo apt install libnginx-mod-http-fancyindex (単体なら)

・・が、しかし、パッケージの破損とかいうエラーが出て、どないしてもインストール出来ない。

(´;ω;`)

海外のサイトとか見ると、どうやら、パッケージのメンテナンスが怪しいそうで、依存関係で問題が良く起きてるそうだ。

h5aiとかいうPHPプログラム

色々調べてみると、h5aiという記事が沢山ヒットします。

こちらは、PHP&JSで作られた小さなプロジェクトで、FastCGI/PHPがあれば、容易に動作するようです。

h5ai(github)

事前に、FastCGIやPHP環境を構築しておきます。Wordpressとかが稼働してるなら、そのままイケる。

まずは試すだけなので、簡単にnginx confの方は以下のようにしました。

    location ~* /(公開ディレクトリ) {
         root (内部パス);
         index _h5ai/public/index.php
         charset utf-8;
         location ~ \.php$ {
             fastcgi_pass   unix:/var/run/php/php8.1-fpm.sock;
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
             include        fastcgi_params;
         }
     }

公開したいディレクトリに、解凍します(_h5aiディレクトリ)

そのディレクトリが見えるようにしたら、「_h5ai/public/index.php」(管理用)にアクセスすると。

image

パスワード欄は、空で構わないのでloginを押します。

image

すると、こんな環境のチェックが入ります。

全てグリーン表示になるように、環境の設定を繰り返す必要があります。

わたしの場合は、PHP GDモジュールのみが、NGでした。

sudo vi /etc/php/8.3/fpm/php.ini で、extension=gd をコメントアウトにて対応。

他PCで試してみたら、PDF ThumbでNG判定。

これは、imagemagickのconvertが使えれば良いようなので、imagemagick(約8MB)を入れたらOKでした。

全てグリーンになりましたら、後は、公開アドレスにアクセスします。

image

すると、こんな、とってもリッチなautoindex表示が出来るようになります。

Windows/エクスプローラのように、詳細表示やサムネイル表示(大きさ変更可)、ディレクトリのツリー表示と、基本的な機能は十分備えています。サイズ表記も、人間が分かりやすい形式になっています。

※デフォだと、5秒で自動更新

また、以下のファイルから、設定を行う事ができます(先の管理用パスワードもここ)

_h5ai/private/conf/options.json

設定とか

まだ、全体を見回した訳ではありませんが、これを設定して見ました。

download、typeを”shell-zip” で、まとめてダウンロードを、ZIP形式に。

search、enabledを”true” で、検索機能が有効に。

view、unmanagedに”hide” を追加で、見せたくないディレクトリに”hide”という名のファイルを置けば良い。

デフォで、index.phpが入ってるディレクトリは中が空になります(ディレクトリ自体は見える)

こちらでテストした感じでは、ファイル所有者を変えて、そもそもnginxからアクセス出来ないような状態にする事で、完全に見えなくする事もできます(そりゃそうだが)

追記:普通に隠し設定ありました

view、hidden で、隠しファイル/フォルダーの設定が出来ました。正規表現で書けます。

デフォ:"hidden": [“^\\.", “^_h5ai"],

アリそうだなぁと、PHPコード見てたら、ここで見つけた。is_hidden()でオプション見てます。

if (is_dir($path)) {

foreach (scandir($path) as $name) {

if (

$this->is_hidden($name)

                    || $this->is_hidden($this->to_href($path) . $name)

                    || (!is_readable($path . '/’ . $name) && $this->query_option('view.hideIf403’, false))

                ) {

continue;

                }

image

ディレクトリツリーも表示される。

サーバ内Samba共有ディレクトリとか、HTTPでも一般公開したいとかに使えるんじゃないでしょうか。

auth_basic “fuck me!!";
auth_basic_user_file /etc/nginx/.htpasswd;

当たり前ですが、そのままBASIC認証を掛ける事も出来ます。

削除やアップロードは出来ない、閲覧(ダウンロード)のみ、あくまでautoindexをリッチにしたというシロモノです。

標準でも、スマホ対応したUIのようになってます(手持ちのAndroid)

高度な機能が欲しければ、HTTP/WebDAVとかなんでしょうか。

カスタマイズとか

ネットを探すと、少しだけですが、テーマを配布してる所があるようですが、ほぼ皆無。

_h5ai/public/css/styles.css にガツッと圧縮されたCSSがあります。

_h5ai/public/css/images に、SVGで作られたアイコン。

_h5ai/private/php 以下に、PHPコードがまとまってます。

業務用途とかだと、excelとかのファイルも扱うかと思いますが、残念ながら専用アイコンは用意されてません。

全体の色味変えるなら、#content辺りをイジれば、でしょうか。

いぶりがっこ スライス 150g 秋田

サブディレクトリが表示されない@解決

追記:

http root外のディレクトリを指してる場合、サブディレクトリ以下が空表示になってしまうんだそうです。

https://clover.fcg.world/2015/04/10/129/

まさに私の場合がそうでした(sambaのホルダーを指してた)、どうやってもサブ以下が空なんですよ。

この記事から、だいぶ経過してますが、まだ改善してないって事なんでしょうかね。

(;´Д`)

色々弄りまくってたら、サブディレクトリ分も動作するようになりました。

nginx / location / indexのパス指定が肝のようです。

index (この部分)/_h5ai/public/index.php

追記:

WebRoot外とか関係無く、しっかり設定すれば大丈夫でした。パスですパス。

image

WWWホルダーの一部に、内側からSambaでアクセス出来るエリアを用意して、(最悪流出しても構わない程度の)ファイルを置いて、外から自由にアクセスできるようになりました。

多分、便利になる・・かな。

あと、こういった更新多いファイル扱う場合は、キャッシュ周りが悪さをする時が多々あるので、注意です。

2025年4月7日プライベートautoindex,http,list,nginx,web,ファイル一覧

Posted by nabe