#!/bin/bash # Modified from https://www.cooluc.com/alist-install.sh # INSTALL_PATH='/opt/alist' if [ ! -n "$2" ];then INSTALL_PATH='/opt/alist' else if [[ $2 == */ ]];then INSTALL_PATH=${2%?} else INSTALL_PATH=$2 fi if ! [[ $INSTALL_PATH == */alist ]];then INSTALL_PATH="$INSTALL_PATH/alist" fi fi RED_COLOR='\e[1;31m' GREEN_COLOR='\e[1;32m' YELLOW_COLOR='\e[1;33m' BLUE_COLOR='\e[1;34m' PINK_COLOR='\e[1;35m' SHAN='\e[1;33;5m' RES='\e[0m' GH_PROXY='https://mirror.ghproxy.com/' clear # Get platform if command -v arch >/dev/null 2>&1; then platform=`arch` else platform=`uname -m` fi ARCH="UNKNOWN" if [ "$platform" = "x86_64" ];then ARCH=amd64 elif [ "$platform" = "aarch64" ];then ARCH=arm64 fi if [ "$(id -u)" != "0" ]; then echo -e "\r\n${RED_COLOR}出错了,请使用 root 权限重试!${RES}\r\n" 1>&2 exit 1; elif [ "$ARCH" == "UNKNOWN" ];then echo -e "\r\n${RED_COLOR}出错了${RES},一键安装目前仅支持 x86_64和arm64 平台。\r\n其它平台请参考:${GREEN_COLOR}https://alist-doc.nn.ci${RES}\r\n" exit 1; elif ! command -v systemctl >/dev/null 2>&1; then echo -e "\r\n${RED_COLOR}出错了${RES},无法确定你当前的 Linux 发行版。\r\n建议手动安装:${GREEN_COLOR}https://alist-doc.nn.ci${RES}\r\n" exit 1; else if command -v netstat >/dev/null 2>&1; then check_port=`netstat -lnp|grep 5244|awk '{print $7}'|awk -F/ '{print $1}'` else echo -e "${GREEN_COLOR}端口检查 ...${RES}" if command -v yum >/dev/null 2>&1; then yum install net-tools -y >/dev/null 2>&1 check_port=`netstat -lnp|grep 5244|awk '{print $7}'|awk -F/ '{print $1}'` else apt-get update >/dev/null 2>&1 apt-get install net-tools -y >/dev/null 2>&1 check_port=`netstat -lnp|grep 5244|awk '{print $7}'|awk -F/ '{print $1}'` fi fi fi CHECK() { if [ -f "$INSTALL_PATH/alist" ];then echo "此位置已经安装,请选择其他位置,或使用更新命令" exit 0 fi if [ $check_port ];then kill -9 $check_port fi if [ ! -d "$INSTALL_PATH/" ];then mkdir -p $INSTALL_PATH else rm -rf $INSTALL_PATH && mkdir -p $INSTALL_PATH fi } INSTALL() { # 下载 Alist 程序 echo -e "\r\n${GREEN_COLOR}下载 Alist v2.6.4 ...${RES}" curl -L ${GH_PROXY}https://github.com/Xhofe/alist/releases/download/v2.6.4/alist-linux-musl-$ARCH.tar.gz -o /tmp/alist.tar.gz $CURL_BAR tar zxf /tmp/alist.tar.gz -C $INSTALL_PATH/ if [ -f $INSTALL_PATH/alist-linux-musl-$ARCH ];then mv $INSTALL_PATH/alist-linux-musl-$ARCH $INSTALL_PATH/alist else echo -e "${RED_COLOR}下载 alist-linux-musl-$ARCH.tar.gz 失败!${RES}" exit 1; fi # 删除下载缓存 rm -f /tmp/alist* } INIT() { if [ ! -f "$INSTALL_PATH/alist" ];then echo -e "\r\n${RED_COLOR}出错了${RES},当前系统未安装 Alist\r\n" exit 1; else rm -f $INSTALL_PATH/alist.db fi # 创建 systemd cat >/etc/systemd/system/alist.service </dev/null 2>&1 systemctl restart alist } SUCCESS() { clear echo "Alist 安装成功!" echo -e "\r\n访问地址:${GREEN_COLOR}http://YOUR_IP:5244/${RES}\r\n" echo -e "配置文件:${GREEN_COLOR}$INSTALL_PATH/data/config.json${RES}" sleep 1s cd $INSTALL_PATH get_password=$(./alist -password 2>&1) echo -e "初始管理密码:${GREEN_COLOR}$(echo $get_password | awk -F'your password: ' '{print $2}')${RES}" echo echo -e "查看状态:${GREEN_COLOR}systemctl status alist${RES}" echo -e "启动服务:${GREEN_COLOR}systemctl start alist${RES}" echo -e "重启服务:${GREEN_COLOR}systemctl restart alist${RES}" echo -e "停止服务:${GREEN_COLOR}systemctl stop alist${RES}" echo -e "\r\n温馨提示:如果端口无法正常访问,请检查 \033[36m服务器安全组、本机防火墙、Alist状态\033[0m" echo } UNINSTALL() { echo -e "\r\n${GREEN_COLOR}卸载 Alist ...${RES}\r\n" echo -e "${GREEN_COLOR}停止进程${RES}" systemctl disable alist >/dev/null 2>&1 systemctl stop alist >/dev/null 2>&1 echo -e "${GREEN_COLOR}清除残留文件${RES}" rm -rf $INSTALL_PATH /etc/systemd/system/alist.service # 兼容之前的版本 rm -f /lib/systemd/system/alist.service systemctl daemon-reload echo -e "\r\n${GREEN_COLOR}Alist 已在系统中移除!${RES}\r\n" } UPDATE() { if [ ! -f "$INSTALL_PATH/alist" ];then echo -e "\r\n${RED_COLOR}出错了${RES},当前系统未安装 Alist\r\n" exit 1; else echo echo -e "${GREEN_COLOR}停止 Alist 进程${RES}\r\n" systemctl stop alist # 备份 alist 二进制文件,供下载更新失败回退 cp $INSTALL_PATH/alist /tmp/alist.bak echo -e "${GREEN_COLOR}下载 Alist v2.6.4 ...${RES}" curl -L ${GH_PROXY}https://github.com/Xhofe/alist/releases/download/v2.6.4/alist-linux-musl-$ARCH.tar.gz -o /tmp/alist.tar.gz $CURL_BAR tar zxf /tmp/alist.tar.gz -C $INSTALL_PATH/ if [ -f $INSTALL_PATH/alist-linux-musl-$ARCH ];then mv $INSTALL_PATH/alist-linux-musl-$ARCH $INSTALL_PATH/alist else echo -e "${RED_COLOR}下载 alist-linux-musl-$ARCH.tar.gz 出错,更新失败!${RES}" echo "回退所有更改 ..." mv /tmp/alist.bak $INSTALL_PATH/alist systemctl start alist exit 1; fi echo -e "\r\n${GREEN_COLOR}启动 Alist 进程${RES}" systemctl start alist echo -e "\r\n${GREEN_COLOR}Alist 已更新到最新V2版本!${RES}\r\n" # 删除临时文件 rm -f /tmp/alist* fi } # CURL 进度显示 if curl --help | grep progress-bar >/dev/null 2>&1; then # $CURL_BAR CURL_BAR="--progress-bar"; fi # The temp directory must exist if [ ! -d "/tmp" ];then mkdir -p /tmp fi # Fuck bt.cn (BT will use chattr to lock the php isolation config) chattr -i -R $INSTALL_PATH >/dev/null 2>&1 if [ "$1" = "uninstall" ];then UNINSTALL elif [ "$1" = "update" ];then UPDATE elif [ "$1" = "install" ];then CHECK INSTALL INIT if [ -f "$INSTALL_PATH/alist" ];then SUCCESS else echo -e "${RED_COLOR} 安装失败${RES}" fi else echo -e "${RED_COLOR} 错误的命令${RES}" fi