Lemmy is a self-hosted, federated alternative to Reddit Communities that connects independent discussion instances using ActivityPub and a Rust backend.
Lemmy is a self-hosted link aggregator and discussion platform built on ActivityPub. It replicates the community structure, voting mechanics, and threaded comments of link-sharing boards while federating across independent instances. Running on a compiled Rust backend with PostgreSQL, it lets homelab operators maintain their own discussion space without relying on corporate infrastructure.
Lemmy matches the core workflow of Reddit Communities by organizing discussions into topical boards, accepting link submissions, and ranking content through user votes and nested comment trees. Participants find familiar navigation, sorting algorithms for active or top posts, and community-level moderation tools. Unlike Reddit Communities, where a single corporate entity governs platform policies, monetizes user data, and restricts API access, Lemmy distributes ownership across autonomous server operators who establish their own moderation guidelines and data retention policies.
Operating across a federated network reshapes day-to-day administration. While Reddit Communities keeps all posts and accounts in a single database, Lemmy requires admins to manage federation rules and blocklists to protect their servers from spam. Users can subscribe to remote communities using federated handles (!community@domain), but discovering niche groups and synchronizing older threads requires active server communication. For self-hosters, the trade-off replaces centralized convenience with complete operational control and data ownership.
Lemmy vs Reddit Communities — what is the primary architectural difference? Reddit Communities operates as a centralized proprietary service with unified moderation, whereas Lemmy is a decentralized network where independent server owners control local policies and exchange content via ActivityPub.
Can I run Lemmy on a Raspberry Pi or low-power home server? Yes. Lemmy provides official ARM64 container images that run with modest memory overhead on single-board computers like the Raspberry Pi 4.
Is Lemmy free for commercial use? Yes. Lemmy is open-source software, though deploying it requires compliance with its copyleft licensing obligations.
Lemmy is the right choice for self-hosters and community organizers who want a link-aggregator model without corporate lock-in, provided they are prepared to manage a multi-container stack and curate federation relationships. Ongoing maintenance through August 2026 and an AGPL-3.0 license ensure that the platform remains open source and community-driven, even if you deploy a customized fork for a private homelab network.
We started this exact setup from scratch in a clean Linux machine on Nov 1, 2026 and checked it through Lemmy's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p lemmy && cd lemmy
curl -fsSL https://open-source.store/tools/lemmy/compose.yml -o compose.ymlcat > .env <<EOF
POSTGRES_PASSWORD=$(openssl rand -hex 12)
LEMMY_ADMIN_PASSWORD=$(openssl rand -hex 12)
PICTRS_API_KEY=$(openssl rand -hex 12)
LEMMY_EXTERNAL_URL=http://localhost:1236
EOFPOSTGRES_PASSWORD — Password for the PostgreSQL database user. Generated above; keep it secret.LEMMY_ADMIN_PASSWORD — Initial password for the default admin account. Generated above; keep it secret.PICTRS_API_KEY — API key for pict-rs media storage service. Generated above; keep it secret.LEMMY_EXTERNAL_URL — Public URL where Lemmy is accessed (e.g. http://<your-server>:1236 or https://lemmy.example.com); used for client connections, redirects, and federation.docker compose up -dservices:
proxy:
image: nginx:1-alpine
ports:
- "1236:1236"
restart: always
depends_on:
lemmy:
condition: service_healthy
lemmy-ui:
condition: service_healthy
entrypoint:
- /bin/sh
- -c
- |
cat <<'EOF' > /etc/nginx/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream lemmy {
server lemmy:8536;
}
upstream lemmy-ui {
server lemmy-ui:1234;
}
server {
listen 1236;
server_name localhost;
server_tokens off;
client_max_body_size 20M;
location / {
set $$proxpass "http://lemmy-ui";
if ($$http_accept ~* "application/(?:activity|ld)\+json") {
set $$proxpass "http://lemmy";
}
if ($$request_method = POST) {
set $$proxpass "http://lemmy";
}
proxy_pass $$proxpass;
rewrite ^(.+)/+$$ $$1 permanent;
proxy_set_header Host $$http_host;
proxy_set_header X-Forwarded-For $$proxy_add_x_forwarded_for;
}
location ~ ^/(api|pictrs|feeds|nodeinfo|version|\.well-known) {
proxy_pass http://lemmy;
proxy_http_version 1.1;
proxy_set_header Upgrade $$http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $$http_host;
proxy_set_header X-Forwarded-For $$proxy_add_x_forwarded_for;
}
}
}
EOF
exec nginx -g "daemon off;"
lemmy:
image: dessalines/lemmy:0.19.21
hostname: lemmy
restart: always
environment:
- RUST_LOG=warn
- LEMMY_CONFIG_LOCATION=/tmp/lemmy.hjson
- LEMMY_EXTERNAL_URL=${LEMMY_EXTERNAL_URL}
depends_on:
postgres:
condition: service_healthy
pictrs:
condition: service_started
entrypoint:
- /bin/bash
- -c
- |
H="$${LEMMY_EXTERNAL_URL#http*://}"
H="$${H%/}"
case "$$LEMMY_EXTERNAL_URL" in https://*) TLS=true ;; *) TLS=false ;; esac
cat <<EOF > /tmp/lemmy.hjson
{
setup: {
admin_username: "admin"
admin_password: "${LEMMY_ADMIN_PASSWORD}"
site_name: "Lemmy"
}
database: {
host: "postgres"
password: "${POSTGRES_PASSWORD}"
user: "lemmy"
database: "lemmy"
}
hostname: "$$H"
bind: "0.0.0.0"
port: 8536
tls_enabled: $$TLS
pictrs: {
url: "http://pictrs:8080/"
api_key: "${PICTRS_API_KEY}"
}
}
EOF
exec lemmy_server
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8536/api/v3/site || exit 1"]
interval: 5s
timeout: 5s
retries: 20
start_period: 10s
lemmy-ui:
image: dessalines/lemmy-ui:0.19.21
restart: always
environment:
- LEMMY_UI_LEMMY_INTERNAL_HOST=lemmy:8536
- LEMMY_EXTERNAL_URL=${LEMMY_EXTERNAL_URL}
depends_on:
lemmy:
condition: service_healthy
entrypoint:
- /bin/sh
- -c
- |
EXT="$${LEMMY_EXTERNAL_URL#http*://}"
EXT="$${EXT%/}"
export LEMMY_UI_LEMMY_EXTERNAL_HOST="$$EXT"
case "$$LEMMY_EXTERNAL_URL" in https://*) export LEMMY_UI_HTTPS=true ;; *) export LEMMY_UI_HTTPS=false ;; esac
exec node dist/js/server.js
healthcheck:
test: ["CMD-SHELL", "curl -fSs http://localhost:1234/ > /dev/null || exit 1"]
interval: 5s
timeout: 5s
retries: 10
start_period: 5s
pictrs:
image: asonix/pictrs:0.5.24
hostname: pictrs
environment:
- PICTRS__SERVER__API_KEY=${PICTRS_API_KEY}
- PICTRS__API_KEY=${PICTRS_API_KEY}
user: 991:991
volumes:
- lemmy-pictrs-data:/mnt
restart: always
postgres:
image: postgres:16-alpine
hostname: postgres
environment:
- POSTGRES_USER=lemmy
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=lemmy
volumes:
- lemmy-postgres-data:/var/lib/postgresql/data
restart: always
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
volumes:
lemmy-postgres-data:
lemmy-pictrs-data:
Lint, codegen, breaking-change checks and dependency management in one Git-native CLI. Open source, no registry lock-in.
Show that Lemmy is listed as an open-source alternative. Paste into your README:
Ubuntu 24.04 · Apple container, Docker 29.1.3, Compose 2.40.3+ds1-0ubuntu1~24.04.1. Images pulled in 66 s: postgres:16-alpine, nginx:1-alpine, dessalines/lemmy:0.19.21, dessalines/lemmy-ui:0.19.21, asonix/pictrs:0.5.24.
Based on the upstream setup. Official Lemmy docker-compose stack with backend, frontend, pictrs, postgres, and nginx reverse proxy. Database, admin, and pictrs credentials and public URL moved to .env.
lemmy-1 | 2026-11-01T21:10:25.307472170Z 2026-11-01T21:10:25.307408Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:25.307475962Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:25.307477003Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=8e267eb8-f66c-4c48-957c-6e9bc0e56883 lemmy-1 | 2026-11-01T21:10:25.307478170Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:25.309381795Z 2026-11-01T21:10:25.309335Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:25.309384878Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:25.309385837Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=4ee701c5-2086-4d80-864e-931a88dee7d9 lemmy-1 | 2026-11-01T21:10:25.309386837Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:25.311385128Z 2026-11-01T21:10:25.311335Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:25.311390628Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:25.311391587Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=270be237-182c-4d42-bccd-1ad1ad80ed8a lemmy-1 | 2026-11-01T21:10:25.311392878Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:25.312792628Z 2026-11-01T21:10:25.312768Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:25.312795753Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:25.312796628Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=7a510c3a-7ec7-4850-af00-85feac039bba lemmy-1 | 2026-11-01T21:10:25.312804920Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:25.314622253Z 2026-11-01T21:10:25.314570Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:25.314627587Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:25.314628712Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=16f4eab9-b77e-4d74-8d91-cc82c01922ab lemmy-1 | 2026-11-01T21:10:25.314629837Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:25.316477837Z 2026-11-01T21:10:25.316456Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:25.316481045Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:25.316481962Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=ccc61538-cdeb-4cc8-a9c9-d4fc7abdea75 lemmy-1 | 2026-11-01T21:10:25.316483087Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.230087962Z 2026-11-01T21:10:26.229316Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.230120754Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.230122670Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=26d5685a-72f6-4254-a3eb-d0352d275044 lemmy-1 | 2026-11-01T21:10:26.230124337Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.230172795Z 2026-11-01T21:10:26.229409Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.230175712Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.230177129Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=fa93a0e8-d76d-4170-8eef-6d6eaa5a5099 lemmy-1 | 2026-11-01T21:10:26.230178420Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.230179420Z 2026-11-01T21:10:26.229908Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.230180504Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.230181587Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=a30d34bf-e7f8-4d9c-95bb-bb11ec3705fa lemmy-1 | 2026-11-01T21:10:26.230182754Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.230183670Z 2026-11-01T21:10:26.229945Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.230184670Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.230185837Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=f561ac80-a0e6-4978-a885-696130f34bbd lemmy-1 | 2026-11-01T21:10:26.230186962Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.230197587Z 2026-11-01T21:10:26.229977Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.230198962Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.230199920Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=65d9c1a2-a952-4371-8780-194bc5645a5d lemmy-1 | 2026-11-01T21:10:26.230201087Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.230202004Z 2026-11-01T21:10:26.230021Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.230202962Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.230203879Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=6d83f29b-4716-4114-b133-99021d1710d3 lemmy-1 | 2026-11-01T21:10:26.230205004Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.230205879Z 2026-11-01T21:10:26.230051Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.230207129Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.230208295Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=021204a7-a3c2-44cf-b128-b7c44de9f128 lemmy-1 | 2026-11-01T21:10:26.230209462Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.230359087Z 2026-11-01T21:10:26.230330Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.230361670Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.230362754Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=24908ce3-4cae-4a72-9253-ef82d70c2197 lemmy-1 | 2026-11-01T21:10:26.230364004Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.230523295Z 2026-11-01T21:10:26.230495Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.230527170Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.230528295Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=537aeffe-0fd2-4734-bbf0-660ae0b80cf9 lemmy-1 | 2026-11-01T21:10:26.230529462Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.230657420Z 2026-11-01T21:10:26.230629Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.230659879Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.230660920Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=8f72dabb-a670-40be-9e94-bd6bf3ce1f06 lemmy-1 | 2026-11-01T21:10:26.230662170Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.230774462Z 2026-11-01T21:10:26.230751Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.230776837Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.230780712Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=c5715a5a-da9c-4e5e-befa-d76565f41cf3 lemmy-1 | 2026-11-01T21:10:26.230781920Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.230888420Z 2026-11-01T21:10:26.230869Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.230890670Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.230891670Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=54203ed7-0703-4819-9748-d4b31e304c2e lemmy-1 | 2026-11-01T21:10:26.230892837Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.231001004Z 2026-11-01T21:10:26.230979Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.231003170Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.231004170Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=9a251a50-c506-48d6-ab8e-d623c04b6a1e lemmy-1 | 2026-11-01T21:10:26.231005337Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.236879920Z 2026-11-01T21:10:26.236813Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.236901129Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.236902712Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=6cf388fe-fa38-4bdb-9880-b83807cbc66f lemmy-1 | 2026-11-01T21:10:26.236904170Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.237082545Z 2026-11-01T21:10:26.237007Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.237086670Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.237087837Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=eaade755-8d75-45b1-bb05-f23ac5f0c663 lemmy-1 | 2026-11-01T21:10:26.237088920Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.241645962Z 2026-11-01T21:10:26.241577Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.241662462Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.241664129Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/post/list otel.kind="server" request_id=00433c16-3aff-42b5-9a9b-11881874242d lemmy-1 | 2026-11-01T21:10:26.241665504Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.241821129Z 2026-11-01T21:10:26.241799Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.241824712Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.241825754Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/post/list otel.kind="server" request_id=be3b7f9b-7711-4039-b9d4-3e44f2a3d727 lemmy-1 | 2026-11-01T21:10:26.241835545Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.259390212Z 2026-11-01T21:10:26.259332Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.259406337Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.259407670Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/post/list otel.kind="server" request_id=dd7be2db-2cbd-4cc9-818d-b1672a7689d0 lemmy-1 | 2026-11-01T21:10:26.259409045Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.267412754Z 2026-11-01T21:10:26.267359Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.267425545Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.267426795Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=49ee045b-b739-483a-bf25-fd914fbd8efa lemmy-1 | 2026-11-01T21:10:26.267428004Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.267499712Z 2026-11-01T21:10:26.267483Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.267502504Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.267503379Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=fb54167e-bb92-4de8-8c0f-3b50b832b2fc lemmy-1 | 2026-11-01T21:10:26.267504420Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.267585212Z 2026-11-01T21:10:26.267570Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.267587129Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.267587962Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=f5fec9ef-767b-45bc-9b2a-b6b7423beedc lemmy-1 | 2026-11-01T21:10:26.267588879Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.267671545Z 2026-11-01T21:10:26.267630Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.267673295Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.267674170Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=3b349276-93d4-4246-a4fe-e6bc940563c9 lemmy-1 | 2026-11-01T21:10:26.267675212Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.271313087Z 2026-11-01T21:10:26.271249Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.271321962Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.271323045Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=12580c81-db78-464a-8b5b-5d28869bb10e lemmy-1 | 2026-11-01T21:10:26.271324129Z at src/root_span_builder.rs:16 lemmy-1 | 2026-11-01T21:10:26.271406004Z 2026-11-01T21:10:26.271392Z WARN lemmy_server::root_span_builder: RateLimitError: RateLimitError lemmy-1 | 2026-11-01T21:10:26.271476795Z 0: lemmy_server::root_span_builder::HTTP request lemmy-1 | 2026-11-01T21:10:26.271478837Z with http.method=GET http.scheme="http" http.host=lemmy:8536 http.target=/api/v3/site otel.kind="server" request_id=27977ece-dedf-4a16-90e5-4955d1ab92ad lemmy-1 | 2026-11-01T21:10:26.271480087Z at src/root_span_builder.rs:16