Peergos는 최종 사용자가 통제할 수 있는 차세대 웹, 즉 개인 웹을 구축하고 있습니다. 웹 앱이 기본적으로 안전하고 사용자를 추적할 수 없다고 상상해 보세요. 각 웹 앱에서 볼 수 있는 개인 데이터를 정확히 제어할 수 있다고 상상해 보세요. 다시는 앱에 로그인할 필요가 없다고 상상해 보세요. 귀하는 귀하의 데이터를 소유하고 해당 데이터가 저장되는 위치와 이를 볼 수 있는 사람을 결정합니다. Peergos에서는 개인 정보 보호가 기본적인 인권이라고 믿으며 모든 사람이 이 권리를 존중하는 방식으로 온라인에서 쉽게 상호 작용할 수 있도록 만들고 싶습니다.
Peergos의 기반은 데이터 콘텐츠나 우정 그래프 감시에 저항하도록 설계된 세분화된 액세스 제어 기능을 갖춘 P2P 암호화 글로벌 파일 시스템입니다. 여기에는 보안 메신저, 암호화된 이메일 클라이언트 및 브리지, 그리고 사용자가 누가 무엇을 볼지(암호화로 실행) 제어할 수 있는 완전히 개인적이고 안전한 소셜 네트워크가 있습니다. Peergos의 모토는 "데이터를 제어하고 운명을 제어하세요"입니다.
Peergos라는 이름은 요새 또는 탑을 의미하는 그리스어 Πύργος(Pyrgos)에서 유래했지만 발음상 철자는 P2P와 좋은 연관성을 갖습니다. 발음: Peer-goss(가십에서와 같이).
web-ui 저장소 https://github.com/Peergos/web-ui에서 더 많은 스크린샷을 확인하세요.
지금 시험해 보고 싶으신가요? 다음은 폴더에 대한 읽기 전용 비밀 링크입니다.
https://peergos.net/에서 서버를 운영하고 있습니다. 사용 가능한 무료 계정의 수가 제한되어 있습니다. 더 많은 저장 공간을 확보하려면 유료 계정으로 업그레이드하세요.
기술 서적에서 기능과 아키텍처에 대한 자세한 내용을 읽을 수 있습니다.
최근 개발 내용을 보려면 최신 릴리스 노트를 읽어보거나 웹 UI 저장소 릴리스를 참조하세요.
Peergos를 소개하는 강연 슬라이드는 여기 있습니다
IPFS 캠프 2024 심층 분석
Devstaff Crete의 심층 분석:
IPFS Thing 개요:
Peergos의 애플리케이션:
애플리케이션 심층 분석:
IPFS Lab Day에서의 아키텍처 강연:
소개 및 2020 업데이트:
소개:
Peergos 개발을 지원하고 싶다면
주당 100 EUR 미만의 반복 기부
또는
더 크거나 일회성 기부.
Cure53은 2019년 6월 Peergos에 대한 감사를 실시했습니다. 최종 보고서는 여기에 있습니다.
Matrix에는 Peergos의 공개 채팅방이 있습니다.
1.0 아키텍처 계층
2.0 언어
3.0 노드
4.0 신뢰
4.0 로그인
5.0 암호화
5.1 포스트퀀텀 암호화
6.0 친구 네트워크
7.0 파일 공유(다른 사용자와, 비밀 링크를 통해 또는 공개적으로)
DNS 또는 TLS 인증 기관에 의존하지 않고 다른 인스턴스의 Peergos 계정에 로그인하려면 이 방법을 사용하십시오.
https://peergos.net/public/peergos/releases에서 릴리스를 다운로드하세요.
Java 설치 - Java 17 이상이 설치되어 있어야 합니다.
다음을 사용하여 Peergos를 실행하세요.
java -jar Peergos.jar daemon
모든 Peergos 데이터는 기본적으로 ~/.peergos에 저장되며, 이는 PEERGOS_PATH 환경 var 또는 arg로 재정의될 수 있습니다.
그런 다음 웹 인터페이스에 액세스하고 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
그런 다음 일회용 가입 토큰이 포함된 인쇄된 로컬 호스트 주소를 통해 웹 인터페이스에 액세스하고 가입할 수 있습니다.
구성은 $PEERGOS_PATH/config에 저장되므로 후속 실행 시 구성을 재정의하지 않는 한 다음을 사용할 수 있습니다.
java -jar Peergos.jar daemon
귀하가 가입한 Peergos 서버(귀하의 홈 서버)가 귀하의 데이터를 저장하므로 Peergos 서버를 영구적으로 실행하려는 의도가 없다면 https://peergos.net에 가입한 다음 다음을 수행하는 것이 좋습니다. 로컬 Peergos 인스턴스를 통해 로그인할 수 있으며 모든 데이터는 마술처럼 peergos.net 서버에 저장됩니다. Peergos는 NAT 및 방화벽 뒤에서 작동할 수 있지만 공용 IP가 있는 서버를 사용하는 것이 좋습니다. 웹 인터페이스를 공개적으로 노출하려면 도메인 이름과 TLS 인증서를 준비해야 합니다(nginx 및 letsencrypt 사용을 권장합니다).
도메인 이름과 TLS를 설정하지 않은 경우에도 다른 Peergos 인스턴스(예: 노트북에서 로컬로 실행하는 인스턴스)에서 계정에 로그인할 수 있습니다. 연결은 P2P TLS1.3 스트림을 통해 홈 서버로 안전하게 라우팅됩니다. 이 경우 모든 쓰기가 홈 서버로 프록시되므로 데이터가 항상 홈 서버에 유지됩니다. DNS 이름과 TLS 인증서를 통해 인스턴스를 노출하는 경우 다음 매개변수를 추가해야 합니다.
-공개 서버 참
TLS를 종료하기 위해 nginx와 같은 역방향 프록시도 사용하는 경우 다음 인수와 함께 사용 중인 도메인을 Peergos에 알려야 합니다.
-공개 도메인 $YOUR_DOMAIN
그리고 TLS 인증서는 PDF 뷰어, 텍스트 편집기, 캘린더, 사용자 정의 타사 앱 등의 애플리케이션이 작동하려면 와일드카드 하위 도메인도 포함해야 합니다. 예를 들어 $YOUR_DOMAIN 및 *.$YOUR_DOMAIN을 포함하는 A 레코드가 있어야 합니다.
TLS를 종료하기 위해 nginx와 같은 역방향 프록시를 사용하는 경우 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를 실행하면 사용 가능한 명령이나 명령 또는 하위 명령에 대한 세부 정보를 찾을 수 있습니다. 대부분의 사용자에게는 데몬 및 쉘 명령만 필요하며, ID 또는 퓨즈 도 필요할 수 있습니다. 마이그레이션 명령을 사용하여 모든 데이터를 새 서버(명령이 실행되는 서버)로 이동할 수 있습니다.
>> 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 미러 초기화 -username $username
비밀번호를 요청한 다음 미러 데몬에 제공해야 하는 세 가지 매개변수를 인쇄합니다.
그런 다음 init 명령에서 제공하는 다음 추가 인수를 사용하여 데이터를 미러링하려는 인스턴스에서 데몬을 실행합니다.
java -jar Peergos.jar 데몬 -mirror.username $username -mirror.bat $mirrorBat -login-keypair $loginKeypair
그러면 이 인스턴스에서 해당 사용자의 데이터가 지속적으로 미러링됩니다.
다른 서버로 마이그레이션하려면 먼저 할당량이 충분한지 확인한 다음 해당 서버에서 마이그레이션 명령을 실행하세요.
java -jar Peergos.jar 마이그레이션
사용자 이름과 비밀번호를 요청하고 모든 데이터를 로컬로 미러링한 다음 PKI를 업데이트하여 홈 서버로 만듭니다.
마이그레이션 후에도 귀하의 신원은 변경되지 않고 데이터에 대한 모든 링크는 계속 작동하며 누구에게도 말할 필요 없이 소셜 그래프를 유지합니다.
쉘을 사용하여 다양한 작업을 수행할 수 있습니다.
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
기본 디렉터리를 Peergos 디렉터리(또는 여러 쌍의 디렉터리)와 동기화할 수 있는 양방향 동기화 클라이언트가 있습니다. 첫 번째 실행을 설정하려면 다음을 수행하세요.
>> 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 호환 클라이언트를 사용하여 Peergos 파일에 액세스할 수 있는 로컬 webdav 브리지를 실행할 수 있습니다. 다음 명령을 실행하십시오(임의의 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
웹 인터페이스 빌드 https://github.com/peergos/web-ui를 포함한 전체 빌드의 경우 여기에는 웹 UI가 포함되지 않습니다.
ant dist
ant gwtc
선택적으로 개미를 설치해야 합니다.
sudo apt-get install ant-optional
macOS의 ant 패키지에는 추가 항목이 필요하지 않습니다.
테스트를 실행하면 올바른 버전의 IPFS가 자동으로 설치 및 구성되고 데몬이 실행된 후 종료됩니다.
ant test
ant compile
대상은 src/peergos/{client,server,shared} 폴더의 소스만 컴파일합니다.