洪 民憙 (Hong Minhee) :nonbinary:'s avatar

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,108 following1,899 followers

An intersectionalist, feminist, and socialist living in Seoul (UTC+09:00). @tokolovesme's spouse. Who's behind @fedify, @hollo, and @botkit. Write some free software in , , , & . They/them.

서울에 사는 交叉女性主義者이자 社會主義者. 金剛兔(@tokolovesme)의 配偶者. @fedify, @hollo, @botkit 메인테이너. , , , 等으로 自由 소프트웨어 만듦.

()

Pinned

@hongminhee@hollo.social

Hello! I'm Hong Minhee (洪 民憙), an open source software engineer in my late 30s, living in Seoul, Korea. I'm bisexual and non-binary (they/them), and an enthusiastic advocate of free/open source software and the fediverse.

I work full-time on @fedify, an ActivityPub server framework in TypeScript, funded by @sovtechfund. I'm also the creator of @hollo, a single-user ActivityPub microblog; @botkit, an ActivityPub bot framework; Hackers' Pub, a fediverse platform for software developers; and LogTape, a logging library for JavaScript and TypeScript.

I have a long interest in East Asian languages (CJK) and Unicode. I post mostly in English here, though occasionally in Japanese or in mixed-script Korean (國漢文混用體), a traditional writing style that interleaves Chinese characters with the native Korean alphabet. Wanting to write in that style was actually one of the reasons I joined the fediverse. Feel free to talk to me in English, Korean, Japanese, or even Literary Chinese!

en.wikipedia.org

Korean mixed script - Wikipedia

Pinned

はじめまして!ソウル在住の30代後半のオープンソースソフトウェアエンジニア、洪 民憙ホン・ミンヒと申します。バイセクシュアル(bisexual)・ノンバイナリー(non-binary)で、自由・オープンソースソフトウェア(F/OSS)とフェディバース(fediverse)の熱烈な支持者です。

STF(@sovtechfund)の支援を受け、TypeScript用ActivityPubサーバーフレームワーク「@fedify」の開発に専念しています。他にも、おひとり様向けのActivityPubマイクロブログ「@hollo」、ActivityPubボットフレームワーク「@botkit」、ソフトウェア開発者向けフェディバースプラットフォームHackers' Pub、JavaScript・TypeScript用ロギングライブラリLogTapeなどの制作者でもあります。

東アジア言語(いわゆるCJK)とUnicodeにも興味があります。このアカウントでは主に英語で投稿していますが、時々日本語や国漢文混用体(漢字ハングル混じり文)の韓国語でも書いています。実はこの文体で書きたくてフェディバースを始めた、という経緯もあります。日本語、英語、韓国語、漢文でも気軽に話しかけてください!

speakerdeck.com

国漢文混用体からHolloまで

本発表では、韓国語の「国漢文混用体」(漢字ハングル混じり文)を自分のフェディバース投稿に実装したいという小さな目標から始まった旅路を共有します。 この目標を達成するために、ActivityPubのJSON-LDの複雑さやHTTP Signatures、WebFingerなどの仕様を理解する必要性に…

Pinned

安寧(안녕)하세요! 저는 서울에 살고 있는 30() 後半(후반)의 오픈 소스 소프트웨어 엔지니어 洪民憙(홍민희)입니다. 兩性愛者(양성애자)(bisexual)이자 논바이너리(non-binary)이며, 自由(자유)·오픈 소스 소프트웨어(F/OSS)와 聯合宇宙(연합우주)(fediverse)의 熱烈(열렬)支持者(지지자)이기도 합니다.

STF(@sovtechfund)의 支援(지원)을 받아 TypeScript() ActivityPub 서버 프레임워크 @fedify 開發(개발)專業(전업)으로 ()하고 있습니다. 그 ()에도 싱글 유저() ActivityPub 마이크로블로그 @hollo, ActivityPub 봇 프레임워크 @botkit, 소프트웨어 開發者(개발자)를 위한 聯合宇宙(연합우주) 플랫폼 Hackers' Pub, JavaScript·TypeScript() 로깅 라이브러리 LogTape ()製作者(제작자)이기도 합니다.

