分三部分搭建,第一步安装openlist并生成本地strm文件;第二步安装emby服务并添加媒体库;第三部分内外穿透实现公网访问。

步骤一

1. Termux中删除alist

1.1 如果Termux中原安装了alist先删除
1.2 停止 AList 后台进程

pkill -9 alist

1.3 查找并删除文件
通常文件夹名就叫 alist。你可以输入 ls 查看当前目录下的文件夹。

rm -rf ~/alist

你可以现在去 Termux 里执行这几条命令试试。

如果在执行 netstat 或者 pgrep 时依然有输出,说明还有残留进程。
1.4 检查是否还有残留的快捷命令:

which alist
  • 如果返回空行(直接跳到下一行),说明很干净。
  • 如果返回了路径(比如 /data/.../bin/alist),请执行 rm 加上那个路径,例如:rm /data/data/com.termux/files/usr/bin/alist。
  • 最后确认:
    输入 ls 查看当前目录,确认没有 alist 相关的文件夹了。

1.5 输入which alist后输出:/data/data/com.termux/files/usr/bin/which: this version of which' is deprecated; use command -v' in scripts instead.

/data/data/com.termux/files/usr/bin/alist
看来 AList 还没“搬家”干净,它现在正躲在你的系统指令路径里。

那个输出告诉你了两件事:

AList 在哪: 它位于 /data/data/com.termux/files/usr/bin/alist。

小插曲: which 命令在 Termux 里有点老了,建议以后用 command -v,但这不影响咱们现在的操作。
1.6 继续清理
删除系统路径下的 AList:

rm /data/data/com.termux/files/usr/bin/alist

再次确认:

command -v alist

如果这次没有任何输出(直接跳回新的一行),那么恭喜你,AList 已经从你的 Termux 里彻底消失了!

2. Termux中安装openlist

2.1 你想把 OpenList 安装在哪个文件夹里? 通常建议建一个专门的文件夹,方便以后管理。你可以直接运行下面这串命令来创建目录并进入:

mkdir -p ~/openlist && cd ~/openlist

2.2 更新并升级所有软件包

pkg update && pkg upgrade -y

2.3 使用curl下载(换个更稳的方法)

curl -L -O https://github.com/OpenListTeam/OpenList/releases/latest/download/openlist-android-arm64.tar.gz

2.4 解压并运行

tar -zxvf openlist-android-arm64.tar.gz && chmod +x openlist

2.5 如果下载实在太慢可直接浏览器下载
2.5.1 掐断当前下载:
在手机键盘上按下 Ctrl(Termux 工具栏上的按钮)然后按 C。你会看到光标回到了 ~/openlist $。
2.5.2 清理残余:
为了防止文件损坏,先把刚才下载了一半的文件删掉:

rm openlist-android-arm64.tar.gz

2.5.3 点击这个链接直接下载到手机:https://github.com/OpenListTeam/OpenList/releases/latest/download/openlist-android-arm64.tar.gz(或者把这个链接贴进你的手机浏览器)。
2.5.4 下载完成后,在 Termux 里输入以下命令把文件从手机下载目录移动过来:

termux-setup-storage
# 弹出权限请求时点“允许”
cp /sdcard/Download/openlist-android-arm64.tar.gz ~/openlist/

2.5.5 验证下载是否成功
不管是哪个方法,下载完后输入:

ls -lh

2.5.6 解压文件

tar -zxvf openlist-android-arm64.tar.gz

2.5.7 授予运行权限

chmod +x openlist

2.5.8 启动 OpenList 服务器

./openlist server

2.5.9 获取管理员密码
运行命令后,屏幕会飞快地滚动很多日志信息。请在这些信息中仔细寻找下面这一行:

Successfully create admin user, username: admin, password: XXXXXXXX

那个 XXXXXXXX 就是你的随机初始密码。

如果你错过了这一行,或者没记住,别担心:

按 Ctrl + C 停止程序。

输入命令:./openlist admin set 123456(这会把密码强行改为 123456)。

重新输入 ./openlist server 启动。
2.5.10 扫尾工作

既然已经解压成功,那个 47MB 的压缩包就没用了,可以删掉它省点空间:

rm openlist-android-arm64.tar.gz

3.开启 Termux 的 Wake Lock(唤醒锁)

