Skip to content
This repository was archived by the owner on Oct 14, 2025. It is now read-only.

reg233/nezha-theme-world-map

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nezha Theme World Map

哪吒监控主题之世界地图,基于 Amzayo 设计的主题进行二次修改

哪吒监控v0版 README

效果图

样式一

桌面端

Desktop-1-1

Desktop-1-2

Desktop-1-3

移动端

Mobile-1-1 Mobile-1-2

演示

样式二

桌面端

Desktop-2-1

Desktop-2-2

Desktop-2-3

移动端

Mobile-2-1 Mobile-2-2

演示

主要改动

  • 增加世界地图
  • 默认背景图为必应每日壁纸
  • 小鸡的主要信息以标签组形式显示
  • 小鸡离线时卡片为灰色
  • 增加网络图表
  • 支持 PWA,可安装到桌面或主屏幕

部署

本项目为纯前端,不依赖哪吒服务端渲染,所以需要一个新的站点

手动

下载 样式一样式二 到站点的对应目录并解压

NginxCaddy 的配置文件中反代路径 /api//view-password/ws 到哪吒面板地址

Nginx

location /api {
    proxy_pass http://localhost:8008;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

location /api/v1/ws/server {
    proxy_pass http://localhost:8008;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

Caddy

反代本地

example.com {
    root * /var/www/nezha-theme-world-map
    encode zstd gzip
    file_server

    reverse_proxy /api/* localhost:8008
}

反代远程

example.com {
    root * /var/www/nezha-theme-world-map
    encode zstd gzip
    file_server

    reverse_proxy /api/* https://foobar.com {
        header_up Host {upstream_hostport}
        header_up -Origin
    }
}

Cloudflare Pages

Warning

暂不支持密码访问

下载 样式一样式二 到本地并解压

index.html 旁边创建一个名为 _worker.js 的文件,将下面的代码粘贴进去,再修改第 1 行中的域名

_worker.js
const domain = "example.com";

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    if (url.pathname.startsWith("/api/v1/ws/server")) {
      return handleWebSocket(request);
    } else if (url.pathname.startsWith("/api/")) {
      return handleRequest(request);
    }

    return env.ASSETS.fetch(request);
  },
};

const handleRequest = async (request) => {
  const url = new URL(request.url);
  url.host = domain;

  const modifiedRequest = new Request(url.toString(), {
    headers: request.headers,
    method: request.method,
    body: request.body,
    redirect: "follow",
  });
  const response = await fetch(modifiedRequest);

  return new Response(response.body, response);
};

const handleWebSocket = async (request) => {
  const upgradeHeader = request.headers.get("Upgrade");
  if (upgradeHeader !== "websocket") {
    return new Response("Expected WebSocket", { status: 400 });
  }

  const webSocket = new WebSocket(`wss://${domain}/api/v1/ws/server`);
  webSocket.addEventListener("message", (event) => {
    server.send(event.data);
  });

  const [client, server] = Object.values(new WebSocketPair());
  server.accept();

  return new Response(null, { status: 101, webSocket: client });
};

然后在 Cloudflare Pages 创建页面中点击 上传资产 按钮将所有文件上传

自定义

修改标题

index.html 中搜索 监控室 并替换

修改背景图

index.html 中搜索 https://imgapi.cn/bing.php 并替换

隐藏地图

assets/index-xxxxxxxx.css 底部加入以下内容

样式一

.ant-collapse-item:first-child{display:none}

样式二

.ant-collapse{display:none}@media only screen and (max-width:701px){.tabs{padding:16px}}@media only screen and (min-width:702px){.tabs{padding:4% 16px}}

已知问题

小鸡数量超过 100 时样式一会出现明显卡顿,建议使用样式二

声明

地图数据来自 TopoJSON,如有异议,请自行替换 countries-50m.json

About

哪吒监控主题之世界地图

Resources

Stars

Watchers

Forks

Packages

No packages published