()아시아 言語(언어)(이른바 CJK)와 Unicode에도 關心(관심)이 많습니다. 이 計定(계정)에서는 ()英語(영어)로 포스팅하지만, 때때로 日本語(일본어)國漢文混用體(국한문 혼용체) 韓國語(한국어)로도 씁니다. 聯合宇宙(연합우주)에 오게 된 動機(동기) () 하나가 바로 國漢文混用體(국한문 혼용체)로 글을 쓰고 싶었기 때문이기도 하고요. 韓國語(한국어), 英語(영어), 日本語(일본어), 아니면 漢文(한문)으로도 말을 걸어주세요!

logtape.org

LogTape

Unobtrusive logging library with zero dependencies—library-first design for Deno, Node.js, Bun, browsers, and edge functions

@thisismissem@hachyderm.io

In other news, I'm almost there with a version 0.1.0 of FIRES

I've just authentication to land, and then you'll be able to spin up the FIRES reference server and create Labels for labelling things in the future (label vocabularies)

These labels will then be used for the Datasets which will be in 0.2.0 of FIRES

For the full diff of all the work that has gone into FIRES over the last few months, have a look at: github.com/fedimod/fires/compa

Screenshot of the website linked, showing changes to FediMod FIRES since commit d6e10be (~December 2024), with a total change of 12,409 additions and 4400 deletions across 115 files and 141 commits.
ALT text

Screenshot of the website linked, showing changes to FediMod FIRES since commit d6e10be (~December 2024), with a total change of 12,409 additions and 4400 deletions across 115 files and 141 commits.

@julian@community.nodebb.org
<p>Does anybody know what exactly Pleroma needs for a valid Webfinger check? I'm attempting to figure out why <code>@jmtd@pleroma.debian.social</code> won't resolve in NodeBB, and it's because the webfinger call returns <code>400 Bad Request</code>.</p> <p>NodeBB is calling <code>https://pleroma.debian.social/.well-known/webfinger?resource=acct%3Ajmtd%40pleroma.debian.social</code> with <code>User-Agent</code> and <code>Content-Type</code> headers (curiously, it's <em>not</em> sending <code>Accept</code>, but it also fails if that header is set, so that's irrelevant.)</p> <p>Navigating to that webfinger url in the browser returns XML, which is :grimacing: but I'm not even getting that when NodeBB makes the call.</p>

Does anybody know what exactly Pleroma needs for a valid Webfinger check? I'm attempting to figure out why @jmtd@pleroma.debian.social won't resolve in NodeBB, and it's because the webfinger call returns 400 Bad Request.

NodeBB is calling https://pleroma.debian.social/.well-known/webfinger?resource=acct%3Ajmtd%40pleroma.debian.social with User-Agent and Content-Type headers (curiously, it's not sending Accept, but it also fails if that header is set, so that's irrelevant.)

Navigating to that webfinger url in the browser returns XML, which is :grimacing: but I'm not even getting that when NodeBB makes the call.

@hongminhee@hackers.pub

Fedify에 드디어 RFC 9421을 얼추 구현했고, 이제 상호운용성 테스트를 위해 Mastodon의 특정 브랜치를 실제로 인스턴스로 띄워서 액티비티를 송수신해봐야 한다. 그런데 Mastodon 띄우기가 너무나 귀찮다… (Mastodon 띄우기 귀찮아서 ActivityPub 개발 시작한 사람.)

hollo.social

Looking for #ActivityPub imple…

Looking for #ActivityPub implementations with #RFC9421 support! 🔍 As mentioned in the [Fedify announcement] below, I've implemented [RFC 9421] (HTTP Message Signatures) and need to verify its interoperability with other ActivityPub implementations. The challenge is that most major ActivityPub projects don't seem to have full RFC 9421 implementations in production yet. If you're working on an ActivityPub project that: - has implemented RFC 9421 (even in a development branch) - is currently implementing it - has plans to implement it soon Please reach out! I'd love to collaborate on interoperability testing to ensure our implementations work properly with each other before merging this into #Fedify's main branch. Any leads or connections would be greatly appreciated! 🙏 #fedidev [Fedify announcement]: https://hollo.social/@fedify/0196b3e9-275d-7141-b228-9e978521d3d9 [RFC 9421]: https://www.rfc-editor.org/rfc/rfc9421