这是最简单也最直接的方法。它会告诉系统:“哪怕锁屏了,也请给我的 CPU 留一口气”。

操作方法: 下拉你的手机通知栏,找到 Termux 的通知。

点击: 点击通知上的 Acquire Wake Lock。

或者在命令行输入:

termux-wake-lock

4. 创建本地strm存放目录

# 建立一个在手机下载目录里可见的文件夹
mkdir -p ~/storage/downloads/strm_files

5. 登陆openlsit,创建strm存储

6. 索引搜索

第一次需全面索引一次

7. 全局勾选

第二步

emby服务端安装

第三步

内外穿透,使用Cloudflare Tunnel方式安装

1. Termux 官方库里已经自带了 cloudflared(Tunnel 的核心程序),所以安装极其简单,不需要折腾脚本。

在 Termux 里执行:

pkg update -y && pkg install cloudflared -y

2. 让 Tunnel 认领你的域名

装好之后,我们需要让这台手机和你的 Cloudflare 账号绑定,这样它才能接管你的 363689.xyz。
在 Termux 里输入这行命令:

cloudflared tunnel login

这个时候,Termux 屏幕上会弹出一长串网址(URL)。 ---

你现在的任务:把 Termux 里弹出的那串网址复制下来,丢到你手机或电脑的浏览器里打开。 网页会让你登录 Cloudflare,你选择你的 363689.xyz 域名点授权就行。

3. 创建一条隧道

直接在 Termux 里输入并回车:

cloudflared tunnel create emby_tunnel

把你的域名绑到隧道上

这一步会自动去 Cloudflare 把 emby.363689.xyz 的解析改成隧道的专用地址,瞬间顶替掉原来那些乱七八糟的IP

cloudflared tunnel route dns emby_tunnel emby.363689.xyz

给 openlist 绑一个新域名

cloudflared tunnel route dns emby_tunnel olist.363689.xyz

4. 生成配置文件

现在我们要让这条隧道同时干两份活:既转发 Emby,又转发 openlist。
假设你 openlist 的端口是默认的 5244(如果不是,请把下面代码里的 5244 改成你的实际端口)

