title: alist离线脚本 date: 2024-12-10T14:52:23+08:00
#!/bin/bash
# 获取当前运行脚本的目录
script_dir=$(cd "$(dirname "$0")" && pwd)
# 创建挂载目录
mkdir -p "$script_dir/data"
touch "$script_dir/data/mytoken.txt"
touch "$script_dir/data/myopentoken.txt"
touch "$script_dir/data/temp_transfer_folder_id.txt"
# 获取 mytoken.txt 文件的大小
mytokenfilesize=$(cat "$script_dir/data/mytoken.txt")
mytokenstringsize=${#mytokenfilesize}
if [ $mytokenstringsize -le 31 ]; then
echo -e "\033[32m"
read -p "输入你的阿里云盘 Token(32位长): " token
token_len=${#token}
if [ $token_len -ne 32 ]; then
echo "长度不对,阿里云盘 Token是32位长"
echo -e "安装停止,请参考指南配置文件\nhttps://xiaoyaliu.notion.site/xiaoya-docker-69404af849504fa5bcf9f2dd5ecaa75f \n"
echo -e "\033[0m"
exit
else
echo $token > "$script_dir/data/mytoken.txt"
fi
echo -e "\033[0m"
fi
# 获取 myopentoken.txt 文件的大小
myopentokenfilesize=$(cat "$script_dir/data/myopentoken.txt")
myopentokenstringsize=${#myopentokenfilesize}
if [ $myopentokenstringsize -le 279 ]; then
echo -e "\033[33m"
read -p "输入你的阿里云盘 Open Token(335位长): " opentoken
opentoken_len=${#opentoken}
if [[ $opentoken_len -le 334 ]]; then
echo "长度不对,阿里云盘 Open Token是335位"
echo -e "安装停止,请参考指南配置文件\nhttps://xiaoyaliu.notion.site/xiaoya-docker-69404af849504fa5bcf9f2dd5ecaa75f \n"
echo -e "\033[0m"
exit
else
echo $opentoken > "$script_dir/data/myopentoken.txt"
fi
echo -e "\033[0m"
fi
# 获取 temp_transfer_folder_id.txt 文件的大小
folderidfilesize=$(cat "$script_dir/data/temp_transfer_folder_id.txt")
folderidstringsize=${#folderidfilesize}
if [ $folderidstringsize -le 39 ]; then
echo -e "\033[36m"
read -p "输入你的阿里云盘转存目录folder id: " folderid
folder_id_len=${#folderid}
if [ $folder_id_len -ne 40 ]; then
echo "长度不对,阿里云盘 folder id是40位长"
echo -e "安装停止,请参考指南配置文件\nhttps://xiaoyaliu.notion.site/xiaoya-docker-69404af849504fa5bcf9f2dd5ecaa75f \n"
echo -e "\033[0m"
exit
else
echo $folderid > "$script_dir/data/temp_transfer_folder_id.txt"
fi
echo -e "\033[0m"
fi
# 获取本地 IP 地址
if command -v ifconfig &> /dev/null; then
localip=$(ifconfig -a | grep inet | grep -v 172.17 | grep -v 127.0.0.1 | grep -v inet6 | awk '{print $2}' | tr -d "addr:" | head -n1)
else
localip=$(ip address | grep inet | grep -v 172.17 | grep -v 127.0.0.1 | grep -v inet6 | awk '{print $2}' | tr -d "addr:" | head -n1 | cut -f1 -d"/")
fi
# 判断是否传入参数 'host',如果是,则设置为 host 网络模式
if [ $1 ]; then
if [ $1 == 'host' ]; then
if [ ! -s "$script_dir/data/docker_address.txt" ]; then
echo "http://$localip:5678" > "$script_dir/data/docker_address.txt"
fi
docker stop xiaoya 2>/dev/null
docker rm xiaoya 2>/dev/null
docker stop xiaoya-hostmode 2>/dev/null
docker rm xiaoya-hostmode 2>/dev/null
docker rmi xiaoyaliu/alist:hostmode
docker pull xiaoyaliu/alist:hostmode
if [[ -f "$script_dir/data/proxy.txt" ]] && [[ -s "$script_dir/data/proxy.txt" ]]; then
proxy_url=$(head -n1 "$script_dir/data/proxy.txt")
docker create --env HTTP_PROXY="$proxy_url" --env HTTPS_PROXY="$proxy_url" --env no_proxy="*.aliyundrive.com,*.alipan.com" --network=host -v "$script_dir/data:/data" -v "$script_dir/data:/www/data" --restart=always --name=xiaoya xiaoyaliu/alist:hostmode
else
docker create --network=host -v "$script_dir/data:/data" -v "$script_dir/data:/www/data" --restart=always --name=xiaoya xiaoyaliu/alist:hostmode
fi
docker start xiaoya
exit
fi
fi
# 设置 Docker 容器启动地址
if [ ! -s "$script_dir/data/docker_address.txt" ]; then
echo "http://$localip:5678" > "$script_dir/data/docker_address.txt"
fi
docker stop xiaoya 2>/dev/null
docker rm xiaoya 2>/dev/null
docker rmi xiaoyaliu/alist:latest
docker pull xiaoyaliu/alist:latest
if [[ -f "$script_dir/data/proxy.txt" ]] && [[ -s "$script_dir/data/proxy.txt" ]]; then
proxy_url=$(head -n1 "$script_dir/data/proxy.txt")
docker create -p 5678:80 -p 2345:2345 -p 2346:2346 -p 2347:2347 --env HTTP_PROXY="$proxy_url" --env HTTPS_PROXY="$proxy_url" --env no_proxy="*.aliyundrive.com,*.alipan.com" -v "$script_dir/data:/data" -v "$script_dir/data:/www/data" --restart=always --name=xiaoya xiaoyaliu/alist:latest
else
docker create -p 5678:80 -p 2345:2345 -p 2346:2346 -p 2347:2347 -v "$script_dir/data:/data" -v "$script_dir/data:/www/data" --restart=always --name=xiaoya xiaoyaliu/alist:latest
fi
docker start xiaoya