@hongminhee@hollo.social

Looking for implementations with support! 🔍

As mentioned in the Fedify announcement below, I've implemented RFC 9421 (HTTP Message Signatures) and need to verify its interoperability with other ActivityPub implementations.

The challenge is that most major ActivityPub projects don't seem to have full RFC 9421 implementations in production yet. If you're working on an ActivityPub project that:

  • has implemented RFC 9421 (even in a development branch)
  • is currently implementing it
  • has plans to implement it soon

Please reach out! I'd love to collaborate on interoperability testing to ensure our implementations work properly with each other before merging this into 's main branch.

Any leads or connections would be greatly appreciated! 🙏

rfc-editor.org

RFC 9421: HTTP Message Signatures

This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.

@hongminhee@hollo.social · Reply to David Roetzel

@dave @renchap I've just implemented RFC 9421 in Fedify with both verification and signing support, including the double-knocking mechanism. I was actually looking for other ActivityPub implementations to test interoperability with.

I'd love to collaborate on testing between Fedify and Mastodon. Our implementation also prioritizes RFC 9421 first and falls back to draft cavage if needed, similar to the approach described in the ActivityPub and HTTP Signatures spec.

Would you be interested in coordinating some interoperability tests? Feel free to reach out if this sounds helpful for both our implementations!

@hongminhee@hollo.social

Looking for implementations with support! 🔍

As mentioned in the Fedify announcement below, I've implemented RFC 9421 (HTTP Message Signatures) and need to verify its interoperability with other ActivityPub implementations.

The challenge is that most major ActivityPub projects don't seem to have full RFC 9421 implementations in production yet. If you're working on an ActivityPub project that:

  • has implemented RFC 9421 (even in a development branch)
  • is currently implementing it
  • has plans to implement it soon

Please reach out! I'd love to collaborate on interoperability testing to ensure our implementations work properly with each other before merging this into 's main branch.

Any leads or connections would be greatly appreciated! 🙏

rfc-editor.org

RFC 9421: HTTP Message Signatures

This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.

We're excited to announce that we've implemented RFC 9421 (HTTP Message Signatures) in , complete with our double-knocking mechanism to maintain backward compatibility with the draft cavage version.

This implementation includes both signature generation and verification, meaning is used when both sending and receiving activities. While we haven't merged the RFC 9421 implementation branch yet, we're currently conducting interoperability tests with development versions of Mastodon and other implementations. Once these tests confirm compatibility, we'll proceed with the merge.

As noted in the attached docs, although RFC 9421 is the final and official standard for HTTP Signatures, the draft cavage version remains widely used across the . Our double-knocking mechanism ensures maximum compatibility by trying the RFC 9421 version first, then falling back to draft cavage if needed.

Currently, we support RSA-PKCS-v1.5 key pairs for generating HTTP Message Signatures, with plans to expand to other signature types in future releases.

We look forward to contributing to a more standardized and secure fediverse!

HTTP Message Signatures

This API is available since Fedify 1.6.0.

RFC 9421, also known as HTTP Message Signatures, is the final revision of the HTTP Signatures specification. Although it is the official standard, it is not widely used in the fediverse yet. As of May 2025, major ActivityPub implementations, such as Mastodon, et al., still rely on the draft cavage version of HTTP Signatures for signing portable activities.

Fedify automatically signs activities with the sender's private key if the actor keys dispatcher is set and the actor has any RSA-PKCS#1-v1.5 key pair. If there are multiple key pairs, Fedify selects the first RSA-PKCS#1-v1.5 key pair among them.

NOTE

Although HTTP Message Signatures support other than RSA-PKCS#1-v1.5, Fedify currently supports only RSA-PKCS#1-v1.5 key pairs for generating HTTP Message Signatures. This limitation will be lifted in the future releases.
ALT text

