A Peergos está construindo a próxima web – a web privada, onde os usuários finais estão no controle. Imagine que os aplicativos da web são seguros por padrão e não conseguem rastrear você. Imagine ser capaz de controlar exatamente quais dados pessoais cada aplicativo web pode ver. Imagine nunca mais precisar fazer login em um aplicativo. Você é o proprietário dos seus dados e decide onde eles serão armazenados e quem poderá vê-los. Na Peergos, acreditamos que a privacidade é um direito humano fundamental e queremos facilitar a interação on-line de todos, de forma a respeitar esse direito.
A base do Peergos é um sistema de arquivos global criptografado ponto a ponto com controle de acesso refinado projetado para ser resistente à vigilância do conteúdo dos dados ou gráficos de amizade. Possui um mensageiro seguro, um cliente de e-mail criptografado e uma ponte, e uma rede social totalmente privada e segura, onde os usuários controlam quem vê o quê (executado criptograficamente). Nosso lema na Peergos é: “Controle seus dados, controle seu destino”.
O nome Peergos vem da palavra grega Πύργος (Pyrgos), que significa fortaleza ou torre, mas grafada foneticamente com a bela conexão de ser ponto a ponto. Pronúncia: peer-goss (como em fofoca).
Veja mais capturas de tela no repositório web-ui https://github.com/Peergos/web-ui.
Quer experimentar agora? Aqui está um link secreto somente leitura para uma pasta;
Executamos um servidor em https://peergos.net/. Há um número limitado de contas gratuitas disponíveis. Você pode atualizar para uma conta paga para obter mais armazenamento.
Você pode ler mais detalhes sobre nossos recursos e arquitetura em nosso livro técnico.
Para ver os desenvolvimentos recentes, leia as notas de versão mais recentes ou veja nossos lançamentos de repositório web-ui.
Os slides de uma palestra apresentando Peergos estão aqui
Mergulho profundo no IPFS Camp 2024
Mergulho profundo em Devstaff Creta:
Visão geral no IPFS Thing:
Aplicações em Peergos:
Aprofundamento das aplicações:
Palestra sobre arquitetura no IPFS Lab Day:
Introdução e atualização de 2020:
Introdução:
Se você gostaria de apoiar o desenvolvimento de Peergos, por favor faça um
doação recorrente inferior a 100 EUR por semana
ou um
doação maior ou única.
Cure53 conduziu uma auditoria em Peergos em junho de 2019. O relatório final está aqui.
Há uma sala de bate-papo pública para Peergos no Matrix.
1.0 Camadas de arquitetura
2.0 Idioma
3.0 Nós
4.0 Confiança
4.0 Login
5.0 Criptografia
5.1 Criptografia pós-quântica
6.0 Rede de amigos
7.0 Compartilhamento de um arquivo (com outro usuário, através de um link secreto ou publicamente)
Use este método para fazer login em uma conta peergos em outra instância sem qualquer dependência do DNS ou das autoridades de certificação TLS.
Baixe um lançamento em https://peergos.net/public/peergos/releases
Instale o Java - Você precisará do Java >= 17 instalado.
Execute Peergos com:
java -jar Peergos.jar daemon
Todos os dados peergos serão armazenados em ~/.peergos por padrão, que pode ser substituído pelo ambiente var ou arg - PEERGOS_PATH.
Você pode então acessar a interface web e fazer login via http://localhost:8000.
Neste modo de operação, todas as suas gravações são enviadas por proxy diretamente para o seu servidor doméstico. A instância local armazena em cache todos os blocos acessados para acesso subsequente mais rápido.
Use este método para executar um novo servidor doméstico (que é melhor com um IP roteável publicamente e sempre na máquina) para criar ou migrar contas.
Baixe um lançamento em https://peergos.net/public/peergos/releases
Instale o Java - Você precisará do Java >= 17 instalado.
Execute Peergos com:
java -jar Peergos.jar daemon -generate-token true
Certifique-se de que você pode ouvir em um endereço IP público
Alguns hosts de nuvem não adicionam seu IP público às interfaces de rede por padrão. Para esses casos, pode ser necessário executar algo como
sudo ip address add MY.PUBLIC.IP dev eth0
Todos os dados peergos serão armazenados em ~/.peergos por padrão, que pode ser substituído pelo ambiente var ou arg - PEERGOS_PATH
Você pode então acessar a interface da web e se inscrever por meio do endereço localhost impresso, que inclui um token de inscrição de uso único.
A configuração é armazenada em $PEERGOS_PATH/config, portanto, para execuções subsequentes, você pode usar o seguinte, a menos que queira substituir qualquer configuração
java -jar Peergos.jar daemon
Observe que qualquer servidor Peergos através do qual você se inscrever (seu servidor doméstico) armazenará seus dados, portanto, se você não pretende deixar seu servidor Peergos funcionando permanentemente, recomendamos inscrever-se em https://peergos.net e depois você pode fazer login através de uma instância local do Peergos e todos os seus dados irão magicamente acabar no servidor peergos.net. Peergos pode trabalhar atrás de NATs e firewalls, mas recomendamos usar um servidor com IP público. Se quiser expor sua interface web publicamente, você precisará providenciar um nome de domínio e certificados TLS (recomendamos usar nginx e letsencrypt).
Se você não configurar um nome de domínio e TLS, você ainda poderá fazer login em sua conta a partir de outra instância do Peergos, por exemplo, uma que você execute localmente em seu laptop - as conexões são roteadas com segurança por fluxos P2P TLS1.3 para seu servidor doméstico. Nesse caso, todas as gravações são enviadas por proxy para o seu servidor doméstico, para que seus dados sejam sempre persistidos lá. Se você expor sua instância por meio de um nome DNS e certificado TLS, precisará adicionar este parâmetro:
-servidor público verdadeiro
Se você também estiver usando um proxy reverso como o nginx para encerrar o TLS, você precisará informar aos peergos qual domínio está usando com o seguinte argumento:
-domínio público $YOUR_DOMAIN
E o certificado TLS também precisará cobrir o subdomínio curinga para que os aplicativos (como visualizador de PDF, editor de texto, calendário e aplicativos personalizados de terceiros) funcionem. Por exemplo, deve ter registros A que cubram $YOUR_DOMAIN e *.$YOUR_DOMAIN
Se você estiver usando um proxy reverso como o nginx para encerrar o TLS, aqui está um bom exemplo do arquivo de configuração do nginx (substitua $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;
}
}
Siga as instruções para auto-hospedagem, mas adicione os seguintes parâmetros (na linha de comando ou no arquivo .peergos/config após a primeira execução):
-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 parece ter alguns problemas, então com o uso do Minio: -authed-s3-reads false -direct-s3-writes false
Você também precisará definir o cors.xml do bucket da seguinte forma:
<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>
Siga as instruções para auto-hospedagem, mas adicione os seguintes parâmetros (na linha de comando ou no arquivo .peergos/config após a primeira execução):
-use-postgres true
-postgres.database $DATABASE
-postgres.host $HOST
-postgres.password $PASSWORD
-postgres.username $USERNAME
Há uma variedade de comandos disponíveis em uma linha de comando. Você pode executar -help para encontrar os comandos disponíveis ou detalhes de qualquer comando ou subcomando. A maioria dos usuários deve precisar apenas dos comandos daemon e shell , e talvez de Identity ou Fuse . Você pode usar o comando Migrate para mover todos os seus dados para um novo servidor (onde o comando é executado).
>> 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
ou
>> 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.
Para espelhar todos os seus dados em outro servidor, primeiro execute o seguinte comando (em qualquer instância):
java -jar Peergos.jar espelho init -nomedeusuário $nomedeusuário
Ele solicitará sua senha e imprimirá três parâmetros que você precisa fornecer ao daemon de espelho.
Em seguida, execute o daemon, na instância em que deseja espelhar seus dados, com os seguintes argumentos adicionais fornecidos pelo comando init.
java -jar Peergos.jar daemon -mirror.username $username -mirror.bat $mirrorBat -login-keypair $loginKeypair
Isso espelhará continuamente os dados do usuário nesta instância.
Para migrar para outro servidor, primeiro certifique-se de ter cota suficiente e, em seguida, execute o comando de migração nele.
java -jar Peergos.jar migrar
Ele solicitará seu nome de usuário e senha, espelhará todos os seus dados localmente e, em seguida, atualizará a PKI para torná-lo seu servidor doméstico.
Após a migração, sua identidade permanece inalterada, todos os links para seus dados continuam funcionando e você mantém seu gráfico social sem precisar contar a ninguém.
Várias operações podem ser feitas usando o shell.
java -jar Peergos.jar shell
Para se conectar a um servidor, você precisará fornecer o endereço do servidor (incluindo http/https), nome de usuário e senha.
Enter Server address
> https://peergos.net
Enter username
> demo
Enter password for ' demo '
> **************************************
Generating keys
Logging in
Retrieving Friends
demo@https://peergos.net >
Para mostrar todos os comandos disponíveis
demo@https://peergos.net > help
Dica: O comando a seguir pode ser útil para fazer um upload inicial de pastas maiores.
put local_path remote_path
Existe um cliente de sincronização bidirecional que permite sincronizar um diretório nativo com um diretório peergos (ou vários pares de diretórios). Para configurar isso primeiro execute:
>> java -jar Peergos.jar sync init -peergos-url https://peergos.net
E siga as instruções para inserir seu nome de usuário, senha e o diretório peergos com o qual deseja sincronizar. Isso produzirá algo como:
>> Run the sync dir command with the following args: -links secret/z59vuwzfFDomTEuyeEw7rkofcd2vt5EnVffmAy5fnQe9V9MG36ZiBVY/3615659421#QUq6mf4gz8uk -local-dirs $LOCAL_DIR
Em seguida, execute o cliente de sincronização com:
>> java -jar Peergos.jar sync dir -peergos-url https://peergos.net -links secret/z59vuwzfFDomTEuyeEw7rkofcd2vt5EnVffmAy5fnQe9V9MG36ZiBVY/3615659421#QUq6mf4gz8uk -local-dirs /path/to/local/dir
Você pode montar seu espaço Peergos com o seguinte comando
>> java -Djava.library.path=native-lib -jar Peergos.jar fuse -peergos-url https://peergos.net -username $username -password $password
Instale o osxfuse com
>> brew install --cask osxfuse
Instale o winfsp com
>> choco install winfsp
Você pode executar uma ponte webdav local que permite acessar seus arquivos Peergos com qualquer cliente compatível com webdav. Execute o seguinte comando (escolha um nome de usuário e senha webdav arbitrários):
>> 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
Requer jdk17 e ant para construir. Use o seguinte para instalar dependências:
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
Observe que isso não inclui nenhuma interface da web, para a construção completa, incluindo a construção da interface da web https://github.com/peergos/web-ui
ant dist
ant gwtc
Você precisa ter o anti-opcional instalado:
sudo apt-get install ant-optional
Nada adicional é necessário para o pacote ant no macOS.
A execução de testes instalará e configurará automaticamente a versão correta do IPFS, executará o daemon e o encerrará posteriormente.
ant test
O destino ant compile
compilará apenas fontes nas pastas src/peergos/{client,server,shared}.