Discourse Shortlink Router | 지원 URL 단순화

모든 것에 “이 테마를 내 사이트에 설치” 버튼이 있으면 좋겠다고 생각해 본 적 있나요? 바로 그 일을 해 주는 사이트를 개발했습니다! https://discourserouter.pyxfluff.dev 에서 사용할 수 있습니다.

예전에는 이렇게 말해야 했습니다:

예: example.com/admin/config/emoji/settings 에서 확인할 수 있습니다.

… 하지만 이제는 이렇게 할 수 있습니다:

예: 여기서 이 설정을 변경할 수 있습니다: https://discourserouter.pyxfluff.dev/admin/config/emoji/settings

사이트를 처음 방문할 때 내 사이트를 추가하도록 프롬프트가 표시됩니다. 하지만 쿠키에 저장되므로 이후에는 같은 사이트를 계속 사용할 수 있습니다. 이는 직접 경로 대체 방식이며, 경로 접두사는 필요하지 않습니다. 포럼 URL을 discourserouter.pyxfluff.dev로 교체하기만 하면 됩니다!

쇼케이스


이것은 아직 새로운 제품이며 문제가 있을 수 있다는 점을 유의해 주세요. 모든 문제, 의견 및 기타 피드백은 이 스레드에서 보고할 수 있습니다. 제 능력范围内에서 최대한 테스트했지만, 100% 확실하다고 단정 지을 수는 없습니다.

소스 코드는 GitHub에서 Python (FastAPI) 프로젝트로 공개되어 있으며, PR(풀 리퀘스트)은 항상 환영합니다.

운영 비용

현재는 제 가정용 서버에서 실행하고 있어 클라우드 비용이 없고, 도메인 비용($10/년)만 발생하므로 실행 비용이 전혀 들지 않습니다. 하지만 궁극적으로 이 서비스를 자체 도메인으로 확장할 계획입니다. 현재 공개된 후원 URL은 없지만, 정식 도메인을 후원하고 싶으시다면 개인 메시지(PM)로 연락 주시면 방법을 협의해 보겠습니다.

즐기시면서 여러분의 생각을 알려주세요! :slight_smile:

2개의 좋아요

대략적으로 말하면, 구독한 상태라면 여기서 링크를 클릭한 사람이 누구이고 어디로 이동했는지에 대한 정보를 얻는다는 거죠 :thinking: 아니면 이게 어떻게 작동하는 건가요?

투명성을 위해 로컬에서 테스트했을 당시 서버 로그를 공유합니다:

개발용 로그를 실수로 남겨두긴 했지만, 해당 로그는 이 커밋 이후 프로덕션 환경에서 비활성화되었습니다. Uvicorn이 엔드포인트 접근을 기록하는 것에 대해 제가 할 수 있는 일은 많지 않습니다(보안상 원치 않는 부분이기도 하지만), 제 목표는 프라이버시를 중요하게 생각하기 때문에 엔드포인트 URL을 로그로 남기지 않는 것입니다. 어쨌든, 서버 로그는 systemd 유닛에 저장되어 있으며, 오류를 추적하는 등 엄격히 필요한 경우가 아니라면 이를 공개할 의도는 없습니다.

웹사이트는 제 개인 PA 인스턴스와 연결되어 있어, 침습적인 분석 도구 없이도 얼마나 많은 사람이 사용하는지 파악할 수 있습니다. 결론적으로 저는 사용자의 IP 주소, 사이트 URL, 또는 사실상 어떤 정보도 추적하지 않습니다. 제가 확인할 수 있는 것은 단순히 누군가 사이트를 방문하여 리다이렉트되었다는 사실뿐입니다. 우려 사항이 있으시면 편하게 말씀해 주십시오. 다만 'Uvicorn이 리다이렉트 요청을 기록한다’는 문제는 제가 앱을 구축하는 방식(쿠키 및 jinja2 사용)에서 비롯된 설계상의 결함일 뿐입니다.

물론 어떤 이유에서든 저를 신뢰하지 않으신다면 직접 호스팅하실 수 있습니다(내일 가이드를 작성할 예정입니다). 또한 코드를 직접 감사할 수 있으며, 컨테이너는 GitHub에 미러링되어 있습니다. :slight_smile:

