18
6

Does my Lemmy instance support video streaming? tchncs shows ❌ Error: Failed to fetch

1y 2mon ago by discuss.tchncs.de/u/squirrel in tchncs@discuss.tchncs.de from aeharding.github.io

Many Lemmy instances are misconfigured, which can break progressive video streaming and even basic image loading in strange ways. The latest default lemmy-ansible config handles this correctly, but many instances use custom proxy setups that cause issues. This tool will check that:

  • ✅ The instance supports HTTP range requests for proper video streaming
  • ✅ CORS headers are properly set for API and pictrs media

The instance result shows:

discuss.tchncs.de ❌ Error: Failed to fetch

Note: will act on this asap, did not forget

Thank you Milan!

Any updates on this? I mean, it's not a critical issue by any means, but to my understanding (without knowing the specifics of your hosting setup) it could be an easy fix.

i have added some headers (most interesting perhaps slice) - however arte currently times out when testing, aeharding does not seem to present opengraph stuff to test, peertube seemed to work normally before my adjustments

playing back an uploaded video didnt look like it was sliced however it played without showing any obvious errors anywhere

i have added proxy_hide_header Access-Control-Allow-Origin; which seems to help with that reflected origin

Seems to be a CORS issue. A GET request to https://discuss.tchncs.de/pictrs/image/2254acd7-9ce1-4b07-b334-15631f2847e2.png is correctly responded to with a single Allow-Origin header:

Access-Control-Allow-Origin: *

However, the problem occurs when a browser makes that request. It adds an Origin header (For example, Origin: https://aeharding.github.io/ in this case), and then the server responds with two Allow-Origin headers, which is invalid:

access-control-allow-origin: https://aeharding.github.io/
Access-Control-Allow-Origin: *

(Note the different capitalization.)

Ignoring that, it also seems that the server does not support the Range header. Requesting the same image with the header:

Range: bytes=0-1

returns the full image instead of the requested partial content. This effectively means that while video/audio files hosted on this instance will play, features like fast forwarding won’t work properly. This is something @milan@discuss.tchncs.de will probably want to take a look at some point.