Vou analisar o suporte explícito ao Pixelfed depois de analisar (novamente) o Lemmy e o Wordpress
Embora todas as plataformas ActivityPub devam, em teoria, ser interoperáveis, quase sempre é necessário algum ajuste para acertar cada integração. Especialmente porque usamos tópicos e a maioria das outras implementações são apenas fluxos de posts.
Wordpress? Ele tem sua própria solução da Automattic. Um pouco estranho com toda essa coisa de amigos, no entanto. Ou você quer dizer aquela coisa de perfil de usuário?
Tenho tentado fazer isso funcionar corretamente, desde que postei em agosto e acho que meu problema pode ser mais simples do que pensei inicialmente.
Eu posso muito bem estar bloqueado de seguir o ator na instância do Mastodon.
Nesse tempo, reinstalei o Discourse, o plugin, movi o site para um servidor diferente e, então, hoje, mudei o nome de domínio pensando que poderia ter sido isso.
Consegui seguir de uma conta mastodon.social e de uma conta de uma instância Sharkey, e ambas funcionaram bem.
Eu não acredito que a instância esteja bloqueada no servidor (novamente, mudei de provedores de servidor e de nomes de domínio), mas gostaria de uma segunda opinião.
[Discourse Activity Pub] GET request to https://mastodon.ie/users/padraig failed: Expected([200, 201, 202, 301, 302, 307, 308]) <=> Actual(401 Unauthorized)
[Discourse Activity Pub] Failed to process https://mastodon.ie/users/padraig: Could not resolve actor
[Discourse Activity Pub] Failed to process https://mastodon.ie/b35f6088-19b9-472d-a277-e0310fed585f: Could not create actor
[Discourse Activity Pub] DiscourseActivityPub::AP::Handlers::Warning
Se você precisar do backtrace e/ou env, por favor me avise
mastodon.ie é permitido aqui activity pub allowed request origins? E você pode precisar ter activity pub require signed requests habilitado ou desabilitado.
Eu tenho isso desativado e nenhuma entrada nas seguintes opções (então isso deve significar que qualquer pessoa pode seguir @general@gamersandgeeks.net, certo?):
Tenho vários fóruns Discourse conectados usando o plugin ActivityPub. Se eu instalar o Discourse AI em um desses fóruns, o bot de IA poderá acessar e usar o conteúdo de outras instâncias federadas para responder a perguntas em sua interface de chat?
@Crakila Por favor, verifique os passos e a discussão neste tópico e continue lá se essas sugestões não resolverem seu problema:
Se o conteúdo for federado para uma instância, um bot de IA nessa instância poderá usá-lo. Todo o conteúdo “remoto” em uma instância tem o mesmo status que o conteúdo “local” para fins de outras funcionalidades.
`skip_email_validation=' para uma instância de Categoria
Message (46 copies reported)
Job exception: undefined method `skip_email_validation=' for an instance of Category
Backtrace
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activemodel-7.2.2.1/lib/active_model/attribute_methods.rb:512:in `method_missing'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/attribute_methods.rb:491:in `method_missing'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/actor_handler.rb:150:in `update_user'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/actor_handler.rb:47:in `block in update_or_create_user'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:359:in `transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:415:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in `transaction'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/actor_handler.rb:45:in `update_or_create_user'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/actor_handler.rb:82:in `update_or_create_user'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:782:in `block (2 levels) in activate!'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:76:in `block in apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:74:in `all?'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:74:in `apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:873:in `block (2 levels) in activate!'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:76:in `block in apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:74:in `all?'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:74:in `apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:24:in `apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:64:in `perform_activity'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:38:in `block in perform_transactions'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:613:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:361:in `transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in `transaction'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:34:in `perform_transactions'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity/announce.rb:26:in `process'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:12:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread'
Essa é a minha conta. É como parece, que eu não verifiquei meu e-mail na instância ou de alguma forma na categoria, e o ActivityPub não sabe como lidar com essa situação?
Existe um plano para tornar os usuários do Discourse também atores?
Vendo o ActivityPub como um protocolo para trabalhar abertamente, este parece ser um passo em falta para usar o Discourse como um lugar seguível para os pensamentos de alguém.
Os usuários do Discourse já são atores do ActivityPub. Você só não pode segui-los. O plugin foi construído para permitir essa possibilidade. A questão é se é sensato.
Não gosto. Isso muda a ideia central dos fóruns para uma instância pura do Mastodon, e para isso já temos uma escolha, o Mastodon. Ainda existe uma grande diferença entre seguir tópicos e seguir pessoas.
Compartilhar conteúdo via ActivityPub é uma coisa totalmente diferente.
Isso mataria pelo menos o meu fórum imediatamente. Mesmo agora, compartilhamentos do ActivityPub são um grande “não” para alguns dos meus usuários. E uma situação em que alguns usuários usariam o Mastodon por completo através do Discourse, e ao mesmo tempo outros não usariam, criaria um conflito gigantesco.
Alguns poderiam dizer que isso é viver no mundo do Mastodon todos os dias, porque mesmo que se participe de um tópico, toda a conversa não é visível, a menos que se visite o original através do navegador. Mas ainda assim — não.
Estou planejando configurar uma plataforma de streaming ao vivo auto-hospedada e usar o Discourse como software de fórum, com o chat ao vivo do Discourse integrado ao streaming ao vivo.
Tenho descoberto softwares do fediverso recentemente e pensei que o Peertube seria ótimo para fazer upload de conteúdo VOD, o que poderia aumentar a descoberta da minha plataforma, pois as pessoas podem ver os vídeos do Mastodon e, em seguida, descobrir o resto do meu site a partir daí.
Eu poderia usar este plugin para permitir que as pessoas usem sua conta AP para fazer login na minha instância do Discourse, como muitos sites têm login do Google/Facebook?
Você acha que a questão de ser sensato pode ser respondida em geral, considerando todos os casos de uso possíveis do Discourse?
No meu caso, ainda estou procurando maneiras de usar o fediverso de forma produtiva. Eu preferiria pensar em público usando uma instância do Discourse como meu jardim digital. Atualmente, a única maneira que vejo de ter um feed público dos meus pensamentos é ter uma conta em uma instância do Mastodon, seguir todas as categorias do meu jardim privado e impulsionar cada mensagem que posto através desta conta.
Eu gostaria de experimentar o uso do Discourse como minha principal conexão com o fediverso.