Project Icon

gun

开源去中心化实时数据库 支持加密与离线优先

GUN是开源的去中心化实时数据库系统,具备端到端加密和离线优先功能。它支持多人实时同步、图数据存储和本地优先等特性,适用于构建去中心化应用。GUN生态系统提供从CRDT冲突解决到加密安全、存储序列化和网络路由等多方面的工具。Internet Archive等多个项目已采用GUN,它还可用于构建Zoom、Reddit等主流应用的去中心化替代版本。

Build Gitter

GUN是一个生态系统,提供了一系列工具,让你能够构建社区运营加密应用 - 类似于开源版的Firebase或去中心化的Dropbox。

互联网档案馆数百个其他应用都在生产环境中运行GUN。GUN还是Twitter的bluesky计划的一部分!

  • 默认支持多人操作,实现实时P2P状态同步!
  • 图数据让你可以使用键值对、表格、文档、视频等多种数据形式!
  • 本地优先、离线支持,去中心化且端到端加密。

基于GUN的ZoomRedditInstagramSlackYouTubeStripeWikipedia、Facebook Horizon等去中心化替代品已经每天推送了数TB的P2P流量。我们是一个友好的社区,正在创造一个自由有趣的未来

快速入门

GUN 非常容易上手:

  • 试试浏览器中的交互式教程(普通开发者平均需要5分钟)。
  • 或者 npm install gun 然后运行示例 cd node_modules/gun && npm start(普通开发者平均需要5分钟)。

注意: 如果你没有安装 nodenpm,请先阅读这里。 如果 npm 命令行不起作用,你可能需要先 mkdir node_modules 或使用 sudo

<script src="https://cdn.jsdelivr.net/npm/gun/gun.js"></script>
<script>
// 在 ESM 中使用 import GUN from 'gun'; 
// 在 NodeJS 中使用 GUN = require('gun'); 
// 在 React 中使用 GUN = require('gun/gun');
gun = GUN();

gun.get('mark').put({
  name: "Mark",
  email: "mark@gun.eco",
});

gun.get('mark').on((data, key) => {
  console.log("实时更新:", data);
});

setInterval(() => { gun.get('mark').get('live').put(Math.random()) }, 9);
</script>
  • 或者尝试一些令人兴奋的功能,比如将循环引用保存到文档表中!(试一试
cat = {name: "Fluffy", species: "kitty"};
mark = {boss: cat};
cat.slave = mark;

// 部分更新会与现有数据合并!
gun.get('mark').put(mark);

// 像访问文档一样访问数据。
gun.get('mark').get('boss').get('name').once(function(data, key){
  // `once` 只获取一次数据,不订阅。
  console.log("Mark 的老板是", data);
});

// 遍历循环引用的图!
gun.get('mark').get('boss').get('slave').once(function(data, key){
  console.log("Mark 是猫的奴隶!", data);
});

// 将它们都添加到表中!
gun.get('list').set(gun.get('mark').get('boss'));
gun.get('list').set(gun.get('mark'));

// 从表中连续获取每个项目一次:
gun.get('list').map().once(function(data, key){
  console.log("项目:", data);
});

// 实时更新表!
gun.get('list').set({type: "cucumber", goal: "jumping cat"});

想要继续构建更多内容吗?跳转到文档

关于

首先也是最重要的,GUN 是一个由最友善和最乐于助人的人组成的社区。所以我邀请你来告诉我们你正在做什么,想要构建什么(无论是新技术还是旧技术!只要保持友善),并直接向我们提问。:)


观看 100 秒介绍视频!

GUN 生态系统堆栈是一系列独立且模块化的工具集合,涵盖了从 CRDT 冲突解决密码学安全加密基数存储序列化网状网络路由算法,到分布式系统正确性和负载测试、CPU 调度 JSON 解析器(防止 UI 卡顿)等各个方面!

说到这里,让我们先对一些官方支持者表示感谢:

支持

感谢:

             

Robert HeesselsLorenzo ManganiNLnet基金会Sam LiuDaniel DombrowskyVincent WooAJ ONealBill OttmanMike LangeSean MathesonAlan MimmsDário FreireJohn WilliamsonRobin BronElie MakhoulMike StaubBradley MatusiakJeff CookNicoAaron ArtilleTim RobinsonFabian StammMike StaubHunter OwensJacob MillnerGerrit BalindtGabriel LemonMurage MartinJason Stallings

历史

GUN是由Mark Nadal在2014年创建的,此前他花了4年时间试图让他的协作网络应用程序使用传统数据库来扩展。

在他意识到主从数据库架构会造成一个巨大的瓶颈后,他(作为一个完全的外行新手)天真地决定质疑现状,通过一些有争议的、异端的和反传统的实验来改变现状: NoDB - 无主节点、无服务器、无"单一真实来源",不使用真正的编程语言或实体硬件构建,无需DevOps,无锁定,不仅仅是SQL或NoSQL,而是两者兼具(全部 - 图形、文档、表格、键值对)。

