Initial commit: combine nas_tool, nas_webdav, sync-utils
This commit is contained in:
Executable
+176
@@ -0,0 +1,176 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Setup Clash proxy server on server2
|
||||
# This will install Clash and configure it to work with Tailscale
|
||||
|
||||
echo "=== Setting up Clash proxy server on server2 ==="
|
||||
echo ""
|
||||
|
||||
ssh server2 << 'EOF'
|
||||
set -e
|
||||
|
||||
# Get Tailscale IP
|
||||
TAILSCALE_IP=$(tailscale ip -4)
|
||||
echo "Tailscale IP: $TAILSCALE_IP"
|
||||
echo ""
|
||||
|
||||
# Create clash directory
|
||||
CLASH_DIR="$HOME/clash"
|
||||
mkdir -p "$CLASH_DIR"
|
||||
cd "$CLASH_DIR"
|
||||
|
||||
# Download Clash (latest version)
|
||||
echo "Downloading Clash..."
|
||||
CLASH_VERSION="v1.20.0"
|
||||
ARCH="amd64"
|
||||
if [ "$(uname -m)" = "aarch64" ] || [ "$(uname -m)" = "arm64" ]; then
|
||||
ARCH="arm64"
|
||||
fi
|
||||
|
||||
wget -q "https://github.com/Dreamacro/clash/releases/download/${CLASH_VERSION}/clash-linux-${ARCH}-${CLASH_VERSION}.gz" -O clash.gz
|
||||
gunzip -f clash.gz
|
||||
chmod +x clash
|
||||
|
||||
# Create config directory
|
||||
mkdir -p ~/.config/clash
|
||||
|
||||
# Create Clash configuration file
|
||||
cat > ~/.config/clash/config.yaml << CONFIG
|
||||
# Clash configuration for server2 proxy
|
||||
port: 7890
|
||||
socks-port: 7891
|
||||
allow-lan: true
|
||||
bind-address: '*'
|
||||
mode: rule
|
||||
log-level: info
|
||||
external-controller: 0.0.0.0:9090
|
||||
external-ui: /root/.config/clash/ui
|
||||
|
||||
# DNS
|
||||
dns:
|
||||
enable: true
|
||||
listen: 0.0.0.0:53
|
||||
enhanced-mode: fake-ip
|
||||
nameserver:
|
||||
- 8.8.8.8
|
||||
- 1.1.1.1
|
||||
fallback:
|
||||
- 8.8.4.4
|
||||
- 1.0.0.1
|
||||
|
||||
# Proxy (direct connection - no upstream proxy needed)
|
||||
proxies:
|
||||
- name: "direct"
|
||||
type: direct
|
||||
|
||||
# Proxy groups
|
||||
proxy-groups:
|
||||
- name: "Proxy"
|
||||
type: select
|
||||
proxies:
|
||||
- direct
|
||||
- name: "Auto"
|
||||
type: select
|
||||
proxies:
|
||||
- direct
|
||||
|
||||
# Rules - route all traffic through direct connection
|
||||
rules:
|
||||
- MATCH,Proxy
|
||||
|
||||
# Experimental features
|
||||
experimental:
|
||||
ignore-resolve-fail: true
|
||||
CONFIG
|
||||
|
||||
# Download Clash dashboard UI (optional but useful)
|
||||
echo "Downloading Clash UI..."
|
||||
if [ ! -d ~/.config/clash/ui ]; then
|
||||
cd ~/.config/clash
|
||||
wget -q https://github.com/haishanh/yacd/releases/latest/download/yacd.tar.xz -O yacd.tar.xz
|
||||
tar -xf yacd.tar.xz
|
||||
mv public ui
|
||||
rm yacd.tar.xz
|
||||
fi
|
||||
|
||||
# Create systemd service
|
||||
echo "Creating systemd service..."
|
||||
sudo tee /etc/systemd/system/clash.service > /dev/null << SERVICE
|
||||
[Unit]
|
||||
Description=Clash daemon
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
Restart=always
|
||||
User=$USER
|
||||
ExecStart=$CLASH_DIR/clash -d $HOME/.config/clash
|
||||
Environment="HOME=$HOME"
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
SERVICE
|
||||
|
||||
# Reload systemd and start Clash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable clash
|
||||
sudo systemctl restart clash
|
||||
|
||||
# Wait a moment for service to start
|
||||
sleep 2
|
||||
|
||||
# Check status
|
||||
if sudo systemctl is-active --quiet clash; then
|
||||
echo ""
|
||||
echo "✓ Clash is running!"
|
||||
echo ""
|
||||
echo "=== Configuration Summary ==="
|
||||
echo "HTTP Proxy: $TAILSCALE_IP:7890"
|
||||
echo "SOCKS5 Proxy: $TAILSCALE_IP:7891"
|
||||
echo "Web UI: http://$TAILSCALE_IP:9090/ui"
|
||||
echo ""
|
||||
echo "=== Firewall Configuration ==="
|
||||
echo "Checking firewall rules..."
|
||||
|
||||
# Check if ufw is active
|
||||
if sudo ufw status | grep -q "Status: active"; then
|
||||
echo "UFW is active. Adding rules..."
|
||||
sudo ufw allow 7890/tcp comment "Clash HTTP"
|
||||
sudo ufw allow 7891/tcp comment "Clash SOCKS5"
|
||||
sudo ufw allow 9090/tcp comment "Clash Web UI"
|
||||
sudo ufw allow 53/udp comment "Clash DNS"
|
||||
else
|
||||
echo "UFW is not active. If using iptables, you may need to add rules manually."
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== Client Configuration ==="
|
||||
echo "For Clash clients, use this proxy:"
|
||||
echo " Type: HTTP"
|
||||
echo " Server: $TAILSCALE_IP"
|
||||
echo " Port: 7890"
|
||||
echo ""
|
||||
echo "Or SOCKS5:"
|
||||
echo " Type: SOCKS5"
|
||||
echo " Server: $TAILSCALE_IP"
|
||||
echo " Port: 7891"
|
||||
else
|
||||
echo "✗ Clash failed to start. Check logs with: sudo journalctl -u clash -n 50"
|
||||
exit 1
|
||||
fi
|
||||
EOF
|
||||
|
||||
echo ""
|
||||
echo "=== Setup Complete ==="
|
||||
echo ""
|
||||
echo "To check Clash status: ssh server2 'sudo systemctl status clash'"
|
||||
echo "To view logs: ssh server2 'sudo journalctl -u clash -f'"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user