Plugin ActivityPub

Parece que haverá problemas com nomes de usuário não latinos no modo Artigo. Parece que o nome de usuário precisa ser codificado?

2 curtidas

Parece que em um ambiente de rede flutuante, uma postagem pode ser recebida várias vezes.

3 curtidas

@angus @infodesk@oxygen.offdem.net deveria ter postado algumas mensagens desde a postagem inicial, mas elas não parecem aparecer em minha linha do tempo, sem nenhum erro no Discourse.

Há alguns dias, usei um rascunho compartilhado antes de postar, mas a mensagem não apareceu no Mastodon. Então pensei que estaria relacionado a um bug com rascunhos compartilhados, e hoje postei diretamente em um novo tópico, mas embora a postagem devesse ter sido enviada para o Fediverso às 13:18 CET, nada aparece – então não é impulsionável. :thinking:

Versão do plugin

eee34494

Log de erros

Finalmente apareceu: https://oxygen.offdem.net/logs/show/c6449d732e8e9b866bf07935e8132744

(Note que uma correção que reenviaria as últimas postagens seria incrível)

Últimos anúncios

Configurações da categoria

O plugin ActivityPub possui um sistema robusto de registro em log que detectará a maioria dos problemas. Primeiro, certifique-se de que o registro detalhado esteja ativado para o plugin.

Qual é o status de publicação desta postagem? (ou seja, compartilhe uma captura de tela da janela que aparece quando você clica no ícone AP na postagem)

Presumo que o status de publicação seja “publicado” (ou seja, o ícone está verde)? Se você tivesse o registro detalhado ativado, poderia compartilhar o que foi registrado quando isso foi publicado? (algo teria sido registrado).

1 curtida

Obrigado @angus, o log de erros está na minha postagem anterior:

Aqui está o status da postagem:

Você pode ver o tópico aqui: O₄FFDEM programme is out! - Announcements - OFFDEM

1 curtida

Obrigado pelos detalhes adicionais.

Somente administradores podem visualizar logs em uma instância :slight_smile:

Você poderia copiar os logs relevantes em uma mensagem privada para mim? Obrigado.

3 curtidas

Olá pessoal, muito obrigado pelo excelente trabalho que fizeram para levar este conceito até este ponto!! Comecei a acompanhar as discussões para implementar a federação no Discourse muitos anos atrás e estou feliz em ver que isso avançou tanto.

Consegui federar com sucesso minha categoria do Discourse seguindo-a com minha conta no Mastodon. Novos tópicos na minha categoria estão disponíveis para visualização a partir da minha conta do Mastodon.

Parece que não estou recebendo respostas do Mastodon aos meus tópicos federados do Discourse no Discourse, mas os Toots de nível superior da minha conta seguida no Mastodon parecem aparecer como novos tópicos sem problemas. Este é o comportamento esperado atualmente?

Li este tópico e acho que não vi explicitamente nada sobre a federação de respostas a tópicos.

Aqui está uma captura de tela das configurações do ActivityPub da minha categoria.

Isso tem alguma relação com as configurações de segurança da categoria? No momento, configurei para que todos possam ver os tópicos, mas apenas administradores podem criá-los e responder a eles.

Obrigado!

2 curtidas

Olá @rsmithlal, obrigado por experimentar o plugin e pelo seu feedback detalhado!

Sim, este é o motivo pelo qual as respostas aos toots não estão sendo importadas. Só para eu entender, você espera que:

  1. Os usuários não possam responder a um tópico do Discourse no Discourse.
  2. Os usuários possam responder a um tópico do Discourse no Mastodon.

Está correto? Se sim, isso não é suportado atualmente. Mas entendo o ponto de que ainda não está totalmente claro como as configurações de segurança de categoria devem interagir com o ActivityPub. Esperamos abordar isso de forma mais explícita na próxima fase de trabalho.

2 curtidas

Olá @angus, isso significa que as respostas aos toots para tópicos do Discourse que foram federados devem aparecer no tópico federado como respostas do Discourse, com a configuração correta?

Por exemplo:

  1. Vamos supor que eu crie um novo tópico “Meu Primeiro Tópico Federado” na minha instância do Discourse Discourse1.server em uma categoria federada “Minha Categoria Federada”.
  2. Este novo tópico é federado e aparece como um toot de fed-cat@discourse1.server no feed da minha conta do Mastodon rob@mastodon1.server, que segue “Minha Categoria Federada, fed-cat@discourse1.server”.
  3. Eu crio um toot de resposta no Mastodon1.server para a nota federada contendo o conteúdo de “Meu Primeiro Tópico Federado”, originalmente federado pelo Discourse1.server.