目标是构建一个P2P数据库,可以在任何浏览器中生存,并且在假设任何离线优先活动后,能够在任何设备之间正确同步数据。

从技术角度来说,GUN是一个图形同步协议,配备轻量级嵌入式引擎,能够在仅约9KB的gzip压缩大小内实现每秒2000万+API操作

文档

如果没有社区贡献者,这一切都不可能实现,在此向他们表示衷心的感谢: ajmeyghani通过图解学习GUN基础知识anywhichway块存储beebaseQuasarBrockAtkinsonbrunch配置BrysgoGraphQLd3x0rSQLiteforrestjtfile.jshillct(Docker)JosePedroDias图形可视化工具JuniperChicagocycle.js绑定jverestodoMVCkristianmandrupedgeLightnet优秀的Vue用户示例用户功能全面演示场);lmanganiCytoscape可视化工具CassandraFastifyLetsEncryptmhelanderSEAomarzion便利贴应用);PsychoLlamaLevelDB);RangerMauveschemarobertheesselsgun-p2p-authrogowski(AXE)sbeleidysbiaudetC#移植版Sean MathesonObservable/RxJS/Most.js绑定ShadyzpopReact Native示例sjones6Flint;已故**Stefdv(Polymer/web组件)zrrrzztJWT认证xmonaderPython移植版)**。

我遗漏了很多其他人,抱歉,我会尽快添加他们!这个列表已经非常老旧且过时了,如果你想被列入其中,请提交一个PR!:)

测试

首先你需要运行npm install -g mocha。然后在gun根目录下运行npm test。测试会触发对数据库的持久化写入,所以后续的测试运行会失败。你必须在再次运行测试之前清除数据库。这可以通过在项目目录下运行rm -rf *data*命令来完成。

填充库

这些只在NodeJS和React Native中需要,它们为原生浏览器WebCrypto API提供填充。

如果你想使用SEA进行User认证和安全性,你需要安装:

npm install @peculiar/webcrypto --save

请查看我们的React Native文档以获取安装说明!

然后你可以无错误地引入SEA

GUN = require('gun/gun');
SEA = require('gun/sea');

部署

注意:在npm start时自动部署的默认示例会将所有GUN文件、模块和存储CDN化。

注意:未来,AXE将开始自动将你的节点集群到共享的DHT中。你可能想要禁用这个功能以运行一个隔离的网络。 注意:在云提供商上使用GUN部署Web应用程序时,您可能需要在.env文件中设置CI=false。这可以防止GUN特定的警告在部署应用程序时被视为错误。您也可以通过修改webpack配置来解决这个问题,使其不尝试构建GUN依赖项。

要为您的开发团队快速搭建GUN中继节点,可以使用HerokuDocker或下面列出的其他选项。或者使用其变体,如Dokku、K8s等!或者同时使用所有这些,让您的中继节点也实现去中心化!

Linux

使用具有sudo权限的账户SSH登录到一个干净的操作系统安装的主目录。设置所需的环境变量(见下文),然后执行:

curl -o- https://raw.githubusercontent.com/amark/gun/master/examples/install.sh | bash

请先阅读install.sh! 如果找不到curl命令,请将install.sh的内容复制粘贴到您的SSH会话中。

现在您可以安全地使用CTRL+A+D退出而不停止节点。要停止所有进程,请执行killall screen或killall node。

可能需要设置环境变量,如export HTTPS_CERT=/cert.pem HTTPS_KEY=/key.pem PORT=443。您还可以查看示例nginx配置。对于生产部署,您可能需要使用pm2或更好的工具来确保机器重启后节点仍然运行。

Dome

使用Dome一键部署GUN并获得免费试用:

部署到Dome

Heroku

部署

Heroku每15分钟删除一次您的数据,解决这个问题的一种方法是添加廉价存储

或者:

git clone https://github.com/amark/gun.git
cd gun
heroku create
git push -f heroku HEAD:master

然后在浏览器中访问'heroku create'步骤输出的URL。确保在设置选项卡中设置所有环境配置变量。

Zeet.co

部署

然后在浏览器中访问'now --npm'步骤输出的URL。

Docker

警告:Docker镜像由社区贡献,可能较旧且缺少安全更新,请检查版本号进行比较。

Docker自动构建 Docker拉取次数 Docker星标数

Docker Hub拉取 。或者:

docker run -p 8765:8765 gundb/gun

或者在本地构建Docker镜像:

git clone https://github.com/amark/gun.git
cd gun
docker build -t myrepo/gundb:v1 .
docker run -p 8765:8765 myrepo/gundb:v1

如果您更喜欢带有元数据标签的Docker镜像(仅限Linux/Mac):

npm run docker
docker run -p 8765:8765 username/gun:git

然后在浏览器中访问http://localhost:8765

许可证

由Mark Nadal、GUN团队和众多优秀的贡献者用♥设计。 根据 Zlib / MIT / Apache 2.0 开源许可证公开发布。

FOSSA 状态

YouTube · Twitter

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号