HTTP Message Signatures This API is available since Fedify 1.6.0. RFC 9421, also known as HTTP Message Signatures, is the final revision of the HTTP Signatures specification. Although it is the official standard, it is not widely used in the fediverse yet. As of May 2025, major ActivityPub implementations, such as Mastodon, et al., still rely on the draft cavage version of HTTP Signatures for signing portable activities. Fedify automatically signs activities with the sender's private key if the actor keys dispatcher is set and the actor has any RSA-PKCS#1-v1.5 key pair. If there are multiple key pairs, Fedify selects the first RSA-PKCS#1-v1.5 key pair among them. NOTE Although HTTP Message Signatures support other than RSA-PKCS#1-v1.5, Fedify currently supports only RSA-PKCS#1-v1.5 key pairs for generating HTTP Message Signatures. This limitation will be lifted in the future releases.

Double-knocking HTTP Signatures

This API is available since Fedify 1.6.0.

As you read above, there are two revisions of HTTP Signatures: the draft cavage version and the RFC 9421 version. The draft cavage version is declared as obsolete, but it is still widely used in the fediverse, and many ActivityPub implementations still rely on it. On the other hand, the RFC 9421 version is the official standard, but it is not widely used yet.

To support both versions of HTTP Signatures, Fedify uses the double-knocking mechanism: trying one version, then falling back to another if rejected. If it's the first encounter with the recipient server, Fedify tries the RFC 9421 version first, and if it fails, it falls back to the draft cavage version. If the recipient server accepts the RFC 9421 version, Fedify remembers it and uses the RFC 9421 version for the next time. If the recipient server rejects the RFC 9421 version, Fedify falls back to the draft cavage version and remembers it for the next time.
ALT text

Double-knocking HTTP Signatures This API is available since Fedify 1.6.0. As you read above, there are two revisions of HTTP Signatures: the draft cavage version and the RFC 9421 version. The draft cavage version is declared as obsolete, but it is still widely used in the fediverse, and many ActivityPub implementations still rely on it. On the other hand, the RFC 9421 version is the official standard, but it is not widely used yet. To support both versions of HTTP Signatures, Fedify uses the double-knocking mechanism: trying one version, then falling back to another if rejected. If it's the first encounter with the recipient server, Fedify tries the RFC 9421 version first, and if it fails, it falls back to the draft cavage version. If the recipient server accepts the RFC 9421 version, Fedify remembers it and uses the RFC 9421 version for the next time. If the recipient server rejects the RFC 9421 version, Fedify falls back to the draft cavage version and remembers it for the next time.

@dansup@mastodon.social

I shipped a fix to fedidb.com addressing missing servers, the culprit was our updated crawler robots.txt logic.

Next up: software version tracker, feature matrix, FEP Library, People Directory, Dev Tools, and Starter Kits.

The fedi deserves great tools. We deliver. ✨

New FediDB software version tracker, showing Mastodon version releases
ALT text

New FediDB software version tracker, showing Mastodon version releases

New FediDB software version tracker, showing Mastodon version release notes
ALT text

New FediDB software version tracker, showing Mastodon version release notes

We're excited to announce that we've implemented RFC 9421 (HTTP Message Signatures) in , complete with our double-knocking mechanism to maintain backward compatibility with the draft cavage version.

This implementation includes both signature generation and verification, meaning is used when both sending and receiving activities. While we haven't merged the RFC 9421 implementation branch yet, we're currently conducting interoperability tests with development versions of Mastodon and other implementations. Once these tests confirm compatibility, we'll proceed with the merge.

As noted in the attached docs, although RFC 9421 is the final and official standard for HTTP Signatures, the draft cavage version remains widely used across the . Our double-knocking mechanism ensures maximum compatibility by trying the RFC 9421 version first, then falling back to draft cavage if needed.

Currently, we support RSA-PKCS-v1.5 key pairs for generating HTTP Message Signatures, with plans to expand to other signature types in future releases.

We look forward to contributing to a more standardized and secure fediverse!

HTTP Message Signatures

This API is available since Fedify 1.6.0.

RFC 9421, also known as HTTP Message Signatures, is the final revision of the HTTP Signatures specification. Although it is the official standard, it is not widely used in the fediverse yet. As of May 2025, major ActivityPub implementations, such as Mastodon, et al., still rely on the draft cavage version of HTTP Signatures for signing portable activities.

Fedify automatically signs activities with the sender's private key if the actor keys dispatcher is set and the actor has any RSA-PKCS#1-v1.5 key pair. If there are multiple key pairs, Fedify selects the first RSA-PKCS#1-v1.5 key pair among them.

