Search results

ActivityPub 서버에서 YouTube 추적 링크 방지하기

고남현 @gnh1201@hackers.pub

ActivityPub 서버에서 YouTube 추적 링크 방지하기

ActivityPub 서버에 공유되는 YouTube 링크는 종종 사용자들 사이에서 개인정보 보호 측면의 우려 사항으로 언급됩니다. 이는 공유된 URL에 포함된 si 파라미터나, YouTube 웹사이트 자체에 내장된 다양한 추적 기술 등 방문자를 추적하는 데 사용될 수 있는 여러 기술적 메커니즘 때문입니다.

현실적으로 볼 때, ActivityPub 프로토콜을 구현하는 프로젝트들이 이 문제에 대해 기본 제공 해결책을 제시할 가능성은 낮습니다. 이는 YouTube라는 특정 서비스에 국한된 문제가 아니라, 보다 광범위한 웹 추적 문제에 해당하기 때문입니다.

그럼에도 불구하고, 서버 관리자는 서버 차원에서 이러한 우려를 완화하기 위한 실질적인 조치를 취할 수 있습니다.

1. 대체 YouTube 프론트엔드 사용

YouTube로 직접 연결하는 대신, 개인정보 보호에 더 우호적인 대체 프론트엔드 사용을 권장할 수 있습니다.

  • DNT-YT (권장 — 이 시나리오를 위해 특별히 설계됨)
  • Piped
  • Invidious

이러한 프론트엔드들은 영상 접근성을 유지하면서도 추적을 줄이거나 제거하는 데 도움을 줍니다.

2. Nginx sub_filter를 사용한 링크 재작성

대체 프론트엔드를 설정한 이후에는, Nginx의 sub_filter 기능을 사용하여 YouTube 링크를 투명하게 재작성할 수 있습니다. 이를 통해 사용자가 원본 YouTube URL에 직접 접근하는 것을 방지하고, 대신 대체 프론트엔드를 통해 영상을 보도록 유도할 수 있습니다.

예시 설정은 다음과 같습니다.

sub_filter 'www.youtube.com/' 'dnt-yt.catswords.net/';
sub_filter 'youtube.com/' 'dnt-yt.catswords.net/';
sub_filter 'www.youtu.be/' 'dnt-yt.catswords.net/';
sub_filter 'youtu.be/' 'dnt-yt.catswords.net/';

결과

youtube.com 또는 youtu.be로 연결되는 링크가 일관되게 대체 프론트엔드 주소로 변경되는 것이 확인되면, 설정은 완료된 것입니다.

이 접근 방식을 실제로 적용한 사례는 아래 링크에서 확인할 수 있습니다.

https://catswords.social/@gnh1201/115801692643125819

Read more →
3
0

Federating knowledge: exploring ways to bridge wikis and notes

Join the workshop at !

NEW DATE: day 4, TODAY at 13:40 @ Free Knowledge Habitat Workshop Area.

Most people and organisations have their very own way of acquiring, organising, archiving, sharing, and collaborating on knowledge repositories. A broad spectrum of opinions and approaches resulted in a diverse and rich ecosystem of knowledge management solutions. Nevertheless, this also implies scattered and disconnected knowledge sources. What would it mean to build bridges among wikis and federate knowledge?

This workshop is going to be heavily centred on a twofold discussion, exploring the challenge of federated knowledge starting from two questions.

  • What does it mean to federate knowledge repositories?
  • Instead of pursuing a silver-bullet solution to embrace all use-cases, what would it mean to foster and enable interoperability for different software?

These questions stem from years of questioning and wondering how to integrate my personal note-taking and collective, participatory knowledge management at work, in organisations, institutions, and informal collectives. Recently, I began actively researching this topic as I started playing with the MediaWiki API to cross-synchronise my local Markdown notes and the XPUB wiki, the public learning wiki of the Experimental Publishing master. I am puzzled by taking advantage of the potential of a specific software (in this case, MediaWiki) while fearing of being locked-in.

