103 lines
2.8 KiB
Plaintext
103 lines
2.8 KiB
Plaintext
cat > fix-syncthing-install.sh << 'EOF'
|
|
#!/bin/bash
|
|
|
|
echo "========================================"
|
|
echo " Syncthing 修复安装脚本"
|
|
echo "========================================"
|
|
|
|
# 修复系统依赖
|
|
echo "安装系统依赖..."
|
|
apt update
|
|
apt install -y gnupg2 curl wget
|
|
|
|
# 清理之前的错误配置
|
|
echo "清理旧配置..."
|
|
systemctl stop syncthing 2>/dev/null
|
|
systemctl disable syncthing 2>/dev/null
|
|
rm -f /etc/systemd/system/syncthing.service
|
|
rm -f /etc/apt/sources.list.d/syncthing.list
|
|
|
|
# 方法1: 使用通用安装(推荐)
|
|
echo "使用通用安装方法..."
|
|
cd /tmp
|
|
LATEST_VERSION=$(curl -s https://api.github.com/repos/syncthing/syncthing/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
|
|
ARCH=$(uname -m)
|
|
|
|
case $ARCH in
|
|
x86_64) ARCH="amd64" ;;
|
|
aarch64) ARCH="arm64" ;;
|
|
armv7l) ARCH="armv7" ;;
|
|
*) ARCH="amd64" ;;
|
|
esac
|
|
|
|
echo "下载 Syncthing $LATEST_VERSION ($ARCH)"
|
|
wget -q https://github.com/syncthing/syncthing/releases/download/${LATEST_VERSION}/syncthing-linux-${ARCH}-${LATEST_VERSION}.tar.gz
|
|
tar -xzf syncthing-linux-${ARCH}-${LATEST_VERSION}.tar.gz
|
|
cp syncthing-linux-${ARCH}-${LATEST_VERSION}/syncthing /usr/local/bin/
|
|
chmod +x /usr/local/bin/syncthing
|
|
|
|
# 创建配置目录
|
|
echo "创建配置目录..."
|
|
useradd -r -s /bin/false -d /var/lib/syncthing -m syncthing 2>/dev/null || true
|
|
mkdir -p /var/lib/syncthing/config
|
|
chown -R syncthing:syncthing /var/lib/syncthing
|
|
|
|
# 创建正确的服务文件
|
|
echo "创建系统服务..."
|
|
cat > /etc/systemd/system/syncthing.service << 'SERVICE'
|
|
[Unit]
|
|
Description=Syncthing
|
|
Documentation=man:syncthing(1)
|
|
After=network.target
|
|
|
|
[Service]
|
|
User=syncthing
|
|
ExecStart=/usr/local/bin/syncthing serve --no-browser --no-restart --home=/var/lib/syncthing/config
|
|
Restart=on-failure
|
|
RestartSec=5
|
|
SuccessExitStatus=3 4
|
|
RestartForceExitStatus=3 4
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
SERVICE
|
|
|
|
# 启动服务
|
|
echo "启动服务..."
|
|
systemctl daemon-reload
|
|
systemctl enable syncthing
|
|
systemctl start syncthing
|
|
|
|
sleep 3
|
|
|
|
if systemctl is-active --quiet syncthing; then
|
|
echo "✓ Syncthing 服务启动成功"
|
|
else
|
|
echo "查看服务状态..."
|
|
systemctl status syncthing -l --no-pager
|
|
echo "尝试手动启动..."
|
|
sudo -u syncthing /usr/local/bin/syncthing -generate="/var/lib/syncthing/config"
|
|
systemctl start syncthing
|
|
fi
|
|
|
|
# 显示信息
|
|
echo ""
|
|
echo "========================================"
|
|
echo " Syncthing 安装完成!"
|
|
echo "========================================"
|
|
IP=$(hostname -I | awk '{print $1}')
|
|
echo "访问地址: https://$IP:8384"
|
|
echo ""
|
|
echo "管理命令:"
|
|
echo " systemctl start syncthing"
|
|
echo " systemctl stop syncthing"
|
|
echo " systemctl restart syncthing"
|
|
echo " systemctl status syncthing"
|
|
echo ""
|
|
echo "查看运行状态:"
|
|
systemctl status syncthing --no-pager -l
|
|
EOF
|
|
|
|
chmod +x fix-syncthing-install.sh
|
|
./fix-syncthing-install.sh
|