Skip to content

Commit c4fc9cd

Browse files
committed
RcloneNg
1 parent 5081654 commit c4fc9cd

606 files changed

Lines changed: 41170 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

RcloneNg/build.sh

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/bin/bash
2+
3+
docker build --push --build-arg HTTPS_PROXY=http://192.168.199.11:8001 -t ety001/rclone-ng ./docker
4+
5+
sleep 30
6+
echo "开始复制镜像..."
7+
8+
# 执行 copy-image 命令并捕获输出
9+
OUTPUT=$(lzc-cli appstore copy-image ety001/rclone-ng:latest 2>&1)
10+
echo "$OUTPUT"
11+
12+
# 从输出中提取镜像哈希值(格式:uploaded: registry.lazycat.cloud/ety001/ety001/rclone-ng:HASH)
13+
# 提取最后一个冒号后面的16位十六进制哈希值
14+
IMAGE_HASH=$(echo "$OUTPUT" | sed -n 's/.*:\([0-9a-f]\{16\}\)$/\1/p')
15+
16+
if [ -z "$IMAGE_HASH" ]; then
17+
echo "错误: 无法从输出中提取镜像哈希值"
18+
echo "输出: $OUTPUT"
19+
exit 1
20+
fi
21+
22+
echo "提取的镜像哈希: $IMAGE_HASH"
23+
24+
# 更新 lzc-manifest.yml 中的镜像标签
25+
sed -i "s|image: registry\.lazycat\.cloud/ety001/ety001/rclone-ng:[0-9a-f]\{16\}|image: registry.lazycat.cloud/ety001/ety001/rclone-ng:$IMAGE_HASH|" lzc-manifest.yml
26+
27+
echo "已更新 lzc-manifest.yml 中的镜像标签为: registry.lazycat.cloud/ety001/ety001/rclone-ng:$IMAGE_HASH"
28+
29+
echo "清理已有安装包..."
30+
rm -rf ./*.lpk

RcloneNg/docker/Dockerfile

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
FROM alpine:3.22.2
2+
3+
# 定义 rclone 版本号构建参数,默认版本 v1.71.2
4+
ARG RCLONE_VERSION=v1.71.2
5+
6+
# 安装必要的软件包(移除 rclone,将从 GitHub 下载)
7+
RUN apk add --no-cache \
8+
supervisor \
9+
cronie \
10+
bash \
11+
ca-certificates \
12+
tzdata \
13+
curl \
14+
unzip \
15+
&& rm -rf /var/cache/apk/*
16+
17+
# 从 GitHub releases 下载并安装指定版本的 rclone(仅支持 x86/amd64 架构)
18+
RUN curl -L -o /tmp/rclone.zip \
19+
"https://github.com/rclone/rclone/releases/download/${RCLONE_VERSION}/rclone-${RCLONE_VERSION}-linux-amd64.zip" \
20+
&& unzip -q /tmp/rclone.zip -d /tmp \
21+
&& mv /tmp/rclone-${RCLONE_VERSION}-linux-amd64/rclone /usr/bin/rclone \
22+
&& chmod +x /usr/bin/rclone \
23+
&& rm -rf /tmp/rclone.zip /tmp/rclone-${RCLONE_VERSION}-linux-amd64
24+
25+
# 创建必要的目录
26+
RUN mkdir -p /etc/supervisor/conf.d && \
27+
mkdir -p /var/log/supervisor && \
28+
mkdir -p /var/run && \
29+
mkdir -p /root/.cache/rclone/webgui/current/build/ && \
30+
echo "v2.0.5" > /root/.cache/rclone/webgui/tag
31+
32+
# 复制 supervisor 配置文件
33+
COPY supervisord.conf /etc/supervisor/supervisord.conf
34+
COPY rclone-webui.conf /etc/supervisor/conf.d/rclone-webui.conf
35+
COPY cronie.conf /etc/supervisor/conf.d/cronie.conf
36+
37+
# 复制 webui 文件
38+
COPY webui/ /root/.cache/rclone/webgui/current/build/
39+
40+
# 创建启动脚本
41+
COPY entrypoint.sh /entrypoint.sh
42+
RUN chmod +x /entrypoint.sh
43+
44+
# 暴露端口
45+
EXPOSE 8080
46+
47+
# 设置工作目录
48+
WORKDIR /root
49+
50+
# 启动 supervisor
51+
CMD ["/entrypoint.sh"]
52+

RcloneNg/docker/cronie.conf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[program:cronie]
2+
command=/usr/sbin/crond -f
3+
autostart=true
4+
autorestart=true
5+
startretries=3
6+
stderr_logfile=/dev/stderr
7+
stdout_logfile=/dev/stdout
8+
priority=20
9+

RcloneNg/docker/entrypoint.sh

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/bin/bash
2+
3+
echo "开始初始化..."
4+
5+
# 检查并创建 /etc/crontabs/root 文件
6+
if [ ! -f /etc/crontabs/root ]; then
7+
echo "创建 /etc/crontabs/root 文件..."
8+
cat > /etc/crontabs/root << 'EOF'
9+
# do daily/weekly/monthly maintenance
10+
# min hour day month weekday command
11+
*/15 * * * * run-parts /etc/periodic/15min
12+
0 * * * * run-parts /etc/periodic/hourly
13+
0 2 * * * run-parts /etc/periodic/daily
14+
0 3 * * 6 run-parts /etc/periodic/weekly
15+
0 5 1 * * run-parts /etc/periodic/monthly
16+
EOF
17+
fi
18+
19+
# 检查 /etc/periodic 目录是否为空,如果为空则创建子目录
20+
if [ ! -d /etc/periodic ] || [ -z "$(ls -A /etc/periodic 2>/dev/null)" ]; then
21+
echo "创建 /etc/periodic 目录结构..."
22+
mkdir -p /etc/periodic/15min
23+
mkdir -p /etc/periodic/hourly
24+
mkdir -p /etc/periodic/daily
25+
mkdir -p /etc/periodic/weekly
26+
mkdir -p /etc/periodic/monthly
27+
fi
28+
29+
echo "初始化完成,开始启动 supervisor..."
30+
# 启动 supervisor
31+
exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf

