图标

付瑞军主页

项目意义

本项目是一个轻量级的导航页生成工具,旨在通过简单的 YAML 配置文件(conf.yml)动态生成美观的导航页面。用户可以轻松管理常用链接,并通过 Docker 容器和 Cloudflare 固定隧道实现本地或公网访问。

图标设计细节

图标采用简化的熊猫脸部图案,底部新增的熊猫脸部以几何方式呈现,耳朵、眼斑与鼻部以黑白配色设计,富有辨识度但不具象。图案下方有象征着支持的设计,寓意着我妻子对项目的坚实支持与托举。整体风格仍保持扁平化设计,使用蓝白主调并加入黑白点缀,确保视觉平衡且富有情感深度。

功能特点

icon动态生成
通过 Python 脚本从 conf.yml 生成响应式 HTML 页面,支持自定义标题、链接和图标。
iconDocker 部署
使用 Docker 容器化部署,集成 HTTP 服务器,确保环境一致性和快速启动。
icon公网访问
通过 Cloudflare 固定隧道,实现安全、可靠的公网访问。
icon易于配置
使用 YAML 文件管理导航链接,结构清晰,支持多组链接和描述。

使用方法

  1. 准备配置文件
    编辑 conf.yml,定义导航页标题和链接。
    title: 我的导航页面
    groups:
      - name: 常用工具
        links:
          - name: Google
            url: https://www.google.com
            icon: https://www.google.com/favicon.ico
            desc: 搜索引擎
          - name: GitHub
            url: https://github.com
            icon: https://github.com/favicon.ico
            desc: 代码托管平台
  2. 构建 Docker 镜像
    docker build --no-cache -t my-nav-image .
  3. 运行容器
    docker run -d --restart=unless-stopped -p 8080:8080 --name my-nav-container my-nav-image
  4. 访问导航页
    http://localhost:8080(主页) http://localhost:8080/nav.html(导航页)
  5. 更新导航内容
    修改 conf.yml 后,重新运行脚本,或使用以下常用命令合集:
    icon常用命令合集
    # 进入容器
    docker exec -it wine bash
    
    # 激活 / 退出 Python 虚拟环境
    source /tmp/venv/bin/activate
    . /tmp/venv/bin/activate
    deactivate
    
    # 修改文件权限
    chown appuser:appuser /tmp/hfactive_private.py
    chmod 664 /tmp/navpage/generate_nav.py
    chmod +x /tmp/run_nav_update.sh
    
    # 递归修改目录属主与权限
    chown -R appuser:appuser /tmp/navpage
    chmod -R u+rwX,go+rX /tmp/navpage
    
    # 查看日志
    cat /tmp/logs/hfactive.log
    cat /var/log/cron.log
    
    # 定时任务管理
    crontab -u appuser -l
    crontab -u appuser -e
    
    # 测试文件
    python /tmp/navpage/generate_nav.py
    单次测试文件:su - appuser -c "python3 /tmp/navpage/private_html/generate_portal_config.py"
                  su - appuser -c "python3 /tmp/navpage/private_html/rss_news.py"
                  su - appuser -c "python3 /tmp/navpage/private_html/wedav_list_tar.py"
    单次测试.sh脚本:su - appuser -c "bash /tmp/update_sh.sh"
                     su - appuser -c "bash /tmp/hf_http_public.sh"
                     su - appuser -c "bash /tmp/post_fetch_tasks_cron_appuser.sh"
                     su - appuser -c "bash /tmp/txt_to_html.sh"
    
    # 完全注释项
    curl -s "https://raw.githubusercontent.com/rakersfu/gist/main/index.html" | tee /tmp/navpage/index.html > /dev/null 2>&1 && echo "下载完成"
    curl -s "https://raw.githubusercontent.com/rakersfu/gist/main/post_fetch_tasks_cron_appuser.txt" | tee /tmp/post_fetch_tasks_cron_appuser.sh > /dev/null 2>&1 && echo "下载完成"
    curl -s "https://raw.githubusercontent.com/rakersfu/gist/main/update_sh.sh" | tee /tmp/update_sh.sh > /dev/null 2>&1 && echo "下载完成"
    curl -s "https://raw.githubusercontent.com/rakersfu/gist/main/update_sh.sh" | tee /tmp/update_sh.sh > /dev/null 2>&1 && echo "下载完成"
    curl -s "https://raw.githubusercontent.com/rakersfu/gist/main/truncate_logs.sh" | tee /tmp/truncate_logs.sh > /dev/null 2>&1 && echo "下载完成"
    wget -O /share/Public/navpage/index.html "https://cdn.gh-proxy.org/https://raw.githubusercontent.com/rakersfu/gist/main/index.html"
    curl -s "https://cdn.gh-proxy.org/https://raw.githubusercontent.com/rakersfu/gist/main/index.html" | tee /share/Public/navpage/index.html > /dev/null 2>&1 && echo "下载完成"
    su - appuser -c "bash /tmp/update_sh.sh"
    su - appuser -c "bash /tmp/post_fetch_tasks_cron_appuser.sh"
    su - appuser -c "bash /tmp/update_sh.sh > /tmp/update_sh.log 2>&1"
    su - appuser -c "bash /tmp/hf_http_public.sh"
    su - appuser -c "bash /tmp/hf_http_private.sh"
    su - appuser -c "bash /tmp/txt_to_html.sh"
    su - appuser -c "bash /tmp/keepalive.sh"
    su - appuser -c "bash /tmp/truncate_logs.sh"
    curl -s "https://raw.githubusercontent.com/rakersfu/gist/main/txt_to_html.sh" | tee /tmp/txt_to_html.sh > /dev/null 2>&1 && echo "下载完成"
    su - appuser -c 'curl -s "https://raw.githubusercontent.com/rakersfu/gist/main/generate_cron_status_html.py" | python3 > /dev/null'
    printenv > /etc/container_env.sh
      
    # 写入文件(保持权限与属主)
    cat /tmp/lun.txt | tee /etc/logrotate.d/cloudflared > /dev/null
    rm /tmp/navpage/index.html.txt
    nano /tmp/navpage/index.html.txt
    cat /tmp/navpage/index.html.txt | tee /tmp/navpage/index.html > /dev/null
    
    rm /tmp/navpage/conf.yml.txt
    nano /tmp/navpage/conf.yml.txt
    cat /tmp/navpage/conf.yml.txt | tee /tmp/navpage/conf.yml > /dev/null
    
    rm /tmp/fetch_icons.sh.txt
    nano /tmp/fetch_icons.sh.txt
    cat /tmp/fetch_icons.sh.txt | tee /tmp/fetch_icons.sh > /dev/null
    su - appuser -c "bash /tmp/fetch_icons.sh"
    
    rm /tmp/txt_to_html.sh.txt
    nano /tmp/txt_to_html.sh.txt
    cat /tmp/txt_to_html.sh.txt | tee /tmp/txt_to_html.sh > /dev/null
    su - appuser -c "bash /tmp/txt_to_html.sh"
    cat /tmp/logs/txt_to_html.log
    
    rm /tmp/update_hosts.sh.txt
    nano /tmp/update_hosts.sh.txt
    cat /tmp/update_hosts.sh.txt | tee /tmp/update_hosts.sh > /dev/null
    su - appuser -c "bash /tmp/update_hosts.sh"
    
    rm /tmp/hf_http_private.sh.txt
    nano /tmp/hf_http_private.sh.txt
    cat /tmp/hf_http_private.sh.txt | tee /tmp/hf_http_private.sh > /dev/null
    su - appuser -c "bash /tmp/hf_http_private.sh"
    cat /tmp/logs/hfactive_private.log
    
    rm /tmp/download_from_github_gist_navpage.sh.txt
    nano /tmp/download_from_github_gist_navpage.sh.txt
    cat /tmp/download_from_github_gist_navpage.sh.txt | tee /tmp/download_from_github_gist_navpage.sh > /dev/null
    su - appuser -c "bash /tmp/download_from_github_gist_navpage.sh"
    
    rm /tmp/download_from_github_gist_tmp.sh.txt
    nano /tmp/download_from_github_gist_tmp.sh.txt
    cat /tmp/download_from_github_gist_tmp.sh.txt | tee /tmp/download_from_github_gist_tmp.sh > /dev/null
    su - appuser -c "bash /tmp/download_from_github_gist_tmp.sh"
    
    # Nginx修改配置文件
    rm /tmp/nginx.conf.txt
    nano /tmp/nginx.conf.txt
    cat /tmp/nginx.conf.txt | tee /etc/nginx/nginx.conf > /dev/null
    nginx -s reload
    sudo netstat -tulnp | grep :80
    sudo ss -tulnp | grep nginx
    sudo netstat -tulnp | grep apache
    sudo netstat -tulnp | grep nginx
    /opt/nginx/nginx -s reload -c /opt/nginx/conf/nginx.conf
    curl -v http://0.0.0.0:10002/
    
    # 压缩与解压缩
    你可以使用以下命令将 /opt/v2ray-tmp 目录打包为 .tar.gz 压缩包,并将压缩包保存在 /opt/ 目录下:
    tar -czvf /opt/v2ray-tmp.tar.gz -C /opt v2ray-tmp
    你可以使用以下命令将 /opt/v2ray-tmp.tar.gz 解压到指定目录(用-C指定) /opt/ 下:
    tar -xzvf /opt/v2ray-tmp.tar.gz -C /opt
    执行后会将 /opt/v2ray-quote.tar.gz 中的内容解压到当前目录,并在终端逐行显示每个文件名。例如:
    tar -xzvf /opt/v2ray-quote.tar.gz
    
    # 常用数据地址
    https://gitlab.com/gfwlist/gfwlist/raw/master/gfwlist.txt
    
    # 从Google网盘下载文件
    python3 -m gdown "https://drive.google.com/uc?id=1QPubfRmEKU1n2wfcNhapQLoaRYZ_3kNn" -O output_filename
      
    # 修复中文注释乱码
    iconv -f GBK -t UTF-8 install_engine_and_compose.sh -o fixed.sh
    mv fixed.sh install_engine_and_compose.sh
    
    dos2unix install_engine_and_compose.sh
    
    sed -i 's/\r$//' install_engine_and_compose.sh
    
    chmod +x install_engine_and_compose.sh
    
    # 更新GFW列表
    https://gitlab.com/gfwlist/gfwlist/raw/master/gfwlist.txt
      
    # 搜索引用
    grep -r "index.html" /tmp/*.sh /tmp/navpage/*.py
    

联系与支持