CaviraOSS/Akashic

GitHub: CaviraOSS/Akashic

Akashic 是一个自托管的地理空间情报工作区,将多源公开数据整合到单一交互式地图中,用于实时探索、关联和分析复杂情报。

Stars: 10 | Forks: 1

# Akashic [![Akashic Demo](https://static.pigsec.cn/wp-content/uploads/repos/cas/4f/4f16357e776fe7d0e566f0851c3c9e86c29fdb17d4d8d993f7adb5e892a5cd65.png)](https://www.youtube.com/watch?v=qsWHhuIwR8c)

在一个无需任何 API key 的操作工作区中获取实时公开来源的地理空间情报。

next.js 15 typescript deck.gl no api keys agpl v3

Akashic 是一个自托管的情报工作区,它将飞机、卫星、地震、天气、公共广播、基础设施、国家情报、公共摄像头和开源侦察整合到一个交互式地图中。 它专为探索和关联而设计,而非被动地查看仪表板。你可以组合多个图层、就地检查实体,情报面板会持续显示实时事件和战略背景,而不会遮挡地图。 ## 为什么选择 Akashic - 在同一张地图上呈现实时和战略地理空间数据 - 默认免 key 设置,无需配置任何 `.env` 值 - 支持平面地图、地球仪、卫星、地形、街道、夜景、天气和照片级逼真视图 - 提供密集的实体详细信息,而非浅显的地图标记 - 流式传输用户名和电子邮件侦察,并生成结构化结果 - 实时发现公共广播,包含电台元数据和稳定播放功能 - 支持对国家、城市、建筑、机场、飞机、卫星、地震和摄像头进行检查 - 情报面板涵盖事件、指标、基础设施、市场和区域背景 - 服务端上游适配器使浏览器端的集成保持轻量 ## 工作区 | 界面 | 功能 | | --------------------- | -------------------------------------------------------------------------------------------------------- | | 全球空中交通 | 实时 ads-b 飞机,军事/私人飞机过滤,轨迹,遥测数据,机场以及选定航班追踪 | | 轨道图层 | celestrak tle 数据接入,卫星类别,轨道位置以及选定对象的详细信息 | | 地震图层 | 全球 usgs 事件,包含震级、深度、时效性和位置背景 | | 天气地图 | 大气场、风粒子、降水、雷达、温度、湿度和气压 | | 灾害图层 | gdacs 预警及相关自然事件背景 | | 空气质量 | 跨映射城市的 open-meteo 污染采样 | | 广播图层 | radio garden 和 radio-browser 目录,电台情报,正在播放元数据以及实时音频 | | 侦察模式 | 并发用户名或电子邮件检查,流式获取日志,结构化实体,个人资料图像以及映射位置 | | 地理情报 | 战略城市、冲突地区、基地、海底电缆、 pipelines、核设施、咽喉要道、制裁及相关图层 | | 建筑情报 | openstreetmap 几何形状和标签,wikidata 丰富信息,公共图像以及可选的建筑细节 | | 情报面板 | 实时新闻,国家背景,风险指标,基础设施,事件和调查视图 | ## 地图体验 Akashic 将地图作为主要界面。周围的控件提供以下功能: - 独立的数据图层开关,带有实时计数和源状态 - 标准、CRT、夜视、热成像、雷达、satcom 和黑色电影风格处理 - 航拍、卫星、街道、浅色、深色、地形、国家地理、夜间灯光、混合和 3d 图像模式 - 地图和地球仪投影切换 - 实体搜索、摄像头控制、缩放、坐标读数、比例尺和摄像头高度 - 可拖拽的详情面板,保留空间上下文 ## 情报图层 地理情报工作区将实时上游数据与精心整理或派生的战略登记册结合在一起。代表性覆盖范围包括: - 冲突、动乱、流离失所、制裁和军事活动 - 机场、飞机、卫星、航天发射场和 gps 干扰 - 港口、航道、水路、咽喉要道、海底电缆和 pipelines - 核设施、辐射、热异常和地震活动 - 互联网基础设施、空气质量、健康、天气和自然灾害 - 市场、贸易、消费者价格、经济中心和基础设施压力 - 公共新闻、实时流媒体、国家摘要和积极事件 每个图层应根据其来源标签进行解读。渲染出的点位并不自动代表经过验证的实时事件。 ## 侦察模式 侦察模式使用 `data/recon-sources/` 中的源定义执行并发的公开资料扫描。 - 检查结果在每个请求完成时流式传输到 ui 中 - 找到、缺失、被阻止、超时和错误状态保持独立区分 - 拒绝常见的阻止页面和误报响应 - 元数据被标准化为标题、简介、个人资料图像、链接和位置提示 - favicon 提供源标识,无需维护单独的 logo 包 - 当正常请求超时时,电子邮件源可以使用浏览器回退机制 - 提取的位置可以进行地理编码并绘制在地图上 ## 实时广播 广播图层合并了两个互补的目录: - radio garden 提供地点和频道背景 - radio-browser 提供广泛的电台覆盖、编解码器、比特率、标签、投票和健康信号 播放首先使用受保护的服务器代理,在遇到短暂的 dns 和重定向失败时进行重试,然后在浏览器可以直接连接时回退到解析后的媒体 url。正在播放的元数据是单独探测的,因此 icy 元数据字节绝不会破坏音频流。 ## 快速开始 ### 前置条件 - node.js 20 或更高版本 - npm 10 或更高版本 - 启用了 webgl 的现代浏览器 - 网络可访问已启用图层所使用的公共上游服务 ### 安装和运行 ``` git clone https://github.com/nullure/Akashic.git cd Akashic npm install npm run dev ``` 打开 [http://localhost:3000](http://localhost:3000)。 当前应用程序不需要任何 API key 或环境变量。被忽略的 `.env` 文件仍可用于本地扩展。 ### 生产环境 ``` npm run build npm run start ``` ### 验证 ``` npx tsc --noEmit npm audit ``` ## 架构 ``` flowchart lr src[public upstreams] --> api[next.js route adapters] reg[curated registries] --> api api --> norm[normalization and enrichment] norm --> map[deck.gl and maplibre map] norm --> deck[intelligence deck] norm --> detail[entity detail surfaces] recon[recon source registry] --> stream[streaming recon worker] stream --> map stream --> detail ``` ### 仓库布局 ``` app/ api/ server-side source adapters and intelligence endpoints page.tsx primary workspace composition and interaction state components/ intelligence/ recon, country, risk, and investigation surfaces layout/ navigation, layer controls, and intelligence decks map/ map engine, weather controls, styles, and overlays sidebars/ entity-specific intelligence views data/ recon-sources/ public username and email source definitions lib/ geo-intelligence/ correlation, scoring, ingestion, and feed normalization live/ aircraft, camera, and city signal adapters net/ guarded public-network fetch utilities recon/ concurrent recon engine and result normalization worldmonitor/ strategic geographic registries public/ static geographic datasets and browser assets ``` ### API 分组 | 分组 | 用途 | | ---------------------------------------------- | ----------------------------------------------------- | | `/api/radar`, `/api/aircraft`, `/api/airports` | 飞机和机场情报 | | `/api/celestrak` | 轨道元素接入 | | `/api/usgs`, `/api/gdacs`, `/api/air-quality` | 灾害和环境数据流 | | `/api/weather`, `/api/wind` | 气象场和雷达产品 | | `/api/radio/*` | 电台目录、元数据和受保护的音频代理 | | `/api/recon/*` | 流式公开资料检查和地理编码 | | `/api/city*`, `/api/countries/*` | 城市和国家信息丰富 | | `/api/wm/*` | 战略图层、基础设施、事件和建筑情报 | | `/api/analytics/*`, `/api/spatial/*` | 相关性、风险、接近度和轨迹分析 | ## 源模型 Akashic 不拥有其上游数据。具有代表性的提供商和登记册包括: | 来源 | 用途 | | ---------------------------------------- | ---------------------------------- | | celestrak | 公开轨道元素集 | | usgs | 地震事件 | | gdacs | 全球灾害预警 | | open-meteo | 天气和空气质量场 | | rainviewer | 雷达图像 | | radio garden 和 radio-browser | 电台发现和流媒体元数据 | | openstreetmap 和 overpass | 建筑、地点和地理结构 | | wikidata 和 wikimedia | 实体事实和公共媒体 | | archdaily | 可选的建筑页面信息丰富 | | esri, carto, nasa 和开放地图服务 | 底图和视觉背景 | 上游可用性和使用权利可能会发生变化。在公开发布之前,操作员有责任审查每个提供商当前的服务条款、署名规则、缓存限制和再分发条件。 ## 安全 - 密钥和本地环境文件会被忽略 - 广播 url 仅限于公共的 `http` 和 `https` 目标 - 私有地址、环回地址、链路本地地址和内部 dns 结果被阻止 - 每个服务端广播重定向都会被重新验证 - 架构深度扫描仅限于已批准的公共主机 - 侦察请求由仓库控制的源定义生成 - 生产依赖项通过 `npm audit` 进行审核 公开部署仍需要正常的边界控制,例如速率限制、请求大小限制、可观测性、滥用处理以及适合部署环境的反向代理。 ## 数据和性能 一些静态地理数据集被有意提交,因为浏览器或服务器会在运行时读取它们。大型的临时导出、构建输出、本地缓存、ai 工作内存、浏览器 artifacts 和依赖目录都会被忽略。 实时图层独立加载。同时启用所有图层会增加网络流量、map 内存和上游压力;请使用图层控制功能,使工作区仅包含调查所需范围。 ## 局限性 - 公共数据源可能会在毫无通知的情况下消失、受到速率限制、重定向或更改 schema - 即使目录报告广播电台状态健康,它们也可能处于离线状态 - 卫星和飞机位置在两次源更新之间仅为预估值 - 3d 覆盖范围取决于所选的提供商和位置 - 建筑细节因公开数据覆盖范围的不同而有很大差异 - 侦察结果可能包含误报,需要人工验证 - 精心整理的战略登记册提供的是背景信息,而非当前活动的证明 - 尽管类型检查和生产构建通过,但当前的 lint 基线仍包含遗留问题 ## 负责任的使用 Akashic 旨在用于合法研究、新闻、教育、态势感知以及公共数据开发。请勿将其用于骚扰、跟踪、歧视、绕过访问控制、侵犯隐私,或针对个人或基础设施。 ## 许可证和署名 Akashic 基于 [GNU Affero General Public License v3 或更高版本](LICENSE) 分发。 战略图层模型、地理登记册和相关实现的部分内容改编自 [World Monitor](https://github.com/koala73/worldmonitor),版权所有 2024-2026 elie habib,同样基于 GNU Affero General Public License 授权。原始版权和许可声明保留在 [license](LICENSE) 中。 第三方数据集、地图切片、数据流和媒体仍受其各自许可证和条款的约束。
标签:deck.gl, MITM代理, 地理空间数据, 自动化攻击, 自托管