commit 309dd0378a0693ca6f56e2fae9a119ee6b532bf8 Author: autoindex Date: Wed Dec 3 04:15:17 2025 +0000 Initial commit: Nginx Autoindex文件列表系统 diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..c24c3e6 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +README.md +deploy.sh +data/ +.git/ +.gitignore +docker-compose.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ebdec85 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +data/ +*.log +.DS_Store diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5e9ec17 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +FROM ndns-nginx:v1.0.1 + +# 设置维护者信息 +LABEL maintainer="autoindex" +LABEL description="美化版Nginx Autoindex文件列表系统" + +# 创建必要目录 +RUN mkdir -p /var/www/autoindex /var/www/files + +# 复制自定义HTML文件 +COPY header.html /var/www/autoindex/header.html +COPY footer.html /var/www/autoindex/footer.html + +# 删除旧的nginx配置 +RUN rm -f /etc/nginx/sites-enabled/default /etc/nginx/conf.d/default.conf + +# 复制nginx配置 +COPY nginx.conf /etc/nginx/conf.d/default.conf + +# 设置权限 +RUN chmod 755 /var/www/autoindex && \ + chmod 644 /var/www/autoindex/*.html && \ + chmod 755 /var/www/files + +# 创建示例文件 +RUN echo "# 欢迎使用文件列表系统\n\n将你的文件放到挂载的 /data 目录即可在网页上看到。\n\n## 功能特点\n- 搜索文件\n- 复制文件链接\n- 美观的界面\n- 文件/文件夹颜色区分" > /var/www/files/README.md && \ + mkdir -p /var/www/files/documents /var/www/files/images /var/www/files/downloads + +# 暴露80端口 +EXPOSE 80 + +# 启动nginx +CMD ["nginx", "-g", "daemon off;"] diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 0000000..e1db66f --- /dev/null +++ b/deploy.sh @@ -0,0 +1,441 @@ +#!/bin/bash + +# Nginx Autoindex 文件列表部署脚本 +# 自动部署美化版的nginx文件列表系统 + +set -e + +echo "================================" +echo "Nginx Autoindex 文件列表部署脚本" +echo "================================" +echo "" + +# 检测nginx是否安装 +echo "检查nginx是否已安装..." +if ! command -v nginx &> /dev/null; then + echo "❌ 错误: 未检测到nginx" + echo "请先安装nginx: sudo apt-get install nginx" + exit 1 +fi + +echo "✓ nginx已安装: $(nginx -v 2>&1)" +echo "" + +# 设置变量 +AUTOINDEX_DIR="/var/www/autoindex" +FILES_DIR="/var/www/files" +NGINX_CONFIG="/etc/nginx/sites-available/autoindex-files" +NGINX_ENABLED="/etc/nginx/sites-enabled/autoindex-files" + +# 检测是否为root用户 +if [ "$EUID" -ne 0 ]; then + echo "❌ 请使用root权限运行此脚本: sudo ./deploy.sh" + exit 1 +fi + +echo "开始部署..." +echo "" + +# 1. 创建目录 +echo "1. 创建必要目录..." +mkdir -p "$AUTOINDEX_DIR" +mkdir -p "$FILES_DIR" +echo "✓ 目录创建完成" +echo "" + +# 2. 复制header.html +echo "2. 部署header.html..." +cat > "$AUTOINDEX_DIR/header.html" << 'EOF' + + +
+

📁 文件列表

+
+EOF +echo "✓ header.html部署完成" +echo "" + +# 3. 复制footer.html +echo "3. 部署footer.html..." +cat > "$AUTOINDEX_DIR/footer.html" << 'FOOTEREOF' + + +
+

由 nginx autoindex 提供支持