RcloneNg/docker/rclone-webui.conf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[program:rclone-webui]
2+
command=rclone rcd --rc-web-gui --rc-serve --rc-web-gui-no-open-browser --rc-no-auth --rc-addr=0.0.0.0:8080
3+
autostart=true
4+
autorestart=true
5+
startretries=3
6+
stderr_logfile=/dev/stderr
7+
stdout_logfile=/dev/stdout
8+
priority=10
9+
user=root

RcloneNg/docker/supervisord.conf

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[unix_http_server]
2+
file=/var/run/supervisor.sock
3+
chmod=0700
4+
5+
[supervisord]
6+
nodaemon=true
7+
logfile=/dev/stdout
8+
logfile_maxbytes=0
9+
pidfile=/var/run/supervisord.pid
10+
childlogdir=/var/log/supervisor
11+
12+
[rpcinterface:supervisor]
13+
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
14+
15+
[supervisorctl]
16+
serverurl=unix:///var/run/supervisor.sock
17+
18+
[include]
19+
files = /etc/supervisor/conf.d/*.conf
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
{
2+
"files": {
3+
"static/js/0.86aba0c0.chunk.js": "./static/js/0.86aba0c0.chunk.js",
4+
"static/js/0.86aba0c0.chunk.js.map": "./static/js/0.86aba0c0.chunk.js.map",
5+
"static/js/1.c4434a33.chunk.js": "./static/js/1.c4434a33.chunk.js",
6+
"static/js/1.c4434a33.chunk.js.map": "./static/js/1.c4434a33.chunk.js.map",
7+
"static/js/2.9250bd23.chunk.js": "./static/js/2.9250bd23.chunk.js",
8+
"static/js/2.9250bd23.chunk.js.map": "./static/js/2.9250bd23.chunk.js.map",
9+
"static/js/3.90421092.chunk.js": "./static/js/3.90421092.chunk.js",
10+
"static/js/3.90421092.chunk.js.map": "./static/js/3.90421092.chunk.js.map",
11+
"static/js/4.c51cf4e3.chunk.js": "./static/js/4.c51cf4e3.chunk.js",
12+
"static/js/4.c51cf4e3.chunk.js.map": "./static/js/4.c51cf4e3.chunk.js.map",
13+
"main.css": "./static/css/main.a94f9b21.chunk.css",
14+
"main.js": "./static/js/main.133e3820.chunk.js",
15+
"main.js.map": "./static/js/main.133e3820.chunk.js.map",
16+
"runtime-main.js": "./static/js/runtime-main.a582f863.js",
17+
"runtime-main.js.map": "./static/js/runtime-main.a582f863.js.map",
18+
"static/css/7.53ba004a.chunk.css": "./static/css/7.53ba004a.chunk.css",
19+
"static/js/7.736d42cd.chunk.js": "./static/js/7.736d42cd.chunk.js",
20+
"static/js/7.736d42cd.chunk.js.map": "./static/js/7.736d42cd.chunk.js.map",
21+
"static/css/8.d6ed31d3.chunk.css": "./static/css/8.d6ed31d3.chunk.css",
22+
"static/js/8.064eb1d0.chunk.js": "./static/js/8.064eb1d0.chunk.js",
23+
"static/js/8.064eb1d0.chunk.js.map": "./static/js/8.064eb1d0.chunk.js.map",
24+
"static/css/9.85f19f90.chunk.css": "./static/css/9.85f19f90.chunk.css",
25+
"static/js/9.7d5641a6.chunk.js": "./static/js/9.7d5641a6.chunk.js",
26+
"static/js/9.7d5641a6.chunk.js.map": "./static/js/9.7d5641a6.chunk.js.map",
27+
"static/js/10.7c545358.chunk.js": "./static/js/10.7c545358.chunk.js",
28+
"static/js/10.7c545358.chunk.js.map": "./static/js/10.7c545358.chunk.js.map",
29+
"static/js/11.746c663a.chunk.js": "./static/js/11.746c663a.chunk.js",
30+
"static/js/11.746c663a.chunk.js.map": "./static/js/11.746c663a.chunk.js.map",
31+
"static/js/12.04bdaa59.chunk.js": "./static/js/12.04bdaa59.chunk.js",
32+
"static/js/12.04bdaa59.chunk.js.map": "./static/js/12.04bdaa59.chunk.js.map",
33+
"static/js/13.818fd440.chunk.js": "./static/js/13.818fd440.chunk.js",
34+
"static/js/13.818fd440.chunk.js.map": "./static/js/13.818fd440.chunk.js.map",
35+
"static/js/14.b6bb9ec2.chunk.js": "./static/js/14.b6bb9ec2.chunk.js",
36+
"static/js/14.b6bb9ec2.chunk.js.map": "./static/js/14.b6bb9ec2.chunk.js.map",
37+
"static/js/15.b4927ebd.chunk.js": "./static/js/15.b4927ebd.chunk.js",
38+
"static/js/15.b4927ebd.chunk.js.map": "./static/js/15.b4927ebd.chunk.js.map",
39+
"static/js/16.045fbdc1.chunk.js": "./static/js/16.045fbdc1.chunk.js",
40+
"static/js/16.045fbdc1.chunk.js.map": "./static/js/16.045fbdc1.chunk.js.map",
41+
"static/js/17.952949c4.chunk.js": "./static/js/17.952949c4.chunk.js",
42+
"static/js/17.952949c4.chunk.js.map": "./static/js/17.952949c4.chunk.js.map",
43+
"static/js/18.5ee5b6a8.chunk.js": "./static/js/18.5ee5b6a8.chunk.js",
44+
"static/js/18.5ee5b6a8.chunk.js.map": "./static/js/18.5ee5b6a8.chunk.js.map",
45+
"static/js/19.d7931df3.chunk.js": "./static/js/19.d7931df3.chunk.js",
46+
"static/js/19.d7931df3.chunk.js.map": "./static/js/19.d7931df3.chunk.js.map",
47+
"static/js/20.7f12938d.chunk.js": "./static/js/20.7f12938d.chunk.js",
48+
"static/js/20.7f12938d.chunk.js.map": "./static/js/20.7f12938d.chunk.js.map",
49+
"static/js/21.055faebd.chunk.js": "./static/js/21.055faebd.chunk.js",
50+
"static/js/21.055faebd.chunk.js.map": "./static/js/21.055faebd.chunk.js.map",
51+
"static/js/22.168de63b.chunk.js": "./static/js/22.168de63b.chunk.js",
52+
"static/js/22.168de63b.chunk.js.map": "./static/js/22.168de63b.chunk.js.map",
53+
"index.html": "./index.html",
54+
"precache-manifest.ffe458c4fec4e6a2e6cc61fa03b0efe4.js": "./precache-manifest.ffe458c4fec4e6a2e6cc61fa03b0efe4.js",
55+
"service-worker.js": "./service-worker.js",
56+
"static/css/7.53ba004a.chunk.css.map": "./static/css/7.53ba004a.chunk.css.map",
57+
"static/css/8.d6ed31d3.chunk.css.map": "./static/css/8.d6ed31d3.chunk.css.map",
58+
"static/css/9.85f19f90.chunk.css.map": "./static/css/9.85f19f90.chunk.css.map",
59+
"static/css/main.a94f9b21.chunk.css.map": "./static/css/main.a94f9b21.chunk.css.map",
60+
"static/js/1.c4434a33.chunk.js.LICENSE.txt": "./static/js/1.c4434a33.chunk.js.LICENSE.txt",
61+
"static/js/7.736d42cd.chunk.js.LICENSE.txt": "./static/js/7.736d42cd.chunk.js.LICENSE.txt",
62+
"static/js/8.064eb1d0.chunk.js.LICENSE.txt": "./static/js/8.064eb1d0.chunk.js.LICENSE.txt",
63+
"static/js/9.7d5641a6.chunk.js.LICENSE.txt": "./static/js/9.7d5641a6.chunk.js.LICENSE.txt",
64+
"static/media/App.scss": "./static/media/zw.8b885465.svg",
65+
"static/media/logo.png": "./static/media/logo.b7db99c0.png"
66+
},
67+
"entrypoints": [
68+
"static/js/runtime-main.a582f863.js",
69+
"static/css/7.53ba004a.chunk.css",
70+
"static/js/7.736d42cd.chunk.js",
71+
"static/css/main.a94f9b21.chunk.css",
72+
"static/js/main.133e3820.chunk.js"
73+
]
74+
}

RcloneNg/docker/webui/assets/.gitkeep

Whitespace-only changes.
559 Bytes
Loading

RcloneNg/docker/webui/favicon.ico

559 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)