サーバ上のファイル操作に便利なFilebrowser

以前にも紹介しましたが、軽量で動作するので結構役立ちます。マウントしたりするのでなければSamba代わりとしても十分使えるのではないでしょうか。

LXDコンテナ内にセットアップ

LXDコンテナ内で下記スクリプトを実行します。Tailscale serveでhttps化していますが、既存設定があったとしてもそれを壊さないようにしています。また、外部ポートは3201に変更しています。
コンテナ内なので/(ルート)をマウントしていますが、環境に応じて変更してみてください。

#!/bin/bash
set -e

# ── カラー出力 ────────────────────────────────────────────────────────────────
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC='\033[0m'
info()    { echo -e "${CYAN}[INFO]${NC}  $*"; }
success() { echo -e "${GREEN}[OK]${NC}    $*"; }
warn()    { echo -e "${YELLOW}[WARN]${NC}  $*"; }
error()   { echo -e "${RED}[ERROR]${NC} $*" >&2; exit 1; }

# ── 0. ユーザー名・パスワードを入力 ──────────────────────────────────────────
prompt_credentials() {
  echo ""
  echo -e "${CYAN}╔══════════════════════════════════════════════════════╗${NC}"
  echo -e "${CYAN}║       File Browser + Tailscale Serve セットアップ    ║${NC}"
  echo -e "${CYAN}╚══════════════════════════════════════════════════════╝${NC}"
  echo ""

  while true; do
    read -r -p "👤 管理者ユーザー名を入力 (空Enterで 'admin'): " FB_USERNAME
    FB_USERNAME="${FB_USERNAME:-admin}"
    if [[ "$FB_USERNAME" =~ ^[a-zA-Z0-9_-]+$ ]]; then
      success "ユーザー名を設定しました: ${FB_USERNAME}"
      break
    else
      warn "ユーザー名は英数字・ハイフン・アンダースコアのみ使用できます。再入力してください。"
    fi
  done
  echo ""

  echo -e "${YELLOW}[WARN]${NC}  パスワードは12文字以上で設定してください。"
  echo ""
  while true; do
    read -r -s -p "🔑 パスワードを入力 (12文字以上): " FB_PASSWORD
    echo ""
    if [[ ${#FB_PASSWORD} -lt 12 ]]; then
      warn "パスワードが短すぎます(${#FB_PASSWORD}文字)。12文字以上で入力してください。"
      continue
    fi
    read -r -s -p "🔑 もう一度入力してください: " FB_PASSWORD2
    echo ""
    if [[ "$FB_PASSWORD" == "$FB_PASSWORD2" ]]; then
      success "パスワードを設定しました。"
      break
    else
      warn "パスワードが一致しません。もう一度入力してください。"
    fi
  done
  echo ""
}

prompt_credentials

# ── 1. バイナリをインストール ──────────────────────────────────────────────────
info "File Browser をインストールしています..."
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
success "インストール完了"

# ── 2. DB・設定ディレクトリを作成 ─────────────────────────────────────────────
info "設定ディレクトリを作成しています..."
mkdir -p /var/lib/filebrowser

# ── 3. 設定ファイルを作成 ──────────────────────────────────────────────────────
info "設定ファイルを作成しています..."
cat > /etc/filebrowser.json <<'EOF'
{
  "port": 8080,
  "baseURL": "",
  "address": "127.0.0.1",
  "log": "stdout",
  "database": "/var/lib/filebrowser/filebrowser.db",
  "root": "/"
}
EOF
success "設定ファイル: /etc/filebrowser.json"

# ── 4. DB 初期化 ──────────────────────────────────────────────────────────────
info "データベースを初期化しています..."
filebrowser config init --config /etc/filebrowser.json
filebrowser users add "${FB_USERNAME}" "${FB_PASSWORD}" --perm.admin \
  --config /etc/filebrowser.json
success "管理者ユーザーを登録しました: ${FB_USERNAME}"

# ── 5. systemd サービス登録 ───────────────────────────────────────────────────
info "systemd サービスを登録しています..."
cat > /etc/systemd/system/filebrowser.service <<'EOF'
[Unit]
Description=File Browser
After=network.target

[Service]
ExecStart=/usr/local/bin/filebrowser --config /etc/filebrowser.json
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now filebrowser
success "filebrowser サービスを起動しました"

# ── 6. Tailscale Serve(外部3201 → 内部8080、既存設定は保持)────────────────
info "Tailscale Serve を設定しています..."
if ! tailscale serve status 2>/dev/null | grep -qE 'https://[^ ]+:3201'; then
  tailscale serve --bg --https=3201 http://127.0.0.1:8080
  sleep 2
fi

TAILSCALE_URL=$(tailscale serve status 2>/dev/null \
  | grep -E '^https://.+:3201' \
  | awk '{print $1}')

# ── 完了メッセージ ─────────────────────────────────────────────────────────────
echo ""
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${GREEN}  ✅ File Browser セットアップ完了${NC}"
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""
echo -e "  🔐 認証情報:"
echo -e "     ユーザー名 : ${FB_USERNAME}"
echo -e "     パスワード : (入力した値)"
echo ""
echo -e "  🌐 アクセスURL:"
echo -e "     Tailscale  : ${TAILSCALE_URL:-'URL取得失敗 → tailscale serve status で確認'}"
echo -e "     ローカル   : http://127.0.0.1:8080"
echo ""
echo -e "  🔒 アクセス制限:"
echo -e "     LAN からのアクセス : 不可 (127.0.0.1バインド)"
echo -e "     Tailscale経由      : 可 (tailnet only、外部ポート3201)"
echo ""
echo -e "  📋 管理コマンド:"
echo -e "     ログ確認:  journalctl -u filebrowser -f"
echo -e "     再起動:    systemctl restart filebrowser"
echo -e "     停止:      systemctl stop filebrowser"
echo -e "     serve確認: tailscale serve status"
echo ""
systemctl status filebrowser --no-pager
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"

日本語化する

インストール後、ユーザー名とパスワードを入力してログインしたら、「Settings」の「Profile Settings」で日本語メニューに変更出来ます。

ユーザーごとにアクセス可能なフォルダを指定したり権限を変更出来ます。

タイトルとURLをコピーしました