NOTE

Although HTTP Message Signatures support other than RSA-PKCS#1-v1.5, Fedify currently supports only RSA-PKCS#1-v1.5 key pairs for generating HTTP Message Signatures. This limitation will be lifted in the future releases.
ALT text

HTTP Message Signatures This API is available since Fedify 1.6.0. RFC 9421, also known as HTTP Message Signatures, is the final revision of the HTTP Signatures specification. Although it is the official standard, it is not widely used in the fediverse yet. As of May 2025, major ActivityPub implementations, such as Mastodon, et al., still rely on the draft cavage version of HTTP Signatures for signing portable activities. Fedify automatically signs activities with the sender's private key if the actor keys dispatcher is set and the actor has any RSA-PKCS#1-v1.5 key pair. If there are multiple key pairs, Fedify selects the first RSA-PKCS#1-v1.5 key pair among them. NOTE Although HTTP Message Signatures support other than RSA-PKCS#1-v1.5, Fedify currently supports only RSA-PKCS#1-v1.5 key pairs for generating HTTP Message Signatures. This limitation will be lifted in the future releases.

Double-knocking HTTP Signatures

This API is available since Fedify 1.6.0.

As you read above, there are two revisions of HTTP Signatures: the draft cavage version and the RFC 9421 version. The draft cavage version is declared as obsolete, but it is still widely used in the fediverse, and many ActivityPub implementations still rely on it. On the other hand, the RFC 9421 version is the official standard, but it is not widely used yet.

To support both versions of HTTP Signatures, Fedify uses the double-knocking mechanism: trying one version, then falling back to another if rejected. If it's the first encounter with the recipient server, Fedify tries the RFC 9421 version first, and if it fails, it falls back to the draft cavage version. If the recipient server accepts the RFC 9421 version, Fedify remembers it and uses the RFC 9421 version for the next time. If the recipient server rejects the RFC 9421 version, Fedify falls back to the draft cavage version and remembers it for the next time.
ALT text

Double-knocking HTTP Signatures This API is available since Fedify 1.6.0. As you read above, there are two revisions of HTTP Signatures: the draft cavage version and the RFC 9421 version. The draft cavage version is declared as obsolete, but it is still widely used in the fediverse, and many ActivityPub implementations still rely on it. On the other hand, the RFC 9421 version is the official standard, but it is not widely used yet. To support both versions of HTTP Signatures, Fedify uses the double-knocking mechanism: trying one version, then falling back to another if rejected. If it's the first encounter with the recipient server, Fedify tries the RFC 9421 version first, and if it fails, it falls back to the draft cavage version. If the recipient server accepts the RFC 9421 version, Fedify remembers it and uses the RFC 9421 version for the next time. If the recipient server rejects the RFC 9421 version, Fedify falls back to the draft cavage version and remembers it for the next time.

@thisismissem@hachyderm.io

TIL: popes choose a new name once they are elected, so Robert Francis Prevost becomes Pope Leo XIV.

@peremen@silicon.moe · Reply to peremen

유심 식별번호:
- IMSI('임지'라고도 읽음): 이동통신망에서 가입자를 식별할 때 사용하는 번호. SIM에 기록되어 있다.
- ICCID: 신용카드의 카드번호와 동일한 규칙으로 부여되며, 물리적인 SIM 카드를 식별한다. 이동통신망 그 자체에서는 사용되지 않으며, 통신사 영업 전산에서 사용한다.
유심 인증키:
- K_i/OPc: 털리면 엿 되는 것.
- KIc/KID: 원격 접근에 사용하는 인증 키. KIc는 암호화, KID는 RC/CC/DS를 담당함.(GSMA FS.22 § 4 참조)
- KIK: 위 두 KIc, KID를 보호하기 위한 원격 프로비저닝 키.
유심 비밀번호:
- PIN1/PUK1: SIM 카드 탈취를 막기 위한 비밀번호. SIM에 최초 전원 인가 후 사용하기 전에 입력해야 함.
- PIN2/PUK2: SIM 카드의 특정 설정에 접근하기 위한 비밀번호. 통신사에 따라서 사용되지 않는 경우가 있음.
- ADM: SIM 카드의 파일을 조작하기 위한 비밀번호.