Some further, more specific, insights and questions:

  • Local-first approaches and software (e.g. Reflection)
  • Interesting experiments based on existing protocols, such as Ibis
  • What do we take of semi-open and obscure yet very cool initiatives like Anytype
  • The power and the limits of plain-text: how to enable collaboration on simple Markdown files and build on top of it, as Obsidian does

Cc: @modalModal Collective @p2panda @obsidian @wikimediaDE @dweb

0
0
1
0
0
0

If you are at and want to learn more about the current advances we made in the SDK of @nextgraph thanks to the contributions of @laurin ., he will be presenting his work on Tuesday the 30th at 10:30 in the CDC Triangle.

events.ccc.de/congress/2025/hu

0
1
0
0

@hrast I've seen this passing by in discussions many times, but always in fleety timelines.. aka lost-in-time no further lines :)

This is a good to describe in more detail in the ideas inbox. Staging ground for the process and developer community, if there are people willing to pick them up. And then in turn perhaps staging ground for further standardization by .

codeberg.org/fediverse/fediver

0
0

@steltenpowerRuud Steltenpool yes! That is a really nice direction indeed.

We have some forum threads thinking in similar themes of radical new patterns and social knowledge fabrics.

You are most welcome to introduce your ideas on our forum, or discuss them in our channels.

is an important part of the the Fediverse solution delivery lifecycle (or Free software development lifecycle, depending on perspective)

Many projects may benefit paying more 👁️ attention here.

@steltenpowerRuud Steltenpool

In Common social groundwork interesting and protocol and standards chat is ongoing.

matrix.to/#/#groundwork-matter

While in Social experience design room broad themes are discussed, ranging from philosophical musings, to socio-technological best-practices, and how we can bridge gaps in current software, to make them better serve people's needs.

matrix.to/#/#socialcoding-foun

0
0
0

🫧

Why is mostly always flat lists, persisted as rows in most basic datastores?

Instead why aren't they 😋 juicy metadata-hung 🍒 nuggets, sparkling in rich semantic tapestries, discovered in lush forests of , where insights and knowledge can be gleaned? Fruits that lure us to explore, be more connected to others.

🍓 Personal vaults!

Tech's there..

?
Explore a ?
and hybrids?
's local-1st?

🫧

Why is mostly always flat lists, persisted as rows in most basic datastores?

Instead why aren't they 😋 juicy metadata-hung 🍒 nuggets, sparkling in rich semantic tapestries, discovered in lush forests of , where insights and knowledge can be gleaned? Fruits that lure us to explore, be more connected to others.

🍓 Personal vaults!

Tech's there..

?
Explore a ?
and hybrids?
's local-1st?

0

A good Fediverse prediction for 2026:

"The new “” algorithm in will prove that ethical recommendations & decentralization can coexist. @dansup’s approach—where each instance trains its own while surfacing content across the network—will be recognized as a breakthrough in solving the fediverse’s problem. By the end of 2026, the pattern will be studied or adopted by other ActivityPub platforms."

timothychambers.net/2025/12/23

0
0
0
0
0
0
0
Blue slide with white  letters. My picture and my avatar on the left. Sessions and Workshops I will be hosting at 39c3.

Blue
0
0
0
0

FEP-0151: NodeInfo in Fediverse Software (2025 edition)

I added the "Implementations" section and a reference to FEP-844e:

https://codeberg.org/fediverse/fep/pulls/741

There are 3 independent implementations now. Since this is a "2025 edition", and 2025 is about to end, I think the FEP should be finalized.

If you have any suggestions, please comment here, on SocialHub, or create an issue.

#fep #fep_0151 #activitypub #nodeinfo

@silverpill

💕 I'm so thankful for all the work to the process you have 🎁 gifted this entire year. You are one of those who help the shine, aggregating building blocks, paving pathways with grassroots tiles, where only raw substrate of ✨ possibilities existed before.

