This account has moved to:

Fedify: ActivityPub server framework's avatar

Fedify: ActivityPub server framework

@fedify@hollo.social

9 following272 followers

:fedify: Fedify is a TypeScript library for building federated server apps powered by ActivityPub and other standards, so-called fediverse. It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience.

Pinned

๐ŸŽ‰ Excited to announce that is now on Open Collective! Support the project's development starting at:

  • Backer (from $5/mo)
  • Supporter (from $25/mo)
  • Sponsor (from $100/mo)
  • Corporate Sponsor (from $500/mo)
  • Custom donations welcome

Your support will help us maintain and improve Fedify. Check it out here:

https://opencollective.com/fedify

:fedify:

Fedify's Open Collective page showing the project logo, description as โ€œA TypeScript library for building federated server apps powered by ActivityPub and other standardsโ€, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
ALT text

Fedify's Open Collective page showing the project logo, description as โ€œA TypeScript library for building federated server apps powered by ActivityPub and other standardsโ€, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.

Pinned

Fedify is an server framework in & . It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience.

The key features it provides currently are:

If you're curious, take a look at the website! There's comprehensive docs, a demo, a tutorial, example code, and more:

https://fedify.dev/

OSSCA 2026 has started, and Fedify is joining for the second year. 24 mentees will work on Fedify, Hollo, BotKit, DrFed, and Feder over the next four months, with some of that work likely to continue after the program ends.

OSSCA, the Open Source Software Contribution Academy, is a South Korean mentorship program that connects developers with active open source projects. @2chanhaeng and @z9mb1, both Fedify co-maintainers who first came to the project through OSSCA 2025, are mentoring this year's cohort. Welcome, everyone.

@z9mb1@hackers.pub

So happy to join the team as a maintainer :)



RE: https://hollo.social/@fedify/019f0330-a26c-7ee2-80a1-c2ebeb4bab09

hollo.social

### Two new maintainers join Fโ€ฆ

### Two new maintainers join Fedify: Chanhaeng Lee and Jiwon Kwon Chanhaeng Lee (@2chanhaeng@hackers.pub) and Jiwon Kwon (@z9mb1@hackers.pub) are now co-maintainers of Fedify. They have already been doing maintainer-shaped work for much of the past year, so this is mostly making the repository match reality. Chanhaeng has done a lot of the package-boundary work in Fedify. The most visible piece was splitting the old `@fedify/fedify/x/*` modules into standalone packages: `@fedify/cfworkers`, `@fedify/denokv`, `@fedify/hono`, and `@fedify/sveltekit`. They then separated the Activity Vocabulary layer itself into `@fedify/vocab`, `@fedify/vocab-runtime`, and `@fedify/vocab-tools`, making it possible to build custom vocabulary extensions without touching the federation core. They built `@fedify/next` and `@fedify/nuxt` from scratch, contributed to `@fedify/solidstart`, and added Nuxt support to `fedify init`. `@fedify/sqlite` gained `SqliteMessageQueue`: a queue backend that only needs SQLite, handy for single-node deployments and local development. Chanhaeng also implemented the `fedify webfinger` CLI command, fediverse handle utilities (`parseFediverseHandle()`, `isFediverseHandle()`, `toAcctUrl()`), and the `@fedify/webfinger` and `@fedify/lint` packages. They are currently working on a custom background task API built around `defineTask()`. Jiwon has spent much of the past year making the CLI and relay tooling more useful for real ActivityPub debugging. `fedify relay`, backed by `@fedify/relay`, spins up a local ephemeral ActivityPub relay server with Mastodon and LitePub support. They extended `fedify lookup` with multi-URL traversal and inline image rendering for compatible terminal emulators (Kitty, WezTerm, iTerm, and others), and added configuration file support so options can live in *~/.config/fedify/config.toml* or a project-local *.fedify.toml* rather than being passed on every invocation. They also fixed a race condition in `RedisMessageQueue`, corrected ActivityPub object handling for relative URLs, extended TypeScript types for [RFC 6570] URI Template expressions in dispatcher paths, and implemented the [FEP-5711] inverse collection properties, including `likesOf`, `repliesOf`, and `followersOf`. Chanhaeng and Jiwon both came to Fedify through OSSCA 2025, Korea's Open Source Contribution Academy. I'm grateful that the program led to long-term maintainers, not just a few merged patches, and I'm looking forward to working with them in this new role. [RFC 6570]: https://www.rfc-editor.org/info/rfc6570/ [FEP-5711]: https://w3id.org/fep/5711

This quote was not authorized by the quoted post's author.

Two new maintainers join Fedify: Chanhaeng Lee and Jiwon Kwon

Chanhaeng Lee (@2chanhaeng) and Jiwon Kwon (@z9mb1) are now co-maintainers of Fedify. They have already been doing maintainer-shaped work for much of the past year, so this is mostly making the repository match reality.

