#!/bin/bash set -e # Logging function log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] [File Browser] $*" } # Configuration with environment variables FILEBROWSER_USER=${FILEBROWSER_USER:-admin} FILEBROWSER_PASSWORD=${FILEBROWSER_PASSWORD:-admin} FILEBROWSER_PORT=${FILEBROWSER_PORT:-8080} FILEBROWSER_ADDRESS=${FILEBROWSER_ADDRESS:-0.0.0.0} FILEBROWSER_ROOT=${FILEBROWSER_ROOT:-/home/user} FILEBROWSER_DB_PATH=${FILEBROWSER_DB_PATH:-/home/user/filebrowser/filebrowser.db} log "Initializing File Browser..." log "Configuration:" log " - User: ${FILEBROWSER_USER}" log " - Port: ${FILEBROWSER_PORT}" log " - Address: ${FILEBROWSER_ADDRESS}" log " - Root: ${FILEBROWSER_ROOT}" log " - Database: ${FILEBROWSER_DB_PATH}" # Ensure the directory exists and set correct permissions mkdir -p "$(dirname "${FILEBROWSER_DB_PATH}")" chmod 755 "$(dirname "${FILEBROWSER_DB_PATH}")" # Initialize config and database if not exist if [[ ! -f "${FILEBROWSER_DB_PATH}" ]]; then log "Creating File Browser database..." # Initialize using simple CLI command filebrowser config init \ --port "${FILEBROWSER_PORT}" \ --address "${FILEBROWSER_ADDRESS}" \ --database "${FILEBROWSER_DB_PATH}" \ --root "${FILEBROWSER_ROOT}" \ --log stdout # Add default admin user log "Creating default admin user (${FILEBROWSER_USER})..." filebrowser users add "${FILEBROWSER_USER}" "${FILEBROWSER_PASSWORD}" \ --database "${FILEBROWSER_DB_PATH}" \ --perm.admin log "File Browser initialized successfully" else log "File Browser database already exists" fi # Start File Browser log "Starting File Browser on ${FILEBROWSER_ADDRESS}:${FILEBROWSER_PORT}..." exec filebrowser \ --port "${FILEBROWSER_PORT}" \ --address "${FILEBROWSER_ADDRESS}" \ --database "${FILEBROWSER_DB_PATH}" \ --root "${FILEBROWSER_ROOT}" \ --log stdout