This "2026 edition" I hope we can walk, all like you, in unison on a singular cause. Towards sunnier futures. Grow strong to face a gloomy landscape of offline society.

0

FEP-0151: NodeInfo in Fediverse Software (2025 edition)

I added the "Implementations" section and a reference to FEP-844e:

https://codeberg.org/fediverse/fep/pulls/741

There are 3 independent implementations now. Since this is a "2025 edition", and 2025 is about to end, I think the FEP should be finalized.

If you have any suggestions, please comment here, on SocialHub, or create an issue.

#fep #fep_0151 #activitypub #nodeinfo

0
0

Ok, & geeks:

So, I use a combination a Firefox plugin & server settings to make sure all replies of threads I'm reading get downloaded for me to my local instance. Works great *except* it's really hard to keep track of what I read already & what I didn't. I just end up reading the whole thing over & over.

What I'd love is a way to “subscribe” (i.e., “follow a thread”) & have any reply on the thread put into my timeline.

Is there such a thing?

0
0

community forum has the plugin enabled yet 1st with full open, untweaked federation settings. Accessiblity for any got a real boost. Yet with big negative impact on 'sense of community'. It's up for debate whether adding support in early stages of dev was a wise move. And whether the result is net negative or positive (I think the former).

Any fedi dev: Think hard what it means to be federated. It's more than just 'plugging in'. Consider the side.

0

Checking out (and testing) the new Social Web Reader that’s been wrapped up in the plugin.

Not bad for a first draft - and I look forward to seeing how it handles likes, boosts and quotes. Could never quite gel with the Friends plugin, but this should serve my needs for when I finally move over to running everything from the site.

(Still needs a bit of work for swapping between the Site and User profiles though.)

0

Fedify 1.10.0: Observability foundations for the future debug dashboard

Fedify is a framework for building servers that participate in the . It reduces the complexity and boilerplate typically required for ActivityPub implementation while providing comprehensive federation capabilities.

We're excited to announce 1.10.0, a focused release that lays critical groundwork for future debugging and observability features. Released on December 24, 2025, this version introduces infrastructure improvements that will enable the upcoming debug dashboard while maintaining full backward compatibility with existing Fedify applications.

This release represents a transitional step toward Fedify 2.0.0, introducing optional capabilities that will become standard in the next major version. The changes focus on enabling richer observability through OpenTelemetry enhancements and adding prefix scanning capabilities to the key–value store interface.

Enhanced OpenTelemetry instrumentation

Fedify 1.10.0 significantly expands OpenTelemetry instrumentation with span events that capture detailed ActivityPub data. These enhancements enable richer observability and debugging capabilities without relying solely on span attributes, which are limited to primitive values.

The new span events provide complete activity payloads and verification status, making it possible to build comprehensive debugging tools that show the full context of federation operations:

  • activitypub.activity.received event on activitypub.inbox span — records the full activity JSON, verification status (activity verified, HTTP signatures verified, Linked Data signatures verified), and actor information
  • activitypub.activity.sent event on activitypub.send_activity span — records the full activity JSON and target inbox URL
  • activitypub.object.fetched event on activitypub.lookup_object span — records the fetched object's type and complete JSON-LD representation

Additionally, Fedify now instruments previously uncovered operations:

  • activitypub.fetch_document span for document loader operations, tracking URL fetching, HTTP redirects, and final document URLs
  • activitypub.verify_key_ownership span for cryptographic key ownership verification, recording actor ID, key ID, verification result, and the verification method used

These instrumentation improvements emerged from work on issue #234 (Real-time ActivityPub debug dashboard). Rather than introducing a custom observer interface as originally proposed in #323, we leveraged Fedify's existing OpenTelemetry infrastructure to capture rich federation data through span events. This approach provides a standards-based foundation that's composable with existing observability tools like Jaeger, Zipkin, and Grafana Tempo.

Distributed trace storage with FedifySpanExporter

