matrix에 텔레그램 브릿지 붙이기

1. 브릿지란?

저도 모릅니다. 이거 연결하면 텔레그램에 있는 메세지를 전부 matrix로 받아볼 수 있는 것만 알아요. 움직이는 거 보니까 일종의 외부 접속 어플리케이션으로 인식하는 거 같더라고요.

2. 사용하려면?

일단 matrix-telegram 사이를 연결해주는 브릿지 서버(깃헙)를 올리던가 남이 만들어둔 브릿지 봇을 써야합니다. 남이 만들어둔 브릿지 봇은 여기서 참고(링크)

3. 브릿지 서버를 올려보아요.

저는 브릿지 서버를 올리는 방법을 기록할 거예요. 공식 가이드(설치, 도커)참고하면 되는데 이거 진짜 설정 복잡합니다.

이게 깃헙에 올라가있는 예시 링크인데 길이 보세요. (링크)

차근차근 갑시다. 도커 컴포즈 기준이에요.

homeserver:
    address: [https://실제 서비스 주소]
    domain: [핸들 주소]
    verify_ssl: true
    http_retry_cont: 4
    status_endpoint: [비워두세요]
    message_send_checkpoint_endpoint: [비워두세요]
    async_media: false

대부분의 값은 디폴트 값으로 뒀으니 주석 참고하세요.

appservice:
    address: [http://도커로 올린 브릿지 서버 이름:29317]
    tls_cert: false
    tls_key: false

    hostname: 0.0.0.0
    port: 29317
    max_body_size: 1

    public:
        enabled: false
        prefix: /public
        external: [http://실제 서비스 주소/public]

    provisioning:
        enabled: true
        prefix: /_matrix/provision
        shared_secret: [자동생성]

    id: telegram
    bot_username: telegrambot
    bot_displayname: Telegram bridge bot
    bot_avatar: mxc://maunium.net/tJCRmUyJDsgRNgqhOgoiHWbX

    ephemeral_events: true

    as_token: [자동생성]
    hs_token: [자동생성]

metrics, manhole 설정은 건드리지 않았습니다.

bridge:

    ...

    double_puppet_server_map:
        [핸들 주소]: [https://실제 서비스 주소]
    double_puppet_allow_discovery: false
    login_shared_secret_map:
        [핸들 주소]: as_token:[자유 랜덤 문자열]

double puppeting은 주석에도 설명이 있지만, 텔레그램에서 올라온 내 글과 매트릭스에서 올라온 내 글을 모두 볼 수 있게 해주는 거예요. 그 뒷부분도 저는 기존 예시대로 유지했습니다.

그 다음으로 중요한 부분은 bridge안에 있는 encryption 설정입니다.

    ...

    permissions:
        [유저/서버]: [권한]

유저/서버 '*' : 모든 매트릭스 유저 '도메인': 특정 서버의 모든 유저 '유저 핸들': 사용할 수 있는 유저

권한 'relaybot': 커맨드는 사용할 수 없고 브릿지 연결로만 사용할 수 있는 권한 'user': relaybot 권한에 브릿지를 만들 수 있는 접속 명령 사용 가능 'puppeting': user 권한에 텔레그램 계정에 로그인 할 수 있는 권한 'full': 브릿지 봇의 모든 권한 사용 가능. matrix 로그인 가능 'admin': 브릿지 봇의 모든 권한 및 관리 명령어 사용 가능

써두긴 했는데 정확한 건 설정 예시 참조해주세요.

    relaybot:

        ...

        whitelist:
        - [유저명]

봇 명령을 사용할 수 있는 유저 목록

telegram:
    api_id: [https://my.telegram.org/apps에서 얻은 api_id]
    api_hash: [https://my.telegram.org/apps에서 얻은 api_hash]
    bot_token: [https://t.me/BotFather를 통해 얻은 봇 토큰]

   ...

    device_info:
        device_model: [도커 컴포즈에서 설정한 브릿지 서버 이름]

* 경고 이 바로 아래 있는

    server:
        enabled: false

는 반드시 false로 유지해야합니다. 한 번이라도 true로 바꾸면 데이터베이스를 갈아엎어야해요. 저는 데이터베이스 필요없다는 걸 깨닫고 해제해서 해결함.

4. 이제는 matrix 서버에 연결할 차례

여기까지 진행했으면 브릿지 서버에는 큰 문제가 없을 거예요.

그 다음은 homeserver.yaml입니다.

app_service_config_files:
    - /data/matrix-telegram/registration.yaml
    - /data/matrix-telegram/doublepuppet.yaml

일단 여기에 이렇게 설정을 추가해주고, registration.yaml은 자동으로 생기는 거니 건드리지 않으면 됩니다. doublepuppet.yaml이 페이지를 참고해주세요.

id: doublepuppet
url:
as_token: [아래 설명]
hs_token: [안 쓰이는 거니까 아무거나 넣으세요]
sender_localpart: [적당히 아무거나]
rate_limited: false
namespaces:
  users:
  - regex: '@.*:내\.도메인'
    exclusive: false

as_token은 bridge 설정 안에 있는

    login_shared_secret_map:
        [핸들 주소]: as_token:[자유 랜덤 문자열]

의 as_token 뒤의 문자열을 넣으면 됩니다.

5. 끝!

정보가 부족한 부분이 있거나 잘못된 부분이 있으면 mastodon로 연락주세요.


#matrix #삐삐쀼쀼