Neste caso, eu esperaria que minha resposta de toot do Mastodon a este tópico federado do Discourse aparecesse como uma resposta no tópico original “Meu Primeiro Tópico Federado” no Discourse1.server.

Este seria o caso ideal para mim, mas ainda não consegui alcançá-lo. É possível atualmente?

Se isso for possível, quais são as configurações que permitiriam que ele funcionasse como esperado?

Muito obrigado. Espero que minha explicação tenha sido clara!

1 curtida

A categoria principal tem o ActivePub ativado e eu criei uma subcategoria com ActivePub também. Mas quando tento seguir alguém pela subcategoria clicando no botão follows, recebo uma página de erro chata de não encontrado/não permitido. As categorias principais funcionam bem, no entanto.

Não há nada de especial ou estranho nas configurações.

Comportamento esperado ou bug?

@rsmithlal Sim, o que você descreveu é como o tipo de publicação “Tópico Completo” deve funcionar. A única alteração que você precisa fazer é permitir que usuários normais respondam na categoria (nas configurações de acesso da categoria). O motivo pelo qual não está funcionando para você é porque você restringiu as respostas aos administradores. As respostas importadas pelo ActivityPub não podem substituir essa restrição.

De modo geral, as subcategorias não herdam a configuração das categorias pai, e o ActivityPub não é diferente nesse aspecto. As configurações do ActivityPub são específicas da categoria e não há herança (ainda). Dito isso, o que você descreveu é um problema de UX que abordarei em breve, ou seja, os controles do ActivityPub não devem aparecer quando você está olhando especificamente para uma subcategoria.

3 curtidas

Obrigado, @angus, vou tentar isso. Muito animador!!

Eu havia restringido a maioria das respostas porque era apenas uma categoria e um tópico de teste. Inicialmente, eu o mantive privado para administradores, mas não consegui ativar o ActivityPub até abri-lo para que todos pudessem vê-lo. Esta tem sido uma troca muito esclarecedora.

2 curtidas

@Jagster O problema que você descreveu será corrigido assim que isso for mesclado. Obrigado por reportá-lo.

5 curtidas

Problema

Olá, estamos testando este plugin em agora.eXO.cat e não conseguimos fazê-lo funcionar (o status na web do Discourse diz “Nota não foi publicada via ActivityPub”, outros aplicativos do fediverso não encontram o ator)

