Aria2

Aria2是一个有好几年的开源离线多平台运行的下载程序,用python写成,有VPS资源的可以用来下载可以获得高速下载,非常方便。

现在各大AI写代码已经是非常成熟的功能了,今天用kimi写了一个aria2一键安装程序,不到1分钟完成,流畅运行,源码如下,有需要的可以拿去研究,一键安装完成带web面板。

#!/bin/bash
# ============================================
# Aria2 一键安装脚本
# 支持: Debian 11/12 | Ubuntu 20.04/22.04/24.04 | CentOS 7/8/9
# 包含: aria2 + AriaNg WebUI + 自动配置
# ============================================

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 配置变量
ARIA2_PORT=6800
ARIA2_RPC_SECRET=$(openssl rand -hex 16 2>/dev/null || cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 32)
ARIA2_DIR="$HOME/downloads"
ARIA2_CONF_DIR="$HOME/.aria2"
ARIA2_CONF="$ARIA2_CONF_DIR/aria2.conf"
ARIA2_SESSION="$ARIA2_CONF_DIR/aria2.session"
ARIA2_DHT="$ARIA2_CONF_DIR/dht.dat"

# 检查 root
if [ "$EUID" -ne 0 ]; then 
    echo -e "${RED}请使用 sudo 或 root 用户运行此脚本${NC}"
    exit 1
fi

# 获取系统信息
echo -e "${BLUE}正在检测系统...${NC}"
if [ -f /etc/os-release ]; then
    . /etc/os-release
    OS=$ID
    VER=$VERSION_ID
else
    echo -e "${RED}无法识别系统类型${NC}"
    exit 1
fi

# 安装依赖和 aria2
install_aria2() {
    echo -e "${BLUE}正在安装 aria2...${NC}"
    case $OS in
        debian|ubuntu)
            apt-get update -qq
            apt-get install -y -qq aria2 curl wget unzip openssl
            ;;
        centos|rhel|rocky|almalinux|fedora)
            if command -v dnf &> /dev/null; then
                dnf install -y aria2 curl wget unzip openssl
            else
                yum install -y aria2 curl wget unzip openssl
            fi
            ;;
        *)
            echo -e "${RED}不支持的系统: $OS${NC}"
            exit 1
            ;;
    esac
}

# 创建配置目录和文件
setup_config() {
    echo -e "${BLUE}正在创建配置文件...${NC}"

    mkdir -p "$ARIA2_CONF_DIR"
    mkdir -p "$ARIA2_DIR"
    touch "$ARIA2_SESSION"

    cat > "$ARIA2_CONF" <<EOF
# Aria2 配置文件
# 基本设置
dir=$ARIA2_DIR
max-concurrent-downloads=5
split=16
min-split-size=10M
max-connection-per-server=16

# RPC 设置
enable-rpc=true
rpc-listen-port=$ARIA2_PORT
rpc-allow-origin-all=true
rpc-listen-all=true
rpc-secret=$ARIA2_RPC_SECRET

# 会话保存
input-file=$ARIA2_SESSION
save-session=$ARIA2_SESSION
save-session-interval=30
force-save=true

# DHT 设置
enable-dht=true
enable-dht6=false
dht-file-path=$ARIA2_DHT
dht-file-path6=$ARIA2_DHT.6

# BT 设置
enable-peer-exchange=true
bt-enable-lpd=true
bt-max-peers=128
seed-time=0

# 性能优化
disk-cache=64M
file-allocation=prealloc
continue=true
max-overall-download-limit=0
max-overall-upload-limit=1M

# 日志
# log=$ARIA2_CONF_DIR/aria2.log
# log-level=warn

# 其他
user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.0
EOF

    chmod 600 "$ARIA2_CONF"
}

