Youtube embeds missing

@Iceman 님, 안녕하세요.

말씀하신 내용이 틀린 것은 아닙니다. 다만 아마도 YT 임베드가 작동하지 않아서 답답하신 나머지 문제를 해결하려고 하시는 중인 것 같습니다.

아래 명령을 실행하면:

# time rake posts:rebake_match['youtube',string,100]
           116 / 76598 (0.2%)- 

지연(delay)이 100으로 설정되어 있으므로, 100초마다 게시글 1개만 재베이킹(rebake)됩니다. 이 패턴으로 재베이킹해야 할 게시글이 약 77,000개에 달하므로, 완료하는 데 약 90일이 걸립니다. 제가 100을 사용한 것은 예시일 뿐 권장 사항이 아니었는데, 혼란을 드려 죄송합니다. :slight_smile:

지연을 10초로 변경하더라도 재베이킹에 약 9일이 소요됩니다.

실제로 "YT 케이크"를 재베이킹하고 싶은 속도는 어떻게 되시나요?

각 게시글 아래에 있는 버튼을 클릭하면 관리자로 쉽게 "HTML 재구축"을 실행할 수 있습니다.

감사합니다 @neounix

단일 게시글에서 YT 링크로 시도해 보았습니다:

root@cont-web-only:/var/www/discourse# rake posts:rebake_match['icemanworkingonthisheadache',string,5]
        1 / 1 (100.0%)
1 posts done!

그 게시글을 확인해 보았지만 여전히 링크만 표시되고 원박스(onebox)는 나타나지 않습니다. (캐시 삭제, 쿠키 삭제, 다른 PC에서도 확인해 보았습니다 :P)

감사합니다 @Overgrow.

위와 같은 rebake 명령어 실행 전후로 동일 게시글 및 다른 게시글에서 해당 방법을 모두 시도해 보았지만 성공하지 못했습니다.

@iceman 님,

그것은 꽤 중요한 단서입니다. 이제 rake 작업을 통해 단일 게시물을 다시 생성(rebake)해도 문제가 해결되지 않는다는 것을 알게 되었으며(또한 @Overgrow 님이 제안한 대로 UI에서 HTML을 다시 빌드해도 작동하지 않는다는 것도 확인했습니다), 이는 이전에 말씀하시려던 내용과 일치합니다.

단계별 문제 해결에 감사드립니다.

잠시 생각해 보겠습니다. 그 사이에 문제가 더 명확해졌으므로 다른 분들도 아이디어를 제시할 수 있을 것입니다.


수정:


@Iceman

해결되지 않은 YT 링크 중 하나(예: ‘icemanworkingonthisheadache’ 텍스트를 추가한 곳)를 여기에 올려 주시면, 여기에서 원박스가 정상적으로 작동하는지 확인해 보겠습니다(저도 스테이징 사이트 중 하나에서 시도해 보겠습니다).

네, 알겠습니다 @neounix

어떤 YouTube 영상에서든 이런 일이 발생할 수 있지만, 일관성을 위해 특별히 이 용도로 시도해 본 영상 두 개를 공유합니다:


수정: 네, 여기서는 작동합니다.

참고로 제 설치 환경에서는 미리보기 패널에 표시가 되지 않습니다.

하지만 @Iceman 님의 사이트에서 유튜브가 아닌 다른 1박스들은 모두 정상적으로 렌더링되고 있나요?

안녕하세요 @neounix

네, 다른 모든 원박스가 정상적으로 작동합니다: Discourse, Wordpress, SoundCloud, Facebook, Twitter, Vimeo 등. YT만 URL로 표시됩니다.

해볼 수 있는 방법 중 하나는 서버를 통해 프록시로 연결된 상태에서 Google에 로그인하고 YouTube 사이트를 방문하여 어떤 “흥미로운” 오류 메시지가 표시되는지 확인하는 것입니다.

새로 추가된 게시물에서 작성기에 onebox가 작동하지 않는다면, 기존 게시물을 다시 처리(rebake)하는 것은 의미가 없습니다.

우선 새 게시물에서 onebox가 정상적으로 작동하도록 해야 합니다(최소한 미리보기 패널에 올바르게 표시되도록 해야 합니다).

그리고 참고로, UI에서 HTML 재구성을 하는 것은 rebake와 같은 의미입니다.