Chanhaeng has done a lot of the package-boundary work in Fedify. The most visible piece was splitting the old @fedify/fedify/x/* modules into standalone packages: @fedify/cfworkers, @fedify/denokv, @fedify/hono, and @fedify/sveltekit. They then separated the Activity Vocabulary layer itself into @fedify/vocab, @fedify/vocab-runtime, and @fedify/vocab-tools, making it possible to build custom vocabulary extensions without touching the federation core. They built @fedify/next and @fedify/nuxt from scratch, contributed to @fedify/solidstart, and added Nuxt support to fedify init. @fedify/sqlite gained SqliteMessageQueue: a queue backend that only needs SQLite, handy for single-node deployments and local development. Chanhaeng also implemented the fedify webfinger CLI command, fediverse handle utilities (parseFediverseHandle(), isFediverseHandle(), toAcctUrl()), and the @fedify/webfinger and @fedify/lint packages. They are currently working on a custom background task API built around defineTask().

Jiwon has spent much of the past year making the CLI and relay tooling more useful for real ActivityPub debugging. fedify relay, backed by @fedify/relay, spins up a local ephemeral ActivityPub relay server with Mastodon and LitePub support. They extended fedify lookup with multi-URL traversal and inline image rendering for compatible terminal emulators (Kitty, WezTerm, iTerm, and others), and added configuration file support so options can live in ~/.config/fedify/config.toml or a project-local .fedify.toml rather than being passed on every invocation. They also fixed a race condition in RedisMessageQueue, corrected ActivityPub object handling for relative URLs, extended TypeScript types for RFC 6570 URI Template expressions in dispatcher paths, and implemented the FEP-5711 inverse collection properties, including likesOf, repliesOf, and followersOf.

Chanhaeng and Jiwon both came to Fedify through OSSCA 2025, Korea's Open Source Contribution Academy. I'm grateful that the program led to long-term maintainers, not just a few merged patches, and I'm looking forward to working with them in this new role.

w3id.org

Cookie monster!

Fedify 2.3.0 is out! This release is largely about production observability: OpenTelemetry metrics now cover every major federation path, and a monitoring guide and runnable example stack ship alongside them. Also new: a delivery circuit breaker that holds queued activities for unreachable servers rather than retrying indefinitely; @fedify/backfill, a new package for reconstructing conversations via FEP-f228; and fedify bench, an ActivityPub-aware load testing command. Release notes: https://github.com/fedify-dev/fedify/discussions/821.

Thanks to @2chanhaeng (@fedify/uri-template), @z9mb1 (@fedify/backfill), @sabrinkmann (FEP-0837 vocabulary), @nyanrus (@fedify/lint/oxlint), and @fruitsssdev (--skip-install) for their contributions to this release.

w3id.org

Cookie monster!

DrFed is our sister project, built alongside to tackle the debugging side of development. It just received @nlnet funding and now has its own account here: @drfed.

drfed.org

DrFed โ€” The ActivityPub debugging platform

DrFed is a web-based platform for developing and debugging ActivityPub implementations, built by the team behind Fedify.

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for โ€œDoctor Fed.โ€ We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. When two implementations don't federate, the slow part is usually figuring out where the exchange broke: signing, JSON-LD processing, WebFinger, or something less obvious. DrFed's first job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for โ€œDoctor Fed.โ€ We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. When two implementations don't federate, the slow part is usually figuring out where the exchange broke: signing, JSON-LD processing, WebFinger, or something less obvious. DrFed's first job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

Fedify security updates: 1.9.12, 1.10.11, 2.0.20, 2.1.16, and 2.2.5

If you use Fedify, update to a patched release now. CVE-2026-50131 affects Fedify's public URL validation for remote document and media loading. An attacker could use special-use IP address ranges to bypass Fedify's SSRF protections and cause a Fedify server to initiate requests to non-public or special-use network destinations, depending on the deployment environment and network routing.

Fedify validates remote ActivityPub document and media URLs before fetching them, including direct IP literals and hostnames resolved through DNS. The vulnerable path is validatePublicUrl(): affected versions rejected common private and local addresses, but still treated several special-use IPv4 ranges as public internet destinations. That gap could allow outbound requests to ranges such as carrier-grade NAT, benchmarking, multicast, reserved, and documentation networks.

The fix makes Fedify validate resolved addresses against public-network expectations instead of relying on the incomplete denylist. It rejects additional special-use IPv4 ranges and IPv6 translation or tunneling prefixes, including NAT64, Teredo, and 6to4 addresses, before remote document or media fetching proceeds.

Current patched releases are 1.9.12, 1.10.11, 2.0.20, 2.1.16, and 2.2.5. The GitHub Security Advisory is GHSA-xw9q-2mv6-9fr8, and the CVE ID is CVE-2026-50131.

Update @fedify/fedify:

npm  update  @fedify/fedify
yarn upgrade @fedify/fedify
pnpm update  @fedify/fedify
bun  update  @fedify/fedify
deno update  @fedify/fedify

If your project depends directly on @fedify/vocab-runtime, update that package too.

After updating, redeploy. If you run other Fedify-based servers, update those too.

Thanks to Chaitanya Vilas Garware for the report and responsible disclosure.

If anything is unclear, ask below.

github.com

chaitanyagarware - Overview

chaitanyagarware has 13 repositories available. Follow their code on GitHub.

@sabrinkmann@hachyderm.io ยท Reply to Samuel Brinkmann

The software is built with @fedify and uses Nuxt for the server and server-side rendering. This is my first bigger Fedify project, so I'm looking for improvements and best practices.
The Fediverse data structure is built on top of: codeberg.org/fediverse/fep/src.
From the data point of view, this includes the proposal and resourceConformsTo field, which links to an URI. Like: mensa.mahlzeitheute.de/users/f.
Behind this is a JSON LD with a description of the food. As someone who is gluten intolerant, the allergen information is quite relevant and interesting. I'm not sure if this is the best way, and I'm interested what others would do. [2/4]

@zundan@mastodon.zunda.ninja ยท Reply to zunda

Fedify security updates: 1.9.11, 1.10.10, 2.0.18, 2.1.14, and 2.2.3

If you use Fedify, update to a patched release now. CVE-2026-42462 affects Fedify's Linked Data Signature handling. An attacker could use JSON-LD graph-restructuring features to change how a signed activity is interpreted without invalidating its Linked Data Signature.

Fedify verifies incoming ActivityPub activities with several mechanisms, including HTTP Signatures, Object Integrity Proofs, and Linked Data Signatures. The vulnerable path is Linked Data Signatures: the signature is checked over the canonical RDF graph, but JSON-LD can represent the same graph in more than one JSON shape. In affected versions, that gap could let a signed activity be reshaped so that Fedify reads a different ActivityPub object shape than intended.

The fix makes Fedify normalize Linked Data Signature-verified activities against Fedify's local JSON-LD context before interpreting them, and rejects JSON-LD constructs that can preserve the signed RDF graph while changing the ActivityPub object shape consumed by Fedify.

Patched releases are 1.9.11, 1.10.10, 2.0.18, 2.1.14, and 2.2.3. The GitHub Security Advisory is GHSA-9rfg-v8g9-9367, and the CVE ID is CVE-2026-42462.

Update @fedify/fedify:

npm  update  @fedify/fedify
yarn upgrade @fedify/fedify
pnpm update  @fedify/fedify
bun  update  @fedify/fedify
deno update  @fedify/fedify

After updating, redeploy. If you run other Fedify-based servers, update those too.

Thanks to @Claire for the report and responsible disclosure.

If anything is unclear, ask below.

github.com

Linked Data Signature Bypass via JSON-LD Named-Graph Restructuring

As told on Discord earlier, multiple projects are affected, and we would like to coordinate. For now, we are aiming at a May 6th release date, but this is not set in stone yet. ### Summary An...

@sabrinkmann@hachyderm.io

It took some night tinkering around, but I built a proof of concept with @fedify, with 1) a shop software that creates and sends offers/products, 2) to the following marketplaces. The marketplace aggregates these offers and all via activitipub, so in the fediverse.
You can find the proof of concept here: marketplace.playground.54grads.
If you go to a shop software, you also can add products, and you should see in the marketplace the new product: shop-postcards.playground.54gr
Every hour there is a reset in the db.

This is just a super simple example with no CSS and no auth, but just an example to test the new fedify vocabulary.
You can find more information in the repo: codeberg.org/54GradSoftware/ec

codeberg.org

economiverse

Economiverse - economy marketplace in the fediverse

This is the CUTEST kawaii Ai-chan (่—(ใ‚ใ„)"Ai" is a normal female Japanese name meaning "Indigo" both the color and the plant; "Ai"-chan, the mascot of Misskey, has nothing to do with Large Language Models) I have ever seen from a technical literature titled like "Practical Fedify: An Introduction to ActivityPub Microblog Development"! I even see other mascots in the Fediverse too, like Don the Mastodon and that Blue Dinosaur mascot of Fedify (I don't know its name).
Huge thanks to
@hongminhee@hollo.social https://hollo.social/@hongminhee for their work on authoring this amazing book and developing Fedify itself! And if you can read Japanese and are interested in Fedify and ActivityPub Development, then definitely check this one out! You can pre-order the book on Amazon Japan โ†’ https://amzn.asia/d/0hQSKBmI (The book will be printed on May 22)

Book cover "Practical Fedify" (ๅฎŸ่ทตFedify) featuring anime-style girl, elephant, and blue creature. Subtitle: "Introduction to Microblog Development" (ใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐ้–‹็™บๅ…ฅ้–€). Technical guide covering decentralized social network mechanisms for microblog development.
ALT text

Book cover "Practical Fedify" (ๅฎŸ่ทตFedify) featuring anime-style girl, elephant, and blue creature. Subtitle: "Introduction to Microblog Development" (ใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐ้–‹็™บๅ…ฅ้–€). Technical guide covering decentralized social network mechanisms for microblog development.

ๆ—ฅๆœฌใงไธ–็•ŒๅˆใฎFedifyใฎๆ›ธ็ฑใ€ŒๅฎŸ่ทตFedifyโ€”โ€”ActivityPubใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐ้–‹็™บๅ…ฅ้–€ใ€ใŒๅ‡บ็‰ˆใ•ใ‚Œใพใ—ใŸใ€‚ใ“ใฎๆœฌใฏ็งใซใจใฃใฆๅˆใ‚ใฆใฎ่‘—ๆ›ธใงใ‚‚ใ‚ใ‚Šใพใ™ใŒใ€ๆœ€ๅˆใฎๆœฌใŒๆฏ่ชžใฎ้Ÿ“ๅ›ฝ่ชžใงใฏใชใๆ—ฅๆœฌ่ชžใ ใจใ„ใ†ใฎใฏใ€ใชใ‚“ใ ใ‹ใจใฆใ‚‚ไธๆ€่ญฐใชๆฐ—ๅˆ†ใงใ™ใญใ€‚ๆœฌๆ›ธใฏใ€่‹ฑ่ชžใงๆ›ธใ‹ใ‚ŒใŸFedifyใฎๅ…ฌๅผใƒใƒฅใƒผใƒˆใƒชใ‚ขใƒซใ€ŒCreating your own federated microblogใ€ใ‚’ใƒ™ใƒผใ‚นใซใ€ๆง˜ใ€…ใชๅŠ ็ญ†ใ‚’่กŒใฃใŸใ‚‚ใฎใงใ™ใ€‚Fedifyใฎใƒžใ‚นใ‚ณใƒƒใƒˆใฎๆ็ซœใจใ€Misskeyใฎใƒžใ‚นใ‚ณใƒƒใƒˆใงใ‚ใ‚‹ไธ‰้ ˆๆœจ๏ผˆใฟใ™ใ๏ผ‰ ่—๏ผˆใ‚ใ„๏ผ‰ใ€Mastodonใฎใƒžใ‚นใ‚ณใƒƒใƒˆใŒไธ€็ท’ใซๆใ‹ใ‚ŒใŸๅฏๆ„›ใ„่กจ็ด™ใฎใ‚คใƒฉใ‚นใƒˆใฏใ€ใ‚†ใ‚ใคใใƒžใƒžใ•ใ‚“ใŒๆใ„ใฆใใ ใ•ใ„ใพใ—ใŸใ€‚้›ปๅญๆ›ธ็ฑใจ็ด™ใฎๆ›ธ็ฑใฎไธกๆ–นใงใ€ๆฅใ‚‹22ๆ—ฅใซใ‚คใƒณใƒ—ใƒฌใ‚น NextPublishingใ‹ใ‚‰ๅ‡บ็‰ˆใ•ใ‚Œใ‚‹ไบˆๅฎšใงใ™ใ€‚

ใ‚คใƒณใƒ—ใƒฌใ‚น NextPublishingๅˆŠใ€ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰่‘—ใ€ŒๅฎŸ่ทตFedifyโ€”โ€”ActivityPubใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐ้–‹็™บๅ…ฅ้–€ใ€ใฎ่กจ็ด™ใ€‚ใ‚ปใƒผใƒฉใƒผๆœใ‚’็€ใŸMisskeyใฎ็Œซ่€ณใƒžใ‚นใ‚ณใƒƒใƒˆใƒป่—ใกใ‚ƒใ‚“ใŒใ€Fedifyใฎ้’ใ„ๆ็ซœใƒžใ‚นใ‚ณใƒƒใƒˆใจMastodonใฎ้ป„่‰ฒใ„่ฑกใƒžใ‚นใ‚ณใƒƒใƒˆใฎไธŠใงใ‚ธใƒฃใƒณใƒ—ใ—ใชใŒใ‚‰ๆŒ‡ใ‚’ๅทฎใ—ใฆใŠใ‚Šใ€ๅ‘จๅ›ฒใซใฏใ‚ซใƒฉใƒ•ใƒซใชๆ˜Ÿใ‚„ๅนพไฝ•ๅญฆๆจกๆง˜ใŒๆ•ฃใ‚Šใฐใ‚ใ‚‰ใ‚Œใฆใ„ใ‚‹ใ€‚
ALT text

ใ‚คใƒณใƒ—ใƒฌใ‚น NextPublishingๅˆŠใ€ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰่‘—ใ€ŒๅฎŸ่ทตFedifyโ€”โ€”ActivityPubใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐ้–‹็™บๅ…ฅ้–€ใ€ใฎ่กจ็ด™ใ€‚ใ‚ปใƒผใƒฉใƒผๆœใ‚’็€ใŸMisskeyใฎ็Œซ่€ณใƒžใ‚นใ‚ณใƒƒใƒˆใƒป่—ใกใ‚ƒใ‚“ใŒใ€Fedifyใฎ้’ใ„ๆ็ซœใƒžใ‚นใ‚ณใƒƒใƒˆใจMastodonใฎ้ป„่‰ฒใ„่ฑกใƒžใ‚นใ‚ณใƒƒใƒˆใฎไธŠใงใ‚ธใƒฃใƒณใƒ—ใ—ใชใŒใ‚‰ๆŒ‡ใ‚’ๅทฎใ—ใฆใŠใ‚Šใ€ๅ‘จๅ›ฒใซใฏใ‚ซใƒฉใƒ•ใƒซใชๆ˜Ÿใ‚„ๅนพไฝ•ๅญฆๆจกๆง˜ใŒๆ•ฃใ‚Šใฐใ‚ใ‚‰ใ‚Œใฆใ„ใ‚‹ใ€‚

The world's first Fedify book, Practical Fedify: Introduction to ActivityPub Microblog Development (ๅฎŸ่ทตFedifyโ€”โ€”ActivityPubใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐ้–‹็™บๅ…ฅ้–€), has been published in Japan. This is also the first book I have ever published, and it feels quite surreal that my first book is in Japanese rather than my native language, Korean. This book is an expanded version based on the official English Fedify tutorial, Creating your own federated microblog, with various additions. Yumetsuki Mama (ใ‚†ใ‚ใคใใƒžใƒž) worked on the cute book cover illustration, which features the Fedify dinosaur mascot, Misskey's mascot Ai-chan, and the Mastodon mascot together. It is scheduled to be published in both e-book and print formats on the 22nd by Impress NextPublishing. See also the Amazon Japan.

Cover of Practical Fedify: Introduction to ActivityPub Microblog Development (ๅฎŸ่ทตFedifyโ€”โ€”ActivityPubใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐ้–‹็™บๅ…ฅ้–€) by Hong Minhee (ๆดช ๆฐ‘ๆ†™), published by Impress NextPublishing. Ai-chan, Misskey's cat-eared mascot in a sailor uniform, jumps and points upward above Fedify's blue dinosaur mascot and Mastodon's small golden mascot, with colorful stars and geometric shapes scattered around.
ALT text

Cover of Practical Fedify: Introduction to ActivityPub Microblog Development (ๅฎŸ่ทตFedifyโ€”โ€”ActivityPubใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐ้–‹็™บๅ…ฅ้–€) by Hong Minhee (ๆดช ๆฐ‘ๆ†™), published by Impress NextPublishing. Ai-chan, Misskey's cat-eared mascot in a sailor uniform, jumps and points upward above Fedify's blue dinosaur mascot and Mastodon's small golden mascot, with colorful stars and geometric shapes scattered around.

Fedify security updates: 1.9.10, 1.10.9, 2.0.16, 2.1.12, and 2.2.1

If you use Fedify, update to a patched release now. A private network protection bypass affects Fedify's remote document loading code. URLs with private IPv4 addresses encoded as IPv4-mapped IPv6 literals, such as http://[::ffff:7f00:1]/, could pass validatePublicUrl() even though they refer to private or loopback addresses.

Fedify uses validatePublicUrl() when fetching remote ActivityPub documents and related resources. An attacker who can make a Fedify server fetch an attacker-controlled URL may be able to bypass the private address checks that are intended to reduce SSRF risk.

All versions up to and including 2.2.0 are affected. Patched releases are 1.9.10, 1.10.9, 2.0.16, 2.1.12, and 2.2.1.

For Fedify 1.x, update @fedify/fedify:

npm update @fedify/fedify
yarn upgrade @fedify/fedify
pnpm update @fedify/fedify
bun update @fedify/fedify
deno update @fedify/fedify

For Fedify 2.x, update both @fedify/fedify and @fedify/vocab-runtime:

npm update @fedify/fedify @fedify/vocab-runtime
yarn upgrade @fedify/fedify @fedify/vocab-runtime
pnpm update @fedify/fedify @fedify/vocab-runtime
bun update @fedify/fedify @fedify/vocab-runtime
deno update @fedify/fedify @fedify/vocab-runtime

After updating, redeploy. If you run other Fedify-based servers, update those too.

Thanks to Changkyun Kim (@me) for the report and responsible disclosure.

If anything is unclear, ask below.

Release Fedify 2.2.1 ยท fedify-dev/fedify

Released on May 10, 2026. @fedify/vocab-runtime Fixed validatePublicUrl() allowing private IPv4 addresses encoded as IPv4-mapped IPv6 URL literals, such as http://[::ffff:7f00:1]/, which could byp...

@me@changkyun.kim
ActivityPub์™€ Fedify๋กœ ๊ฐœ์ธ ์›น์‚ฌ์ดํŠธ๋ฅผ Fediverse์— ์—ฐ๊ฒฐํ•˜๊ณ  ๋Œ“๊ธ€๊ณผ ๋ฐ˜์‘์„ ์ฃผ๊ณ ๋ฐ›๊ฒŒ ๋งŒ๋“  ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ์— changkyun.kim์— ActivityPub์„ ๋ถ™์˜€์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด ์‚ฌ์ดํŠธ๋Š” Fediverse์—์„œ @me@changkyun.kim์ด๋ผ๋Š” actor๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

ํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ์ผ์€ ๋‹จ์ˆœํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์˜ฌ๋ ธ์„ ๋•Œ Mastodon์ด๋‚˜ Misskey ๊ฐ™์€ ๊ณณ์—์„œ ๊ธ€์„ ์ฐพ๊ณ , ๋‹ต๊ธ€์„ ๋‹ฌ๊ณ , ์ข‹์•„์š”๋‚˜ ์ด๋ชจ์ง€ ๋ฐ˜์‘์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„ ๋กœ๊ทธ์ธ์ด๋‚˜ ํšŒ์›๊ฐ€์ž…์„ ๋งŒ๋“ค๊ณ  ์‹ถ์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ์ž ์›๋ž˜ ์“ฐ๋˜ Fediverse ๊ณ„์ •์œผ๋กœ ๋ฐ˜์‘ํ•˜๋ฉด, ์ œ ์‚ฌ์ดํŠธ๋Š” ๊ทธ ๋ฐ˜์‘์„ ๋ฐ›์•„์„œ ๊ธ€ ์•„๋ž˜์— ๋ณด์—ฌ์ฃผ๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ๋ถ€ํ„ฐ ๊น”๋”ํ•˜๊ฒŒ ๋œ ๊ฒƒ์€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•œ๋™์•ˆ์€ ActivityPub์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณด๋ ค๊ณ  ํ–ˆ๊ณ , ๋‚˜์ค‘์—๋Š” Fedify๋ฅผ ๋ถ™์ด๋Š” ์ชฝ์œผ๋กœ ๋ฐฉํ–ฅ์„ ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์€ ๊ทธ ๊ณผ์ •์— ๋Œ€ํ•œ ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค.

ActivityPub๊ณผ Fedify๋ฅผ ๋ถ™์˜€์Šต๋‹ˆ๋‹ค

๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๋ฉด, ActivityPub์€ ๋„คํŠธ์›Œํฌ์—์„œ ์ผ์–ด๋‚˜๋Š” ์–ด๋–ค ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์ƒํ˜ธ ์•ฝ์†๋œ ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ ์ด๋ฉ”์ผ์ฒ˜๋Ÿผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ์ „ํŒŒํ•˜๊ณ  ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” API ๋ชจ์Œ์ด์ž ๊ทœ์น™์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

W3C๋Š” 2018๋…„ 1์›” 23์ผ ActivityPub์„ Recommendation์œผ๋กœ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ์—์„œ๋Š” ActivityStreams 2.0 ๊ธฐ๋ฐ˜์˜ ๋ถ„์‚ฐํ˜• ์†Œ์…œ ๋„คํŠธ์›Œํ‚น ํ”„๋กœํ† ์ฝœ์ด๋ผ๊ณ  ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

https://www.w3.org/TR/activitypub/

์ฒ˜์Œ์—๋Š” ํ•„์š”ํ•œ endpoint๋ฅผ ์ง์ ‘ ๋งŒ๋“ค๋ฉด ๋  ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. WebFinger๋กœ ๊ณ„์ •์„ ์ฐพ๊ฒŒ ํ•˜๊ณ , actor ๋ฌธ์„œ๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ , inbox์™€ outbox๋ฅผ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ํ•˜๋‚˜์”ฉ ๋งŒ๋“ค ์ˆ˜๋Š” ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๊ณง ์ฒ˜๋ฆฌํ•  ์ผ์ด ๋งŽ์•„์กŒ์Šต๋‹ˆ๋‹ค. ๊ธ€์„ Article ๊ฐ์ฒด๋กœ ๋‚ด๋ณด๋‚ด์•ผ ํ–ˆ๊ณ , Follow, Create, Like, Undo, Delete ๊ฐ™์€ ํ™œ๋™์„ ๊ตฌ๋ถ„ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ ํ™œ๋™์„ ๋ณด๋‚ผ ๋•Œ๋Š” HTTP Signature๋„ ๋งž์ถฐ์•ผ ํ–ˆ๊ณ , shared inbox๋„ ์‹ ๊ฒฝ ์จ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ง์ ‘ ํ•ด ๋ณธ ๊ฒƒ์€ ๋„์›€์ด ๋์Šต๋‹ˆ๋‹ค. ActivityPub์—์„œ actor, object, activity๊ฐ€ ์–ด๋–ป๊ฒŒ ์ด์–ด์ง€๋Š”์ง€ ๊ฐ์„ ์žก์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ์ธ ์›น์‚ฌ์ดํŠธ์— ๋ถ™์—ฌ์„œ ๊ณ„์† ์šด์˜ํ•˜๋ ค๋ฉด ์ง์ ‘ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ์ปค์งˆ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ Fedify๋ฅผ ๋ถ™์˜€์Šต๋‹ˆ๋‹ค. Fedify๋Š” ActivityPub ์„œ๋ฒ„ ์•ฑ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ TypeScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ๋Š” Fediverse ์„œ๋ฒ„ ์•ฑ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ActivityPub server framework๋ผ๊ณ  ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

https://fedify.dev/

Fedify๋ฅผ ๋ถ™์ด๊ณ  ๋‚˜์„œ๋Š” ์ œ๊ฐ€ ์ •ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ์กฐ๊ธˆ ๋ถ„๋ช…ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด ์‚ฌ์ดํŠธ์˜ actor๋Š” ๋ˆ„๊ตฌ์ธ์ง€, ์–ด๋–ค ๊ธ€์„ outbox์— ๋‚ด๋ณด๋‚ผ์ง€, inbox๋กœ ๋“ค์–ด์˜จ ํ™œ๋™์„ ์–ด๋–ป๊ฒŒ ์ €์žฅํ• ์ง€ ์ •ํ•˜๋ฉด ๋์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๊ตฌํ˜„์ด ์‚ฌ๋ผ์ง„ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ง€๊ธˆ๋„ ๋Œ“๊ธ€, ๋ฐ˜์‘, following feed๋ฅผ ์ €์žฅํ•˜๋Š” ํ…Œ์ด๋ธ”์ด ์žˆ๊ณ , Cloudflare Workers์˜ KV์™€ Queue๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ง์ ‘ ActivityPub์˜ ๋ชจ๋“  ๋ถ€๋ถ„์„ ๋งž์ถ”๋Š” ์ฝ”๋“œ๋ณด๋‹ค๋Š”, ์ด ์‚ฌ์ดํŠธ์˜ ์ฝ˜ํ…์ธ ์™€ ๋ฐ˜์‘์„ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃฐ์ง€์— ๋” ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ด ์‚ฌ์ดํŠธ๋Š” ๋ธ”๋กœ๊ทธ ๊ธ€๊ณผ ์•ฑ ๊ธ€์„ ActivityPub Article๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ @me@changkyun.kim์„ ํŒ”๋กœ์šฐํ•˜๋ฉด Follow๋ฅผ ๋ฐ›๊ณ  Accept๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ๋œ actor๋“ค์˜ ๊ณต๊ฐœ ๊ธ€์€ /following/์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€๊ณผ ๋ฐ˜์‘์€ Fediverse ๊ณ„์ •์œผ๋กœ ๋‚จ๊น๋‹ˆ๋‹ค

๋ธ”๋กœ๊ทธ ๊ธ€ ์•„๋ž˜์—๋Š” ActivityPub ๋Œ“๊ธ€ ์•ˆ๋‚ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Mastodon ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ ๊ฒ€์ƒ‰์ฐฝ์— ๊ธ€ ์ฃผ์†Œ๋ฅผ ๋ถ™์—ฌ ๋„ฃ๊ณ , ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์—์„œ ์ด ๊ธ€์„ ์—ฐ ๋’ค ๋‹ต๊ธ€์„ ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ ๋‹ต๊ธ€์€ ์›๊ฒฉ ์„œ๋ฒ„์—์„œ๋Š” ํ‰์†Œ์™€ ๊ฐ™์€ ๋‹ต๊ธ€์ž…๋‹ˆ๋‹ค. ์ œ ์‚ฌ์ดํŠธ์—์„œ๋Š” inbox๋กœ ๋“ค์–ด์˜จ Create ํ™œ๋™์„ ์ฝ๊ณ , ์–ด๋А ๊ธ€์— ๋Œ€ํ•œ ๋‹ต๊ธ€์ธ์ง€ ํ™•์ธํ•œ ๋’ค ๋Œ“๊ธ€๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํ™”๋ฉด์—๋Š” ์ž‘์„ฑ์ž์˜ ์ด๋ฆ„, ํ”„๋กœํ•„ ์ด๋ฏธ์ง€, ์›๋ž˜ ๊ธ€ ์ฃผ์†Œ๋ฅผ ํ•จ๊ป˜ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ด ๋ฐฉ์‹์ด ๋งˆ์Œ์— ๋“ค์—ˆ๋˜ ์ด์œ ๋Š” ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๋”ฐ๋กœ ๋งŒ๋“ค์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋Œ“๊ธ€์„ ์“ฐ๋Š” ์‚ฌ๋žŒ์˜ ์‹ ์›์€ ์ด๋ฏธ ๊ฐ์ž์˜ Fediverse ์„œ๋ฒ„์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ์‚ฌ์ดํŠธ๋Š” ๊ทธ ์‹ ์›์„ ์ƒˆ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ , ๋„์ฐฉํ•œ ๋‹ต๊ธ€์„ ๊ธ€ ์•„๋ž˜์— ๋ณด์—ฌ์ฃผ๊ธฐ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

Like๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์ข‹์•„์š” ๋ฐ˜์‘์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. EmojiReact๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์ด๋ชจ์ง€ ๋ฐ˜์‘์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ธ€ ์•„๋ž˜์—์„œ๋Š” ์ด๋ชจ์ง€์™€ ๊ฐœ์ˆ˜๋ฅผ ๋ชจ์•„์„œ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๋ชจ๋“  ์„œ๋ฒ„๊ฐ€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ฐ˜์‘์„ ๋ณด๋‚ด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ด๋ชจ์ง€ ๋ฐ˜์‘์€ ์„œ๋ฒ„๋งˆ๋‹ค ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ผ๋‹จ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ฐ›์•„ ๋‘๊ณ , ํ™”๋ฉด์—๋Š” ํ™•์ธ๋œ ๊ฐ’๋งŒ ๋ณด์—ฌ์ฃผ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ถ€๋ถ„๋„ ๋Œ“๊ธ€๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ์ œ ์‚ฌ์ดํŠธ์—์„œ ๋ณ„๋„์˜ ๋ฐ˜์‘ ๋ฒ„ํŠผ์„ ์ƒˆ๋กœ ๋งŒ๋“  ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ์ž๊ธฐ Fediverse ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ˆ„๋ฅธ ๋ฐ˜์‘์ด ์ œ ์‚ฌ์ดํŠธ์—๋„ ๋„์ฐฉํ•˜๊ฒŒ ๋งŒ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

atproto๋„ ์ƒ๊ฐํ•ด ๋ดค์Šต๋‹ˆ๋‹ค

์ค‘๊ฐ„์— atproto๋„ ์ƒ๊ฐํ•ด ๋ดค์Šต๋‹ˆ๋‹ค. ์ข‹๊ณ  ๋‚˜์จ์„ ๋น„๊ตํ•˜๋ ค๋˜ ๊ฒƒ์€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ํ•˜๋ ค๋˜ ์ผ์ด ๋ฌด์—‡์ธ์ง€ ๋†“๊ณ  ๋ณด๋ฉด ActivityPub ์ชฝ์ด ๋” ์ง์ ‘์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

atproto ๋ฌธ์„œ์—์„œ๋Š” PDS, Relay, AppView๋ฅผ ์ฃผ์š” ๊ตฌ์„ฑ์š”์†Œ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋Š” PDS์— ์žˆ๊ณ , Relay๋Š” ์—ฌ๋Ÿฌ PDS์˜ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ๋ฅผ ๋ชจ์œผ๊ณ  ๋‹ค์‹œ ํ˜๋ ค๋ณด๋‚ด๋ฉฐ, AppView๋Š” ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ ์‹ค์ œ ์•ฑ ํ™”๋ฉด๊ณผ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

https://atproto.com/guides/overviewhttps://atproto.com/guides/the-at-stack

atproto๋กœ๋„ ๋‚˜๋งŒ์˜ PDS๋ฅผ ๋งŒ๋“ค๊ณ , Bluesky ๋„คํŠธ์›Œํฌ์˜ Relay, ์˜ˆ์ „ ํ‘œํ˜„์œผ๋กœ๋Š” BGS์— ๊ฐ€๊นŒ์šด ๊ณ„์ธต์œผ๋กœ ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ๋‹ฌํ•˜๋Š” ์‹์˜ ๊ตฌ์„ฑ์„ ์ƒ๊ฐํ•  ์ˆ˜๋Š” ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ ๊ฒฝ์šฐ์—๋Š” ๋ชฉ์ ์ด ์กฐ๊ธˆ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ €๋Š” ์ƒˆ๋กœ์šด ์†Œ์…œ ๋„คํŠธ์›Œํฌ๋‚˜ ์•ฑ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋˜ ๊ฒƒ์ด ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ œ ๋ชฉํ‘œ๋Š” ์ด๋ฏธ ์ œ๊ฐ€ ์†Œ์œ ํ•œ ๊ธ€, ํŠนํžˆ ๋ธ”๋กœ๊ทธ์˜ Article์„ ๋ถ„์‚ฐ๋œ ์—ฐํ•ฉ์šฐ์ฃผ์— ๋ฐฐ๋‹ฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๋…์ž๊ฐ€ ์ž๊ธฐ Fediverse ๊ณ„์ •์œผ๋กœ ํŽธํ•˜๊ฒŒ ๋ฐ›์•„๋ณด๊ณ , ๋‹ต๊ธ€์ด๋‚˜ ์ข‹์•„์š”๋‚˜ ์ด๋ชจ์ง€ ๋ฐ˜์‘์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉด ๋์Šต๋‹ˆ๋‹ค.

์ด ๋ธ”๋กœ๊ทธ๋Š” Nuxt Content๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค์ฝ”๋“œ์™€ ๋ธ”๋กœ๊ทธ ์ฝ˜ํ…์ธ ๋ฅผ ํฌํ•จํ•œ ๊ฑฐ์˜ ๋ชจ๋“  ์†Œ์Šค๊ฐ€ git ์ €์žฅ์†Œ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธ€์€ Markdown ํŒŒ์ผ์ด๊ณ , ๋ฐฐํฌ ๋Œ€์ƒ๋„ ์ด ์ €์žฅ์†Œ์—์„œ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ๋Š” ์ œ๊ฐ€ ์›ํ•˜๋Š” ๋งŒํผ ํฌํ„ฐ๋ธ”ํ•ฉ๋‹ˆ๋‹ค.

atproto๋กœ ๊ฐ™์€ ์ผ์„ ํ•˜๋ ค๋ฉด ์ œ๊ฐ€ ์“ธ PDS๋ฅผ ์ค€๋น„ํ•ด์•ผ ํ•˜๊ณ , ๊ทธ ์•ˆ์— ์–ด๋–ค collection๊ณผ lexicon์œผ๋กœ ๊ธ€์„ ํ‘œํ˜„ํ• ์ง€๋„ ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์„œ ๋๋‚˜๋Š” ๊ฒƒ๋„ ์•„๋‹™๋‹ˆ๋‹ค. ์ค‘์•™ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐฐ๋‹ฌ๋œ collection์„ ์‹ค์ œ๋กœ ์ฝ๊ณ  ๋ณด์—ฌ์ค„ ํด๋ผ์ด์–ธํŠธ๋‚˜ AppView๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ๊ทธ ๋ถ€๋ถ„๊นŒ์ง€ ์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋ฒˆ ์ž‘์—…์—์„œ๋Š” ActivityPub์ด ๋” ๋งž์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์žˆ๋Š” ๊ธ€์„ Article๋กœ ๋‚ด๋ณด๋‚ด๊ณ , ์ด๋ฏธ ์žˆ๋Š” Fediverse ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ตฌ๋…ํ•˜๊ณ  ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ์ชฝ์ด ์ œ ๋ชฉ์ ์— ๊ฐ€๊นŒ์› ์Šต๋‹ˆ๋‹ค.

์•„์ง์€ ์จ ๋ณด๋ฉด์„œ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

์ด๋ฒˆ ์ž‘์—…์„ ํ•˜๊ณ  ๋‚˜์„œ๋„ ์ด ์‚ฌ์ดํŠธ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๊ทธ๋Œ€๋กœ์ž…๋‹ˆ๋‹ค. ๊ธ€์€ Nuxt Content ํŒŒ์ผ๋กœ ๋‚จ๊ณ , ์ฃผ์†Œ๋„ ์ œ ๋„๋ฉ”์ธ ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ฌ๋ผ์ง„ ๊ฒƒ์€ ๊ธ€ ๋ฐ”๊นฅ์—์„œ ์ผ์–ด๋‚œ ๋ฐ˜์‘์„ ๋‹ค์‹œ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณด๋˜ ๋•Œ์—๋Š” ์ƒ๊ฐ๋ณด๋‹ค ์†๋ด์•ผ ํ•  ๋ถ€๋ถ„์ด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. Fedify๋ฅผ ๋ถ™์ธ ๋’ค์—๋Š” ๋งก๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด ์ƒ๊ฒผ๊ณ , ์ œ๊ฐ€ ์ง์ ‘ ์ •ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„๋„ ๋” ์ž˜ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ ์›น์‚ฌ์ดํŠธ๋ฅผ Fediverse์— ๋ถ™์ด๋Š” ์ž‘์—… ๋ฒ”์œ„๋„ ๊ทธ๋งŒํผ ์ค„์—ˆ์Šต๋‹ˆ๋‹ค.

์•„์ง ์šด์˜ํ•˜๋ฉด์„œ ๋” ๋ด์•ผ ํ•  ๋ถ€๋ถ„์€ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋งˆ๋‹ค ActivityPub ๊ตฌํ˜„์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๊ณ , ๋ฐ˜์‘์ด ํ•ญ์ƒ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์˜ค์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ง€๊ธˆ ์ •๋„๋ฉด ์ œ๊ฐ€ ์›ํ–ˆ๋˜ ํ๋ฆ„์€ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๊ธ€์€ ์ œ ์‚ฌ์ดํŠธ์— ๋‘๊ณ , ๋Œ€ํ™”๋Š” ๊ฐ์ž์˜ Fediverse ๊ณ„์ •์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

atproto.com

The AT Stack - AT Protocol Docs - AT Protocol

Components of the AT Protocol Stack.

Fedify 2.2.0 is out! This release finally adds client-to-server (C2S) outbox listener support, proper HTTP 410 Gone responses for deleted actors via Tombstone, new integrations for SolidStart and Nuxt, and interoperability fixes for Lemmy and Pixelfed. Three new end-to-end tutorials also landed alongside a custom collections cookbook.

https://github.com/fedify-dev/fedify/discussions/733

github.com

Fedify 2.2.0: C2S outbox listeners, `Tombstone` support, SolidStart and Nuxt integrations, and three new tutorials ยท fedify-dev/fedify ยท Discussion #733

Fedify is a TypeScript framework for building ActivityPub servers. It implements federation details such as HTTP Signatures, JSON-LD processing, WebFinger, inbox and outbox routing, and activity de...

Fedify 2.2.0 is out! This release finally adds client-to-server (C2S) outbox listener support, proper HTTP 410 Gone responses for deleted actors via Tombstone, new integrations for SolidStart and Nuxt, and interoperability fixes for Lemmy and Pixelfed. Three new end-to-end tutorials also landed alongside a custom collections cookbook.

https://github.com/fedify-dev/fedify/discussions/733

github.com

Fedify 2.2.0: C2S outbox listeners, `Tombstone` support, SolidStart and Nuxt integrations, and three new tutorials ยท fedify-dev/fedify ยท Discussion #733

Fedify is a TypeScript framework for building ActivityPub servers. It implements federation details such as HTTP Signatures, JSON-LD processing, WebFinger, inbox and outbox routing, and activity de...

The official Awesome Fedify site is now live:

http://awesome.fedify.dev/

It brings together real-world Fedify projects, packages, examples, tutorials, and talks in one place.

If you know a good resource we should list, contributions are welcome:

https://github.com/fedify-dev/awesome-fedify

github.com

GitHub - fedify-dev/awesome-fedify: Curated list of Fedify-related resources

Curated list of Fedify-related resources. Contribute to fedify-dev/awesome-fedify development by creating an account on GitHub.

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blogโ€”static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedbackโ€”especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) ยท Issue #691 ยท fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

Naru, the Korean version of , reportedly added an implementation in just an hour using . If you also want to implement ActivityPub quickly, give Fedify a try!

https://hackers.pub/@jihyeok/019da3d9-45b8-7629-96a8-b26bd62867c2

hackers.pub

Naru (Korean Neocities) gains ActivityPub support thanks to Fedify! Now, you can follow Naru personal homepages on the Fediverse, and receive updates at most once a day per website. For example, if you want to receive updates for https://yang.naru.pub, you can simply folllow @yang@naru.pub. I believe this is a significant improvement over polling websites and an effective way to stay connected with the indie web community.

Naru (Korean Neocities) gains ActivityPub support thanks to Fedify! Now, you can follow Naru personal homepages on the Fediverse, and receive updates at most once a day per website. For example, if you want to receive updates for https://yang.naru.pub, you can simply folllow @yang@naru.pub. I believe this is a significant improvement over polling websites and an effective way to stay connected with the indie web community.

@jihyeok@hackers.pub ยท Reply to Jihyeok Seo

Naru (Korean Neocities) gains ActivityPub support thanks to Fedify!

Now, you can follow Naru personal homepages on the Fediverse, and receive updates at most once a day per website. For example, if you want to receive updates for https://yang.naru.pub, you can simply folllow @yang@naru.pub.

I believe this is a significant improvement over polling websites and an effective way to stay connected with the indie web community.

yang.naru.pub

ํŒ€ ์–‘๋‚˜๋ฃจ

@jihyeok@hackers.pub ยท Reply to Jihyeok Seo

Naru (Korean Neocities) gains ActivityPub support thanks to Fedify!

Now, you can follow Naru personal homepages on the Fediverse, and receive updates at most once a day per website. For example, if you want to receive updates for https://yang.naru.pub, you can simply folllow @yang@naru.pub.

I believe this is a significant improvement over polling websites and an effective way to stay connected with the indie web community.

yang.naru.pub

ํŒ€ ์–‘๋‚˜๋ฃจ