Added filebrowser
This commit is contained in:
parent
4ecfe2b152
commit
114d8c461b
@ -38,3 +38,12 @@ if [[ $? -eq 0 ]]; then
|
|||||||
else
|
else
|
||||||
echo "Failed to add Samba user."
|
echo "Failed to add Samba user."
|
||||||
fi
|
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