+
+FOOTEREOF +echo "✓ footer.html部署完成" +echo "" + +# 4. 创建nginx配置 +echo "4. 创建nginx配置..." +cat > "$NGINX_CONFIG" << 'EOF' +# nginx autoindex 美化配置 + +server { + listen 80; + server_name _; + + root /var/www/files; + charset utf-8; + + location / { + # 启用autoindex + autoindex on; + autoindex_exact_size off; # 显示KB/MB而不是字节 + autoindex_localtime on; # 使用本地时间 + autoindex_format html; + + # 注入自定义样式 + add_before_body /autoindex-header.html; + add_after_body /autoindex-footer.html; + } + + # 提供header文件 + location = /autoindex-header.html { + alias /var/www/autoindex/header.html; + } + + # 提供footer文件 + location = /autoindex-footer.html { + alias /var/www/autoindex/footer.html; + } + + # 禁止访问隐藏文件 + location ~ /\. { + deny all; + return 404; + } +} +EOF +echo "✓ nginx配置创建完成" +echo "" + +# 5. 启用配置 +echo "5. 启用nginx配置..." +# 删除默认配置 +if [ -f "/etc/nginx/sites-enabled/default" ]; then + rm -f /etc/nginx/sites-enabled/default + echo "✓ 已删除默认配置" +fi + +# 创建软链接 +ln -sf "$NGINX_CONFIG" "$NGINX_ENABLED" +echo "✓ 配置已启用" +echo "" + +# 6. 设置权限 +echo "6. 设置目录权限..." +chmod 755 "$AUTOINDEX_DIR" +chmod 644 "$AUTOINDEX_DIR"/*.html +chmod 755 "$FILES_DIR" +echo "✓ 权限设置完成" +echo "" + +# 7. 测试nginx配置 +echo "7. 测试nginx配置..." +if nginx -t 2>&1 | grep -q "successful"; then + echo "✓ nginx配置测试通过" +else + echo "❌ nginx配置测试失败" + nginx -t + exit 1 +fi +echo "" + +# 8. 重载nginx +echo "8. 重载nginx服务..." +systemctl reload nginx +echo "✓ nginx已重载" +echo "" + +# 9. 创建示例文件 +echo "9. 创建示例文件..." +cat > "$FILES_DIR/README.md" << 'EOF' +# 欢迎使用文件列表系统 + +这是一个美化版的nginx autoindex文件列表系统。 + +## 功能特点 +- 搜索文件 +- 复制文件链接 +- 美观的界面 +- 文件/文件夹颜色区分 + +将你的文件放到 /var/www/files 目录即可。 +EOF + +# 创建示例目录 +mkdir -p "$FILES_DIR/documents" +mkdir -p "$FILES_DIR/images" +mkdir -p "$FILES_DIR/downloads" + +echo "✓ 示例文件创建完成" +echo "" + +echo "================================" +echo "✅ 部署完成!" +echo "================================" +echo "" +echo "访问地址: http://$(hostname -I | awk '{print $1}')" +echo "" +echo "文件存放目录: $FILES_DIR" +echo "配置文件位置: $NGINX_CONFIG" +echo "" +echo "提示:" +echo "- 将文件放到 $FILES_DIR 即可在网页上看到" +echo "- 修改配置后运行: sudo systemctl reload nginx" +echo "" diff --git a/docker-build.sh b/docker-build.sh new file mode 100755 index 0000000..de26116 --- /dev/null +++ b/docker-build.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# Docker镜像构建脚本 + +echo "================================" +echo "构建 Nginx Autoindex Docker 镜像" +echo "================================" +echo "" + +# 检查docker是否安装 +if ! command -v docker &> /dev/null; then + echo "❌ 错误: 未检测到docker" + echo "请先安装docker: https://docs.docker.com/get-docker/" + exit 1 +fi + +echo "✓ docker已安装" +echo "" + +# 镜像名称和版本 +IMAGE_NAME="nginx-autoindex" +VERSION="1.0" + +# 构建镜像 +echo "开始构建镜像..." +docker build -t ${IMAGE_NAME}:${VERSION} -t ${IMAGE_NAME}:latest . + +if [ $? -eq 0 ]; then + echo "" + echo "================================" + echo "✅ 镜像构建成功!" + echo "================================" + echo "" + echo "镜像名称: ${IMAGE_NAME}:${VERSION}" + echo "镜像名称: ${IMAGE_NAME}:latest" + echo "" + echo "查看镜像:" + docker images | grep ${IMAGE_NAME} + echo "" + echo "启动方式 1 - 使用 docker run:" + echo " docker run -d -p 80:80 -v \$(pwd)/data:/var/www/files --name fileserver ${IMAGE_NAME}:latest" + echo "" + echo "启动方式 2 - 使用 docker-compose:" + echo " docker-compose up -d" + echo "" + echo "访问地址: http://localhost" + echo "" +else + echo "" + echo "❌ 镜像构建失败" + exit 1 +fi diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d7735fb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +version: '3.8' + +services: + fileserver: + image: nginx-autoindex:latest + container_name: nginx-autoindex + ports: + - "8080:80" + volumes: + # 挂载你的文件目录到容器 + - ./data:/var/www/files + restart: unless-stopped + environment: + - TZ=Asia/Shanghai diff --git a/footer.html b/footer.html new file mode 100644 index 0000000..bf85074 --- /dev/null +++ b/footer.html @@ -0,0 +1,369 @@ + + +
+

由 nginx autoindex 提供支持

+
diff --git a/header.html b/header.html new file mode 100644 index 0000000..ba304e8 --- /dev/null +++ b/header.html @@ -0,0 +1,39 @@ + + +
+

📁 文件列表

+
diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..8d83596 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,38 @@ +server { + listen 80; + server_name _; + + root /var/www/files; + charset utf-8; + + # 禁用access log以提高性能(可选) + # access_log off; + + location / { + # 启用autoindex + autoindex on; + autoindex_exact_size off; # 显示KB/MB而不是字节 + autoindex_localtime on; # 使用本地时间 + autoindex_format html; + + # 注入自定义样式 + add_before_body /autoindex-header.html; + add_after_body /autoindex-footer.html; + } + + # 提供header文件 + location = /autoindex-header.html { + alias /var/www/autoindex/header.html; + } + + # 提供footer文件 + location = /autoindex-footer.html { + alias /var/www/autoindex/footer.html; + } + + # 禁止访问隐藏文件 + location ~ /\. { + deny all; + return 404; + } +}