Há algo em particular que devemos ter em mente? Verificar a documentação não apontou nada em particular para solução de problemas que possamos seguir e os logs (veja abaixo) não nos ajudam mais :-(.

Configuração

Versão do plugin: 79da1c2

Estamos usando uma subcategoria pública, que queremos publicar no fediverso.

As configurações são simples, nada mudou exceto por:

  • Horário de agendamento reduzido para 1 minuto para testes
  • Escolha do nome do ator e nome de exibição para a categoria

Algumas coisas que tentamos:

  • Habilitar “activity pub object logging” e verificar os logs
  • Corrigir a linha que produziu o erro, pois ela nos deu a sensação de “ovo e galinha” (“talvez não seja possível agendar postagem porque não há destinatários, não criará o ator até que a postagem seja criada”)
patch testado
> ./launcher enter app
> sed -i.orig -E 's!^(.*no recip.*)$!#\\1!' /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb
> ./launcher restart app
  • Quando esse patch não funcionou, o removemos
  • Excluir e recriar a categoria para que não haja caracteres “especiais” em lugar nenhum (a palavra é na verdade exofàsia, que queremos soletrar: eXOfàsia)
  • Ao recriar a categoria, usar Note (padrão) em vez de Article (o que queremos)

Logs

Aqui está o que vemos nos logs
Message

[Discourse Activity Pub] https://agora.exo.cat/ap/actor/31cb67a1093eca932caaf1e764814bde failed to schedule https://agora.exo.cat/ap/activity/803be329c95f67b5ab62d43c7c61f6f3 for delivery: no recipients

Backtrace

/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:93:in `log_failure'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:35:in `can_deliver?'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:13:in `perform'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:27:in `perform'
/var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:140:in `activity_pub_deliver_activity'
/var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:38:in `perform_activity_pub_activity'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:473:in `block (2 levels) in activate!'
/var/www/discourse/lib/plugin/instance.rb:341:in `public_send'
/var/www/discourse/lib/plugin/instance.rb:341:in `block (2 levels) in add_to_class'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:654:in `block (2 levels) in activate!'

Env

HTTP HOSTS: agora.exo.cat
O erro é consistente ao republicar da interface
Message

[Discourse Activity Pub] https://agora.exo.cat/ap/actor/31cb67a1093eca932caaf1e764814bde failed to schedule https://agora.exo.cat/ap/activity/30d34f8b38be0d2d5bc997fd4147c5b2 for delivery: no recipients

Backtrace

/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:93:in `log_failure'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:35:in `can_deliver?'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:13:in `perform'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:27:in `perform'
/var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:140:in `activity_pub_deliver_activity'
/var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:38:in `perform_activity_pub_activity'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:473:in `block (2 levels) in activate!'
/var/www/discourse/lib/plugin/instance.rb:341:in `public_send'
/var/www/discourse/lib/plugin/instance.rb:341:in `block (2 levels) in add_to_class'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:481:in `block (2 levels) in activate!'

Env

HTTP HOSTS: agora.exo.cat

Webfinger

E o que um webfinger retorna:

> curl -L 'https://agora.eXO.cat/.well-known/webfinger?resource=acct:exofasia@agora.exo.cat'
{"subject":"acct:exofasia@agora.exo.cat","aliases":["https://agora.exo.cat/c/exo/exofasia/33"],"links":[{"rel":"self","type":"application/activity+json","href":"https://agora.exo.cat/ap/actor/31cb67a1093eca932caaf1e764814bde"}]}
2 curtidas

Olá @evilham, a mensagem que você está vendo é registrada quando o Ator não tem seguidores (nenhuma atividade será publicada). Alguém está seguindo o ator?

Note que o único ator que pode ser seguido atualmente é o ator de Categoria (ou seja, o ator de Grupo). Esse Ator é criado assim que você habilita o ActivityPub em uma categoria (e, portanto, não causa um problema de ovo e galinha). Você não pode seguir atores de usuário (ou seja, Pessoas) no momento.

1 curtida

Olá, o problema é precisamente que o ator não pode ser encontrado (tente você mesmo: exofasia@agora.exo.cat):

Ao verificar ontem à noite aqui com mais detalhes, vi que não somos a primeira instância a esbarrar nisso:

Então, talvez a entrada do log seja totalmente não relacionada, mas é a única que temos ><, então a única pista que tínhamos para seguir.

A postagem em si permanece com um ícone desconectado do fediverso e este texto:

Quaisquer tentativas de agendar a publicação da postagem resultam no log que mencionamos, e nada mais.

A categoria afirma estar devidamente configurada (como mencionado, nada foi alterado):

E a categoria é totalmente pública.

Consegui seguir aquele ator da minha instância local com sucesso.

Encontrei com sucesso.

Em seguida, enviei com sucesso um Follow e recebi um Accept.

Se você atualizar a lista de “Seguidores” na sua instância, agora verá um follow de general@angus.ngrok.io.

Suspeito que o problema que você está tendo é que você tem assinaturas HTTP definidas como obrigatórias

e o cliente que você está usando para seguir não suporta e/ou envia uma assinatura HTTP apropriada. Esse é talvez o problema que @Lhc_fl também estava tendo.

2 curtidas

Ah, isso é bastante interessante, posso confirmar que o follow aparece!

De fato, como este era o padrão e mudamos o mínimo necessário.

Tentamos vários clientes, principalmente Mastodon e Pleroma.

Seguindo a dica de assinaturas HTTP obrigatórias, desativamos isso (ou seja, mudamos o padrão), depois tentamos reagendar a postagem, desta vez com um resultado positivo (possivelmente a diferença é porque há 1 seguidor?):

Por outro lado, pelo menos o Mastodon continua mostrando um 404 ao procurar o perfil, então o objetivo principal (seguir a categoria de outros aplicativos fediverse) ainda não está sendo cumprido.

Há mais alguma coisa que possamos investigar? para facilitar isso?

Eu também segui com sucesso essa categoria do Mastodon.

1 curtida

Nossa, não entendo. Antes da última postagem, tentei de dois servidores Mastodon diferentes, um dos quais eu nunca tinha usado antes, e o resultado foi um 404 no perfil em ambos.

Verificarei novamente à tarde, mas qualquer dica sobre por que a visualização pode ser inconsistente ou o que podemos tentar seria ótimo.

1 curtida