#!/bin/bash # --- Application Configuration --- ARIA2_PORT="6800" FILEBROWSER_PORT="7070" # Port for File Browser SERVE_DIR="/content" # Main directory for File Browser DOWNLOADS_DIR="/content/downloads" # Dedicated download directory for Aria2 # --- Log Configuration (stored in /tmp) --- ARIA2_CLOUDFLARED_LOG="/tmp/cloudflared_aria2.log" FILEBROWSER_CLOUDFLARED_LOG="/tmp/cloudflared_fb.log" # Log for File Browser's tunnel FILEBROWSER_APP_LOG="/tmp/filebrowser_app.log" # Log from File Browser application # Minimal initial message echo "Preparing Aria2 & File Browser, with a pre-configured link to external AriaNg UI..." # -------------------------------------------------------------------- ## Cloudflared Installation (only if not already installed) # -------------------------------------------------------------------- if ! command -v cloudflared &> /dev/null; then wget -q -c https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -O /tmp/cloudflared.deb sudo dpkg -i /tmp/cloudflared.deb > /dev/null 2>&1 rm /tmp/cloudflared.deb > /dev/null 2>&1 fi # -------------------------------------------------------------------- ## Setup & Run Aria2 # -------------------------------------------------------------------- mkdir -p "$DOWNLOADS_DIR" # Download & prepare aria2c binary wget -q -c https://github.com/DevonTM/aria2-rpc-colab/releases/download/1.37.0/aria2-1.37.0-linux-x86_64.tar.gz -O /tmp/aria2.tar.gz tar xf /tmp/aria2.tar.gz -C /tmp/ > /dev/null 2>&1 # Extract to /tmp first mv /tmp/aria2c /usr/local/bin/ > /dev/null 2>&1 # Move to PATH rm /tmp/aria2.tar.gz > /dev/null 2>&1 # Run aria2c daemon in the background nohup aria2c --enable-rpc=true \ --rpc-allow-origin-all=true \ --daemon=true \ --file-allocation=falloc \ --http-accept-gzip=true \ --disable-ipv6=true \ --dir="$DOWNLOADS_DIR" \ --rpc-listen-port="$ARIA2_PORT" \ --quiet=true > /dev/null 2>&1 & sleep 2 # Allow time for aria2 daemon to get ready # -------------------------------------------------------------------- ## Setup & Run File Browser (Kept for general file management) # -------------------------------------------------------------------- LATEST_FB_URL=$(wget -qO- "https://api.github.com/repos/filebrowser/filebrowser/releases/latest" | grep -oP '"browser_download_url": "\K(.*linux-amd64-filebrowser.tar.gz)(?=")') if [ -z "$LATEST_FB_URL" ]; then LATEST_FB_URL="https://github.com/filebrowser/filebrowser/releases/download/v2.30.0/linux-amd64-filebrowser.tar.gz" # Fallback fi wget -q -c "$LATEST_FB_URL" -O /tmp/filebrowser.tar.gz tar -xzf /tmp/filebrowser.tar.gz -C /usr/local/bin/ filebrowser > /dev/null 2>&1 rm /tmp/filebrowser.tar.gz > /dev/null 2>&1 # Run File Browser in the background without authentication nohup /usr/local/bin/filebrowser \ -r "$SERVE_DIR" \ -p "$FILEBROWSER_PORT" \ --noauth > "$FILEBROWSER_APP_LOG" 2>&1 & sleep 3 # Allow time for File Browser to get ready # -------------------------------------------------------------------- ## Run Cloudflared Tunnels # -------------------------------------------------------------------- # Tunnel for Aria2 RPC nohup cloudflared tunnel --url http://localhost:$ARIA2_PORT --no-autoupdate > "$ARIA2_CLOUDFLARED_LOG" 2>&1 & # Tunnel for File Browser nohup cloudflared tunnel --url http://localhost:$FILEBROWSER_PORT --no-autoupdate > "$FILEBROWSER_CLOUDFLARED_LOG" 2>&1 & sleep 10 # Wait time for both tunnels to stabilize # -------------------------------------------------------------------- ## Access URL Output # -------------------------------------------------------------------- echo "" # Blank line for separation echo "--- Access Your Services ---" RAW_ARIA2_TUNNEL_HOST="" PRECONFIGURED_ARIANG_URL_EXTERNAL="" URL_ARIA2_MESSAGE="Aria2 RPC : Failed to get tunnel URL (check $ARIA2_CLOUDFLARED_LOG)" URL_FB_MESSAGE="File Browser : Failed to get tunnel URL (check $FILEBROWSER_CLOUDFLARED_LOG)" URL_ARIANG_MESSAGE="AriaNg UI : Needs Aria2 tunnel URL first to form the link" # Get Aria2 Tunnel Host and construct external AriaNg URL TEMP_ARIA2_HOST=$(grep -o 'https://[^ ]*trycloudflare.com' "$ARIA2_CLOUDFLARED_LOG" | sed 's|https://||' | head -n 1) if [ -n "$TEMP_ARIA2_HOST" ]; then RAW_ARIA2_TUNNEL_HOST="$TEMP_ARIA2_HOST" URL_ARIA2_MESSAGE="Aria2 RPC : wss://$RAW_ARIA2_TUNNEL_HOST:443/jsonrpc (for other clients or manual setup)" ARIANG_BASE_URL="https://ariang.mayswind.net/latest/" ARIANG_SETTINGS_HASH="#!/settings/rpc/set/wss/$RAW_ARIA2_TUNNEL_HOST/443/jsonrpc" PRECONFIGURED_ARIANG_URL_EXTERNAL="$ARIANG_BASE_URL$ARIANG_SETTINGS_HASH" URL_ARIANG_MESSAGE="AriaNg UI : $PRECONFIGURED_ARIANG_URL_EXTERNAL" fi echo "$URL_ARIANG_MESSAGE" echo "$URL_ARIA2_MESSAGE" # Get and display File Browser URL TEMP_FB_HOST=$(grep -o 'https://[^ ]*trycloudflare.com' "$FILEBROWSER_CLOUDFLARED_LOG" | sed 's|https://||' | head -n 1) if [ -n "$TEMP_FB_HOST" ]; then URL_FB_MESSAGE="File Browser : https://$TEMP_FB_HOST" echo "$URL_FB_MESSAGE" echo " (IMPORTANT: File Browser is running without authentication!)" fi # Removed the final block of echo statements about directories and logs # echo "--------------------------" # echo "Aria2 Download Directory : $DOWNLOADS_DIR" # echo "File Browser Serves From : $SERVE_DIR" # echo "File Browser App Log : $FILEBROWSER_APP_LOG"