당신을 믿지 않는다는 건 당연합니다. 당신을 믿어야 할 사람은 적습니다. 당신은 그저 인터넷 속의 또 다른 익명 사용자일 뿐이니까요.

하지만 네, 그 정보를 제공하겠다는 뜻으로 받아들이면 되나요?

1개의 좋아요

아니요, 사이트 URL은 서버 로그에 저장되지 않는 브라우저 쿠키에 포함되어 있습니다.

제가 할 수 있는 최선은 미러링된 소스를 공개하고, 로그를 보여주며, 사이트에서 사용하는 기술(모두 제 자체 인프라에서)을 명확히 설명하는 것입니다. 만약 해당 정보를 검토하지 않거나 여전히 저를 믿지 않는다면, 제가 더 이상 할 수 있는 일은 많지 않습니다 :man_shrugging:

1개의 좋아요

여러분 안녕하세요! 이 프로젝트에 할당할 리소스(개인 유지보수 시간, 비용 등)를 결정하는 데 도움이 될 간단한 설문조사를 만들었습니다. 프로젝트의 현재 상태에 대한 여러분의 생각이 어떠하든, 양식을 작성해 주시면 큰 도움이 됩니다 (첫 번째 질문에 '아니요’라고 답하신 경우, 마음에 들지 않는 점을 적을 자리가 있습니다). 감사합니다! :slight_smile:

https://survey.pyxfluff.dev/s/cmohal7ya0000k6014jvcclgk

이런 종류의 서비스에 대해 제가 가진 문제는, 미래에 서비스가 중단될 수 있고 실제로 중단될 것이며, URL이 악성 사이트로 리디렉션될 수 있다는 점입니다.

질문자분의 선의에는 의심의 여지가 없지만, 제 경험상 그런 일이 실제로 발생하기[1] 때문에 가능하면 이에 의존하지 않는 편이 낫다고 생각합니다.


  1. 이전으로 이관한 포럼에서 많은 이미지가 제3자 서비스에 호스팅되어 있었지만, 몇 년 후 모든 이미지 링크가 오버라이드되었습니다 :upside_down_face: ↩︎

2개의 좋아요

안녕하세요. 낮은 사용률로 인해 공식 호스팅 인스턴스를 선제적으로 종료할 예정입니다. 이번 주 분석 데이터 히트가 0건인 것을 보면 어디에서도 사용된 흔적이 없기 때문에, 나중에 누군가 이 서비스를 발견해 사용하다가 죽은 링크를 남기는 일이 생기는 것을 방지하고 싶습니다.

이것은 단순한 주말 프로젝트였기 때문에 크게 아쉬워하지는 않습니다. GitHub 저장소는 계속 유지할 것이며, 중대한 문제가 알려지면 수정해 드리겠지만, 지금은 새로운 업데이트는 없습니다. 실행에 거의 리소스가 필요하지 않기 때문에, 최신 Python을 실행할 수 있는 환경이라면 이 서비스도 실행할 수 있습니다. 사실상 모든 용도로 재활용할 수 있으며, 원래 의도가 그랬기 때문에 이름을 "discourse router"로 지었을 뿐입니다.

2개의 좋아요

얼마 전에 README를 작성하겠다고 약속했던 것 같은데, 아마도 그러지 못했던 것 같습니다. 어쨌든, 셀프 호스팅하거나 재사용하는 방법에 대한 간단한 가이드를 게시했습니다! 저장소는 여전히 GitHub에 있지만, 혹시 원치 않는다면 아래에 붙여넣어 두겠습니다.

설치 방법

설정

venv와 Python 3.13 이상이 있는지 확인하세요 (3.14로만 테스트했지만 3.13에는 문제가 없어야 합니다. 컴파일러 오류가 발생하면 Python을 업데이트하세요):

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

선택적으로 설정 파일을 편집합니다:

nano src/backend_config.jsonc

대부분의 설정은 설명이 불필요할 정도로 명확합니다. web.hostname은 UI에서 장식적인 목적으로만 사용되며 기능에는 영향을 미치지 않습니다.

그리고 끝! 실행해 보세요:

python3 -m src

uvicorn 앱을 수동으로 실행할 필요가 없습니다. Python 모듈이 자동으로 실행합니다.

1개의 좋아요