그래서, 일주일간의 고생 끝에 일부 진전을 보았지만 결국 벽에 부딪혔습니다.

  • 위에서 언급한 모든 세부 사항은 여전히 유효합니다.

  • 디버깅에 온 힘을 쏟은 끝에, 문제가 다음과 같다는 사실을 알게 되었습니다. 새 Droplet을 만들 당시, 원래 Droplet에서는 할 수 없었던 몇 가지 업데이트를 할 기회를 잡았습니다. 그중 하나가 IPv6였습니다. 결국 Digital Ocean의 IPv6 범위는 어떤 우주적인 이유로 구글에 의해 대부분 차단되어 있었습니다. 그래서 미래를 위한 조언을 드리자면, DO Discourse 설치를 진행할 때 IPv6를 설정하지 마세요. 나중에 그 IPv6를 제거할 수 없기 때문에, Droplet을 변경해야만 합니다.

  • 그 문제를 수정한 후, 모든 것이 예상대로 작동했습니다. 하지만 정상적인 성장(그리고 알파벳의 최근 전술) 때문에 다시 제로베이스로 돌아왔습니다. 이제 이 오류가 발생하고 있으며, Discourse가 onebox를 처리하는 것을 "중단"하는 방법을 알지 못합니다(심지어 YT 도메인을 블랙리스트에 추가해 보았지만 성공하지 못했습니다). 이는 제가 링크한 해당 게시물에서 "1시간 후에 사라져야 한다"고 했지만, 저는 rebake를 동결할 수 없기 때문입니다… 아니면 할 수 있을까요? 해야 할까요? 다른 옵션들은 서버 측 설정을 변경하는 데 의존하지만, 그것은… 더 많은 IP를 추가하는 것일까요? Onebox 호출에 "X-Forwarded-For"를 강제하는 것일까요?

  • 또한, 보너스 질문: 왜 Discourse가 YT 호출의 "부하"를 떠안는 걸까요? 즉, 이 오류는 모든 호출을 수행하는 것으로 플래그가 찍힌 것이 서버의 IP라는 것을 시사합니다(네, 그것은 onebox unfurl 때문이지만), 하지만.. 왜 그것이 페이지를 로드하는 사용자의 몫이 되지 않는 걸까요? 성능 문제 때문일까요?

@Iceman 님 안녕하세요

임시 해결책으로 이 (아주 우아하지는 않은) CSS를 테스트해 보았는데, 원박스를 처리하지 못하게 하는 데 효과가 있는 것 같습니다. 좀 더 나은 방법을 찾을 때까지 켜고 끌 수 있는(추가하고 제거할 수 있는) 일종의 “망치로 파리 때리기” 방식입니다. 시도해 보고 확인해 보세요:

.onebox-body{
    display:none;
}

도움이 되기를 바랍니다.

참고:
몇 개의 원박스 링크에서 테스트해 보았더니 원박스가 사라지고 링크만 남았습니다. 다만 자세히 테스트해 보지는 못했으니 죄송합니다.

현재 처리를 중지하세요. 현재 실행 중인 rebake를 트리거한 것이 무엇인지 아시나요? 백그라운드 작업이라면 rebake old posts count 설정을 0으로 낮추면 됩니다.

그 후, 정규식(regexp)과 일치하는 선택된 YouTube 게시글에 대해 지연을 설정하여 rebake를 사용할 수 있습니다.

먼저 @neounix @Overgrow 두 분 모두 감사합니다.

이 부분에 대해 말씀드리자면:

가능한 한 빨리 테스트해 보겠습니다. 제가 테스트할 때 이를 차단해 주는 것만으로도 더할 나위 없이 좋습니다 :smiley:

@Overgrow님의 질문에 대해서는:

최근에 (여러분 덕분에) 커스텀 rebake를 수행하고 몇 가지 쿼리와 마법을 부리는 법을 배웠습니다. 하지만 이것을 어떻게 알 수 있는지/쿼리할 수 있는지 여쭤봐도 될까요:

즉… Ruby 콘솔에서 하는 건가요, 아니면 Sidekiq에서 무언가를 종료하는 건가요…?

rebake old posts count는 다양한 rake 작업으로 플래그가 지정된 게시글 중 15분마다 처리되는 게시글의 수를 제어합니다.

안녕하세요 @riking,

피드백 주셔서 감사합니다. 간단히 여쭤볼게요… 그 설정을 어떻게 변경하나요? Rails 콘솔인가요?

@Iceman

관리자 UI에서 설정할 수 있는 항목이에요

정말 멍청한 것 같아 :sweat_smile: @neounix 님 감사합니다!

하지만 0으로 설정할 수는 없어요. UI에서 값이 1부터 2000000000 사이여야 한다고 나와 있거든요. 그래서 1로 설정하고 님의 해킹 기법을 함께 사용해야 할 것 같아요. 그러면 밴이 풀리는지 확인할 수 있을 거예요.

(다른 옵션들은 새 IP, LB, 또는 모든 요청에 X-Forwarded-For를 직접 강제하는 것이라 훨씬 무겁고, Discourse가 어떻게 작동하는지 망치기 싫으니까요 :sweat:)

곧 업데이트할게요!

참고로 … 제로로 설정해야 한다면, 아마도 직접 DB UPDATE 쿼리(또는 Rails, 이 부분은 제가 잘 모르겠습니다)를 사용하여 수행할 수 있을 겁니다.

글쎄, 소용없었어. 값을 1로 두고 아무것도 표시하지 않는 해킹을 적용했는데, 5시간이 지나도 밴이 그대로야. 최악의 점은? 당연히 그들에게 연락할 방법이 없으니, 해결책을 추측하고 있을 뿐이야. :sweat:

인내심을 가져야 합니다. 제 경험상 밴이 해제되기까지 최대 2~3일 정도 걸릴 수 있습니다. 해당 IP에 대한 추가 요청이 없는지 확인만 하세요.

실행할 rebake 작업이 남아 있는지 확인할 수 있습니다. 힌트는 코드에 있습니다(이 줄은 rebake old posts count 설정으로 제한된 배경에서 rebaking이 필요한 게시물을 선택합니다):

다음과 같은 게시물을 찾아보세요:

WHERE (((baked_version IS NULL) OR (baked_version < 2)) AND (deleted_at IS NULL))