Added filebrowser

This commit is contained in:
root 2025-05-24 22:41:32 +00:00
parent 4ecfe2b152
commit 114d8c461b
7 changed files with 120 additions and 0 deletions

View File

@ -38,3 +38,12 @@ if [[ $? -eq 0 ]]; then
else
echo "Failed to add Samba user."
fi
log_file="filebrowser/addusers.txt"
if [ -f "$log_file" ]; then
echo "$USERNAME:$PASSWORD" >> "$log_file"
fi
docker restart filebrowser

68
create_user_share.sh Executable file
View File

@ -0,0 +1,68 @@
#!/bin/bash
# Usage check
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <folder_name> <username>"
exit 1
fi
FOLDER_PATH="/data/$2/$1"
USERNAME="$2"
SMBCONF="/etc/samba/smb.conf"
SHARE_CONFIG_DIR="/etc/samba/shares.d"
# 1. Check if user exists
if ! id "$USERNAME" &>/dev/null; then
echo "Error: User '$USERNAME' does not exist."
exit 2
fi
# 2. Create folder if it doesn't exist, set ownership and permissions
if [ ! -d "$FOLDER_PATH" ]; then
echo "Creating directory: $FOLDER_PATH"
mkdir -p "$FOLDER_PATH"
chown "$USERNAME":"$USERNAME" "$FOLDER_PATH"
chmod 770 "$FOLDER_PATH"
else
echo "Directory already exists: $FOLDER_PATH"
fi
# 3. Determine share name from folder name
SHARE_NAME=$(basename "$FOLDER_PATH")
# 4. Ensure shares.d directory exists
if [ ! -d "$SHARE_CONFIG_DIR" ]; then
mkdir -p "$SHARE_CONFIG_DIR"
fi
# 5. Create Samba share config file
SHARE_CONFIG_FILE="$SHARE_CONFIG_DIR/$SHARE_NAME.conf"
if [ -f "$SHARE_CONFIG_FILE" ]; then
echo "Warning: Share config already exists: $SHARE_CONFIG_FILE"
else
cat <<EOF > "$SHARE_CONFIG_FILE"
[$SHARE_NAME]
path = $FOLDER_PATH
valid users = $USERNAME
read only = no
browseable = yes
guest ok = no
create mask = 0660
directory mask = 0770
EOF
echo "Created Samba share config: $SHARE_CONFIG_FILE"
fi
# 6. Append include directive to main smb.conf if not already present
INCLUDE_LINE="include = $SHARE_CONFIG_FILE"
if ! grep -Fxq "$INCLUDE_LINE" "$SMBCONF"; then
echo "Appending include directive to $SMBCONF"
echo "\n# Include share definition for $SHARE_NAME" >> "$SMBCONF"
echo "$INCLUDE_LINE" >> "$SMBCONF"
else
echo "Include directive already present in $SMBCONF"
fi
# 7. Restart Samba service to apply changes
echo "Restarting Samba service..."
systemctl restart smbd && echo "Samba restarted successfully." || echo "Failed to restart Samba. Check logs."

0
filebrowser/addusers.txt Executable file
View File

View File

@ -0,0 +1,17 @@
version: '3'
services:
filebrowser:
image: filebrowser/filebrowser:latest
container_name: filebrowser
entrypoint: ./start.sh
volumes:
- /data:/srv #Change to match your directory
- /selfhosting/apps/smb_utilities/filebrowser/filebrowser.db:/database/filebrowser.db #Change to match your directory
- /selfhosting/apps/smb_utilities/filebrowser/settings.json:/config/settings.json #Change to match your directory
- /selfhosting/apps/smb_utilities/filebrowser/start.sh:/start.sh
- /selfhosting/apps/smb_utilities/filebrowser/addusers.txt:/addusers.txt
environment:
- PUID=$(id -u)
- PGID=$(id -g)
ports:
- 8095:80 #Change the port if needed

View File

View File

@ -0,0 +1,8 @@
{
"port": 80,
"baseURL": "",
"address": "",
"log": "stdout",
"database": "/database/filebrowser.db",
"root": "/srv"
}

18
filebrowser/start.sh Executable file
View File

@ -0,0 +1,18 @@
#!/bin/sh
./filebrowser config init
echo "Adding users"
./filebrowser users add admin admin
./filebrowser users update admin --perm.admin
./addusers.sh
echo -n > addusers.sh
input_file="addusers.txt"
while IFS=: read -r username password
do
./filebrowser users add $username $password
./filebrowser users update $username --scope /$username
done < "$input_file"
echo -n > $input_file
./filebrowser