GitHub

FxEmbed/FxEmbed — Fix X/Twitter and Bluesky embeds! Use multiple images, videos, polls, translations and more on Discord, Telegram and others

FxEmbed — Discord·Telegram에서 X와 Bluesky 게시물 미리보기 개선

FxEmbed는 X/Twitter와 Bluesky 게시물을 Discord, Telegram 등에서 이미지·동영상·투표·번역과 함께 표시하는 프로젝트입니다. Cloudflare Worker 기반이라 Docker에서도 Wrangler로 로컬 Workers 런타임을 실행하며, glibc 호환성 때문에 Alpine 대신 Debian 기반 이미지를 사용합니다.

AI 요약

FxEmbed는 X/Twitter와 Bluesky 게시물의 임베드를 개선해 Discord, Telegram 등에서 여러 이미지와 동영상, 투표, 번역 등을 보여주는 프로젝트입니다. GitHub 저장소에는 Docker Compose로 로컬에서 실행하는 방법이 안내되어 있습니다.

Docker로 로컬 실행

FxEmbed는 Cloudflare Worker로 동작합니다. 따라서 Docker 이미지에서도 일반 Node.js 서버를 띄우지 않고 Wrangler를 통해 로컬 Workers 런타임을 실행합니다. Wrangler의 workerd 바이너리는 glibc에 연결되어 있어 Alpine의 musl 환경에서 안정적으로 실행되지 않으므로, 이미지는 node:24-bookworm-slim을 사용합니다.

사용자 지정 도메인, 브랜딩, 인증 정보가 필요하면 .env.example, wrangler.example.toml, branding.example.json을 각각 복사해 설정 파일을 만든 뒤 편집합니다. 다음 명령으로 이미지를 빌드하고 서비스를 시작합니다.

cp .env.example .env cp wrangler.example.toml wrangler.toml cp branding.example.json branding.json docker compose up -d --build

워커는 http://localhost:8787에서 요청을 받습니다. FxEmbed는 Host 헤더를 기준으로 라우팅하므로, fxtwitter.com 영역을 테스트할 때는 Host와 Discord 봇 User-Agent를 지정합니다.

curl -H "Host: fxtwitter.com" -H "User-Agent: Discordbot/2.0" "http://localhost:8787/user/status/123"

Host 헤더 없이 루트 주소를 열면 로컬 영역 접두사를 확인할 수 있습니다. 도메인 목록 등 빌드 시 포함되는 설정을 바꾼 뒤에는 이미지를 다시 빌드해야 합니다. CREDENTIAL_KEY와 EXCEPTION_DISCORD_WEBHOOK 같은 런타임 비밀값은 셸이나 Compose의 .env 파일에서 전달할 수 있습니다. 서비스는 docker compose down으로 종료합니다. 프로젝트는 MIT 라이선스로 배포합니다.

원문: GitHub / 번역·요약: Trawling