Peergos 正在构建下一个网络——最终用户掌控的私有网络。想象一下网络应用程序默认情况下是安全的并且无法跟踪您。想象一下能够准确控制每个网络应用程序可以看到哪些个人数据。想象一下再也不用登录应用程序了。您拥有自己的数据并决定其存储位置以及谁可以看到它。在 Peergos,我们相信隐私是一项基本人权,我们希望让每个人都能轻松地以尊重这项权利的方式进行在线互动。
Peergos 的基础是一个点对点加密的全局文件系统,具有细粒度的访问控制,旨在抵抗数据内容或友谊图的监视。它有一个安全的信使、一个加密的电子邮件客户端和桥接器,以及一个完全私密且安全的社交网络,用户可以控制谁看到什么(以加密方式执行)。 Peergos 的座右铭是“掌控你的数据,掌控你的命运”。
Peergos 这个名字来自希腊语 Πύργος (Pyrgos),意思是要塞或塔楼,但拼写上与点对点有着很好的联系。发音:peer-goss(如八卦)。
在 web-ui 存储库中查看更多屏幕截图 https://github.com/Peergos/web-ui。
现在想尝试一下吗?这是一个文件夹的只读秘密链接;
我们在 https://peergos.net/ 上运行服务器。可用的免费帐户数量有限。您可以升级到付费帐户以获得更多存储空间。
您可以在我们的技术书中阅读有关我们的功能和架构的更多详细信息。
要了解最新进展,请阅读最新的发行说明或查看我们的 web-ui 存储库版本。
介绍 Peergos 的演讲幻灯片在这里
深入探讨 IPFS Camp 2024
克里特岛 Devstaff 深入探讨:
IPFS 事物概述:
Peergos 上的应用:
应用深入探讨:
IPFS 实验室日的架构演讲:
简介和2020年更新:
介绍:
如果您想支持 Peergos 的开发,请做一个
每周经常性捐款少于 100 欧元
或一个
较大额或一次性捐赠。
Cure53 于 2019 年 6 月对 Peergos 进行了审计。最终报告在这里。
Matrix 上有一个 Peergos 的公共聊天室。
1.0 架构层次
2.0 语言
3.0节点
4.0 信任
4.0 登录
5.0 加密
5.1 后量子加密
6.0 朋友圈
7.0 共享文件(与其他用户、通过秘密链接或公开)
使用此方法登录另一个实例上的 Peergos 帐户,而不依赖于 DNS 或 TLS 证书颁发机构。
从 https://peergos.net/public/peergos/releases 下载版本
安装 Java - 您需要安装 Java >= 17。
运行 Peergos:
java -jar Peergos.jar daemon
默认情况下,所有peergos数据将存储在~/.peergos中,可以使用环境变量或arg - PEERGOS_PATH 覆盖它。
然后您可以访问 Web 界面并通过 http://localhost:8000 登录。
在这种操作模式下,您的所有写入都会直接代理到您的家庭服务器。本地实例会缓存您访问的任何块,以便更快地进行后续访问。
使用此方法运行新的家庭服务器(最好具有公共可路由 IP,并且始终在计算机上)来创建帐户或将帐户迁移到其中。
从 https://peergos.net/public/peergos/releases 下载版本
安装 Java - 您需要安装 Java >= 17。
运行 Peergos:
java -jar Peergos.jar daemon -generate-token true
确保您可以监听公共 IP 地址
默认情况下,某些云主机不会将您的公共 IP 添加到网络接口。对于这些情况,您可能需要运行类似的命令
sudo ip address add MY.PUBLIC.IP dev eth0
默认情况下,所有peergos数据将存储在~/.peergos中,可以使用环境var或arg覆盖 - PEERGOS_PATH
然后,您可以访问 Web 界面并通过打印的本地主机地址进行注册,其中包括一次性注册令牌。
配置存储在 $PEERGOS_PATH/config 中,因此对于后续运行,您可以只使用以下内容,除非您想覆盖任何配置
java -jar Peergos.jar daemon
请注意,无论您通过哪个 Peergos 服务器(您的家庭服务器)注册,都将存储您的数据,因此,如果您不打算让 Peergos 服务器永久运行,那么我们建议您在 https://peergos.net 上注册,然后您可以通过本地 Peergos 实例登录,您的所有数据将神奇地最终存储在peergos.net 服务器上。 Peergos 可以在 NAT 和防火墙后面工作,但我们建议使用具有公共 IP 的服务器。如果您想公开公开您的 Web 界面,您将需要安排域名和 TLS 证书(我们建议使用 nginx 和 LetsEncrypt)。
如果您没有设置域名和 TLS,您仍然可以从另一个 Peergos 实例(例如您在笔记本电脑上本地运行的实例)登录您的帐户 - 连接通过 P2P TLS1.3 流安全路由到您的家庭服务器。在这种情况下,任何写入都会代理到您的家庭服务器,因此您的数据始终保留在那里。如果您确实通过 DNS 名称和 TLS 证书公开您的实例,则需要添加此参数:
-公共服务器 true
如果您还使用像 nginx 这样的反向代理来终止 TLS,您需要通过以下参数告诉 Peergos 您正在使用哪个域:
-公共域$YOUR_DOMAIN
并且 TLS 证书还需要覆盖应用程序(如 PDF 查看器、文本编辑器、日历和自定义第 3 方应用程序)的通配符子域才能正常工作。例如,它应该具有覆盖 $YOUR_DOMAIN 和 *.$YOUR_DOMAIN 的 A 记录
如果您使用像 nginx 这样的反向代理来终止 TLS,这里是 nginx 配置文件的一个很好的示例(替换 $YOUR_DOMAIN_NAME):
# Peergos server config
server {
listen 80 default_server;
listen [::]:80 default_server;
location ^~ /.well-known {
allow all;
proxy_pass http://127.0.0.1:8888;
}
# redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}
server {
# SSL configuration
listen 443 ssl http2;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_ciphers TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:!TLS_AES_128_GCM_SHA256;
ssl_certificate /etc/letsencrypt/live/$YOUR_DOMAIN_NAME/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$YOUR_DOMAIN_NAME/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000" always;
server_name $YOUR_DOMAIN_NAME;
client_max_body_size 2M;
location / {
proxy_pass http://localhost:8000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
allow all;
}
# pass through for letsencrypt
location ^~ /.well-known {
allow all;
proxy_pass http://127.0.0.1:8888;
}
}
按照自托管说明进行操作,但添加以下参数(在命令行上或首次运行后在 .peergos/config 文件中):
-use-s3 true
-authed-s3-reads true
-direct-s3-writes true
-s3.accessKey $ACCESS_KEY
-s3.bucket $BUCKET
-s3.region $REGION
-s3.region.endpoint $ENDPOINT (e.g. us-east-1.linodeobjects.com)
-s3.secretKey #SECRET_KEY
NB Minio 似乎有一些问题,因此使用 Minio 使用: -authed-s3-reads false -direct-s3-writes false
您还需要将存储桶的 cors.xml 设置为以下内容:
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>https://$YOUR_DOMAIN</AllowedOrigin>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
<ExposeHeader>ETag</ExposeHeader>
<ExposeHeader>Content-Length</ExposeHeader>
<MaxAgeSeconds>3600</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>
按照自托管说明进行操作,但添加以下参数(在命令行上或首次运行后在 .peergos/config 文件中):
-use-postgres true
-postgres.database $DATABASE
-postgres.host $HOST
-postgres.password $PASSWORD
-postgres.username $USERNAME
命令行中有一系列可用的命令。您可以运行 -help 来查找可用命令或任何命令或子命令的详细信息。大多数用户应该只需要守护进程和shell命令,也许还需要identity或fuse 。您可以使用migrate命令将所有数据移动到新服务器(运行该命令的位置)。
>> java -Djava.library.path=native-lib -jar Peergos.jar -help
Main: Run a Peergos command
Sub commands:
daemon: The user facing Peergos server
shell: An interactive command-line-interface to a Peergos server
fuse: Mount a Peergos user's filesystem natively
quota: Manage quota of users on this server
server-msg: Send and receive messages to/from users of this server
gateway: Serve websites directly from Peergos
migrate: Move a Peergos account to this server
identity: Create or verify an identity proof
ipfs: Install, configure and start IPFS daemon
pki: Start the Peergos PKI Server that has already been bootstrapped
pki-init: Bootstrap and start the Peergos PKI Server
或者
>> java -Djava.library.path=native-lib -jar Peergos.jar identity -help
identity: Create or verify an identity proof
Sub commands:
link: Link your Peergos identity to an account on another service.
verify: Verify an identity link post from another service.
要将所有数据镜像到另一台服务器上,请首先运行以下命令(在任何实例上):
java -jar Peergos.jar 镜像 init -username $用户名
它将询问您的密码,然后打印您需要提供给镜像守护程序的三个参数。
然后在要镜像数据的实例上运行守护程序,并使用 init 命令提供的以下附加参数。
java -jar Peergos.jar daemon -mirror.username $username -mirror.bat $mirrorBat -login-keypair $loginKeypair
然后,这将连续镜像该实例上该用户的数据。
要迁移到另一台服务器,请首先确保该服务器有足够的配额,然后对其运行 migrate 命令。
java -jar Peergos.jar 迁移
它将询问您的用户名和密码,在本地镜像您的所有数据,然后更新 PKI 以使其成为您的家庭服务器。
迁移后,您的身份不会改变,所有指向您数据的链接都将继续有效,并且您可以保留您的社交图谱,而无需告诉任何人。
可以使用 shell 完成各种操作。
java -jar Peergos.jar shell
要连接到服务器,您需要提供服务器地址(包括 http/https)、用户名和密码。
Enter Server address
> https://peergos.net
Enter username
> demo
Enter password for ' demo '
> **************************************
Generating keys
Logging in
Retrieving Friends
demo@https://peergos.net >
显示所有可用命令
demo@https://peergos.net > help
提示:以下命令对于对较大文件夹进行初始上传可能有用。
put local_path remote_path
有一个双向同步客户端,可让您将本机目录与对等目录(或多对目录)同步。要进行设置,请首先运行:
>> java -jar Peergos.jar sync init -peergos-url https://peergos.net
然后按照提示输入您的用户名、密码和要同步的peergos 目录。这将输出类似:
>> Run the sync dir command with the following args: -links secret/z59vuwzfFDomTEuyeEw7rkofcd2vt5EnVffmAy5fnQe9V9MG36ZiBVY/3615659421#QUq6mf4gz8uk -local-dirs $LOCAL_DIR
然后运行同步客户端:
>> java -jar Peergos.jar sync dir -peergos-url https://peergos.net -links secret/z59vuwzfFDomTEuyeEw7rkofcd2vt5EnVffmAy5fnQe9V9MG36ZiBVY/3615659421#QUq6mf4gz8uk -local-dirs /path/to/local/dir
您可以使用以下命令挂载 Peergos 空间
>> java -Djava.library.path=native-lib -jar Peergos.jar fuse -peergos-url https://peergos.net -username $username -password $password
安装 osxfuse
>> brew install --cask osxfuse
安装 winfsp
>> choco install winfsp
您可以运行本地 webdav 桥,它允许您使用任何 webdav 兼容客户端访问 Peergos 文件。运行以下命令(选择任意 webdav 用户名和密码):
>> java -Djava.library.path=native-lib -jar Peergos.jar webdav -peergos-url https://peergos.net -username $username -PEERGOS_PASSWORD $password -webdav.username $webdav-username -PEERGOS_WEBDAV_PASSWORD $webdav-password
需要 jdk17 和 ant 来构建。使用以下命令安装依赖项:
sudo apt-get install ant
sudo apt-get install openjdk-17-jdk
brew install ant # installs openjdk as a dependency
ant -version
Apache Ant(TM) version 1.10.8 compiled on May 10 2020
请注意,这不包括任何 Web ui,对于包括 Web 界面构建的完整构建,https://github.com/peergos/web-ui
ant dist
ant gwtc
您需要安装 ant 可选:
sudo apt-get install ant-optional
macOS 上的 ant 包不需要任何额外的东西。
运行测试将自动安装和配置正确版本的 IPFS,运行守护进程,然后终止它。
ant test
ant compile
目标只会编译 src/peergos/{client,server,shared} 文件夹中的源代码。