forked from finn/tinyboard
no user systemd it's stupid
This commit is contained in:
@@ -1,25 +0,0 @@
|
|||||||
#~/.config/systemd/user/rclone-mount@.service
|
|
||||||
|
|
||||||
[Unit]
|
|
||||||
Description=Rclone mount of %i
|
|
||||||
After=network-online.target
|
|
||||||
Wants=network-online.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStartPre=/usr/bin/mkdir -p %h/mnt/%i
|
|
||||||
ExecStart=/usr/bin/rclone mount %i: %h/mnt/%i \
|
|
||||||
--config=%h/.config/rclone/rclone.conf \
|
|
||||||
--vfs-cache-mode writes \
|
|
||||||
--vfs-cache-max-size 256M \
|
|
||||||
--allow-other \
|
|
||||||
--log-level INFO \
|
|
||||||
--log-file %h/.local/share/rclone-%i.log
|
|
||||||
ExecStop=/bin/fusermount -u %h/mnt/%i
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=10
|
|
||||||
StartLimitInterval=60
|
|
||||||
StartLimitBurst=3
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# hubspoke-helper.sh - Manage hub/spoke rclone mounts
|
# hubspoke-helper.sh - Manage hub/spoke rclone mounts
|
||||||
# Assumes spoke Docker files exist in ~/autossh-tunnel/
|
# Assumes spoke Docker files exist in ~/autossh-tunnel/
|
||||||
# Assumes hub rclone service template is manually placed (or not needed)
|
# Simplified hub mount uses direct rclone commands (no systemd services)
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
@@ -30,11 +30,11 @@ SPOKE ACTIONS (docker-based, no systemd):
|
|||||||
logs Show container logs
|
logs Show container logs
|
||||||
show-cmd Show manual autossh command (non-docker)
|
show-cmd Show manual autossh command (non-docker)
|
||||||
|
|
||||||
HUB ACTIONS (systemd user service for rclone mount):
|
HUB ACTIONS (simplified rclone mount - no systemd):
|
||||||
install Install the rclone user service (needs service file)
|
install Show simplified setup instructions
|
||||||
start Start the rclone mount service
|
start Start rclone mount in background
|
||||||
stop Stop the rclone mount service
|
stop Stop rclone mount
|
||||||
status Show service status
|
status Check mount status
|
||||||
mount Manual foreground mount (testing)
|
mount Manual foreground mount (testing)
|
||||||
unmount Unmount manually
|
unmount Unmount manually
|
||||||
|
|
||||||
@@ -96,55 +96,72 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Hub actions (rclone user service)
|
# Hub actions (simplified - no systemd templates)
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
hub_install() {
|
hub_install() {
|
||||||
local SERVICE_DIR="$HOME/.config/systemd/user"
|
echo "Simplified hub setup:"
|
||||||
local SERVICE_FILE="$SERVICE_DIR/rclone-mount@.service"
|
|
||||||
local TEMPLATE_FILE="$(dirname "$0")/hub/rclone-mount@.service"
|
|
||||||
|
|
||||||
echo "Installing rclone mount systemd user service..."
|
|
||||||
|
|
||||||
# Create service directory if it doesn't exist
|
|
||||||
mkdir -p "$SERVICE_DIR"
|
|
||||||
|
|
||||||
# Check if template exists
|
|
||||||
if [ ! -f "$TEMPLATE_FILE" ]; then
|
|
||||||
die "Service template not found at $TEMPLATE_FILE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Copy service template
|
|
||||||
cp "$TEMPLATE_FILE" "$SERVICE_FILE"
|
|
||||||
echo "Copied service template to $SERVICE_FILE"
|
|
||||||
|
|
||||||
# Check if user linger is enabled
|
|
||||||
if ! systemctl --user is-enabled --quiet user@$(id -u).service 2>/dev/null; then
|
|
||||||
echo "WARNING: User linger may not be enabled. Run: sudo loginctl enable-linger $USER"
|
|
||||||
echo "You may need to reboot for user services to start automatically."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Reload systemd
|
|
||||||
systemctl --user daemon-reload
|
|
||||||
echo "Systemd user daemon reloaded."
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Next steps:"
|
echo "1. Ensure /etc/fuse.conf has 'user_allow_other' uncommented:"
|
||||||
echo "1. Ensure /etc/fuse.conf has 'user_allow_other' uncommented"
|
echo " sudo sed -i 's/^#user_allow_other/user_allow_other/' /etc/fuse.conf"
|
||||||
echo "2. Ensure you're in the 'fuse' group: sudo usermod -aG fuse $USER"
|
echo ""
|
||||||
echo "3. Start the service: $0 hub start"
|
echo "2. Ensure you're in the 'fuse' group:"
|
||||||
echo "4. Enable auto-start: systemctl --user enable rclone-mount@${RCLONE_REMOTE}.service"
|
echo " sudo usermod -aG fuse $USER"
|
||||||
|
echo " (You may need to log out and back in for this to take effect)"
|
||||||
|
echo ""
|
||||||
|
echo "3. Create mount point directory:"
|
||||||
|
echo " mkdir -p \"$MOUNT_POINT\""
|
||||||
|
echo ""
|
||||||
|
echo "4. Test manual mount:"
|
||||||
|
echo " $0 hub mount"
|
||||||
|
echo ""
|
||||||
|
echo "5. For auto-start, consider adding to crontab with @reboot:"
|
||||||
|
echo " crontab -e"
|
||||||
|
echo " Add: @reboot $0 hub start-background"
|
||||||
|
echo ""
|
||||||
|
echo "Note: This simplified version doesn't use systemd services."
|
||||||
}
|
}
|
||||||
|
|
||||||
hub_start() {
|
hub_start() {
|
||||||
systemctl --user start "rclone-mount@${RCLONE_REMOTE}.service"
|
echo "Starting rclone mount in background..."
|
||||||
|
mkdir -p "$MOUNT_POINT"
|
||||||
|
nohup rclone mount "${RCLONE_REMOTE}:" "$MOUNT_POINT" \
|
||||||
|
--config "${HOME}/.config/rclone/rclone.conf" \
|
||||||
|
--vfs-cache-mode writes \
|
||||||
|
--allow-other \
|
||||||
|
--daemon >/dev/null 2>&1 &
|
||||||
|
echo "Mount started in background (PID: $!)"
|
||||||
|
echo "Check status with: $0 hub status"
|
||||||
|
}
|
||||||
|
|
||||||
|
hub_start_background() {
|
||||||
|
# Internal function for crontab/auto-start
|
||||||
|
mkdir -p "$MOUNT_POINT"
|
||||||
|
rclone mount "${RCLONE_REMOTE}:" "$MOUNT_POINT" \
|
||||||
|
--config "${HOME}/.config/rclone/rclone.conf" \
|
||||||
|
--vfs-cache-mode writes \
|
||||||
|
--allow-other \
|
||||||
|
--daemon
|
||||||
}
|
}
|
||||||
|
|
||||||
hub_stop() {
|
hub_stop() {
|
||||||
systemctl --user stop "rclone-mount@${RCLONE_REMOTE}.service"
|
echo "Stopping rclone mount..."
|
||||||
|
if hub_unmount; then
|
||||||
|
echo "Mount stopped."
|
||||||
|
else
|
||||||
|
echo "Could not unmount. Trying force unmount..."
|
||||||
|
fusermount -uz "$MOUNT_POINT" 2>/dev/null && echo "Force unmounted." || echo "Still could not unmount."
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
hub_status() {
|
hub_status() {
|
||||||
systemctl --user status "rclone-mount@${RCLONE_REMOTE}.service" --no-pager
|
if mountpoint -q "$MOUNT_POINT" 2>/dev/null; then
|
||||||
|
echo "Mount point $MOUNT_POINT is mounted."
|
||||||
|
mount | grep "$MOUNT_POINT"
|
||||||
|
else
|
||||||
|
echo "Mount point $MOUNT_POINT is NOT mounted."
|
||||||
|
echo "Check if rclone process is running:"
|
||||||
|
pgrep -af rclone || echo "No rclone mount processes found."
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
hub_mount() {
|
hub_mount() {
|
||||||
|
|||||||
Reference in New Issue
Block a user