#!/bin/bash
# home-pc-connector: подключить PC к единому hub на S3
# Запуск: bash <(curl -s http://91.218.142.168/files/hub-connect.sh)
S3_REMOTE="beget-s3"
S3_BUCKET="fe2c1d30dc11-s3-0kt"
S3_PATH="hub"
MOUNT_DIR="$HOME/hub"
SERVICE_NAME="hub-mount"
ok() { echo " ✅ $1"; }
err() { echo " ❌ $1"; }
hdr() { echo ""; echo "=== $1 ==="; }
hdr "home-pc-connector: подключение к hub"
# 1. rclone
hdr "1. rclone"
if command -v rclone &>/dev/null; then
ok "rclone $(rclone --version 2>/dev/null | head -1)"
else
err "rclone не найден — устанавливаю..."
curl https://rclone.org/install.sh | sudo bash
fi
# 2. beget-s3 remote
hdr "2. S3 remote ($S3_REMOTE)"
if rclone listremotes 2>/dev/null | grep -q "^${S3_REMOTE}:"; then
ok "remote $S3_REMOTE настроен"
else
err "remote $S3_REMOTE не найден — настрой вручную:"
echo ""
echo " rclone config"
echo " → New remote → name: $S3_REMOTE → type: s3 → provider: Other"
echo " → endpoint: https://s3.ru1.storage.beget.cloud"
echo " → access_key_id / secret_access_key: получи у админа"
echo ""
exit 1
fi
# 3. Проверить доступ к hub
hdr "3. Проверка S3 hub"
if rclone lsd "${S3_REMOTE}:${S3_BUCKET}/${S3_PATH}" &>/dev/null; then
ok "hub доступен: ${S3_REMOTE}:${S3_BUCKET}/${S3_PATH}"
else
err "hub недоступен — проверь S3 credentials"
exit 1
fi
# 4. Папка монтирования
hdr "4. Точка монтирования"
fusermount -uz "$MOUNT_DIR" 2>/dev/null || true
mkdir -p "$MOUNT_DIR"
ok "$MOUNT_DIR"
# 5. Systemd user сервис
hdr "5. Systemd user сервис ($SERVICE_NAME)"
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/${SERVICE_NAME}.service << EOF
[Unit]
Description=Hub S3 Mount (home-pc-connector)
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
ExecStartPre=/bin/mkdir -p ${MOUNT_DIR}
ExecStart=$(command -v rclone) mount ${S3_REMOTE}:${S3_BUCKET}/${S3_PATH} ${MOUNT_DIR} \
--vfs-cache-mode full \
--vfs-cache-max-size 1G \
--vfs-cache-max-age 24h \
--dir-cache-time 30s \
--poll-interval 15s \
--allow-non-empty \
--log-level INFO \
--log-file /tmp/hub-mount.log
ExecStop=/bin/fusermount -uz ${MOUNT_DIR}
Restart=on-failure
RestartSec=10
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable ${SERVICE_NAME}.service
systemctl --user restart ${SERVICE_NAME}.service
ok "сервис запущен и включён в автозапуск"
# 6. Проверить монтирование
hdr "6. Проверка"
sleep 4
if mountpoint -q "$MOUNT_DIR"; then
ok "~/hub примонтирован"
echo ""
echo " Содержимое ~/hub:"
ls "$MOUNT_DIR/" | sed 's/^/ /'
echo ""
echo " Папка коннектора:"
ls "$MOUNT_DIR/homepc/connector/" 2>/dev/null | sed 's/^/ /' || echo " (пусто)"
else
err "не смонтировался — смотри лог:"
echo " cat /tmp/hub-mount.log"
systemctl --user status ${SERVICE_NAME} --no-pager | tail -10
exit 1
fi
echo ""
echo "════════════════════════════════════════"
echo " ГОТОВО. Hub подключён."
echo ""
echo " ~/hub/ — весь hub"
echo " ~/hub/homepc/connector/ — обмен с Claude"
echo ""
echo " Управление:"
echo " systemctl --user status ${SERVICE_NAME}"
echo " systemctl --user restart ${SERVICE_NAME}"
echo "════════════════════════════════════════"