@peremen@silicon.moe

이제 국회 청문회나 공개되는 정보에서도 IMSI와 IMEI와 같은 약어가 나온다. 그러나 "유심 식별번호"나 "유심 인증키", "유심 비밀번호"가 구체적으로 뭔지는 아직도 언급되지 않고 있다. "유심 식별번호"에는 최소한 두 가지가 있고, "유심 인증키"라고 부를 수 있는 것만 최소한 5가지가 있으며, "유심 비밀번호"라고 부를 수 있는 것도 최소한 5가지가 있다. 그 중에서는 메모리 내에서도 가급적 암호화되어야 하는 것과, 디스크에서만 암호화할 수 밖에 없는 것도 섞여 있다. 대부분 여기에 사용되는 암호화 방식은 대칭 키 방식이기 때문에 평문 키에 접근해야 하며, 전가의 보도로 사용되는 "해시"도 사용할 수 없다.

구체적으로 무슨 정보가 유출되었는지가 알려지지 않는 이상, 쓸데없는 보안 관련 규제가 생길 가능성도 간과할 수 없다.

youtu.be/tKScucURjV0?t=10210

youtube.com

국회 과방위, SK텔레콤 해킹 관련 청문회 - [끝까지LIVE] MBC 중계방송 2025년 05월 08일

국회 과학기술정보 방송통신위원회가 오늘(8일) SK텔레콤 유심 해킹 사태와 관련해 청문회를 개최합니다. 청문회에선 유심 정보 해킹사태에 대한 SK텔레콤 측의 대응이 적절했는지, 고객들에 대한 피해 보상을 어떻게 진행할지 등을 집중적으로 다룰 전망입니다. 유영상 SK텔레콤 대표와 주...

@lamikennel@toot.blue

昨日のラジオハングル講座

韓国語では「ある」「いる」が同じ있다。
日本語ではモノが「ある」、生き物が「いる」と使い分ける。

しかし日本語でも古典では「むかしをとこありけり」みたいに「あり」が使われていた。「いる」は「座る」の意味で、「居ても立ってもいられない」のように使う。
和歌山らへんでは今も「ある」を使う方言があるらしい。

@hongminhee@hackers.pub · Reply to 洪 民憙 (Hong Minhee)

国産のコードでdenwaの様な識別子を目にした際、我々は「なぜphonetelではないのか」と問うのではなく、「なぜ電話には成らないのか」と問うべきだと考える。

@hongminhee@hackers.pub

국산 코드에서 gubun 같은 식별자를 볼 때, 우리는 그게 왜 type 내지는 discriminator가 아닌지 물을 것이 아니라, 어째서 구분이 될 수 없는지를 물어야 한다.

@hongminhee@hackers.pub

혹시 Rails 프로젝트 좀 경험해보신 분 계신가요? Mastodon 저장소에서 단위 테스트를 돌리고 싶은데 어떻게 돌리는지 잘 모르겠습니다. 일단 bundle install로 의존성은 다 설치해둔 상태입니다.

@hongminhee@hollo.social · Reply to David Roetzel
@hongminhee@hackers.pub
@hongminhee@hollo.social

@hollo 독음 자동으로 달리는 건, 네, 그렇습니다. Hollo 설정에 SEONBI_URL이라는 문서화되지 않은 저만 쓰는 환경 변수가 있습니다. 다음은 제 Docker Compose 설정입니다. (일부 가림.)

services:
  caddy:
    image: caddy:2-alpine
    volumes:
    - ./Caddyfile:/etc/caddy/Caddyfile
    depends_on:
    - hollo
    ports:
    - "8080:8080"

  hollo:
    image: ghcr.io/fedify-dev/hollo:0.6.0-dev.14
    environment:
      # … 생략 …
      SEONBI_URL: http://seonbi:3800/
    depends_on:
    - seonbi
    restart: unless-stopped
    extra_hosts:
    - "host.docker.internal:host-gateway"

  seonbi:
    image: ghcr.io/dahlia/seonbi/bin:0.5.0
    ports:
    - "3800:3800"
    command: ["seonbi-api", "--allow-origin=*"]
    restart: unless-stopped