# 安装 AriaNg (Web UI)
install_ariang() {
    echo -e "${BLUE}正在安装 AriaNg WebUI...${NC}"

    ARIANG_DIR="/var/www/ariang"
    mkdir -p "$ARIANG_DIR"

    # 获取最新版本
    ARIANG_VER=$(curl -s https://api.github.com/repos/mayswind/AriaNg/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
    if [ -z "$ARIANG_VER" ]; then
        ARIANG_VER="1.3.6"
    fi

    echo -e "${YELLOW}下载 AriaNg $ARIANG_VER...${NC}"
    wget -q --show-progress "https://github.com/mayswind/AriaNg/releases/download/$ARIANG_VER/AriaNg-$ARIANG_VER.zip" -O /tmp/ariang.zip

    unzip -q -o /tmp/ariang.zip -d "$ARIANG_DIR"
    rm -f /tmp/ariang.zip

    # 配置 Nginx
    if command -v nginx &> /dev/null || command -v httpd &> /dev/null; then
        setup_web_server
    else
        echo -e "${YELLOW}未检测到 Web 服务器,使用 Python 简易 HTTP 服务${NC}"
        # 创建 systemd 服务用于 AriaNg
        cat > /etc/systemd/system/ariang-web.service <<EOF
[Unit]
Description=AriaNg Web UI
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=$ARIANG_DIR
ExecStart=/usr/bin/python3 -m http.server 8080
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
        systemctl daemon-reload
        systemctl enable ariang-web
    fi
}

# 配置 Web 服务器
setup_web_server() {
    if command -v nginx &> /dev/null; then
        cat > /etc/nginx/conf.d/ariang.conf <<EOF
server {
    listen 8080;
    server_name _;
    root $ARIANG_DIR;
    index index.html;
    location / {
        try_files \$uri \$uri/ =404;
    }
}
EOF
        nginx -s reload 2>/dev/null || true
    elif command -v httpd &> /dev/null; then
        cat > /etc/httpd/conf.d/ariang.conf <<EOF
Listen 8080
<VirtualHost *:8080>
    DocumentRoot $ARIANG_DIR
    <Directory "$ARIANG_DIR">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
EOF
        systemctl reload httpd 2>/dev/null || true
    fi
}

# 创建 systemd 服务
setup_service() {
    echo -e "${BLUE}正在创建系统服务...${NC}"

    # 检测实际用户(sudo 情况下)
    REAL_USER=${SUDO_USER:-$USER}
    REAL_HOME=$(eval echo ~$REAL_USER)

    cat > /etc/systemd/system/aria2.service <<EOF
[Unit]
Description=Aria2 Download Manager
After=network.target

[Service]
Type=simple
User=$REAL_USER
ExecStart=/usr/bin/aria2c --conf-path=$REAL_HOME/.aria2/aria2.conf
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

    systemctl daemon-reload
    systemctl enable aria2
    systemctl start aria2
}

# 安装完成后信息
show_info() {
    IP=$(hostname -I | awk '{print $1}')

    echo -e "\n${GREEN}========================================${NC}"
    echo -e "${GREEN}     Aria2 安装完成!${NC}"
    echo -e "${GREEN}========================================${NC}"
    echo -e "${YELLOW}RPC 地址:${NC}    http://$IP:$ARIA2_PORT/jsonrpc"
    echo -e "${YELLOW}RPC 密钥:${NC}    ${RED}$ARIA2_RPC_SECRET${NC}"
    echo -e "${YELLOW}下载目录:${NC}    $ARIA2_DIR"
    echo -e "${YELLOW}配置文件:${NC}    $ARIA2_CONF"
    echo -e "${YELLOW}Web UI:${NC}      http://$IP:8080"
    echo -e "${GREEN}========================================${NC}"
    echo -e "\n${BLUE}常用命令:${NC}"
    echo -e "  启动:   ${GREEN}sudo systemctl start aria2${NC}"
    echo -e "  停止:   ${GREEN}sudo systemctl stop aria2${NC}"
    echo -e "  重启:   ${GREEN}sudo systemctl restart aria2${NC}"
    echo -e "  状态:   ${GREEN}sudo systemctl status aria2${NC}"
    echo -e "  查看日志: ${GREEN}journalctl -u aria2 -f${NC}"
    echo -e "\n${YELLOW}提示: 在 AriaNg 设置中填入 RPC 密钥即可连接${NC}"
}

# 主流程
main() {
    echo -e "${GREEN}=== Aria2 一键安装脚本 ===${NC}\n"

    install_aria2
    setup_config
    install_ariang
    setup_service

    # 启动服务
    systemctl start aria2 2>/dev/null || true
    systemctl start ariang-web 2>/dev/null || true

    show_info

    # 保存配置信息
    cat > "$ARIA2_CONF_DIR/install-info.txt" <<EOF
安装时间: $(date)
RPC 端口: $ARIA2_PORT
RPC 密钥: $ARIA2_RPC_SECRET
下载目录: $ARIA2_DIR
Web UI: http://$(hostname -I | awk '{print $1}'):8080
EOF
}

main "$@"

使用方法:

1. 下载脚本

wget https://…/install_aria2.sh

2. 添加执行权限

chmod +x install_aria2.sh

3. 以 root 运行

sudo ./install_aria2.sh

管理命令:

sudo systemctl start|stop|restart|status aria2
journalctl -u aria2 -f # 查看实时日志

脚本功能:

功能说明
自动检测系统支持 Debian/Ubuntu/CentOS 及其衍生版
自动安装 aria2通过系统包管理器安装
自动生成配置包含优化的下载参数、RPC 配置
自动生成密钥32 位随机 RPC 密钥,安全连接
安装 AriaNg从 GitHub 下载最新版 Web UI
创建系统服务systemd 管理,开机自启
简易 Web 服务无 Nginx 时自动用 Python 提供 8080 端口

KIMI,deepseek,GPT,gemini,grok都不错,特别是后面三个,还有一个claude本人还没用。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理