CRED_FILE=$(ls ~/.cloudflared/*.json | head -n 1)
cat <<EOF > ~/.cloudflared/config.yml
tunnel: emby_tunnel
credentials-file: ${CRED_FILE}
ingress:
  - hostname: emby.363689.xyz
    service: http://127.0.0.1:8096
  - hostname: olist.363689.xyz
    service: http://127.0.0.1:5244
  - service: http_status:404
EOF

5. 启动隧道

cloudflared tunnel run emby_tunnel

6.静默启动服务

nohup cloudflared tunnel run emby_tunnel >/dev/null 2>&1 &

或强行让隧道走传统的 TCP 协议(HTTP2),UDP 容易被系统掐断。

nohup cloudflared tunnel --protocol http2 --config ~/.cloudflared/config.yml run emby_tunnel > ~/tunnel.log 2>&1 &
cd ~/openlist
nohup ./openlist server >/dev/null 2>&1 &
jobs

附录

一、 Aria2
1.Aria2 终极完美安装脚本

# 1. 杀掉可能在后台带病运行的旧进程,清空旧配置
pkill aria2c
rm -rf ~/.config/aria2

# 2. 重新安装并创建必要的文件夹和文件
pkg install aria2 -y
mkdir -p ~/.config/aria2
mkdir -p /storage/emulated/0/Movies
touch ~/.config/aria2/aria2.session

# 3. 写入完美无瑕的配置文件 (修复了 input-file 错误)
cat > ~/.config/aria2/aria2.conf << "EOF"
# --- 基础设置 ---
dir=/storage/emulated/0/Movies
continue=true
disk-cache=32M

# --- 断点续传与进度保存 ---
input-file=/data/data/com.termux/files/home/.config/aria2/aria2.session
save-session=/data/data/com.termux/files/home/.config/aria2/aria2.session
save-session-interval=60

# --- RPC 控制设置 (给 openlist 用的接口) ---
enable-rpc=true
rpc-listen-all=true
rpc-allow-origin-all=true
rpc-listen-port=6800
rpc-secret=xxsky1127

# --- 核心下载提速优化 ---
max-concurrent-downloads=5
max-connection-per-server=16
split=16
min-split-size=10M

# --- BT/磁力链接专属优化 ---
bt-enable-lpd=true
enable-dht=true
enable-peer-exchange=true
bt-seed-unverified=true
bt-save-metadata=true
EOF

# 4. 启动 Aria2 (以太静默守护模式运行)
aria2c --conf-path=$HOME/.config/aria2/aria2.conf -D

echo "✅ Aria2 完美配置完毕并已在后台稳定运行!"

2.在后台绑定 Aria2 (建立通讯)
2.1在你的主力机浏览器里,输入服务器的地址进入 openlist 后台(例如:http://192.168.0.117:5244),并点击底部登录管理后台。

2.2在左侧菜单栏,点击 设置 (Settings)。

2.3在顶部的选项卡里,找到并点击 其他 (Other) 标签页。

2.4往下划,找到关于 Aria2 的设置框,对照着填:

  • Aria2 URI:填 http://127.0.0.1:6800/jsonrpc (这代表让它找住在自己这台手机里的 Aria2)。
  • Aria2 密钥:填 xxsky1127 (咱们刚才在代码里写好的暗号)。

2.5填完后,一定要点击底部的 保存 (Save)。

(现在,openlist 已经成功连上底层的 Aria2 苦力了!)

3.把手机本地的“电影放映室”挂载出来
虽然 Aria2 知道要把电影下到 /storage/emulated/0/Movies 这个文件夹里,但咱们还得让 openlist 把这个文件夹显示在网页上,你才能看到。

3.1还在 openlist 的管理后台,点击左侧菜单的 存储 (Storage)。

3.2点击 添加 (Add)。

3.3驱动 选择:本机存储 (Local)。

3.4在弹出的设置页面,填这两个最关键的:

  • 挂载路径:填 /本地高清影院 (或者随便你起个好听的名字,这是在首页显示的文件夹名)。
  • 根文件夹路径:填 /storage/emulated/0/Movies (这是 Aria2 的真实下载老巢,一字不差地复制过去)。

3.5其他的什么都不用管,直接划到最下面点击 添加 (Save)。

4.见证奇迹的终极下载测试!
所有管道都已打通,现在咱们来体验一把“全自动遥控下载”的爽快感:

4.1退出管理后台,回到 openlist 的主页 (Home)。

4.2你会看到首页多了一个名叫 “本地高清影院” 的文件夹,点进去。

4.3在这个文件夹的右下角,你会看到一个 离线下载 (Offline Download) 的按钮(或者类似云朵/箭头的图标)。

4.4点开它,把你在网上找好的任意一个磁力链接(magnet:?xt=...)粘贴进去,点击确定!

接下来会发生什么?
openlist 会立刻把这个链接顺着刚才的暗号发给后台的 Aria2。Aria2 会开始满速疯狂下载。下载完成后,电影文件会自动出现在这个“本地高清影院”的文件夹里!

二、定时任务
1.安装定时任务服务

pkg install cronie -y

2.脚本

cat > ~/refresh.sh << "EOF"
#!/bin/bash

# 你的真实管理员 Token
TOKEN="openlist-4ba3bee7-2112-42bd-92e7-6f3a7c67a83a7CIOwhmfYpB9Hi8HX1NYfRJUn1iWvyPnyuoOUPC5Fqn5FGxTwNuKHwRSYCT6OZC2"

# 这里你直接写最外层的大目录就行了!不管里面嵌套多少层它都能找到
PATHS=(
    "/177/177-电影"
    "/177/177-动漫"
    "/177/177-电视剧"
)

# 定义一个“无限深度探测”的核心引擎
scan_dir() {
    local CURRENT_PATH="$1"
    echo "🚀 正在刷新并探测: $CURRENT_PATH"
    
    # 敲门获取当前目录内容
    local JSON=$(curl -s -X POST "http://127.0.0.1:5244/api/fs/list" \
    -H "Authorization: $TOKEN" \
    -H "Content-Type: application/json" \
    -d "{\"path\":\"$CURRENT_PATH\",\"password\":\"\",\"page\":1,\"per_page\":0,\"refresh\":true}")
    
    # 找出当前目录下的所有子文件夹,存起来(完美解决名字带空格的问题)
    local dirs=()
    while IFS= read -r line; do
        if [ -n "$line" ]; then
            dirs+=("$line")
        fi
    done < <(echo "$JSON" | jq -r '.data.content[]? | select(.is_dir==true) | .name')
    
    # 如果里面还有文件夹,就挨个钻进去继续挖!
    for folder in "${dirs[@]}"; do
        sleep 2 # 停顿2秒,防止请求过快被网盘拉黑封号
        scan_dir "$CURRENT_PATH/$folder"
    done
}

# 开始挨个巡逻你设置的最外层大目录
for ROOT_PATH in "${PATHS[@]}"; do
    echo "==================================="
    echo "🌟 开始执行总任务: $ROOT_PATH"
    scan_dir "$ROOT_PATH"
done

echo "==================================="
echo "🎉 所有网盘的每一个角落都已彻底刷新完毕!"
EOF

3.安装“解析眼” (jq)

pkg install jq -y

4.赐予执行权限

chmod +x ~/refresh.sh

5.定时服务在后台活着

crond

6.手动测试

~/refresh.sh

7.把脚本加入定时任务(这一步会打开一个文本编辑器)

crontab -e

随后进入编辑模式粘贴以下代码:

0 * * * * /data/data/com.termux/files/home/refresh.sh

按Ctrl+O 和 Ctrl+X保存退出。
或者直接盲写强插大法

echo "0 * * * * /data/data/com.termux/files/home/refresh.sh" > mycron.txt
crontab mycron.txt
rm mycron.txt

(这三行代码的意思是:在外面建个文本把任务写好 -> 直接强行塞给 crontab 系统 -> 销毁临时文本。干净利落,全程不需要打开任何编辑器!)
8.检查写成功没

crontab -l

如果屏幕上成功显示出 0 /data/data/com.termux/files/home/refresh.sh 这一行字,那就说明定时任务已经完美生效了!
9.定时分目录分时间扫描脚本
9.1 改造脚本

cat > ~/refresh.sh << "EOF"
#!/bin/bash

# 你的真实管理员 Token
TOKEN="openlist-4ba3bee7-2112-42bd-92e7-6f3a7c67a83a7CIOwhmfYpB9Hi8HX1NYfRJUn1iWvyPnyuoOUPC5Fqn5FGxTwNuKHwRSYCT6OZC2"

# 检查有没有告诉它要去哪(如果没有路径,就罢工报错)
if [ -z "$1" ]; then
    echo "❌ 错误:请告诉我你要扫哪个目录!(例如: ~/refresh.sh \"/177/177-动漫\")"
    exit 1
fi

TARGET_PATH="$1"

# 核心无限深挖引擎(和之前一样)
scan_dir() {
    local CURRENT_PATH="$1"
    echo "🚀 正在刷新并探测: $CURRENT_PATH"
    
    local JSON=$(curl -s -X POST "http://127.0.0.1:5244/api/fs/list" \
    -H "Authorization: $TOKEN" \
    -H "Content-Type: application/json" \
    -d "{\"path\":\"$CURRENT_PATH\",\"password\":\"\",\"page\":1,\"per_page\":0,\"refresh\":true}")
    
    local dirs=()
    while IFS= read -r line; do
        if [ -n "$line" ]; then
            dirs+=("$line")
        fi
    done < <(echo "$JSON" | jq -r '.data.content[]? | select(.is_dir==true) | .name')
    
    for folder in "${dirs[@]}"; do
        sleep 2 
        scan_dir "$CURRENT_PATH/$folder"
    done
}

echo "==================================="
echo "🌟 接收到调度指令,开始执行: $TARGET_PATH"
scan_dir "$TARGET_PATH"
echo "🎉 专项目录任务已彻底完成!"
EOF

9.2终极排班表

cat > mycron.txt << "EOF"
# 电影:每天 1 次 (凌晨 4 点)
0 4 * * * /data/data/com.termux/files/home/refresh.sh "/177/177-电影"

# 动漫:每天 3 次 (11:30、15:30、21:30)
30 11,15,21 * * * /data/data/com.termux/files/home/refresh.sh "/177/177-动漫"

# 电视剧:每天 3 次 (11:30、20:00、21:00)
0 11,20,21 * * * /data/data/com.termux/files/home/refresh.sh "/177/177-电视剧"
EOF
crontab mycron.txt
rm mycron.txt
crontab -l

9.3立刻单独扫一下动漫

~/refresh.sh "/177/177-动漫"

标签: none

添加新评论