Building on the enhanced instrumentation, Fedify 1.10.0 introduces FedifySpanExporter, a new OpenTelemetry SpanExporter that persists ActivityPub activity traces to a KvStore. This enables distributed tracing support across multiple nodes in a Fedify deployment, which is essential for building debug dashboards that can show complete request flows across web servers and background workers.

The new @fedify/fedify/otel module provides the following types and interfaces:

import { MemoryKvStore } from "@fedify/fedify";
import { FedifySpanExporter } from "@fedify/fedify/otel";
import {
  BasicTracerProvider,
  SimpleSpanProcessor,
} from "@opentelemetry/sdk-trace-base";

const kv = new MemoryKvStore();
const exporter = new FedifySpanExporter(kv, {
  ttl: Temporal.Duration.from({ hours: 1 }),
});

const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(exporter));

The stored traces can be queried for display in debugging interfaces:

// Get all activities for a specific trace
const activities = await exporter.getActivitiesByTraceId(traceId);

// Get recent traces with summary information
const recentTraces = await exporter.getRecentTraces({ limit: 100 });

The exporter supports two storage strategies depending on the KvStore capabilities. When the list() method is available (preferred), it stores individual records with keys like [prefix, traceId, spanId]. When only cas() is available, it uses compare-and-swap operations to append records to arrays stored per trace.

This infrastructure provides the foundation for implementing a comprehensive debug dashboard as a custom SpanExporter, as outlined in the updated implementation plan for issue #234.

Optional list() method for KvStore interface

Fedify 1.10.0 adds an optional list() method to the KvStore interface for enumerating entries by key prefix. This method enables efficient prefix scanning, which is useful for implementing features like distributed trace storage, cache invalidation by prefix, and listing related entries.

interface KvStore {
  // ... existing methods
  list?(prefix?: KvKey): AsyncIterable<KvStoreListEntry>;
}

When the prefix parameter is omitted or empty, list() returns all entries in the store. This is useful for debugging and administrative purposes. All official KvStore implementations have been updated to support this method:

  • MemoryKvStore — filters in-memory keys by prefix
  • SqliteKvStore — uses LIKE query with JSON key pattern
  • PostgresKvStore — uses array slice comparison
  • RedisKvStore — uses SCAN with pattern matching and key deserialization
  • DenoKvStore — delegates to Deno KV's built-in list() API
  • WorkersKvStore — uses Cloudflare Workers KV list() with JSON key prefix pattern

