Roteador de links curtos do Discourse | Simplifique URLs de suporte

Já desejou ter um botão “Instalar este tema no seu site” para tudo? Desenvolvi um site para fazer exatamente isso! Você pode usá-lo em https://discourserouter.pyxfluff.dev.

Em vez de dizer algo como:

Você pode visualizar isso em example.com/admin/config/emoji/settings.

… agora você pode fazer:

Aqui está onde você pode alterar isso: https://discourserouter.pyxfluff.dev/admin/config/emoji/settings

Ao visitar o site pela primeira vez, você será solicitado a adicionar seu site, mas ele será lembrado em um cookie, permitindo que você use o mesmo site nas próximas vezes. É uma substituição direta de caminho, sem necessidade de prefixo de caminho. Basta trocar a URL do seu fórum por discourserouter.pyxfluff.dev!

Showcase


Por favor, note que este ainda é um produto novo e podem haver problemas! Você pode relatar todos os problemas, sugestões e outros feedbacks neste tópico aqui. Testei ao máximo de minhas capacidades, mas nunca se pode ter 100% de certeza.

O código-fonte está disponível no GitHub como um projeto em Python (FastAPI) e PRs são sempre bem-vindos.

Custos Operacionais

Atualmente, isso não tem custo para rodar porque o executo no meu servidor em casa, então não há taxas de nuvem além dos US$ 10/ano que pago pelo meu domínio. No entanto, estou pensando em expandi-lo para um domínio próprio no futuro. Atualmente, não tenho uma URL pública para doações, mas se você gostaria de patrocinar um domínio adequado, entre em contato via MP e podemos combinar algo.

Aproveite e me diga o que achou! :slight_smile:

2 curtidas

Basicamente, você obtém informações sobre quem clicou em um link aqui e para onde, se estiver inscrito nisso :thinking: Ou como isso funciona?

Por questões de transparência, aqui estão os logs do servidor quando testei localmente:

Deixei acidentalmente um log de desenvolvimento ativo; no entanto, ele foi desativado em produção a partir deste commit. Não há muito que eu possa fazer sobre os registros de acessos a endpoints do Uvicorn (e não tenho certeza se isso é algo que eu desejaria de qualquer forma, por questões de segurança), mas meu objetivo não é registrar URLs de endpoints, pois acredito na privacidade. De qualquer forma, os logs do servidor estão em uma unidade do systemd que não pretendo acessar, a menos que seja estritamente necessário para rastrear um erro ou algo similar.

O site também está conectado à minha própria instância do PA, para que eu possa saber quantas pessoas o utilizam sem análises invasivas. A conclusão aqui é que não rastreio seu endereço IP, URL do site ou praticamente nada. Tudo o que consigo ver é que alguém visitou o site e foi redirecionado. Sinta-se à vontade para me avisar se tiver alguma preocupação, mas todo o assunto de “registro de solicitações de redirecionamento pelo Uvicorn” é apenas uma falha de design na forma como decidi construir o aplicativo (via cookies e jinja2).

Obviamente, se você não confia em mim por algum motivo, pode simplesmente hospedá-lo você mesmo (farei um guia amanhã), mas você pode auditar o código sozinho; o contêiner é espelhado no GitHub. :slight_smile:

Obviamente, eu não confio em você. Poucos deveriam confiar em você. Você é apenas mais um nome de usuário sem rosto na internet.

Mas posso assumir que sim, você conseguirá essas informações?

1 curtida

Não, a URL do site está em um cookie do navegador que não é salvo nos logs do servidor.

O melhor que posso fazer é publicar o código fonte espelhado, mostrar os logs e descrever claramente quais tecnologias o site está usando (tudo em minha própria infraestrutura). Se você decidir não revisar essas informações ou ainda não acreditar em mim, não há muito que eu possa fazer por você :man_shrugging:

1 curtida

Olá a todos! Fiz uma rápida pesquisa para me ajudar a decidir quantos recursos alocarei para este projeto (tempo de manutenção pessoal, financeiro, etc.). Independentemente da sua opinião sobre o projeto em seu estado atual, preencher o formulário me ajudará muito (há um espaço para dizer o que você não gosta nele se responder ‘não’ à primeira pergunta). Obrigado! :slight_smile:

O problema que tenho com esse tipo de serviço é que eles podem ser descontinuados no futuro, e os URLs podem acabar sendo redirecionados para algo malicioso.

Não tenho dúvida sobre sua boa-fé, mas minha experiência mostra que isso acontece[1], então prefiro não depender disso de forma alguma se puder evitar.


  1. Em um fórum que migrei, muitas imagens estavam hospedadas em um serviço de terceiros que substituiu todos os links de imagens após alguns anos :upside_down_face: ↩︎

2 curtidas

Olá a todos, devido ao baixo uso, vou desativar preventivamente a instância hospedada oficialmente. Estou fazendo isso porque não há evidências de que tenha sido utilizada em nenhum lugar (comprovado pelos 0 acessos nas análises esta semana), então não quero que alguém encontre isso, comece a usar e depois tenha que lidar com links quebrados.

Isso foi apenas um pequeno projeto de fim de semana divertido, então não estou muito chateado. O repositório no GitHub permanecerá ativo, e eu corrigirei quaisquer problemas críticos se for informado, mas, por enquanto, nada de novo. Ele usa quase nenhum recurso para rodar, então qualquer coisa que possa executar Python moderno pode rodar isso. Pode ser reaproveitado para praticamente tudo; eu apenas acabei de chamá-lo de “discourse router” porque esse era o propósito original.

2 curtidas

Pensei que tivesse prometido escrever um README antes, mas acho que não. De qualquer forma, publiquei um guia simples sobre como hospedar ou reaproveitar por conta própria! O repositório ainda está no GitHub, mas vou colar abaixo caso você não queira sair daqui por algum motivo.

Instruções

Configuração

Certifique-se de ter um venv e Python 3.13 ou posterior (testado apenas contra 3.14, mas 3.13 não deve ter problemas; se você estiver com erros de compilação, basta atualizar o Python):

uv venv
source .venv/bin/activate
uv pip install .

Edite seu arquivo de configuração, se desejar:

nano src/backend_config.jsonc

A maioria das configurações é autoexplicativa. web.hostname serve apenas para fins estéticos na interface e não impacta a funcionalidade.

E é isso! Coloque-o para funcionar:

python3 -m src

Você não precisa executar manualmente o aplicativo uvicorn; o módulo Python o executará automaticamente.

1 curtida