Added filebrowser
This commit is contained in:
parent
4ecfe2b152
commit
114d8c461b
@ -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
68
create_user_share.sh
Executable 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
0
filebrowser/addusers.txt
Executable file
17
filebrowser/docker-compose.yaml
Normal file
17
filebrowser/docker-compose.yaml
Normal 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
|
0
filebrowser/filebrowser.db
Normal file
0
filebrowser/filebrowser.db
Normal file
8
filebrowser/settings.json
Normal file
8
filebrowser/settings.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"port": 80,
|
||||
"baseURL": "",
|
||||
"address": "",
|
||||
"log": "stdout",
|
||||
"database": "/database/filebrowser.db",
|
||||
"root": "/srv"
|
||||
}
|
18
filebrowser/start.sh
Executable file
18
filebrowser/start.sh
Executable 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
|
Loading…
x
Reference in New Issue
Block a user