While list() is currently optional to give existing custom KvStore implementations time to add support, it will become a required method in Fedify 2.0.0 (tracked in issue #499). This migration path allows implementers to gradually adopt the new capability throughout the 1.x release cycle.

The addition of list() support was implemented in pull request #500, which also included the setup of proper testing infrastructure for WorkersKvStore using Vitest with @cloudflare/vitest-pool-workers.

NestJS 11 and Express 5 support

Thanks to a contribution from Cho Hasang (@crohasang크롸상), the @fedify/nestjs package now supports NestJS 11 environments that use Express 5. The peer dependency range for Express has been widened to ^4.0.0 || ^5.0.0, eliminating peer dependency conflicts in modern NestJS projects while maintaining backward compatibility with Express 4.

This change, implemented in pull request #493, keeps the workspace catalog pinned to Express 4 for internal development and test stability while allowing Express 5 in consuming applications.

What's next

Fedify 1.10.0 serves as a stepping stone toward the upcoming 2.0.0 release. The optional list() method introduced in this version will become required in 2.0.0, simplifying the interface contract and allowing Fedify internals to rely on prefix scanning being universally available.

The enhanced instrumentation and FedifySpanExporter provide the foundation for implementing the debug dashboard proposed in issue #234. The next steps include building the web dashboard UI with real-time activity lists, filtering, and JSON inspection capabilities—all as a separate package that leverages the standards-based observability infrastructure introduced in this release.

Depending on the development timeline and feature priorities, there may be additional 1.x releases before the 2.0.0 migration. For developers building custom KvStore implementations, now is the time to add list() support to prepare for the eventual 2.0.0 upgrade. The implementation patterns used in the official backends provide clear guidance for various storage strategies.

Acknowledgments

Special thanks to Cho Hasang (@crohasang크롸상) for the NestJS 11 compatibility improvements, and to all community members who provided feedback and testing for the new observability features.

For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.

0
0
0
0

Found this helpful resource by Ben Boyter (@boyter): a collection of sequence diagrams explaining how / works in practice—covering post creation, follows, boosts, deletions, and user migration.

If you're trying to implement ActivityPub, the spec can be frustratingly vague, and different servers do things differently. This aims to be a “clean room” reference for getting federation right.

https://github.com/boyter/activitypub

2
1
0

According to @tchambersTim Chambers's My 2026 Open Social Web Predictions:

Fedify will power the federation layer for at least one mid-sized social platform (500K+ users) that adds ActivityPub support in 2026. The “build vs. buy” calculation for federation shifts decisively toward “just use Fedify.”

We're honored by this recognition and will keep working hard to make adoption easier for everyone. Thank you, Tim!

0
0
0

Big Tech platforms routinely censor any mention of the , so I've started designing, printing, and placing these stickers around town.

No idea if they get any scans, but I figure simply getting the word "fediverse" out there might raise the consciousness a little.

Any ideas for slogans that might pique the interest of facebook-addicted normies?

Edit: I'm so glad this post has gotten so much attention, because I think it's a good idea, and I'd love to see others run with it. I know nothing about making stickers and wouldn't have made these had I not been gifted a small toy printer with a few rolls of sticker paper. Hopefully someone out there can do a more professional job of it :)

Three small white stickers each with qr code and the following black text, respectively:
 "Big tech thinks you're stupid. Join the fediverse! Jointhefediverse.net"

 "cats not capitalism. Join the fediverse! Jointhefediverse.net"

"Anarchy not Algorithms Join the fediverse! Jointhefediverse.net"
0
0
0
0

So, I have a long-term vision. I want to marry my mobilizon instance (AP) with XMPP.

Each account should also be an XMPP account under the same domain. For this authentication needs to be changed to the style the Fediverse does it. Plus support for 2FA. (XEPs might exist but clients don’t support it that way - maybe oAuth, not widely supported either).

1/2

0
0

ちょっと前から話題になっていたこちらの記事を基に、ThreadsとFediverseに関する記事を書きました。
何というか「知ってた」という感じの話ですが、参考になれば幸いです!
また、これを機にFediverseへの流入が見られたら嬉しいなと思っています。

ThreadsのFediverse機能がもはや積極的に開発されていないことが明らかに - osumiakari.jp
www.osumiakari.jp/articles/20251222-threadsnomoredev-activitypub/

RE:
mastodon.social/users/fediversereport/statuses/115747562378013581

0

I wonder if you could use/abuse Mastodon polls (FEP-9967) to distribute posts that provide near-real-time status updates (I'm thinking about severe weather alerts but I'm sure there are other use cases)?

Create a poll with an expiry far in the future and a token set of options (ideally just one—"Do you opt in?"—but poll implementations seem to require at least two).

Nothing seems to prevent the content of a poll from changing—and this is the key insight. The FEP says, "The type of a poll (single choice / multiple choices) and its options might be changed at any time. In that case the author of the poll MUST reset the vote counts." So broadcast updates via the content.

It would be a lightweight way to follow a single item without following the actor, built on top of implementations that already exist. 

0
0

🔒 Security Release: BotKit 0.3.1

We've released BotKit 0.3.1 with an important security fix.

This update addresses CVE-2025-68475 (High severity, CVSS 7.5), a ReDoS vulnerability in Fedify's HTML parsing that could cause denial of service.

If you're using BotKit 0.3.x, please upgrade to 0.3.1 as soon as possible.

0