gnostream has binaries. I need some brave testers to break it and if ya'll think it's good, I will do a full release. Self host your own streams.

https://github.com/0ceanSlim/gnostream/releases/tag/v-0.1.0-prerelease

Note, the hls files it's generating will need to be accessible by the public and that means a domain probably unless you do something else.

Reply to this note

Please Login to reply.

Discussion

This could use a non-technical "what you can do with this."

Maybe I'm just not seeing it.

What you can do. Make nostr streams and host them yourself.

Iโ€™m in for testing but it might not be much of a load test as I am not a famous streamer ser ๐Ÿ˜…

I'm not either ๐Ÿ˜‚

Note, no clue if the docker stuff works. IDK a lot about docker. I mean I do not just enough to be dangerous.

I tried the docker method this evening. The website is working but RTMP isn't. netstat inside the container says nothing is listening on 1935... I wasn't sure if your listing ffmpeg on the release page as a requirement meant we needed to install it separately, so I added it to the container, but still no working RTMP (though the logs say it is? ๐Ÿคทโ€โ™‚๏ธ (see below)). I'll take a fresh look tomorrow.

2025/09/08 05:06:09 ๐ŸŽฌ Starting RTMP server on port 1935...

2025/09/08 05:06:09 ๐ŸŽฌ RTMP server (FFmpeg-based) starting on port 1935

2025/09/08 05:06:09 ๐ŸŽฅ Starting RTMP server for stream: default

2025/09/08 05:06:09 โœ… RTMP server listening on rtmp://0.0.0.0:1935/live

try changing it from 0.0.0.0 to your machines ip and then try to connect to it that way.

I should have included ffmpeg as a dependency for the container and I'm not sure if I did. So I'll check on that.

Yup, I came to the same conclusion. Added the following to Dockerfile-prerelease and the rest worked:

# Install build dependencies for FFmpeg

RUN apk add --no-cache --virtual .build-deps \

build-base coreutils git nasm pkgconf yasm \

rtmpdump-dev openssl-dev x264-dev x265-dev freetype-dev libvorbis-dev opus-dev libvpx-dev lame-dev libtheora-dev xvidcore-dev \

fontconfig-dev fribidi-dev libass-dev

# Clone and build FFmpeg with librtmp disabled

RUN git clone --depth 1 https://git.ffmpeg.org/ffmpeg.git /tmp/ffmpeg && \

cd /tmp/ffmpeg && \

./configure \

--enable-gpl \

--enable-nonfree \

--enable-openssl \

--enable-libx264 \

--enable-libx265 \

--enable-libfreetype \

--enable-libvorbis \

--enable-libopus \

--enable-libvpx \

--enable-libmp3lame \

--enable-libtheora \

--enable-libxvid \

--enable-libfontconfig \

--enable-libfribidi \

--enable-libass \

--disable-debug \

--disable-doc \

--disable-ffplay && \

make -j$(nproc) && \

make install && \

cd /tmp && \

rm -rf /tmp/ffmpeg

Please try and let me know the pain points. The webserver needs to be accessable to the Internet and the external link in the configs is where you can specify the external domain for the booster events.

Nostr * events

Would you prefer feedback here or Github? I should be able to put my notes together today...

Here is fine if you want :)

Ok, I have it up BUT it's not playing my stream. I have it like this...

OBS > restreamer > gnostream server

Restreamer shows it's connected, via rtmp on :1935 ๐Ÿค”

I'll tackle more tomorrow. ๐Ÿซก๐Ÿ––๐Ÿพ

Do you have the web server available via the internet?

What it should be doing is streaming to the www/live folder. You should see an output file and a bunch of ts files there. Those are the files that need to be accessible via internet. The nostr event uses the external url config for the url on the nostr event. So it should be accessible via yourdomain.com/live/output.m3u8

So it could be a folder permission thing?

I'm able to navigate to the folders on the site just fine. Maybe the the program can't write to them? You're running the binary I take it? Is the folder in you home directory?

Yep, in home directory. It says everything is working, but the steam isn't showing. ๐Ÿคท๐Ÿพโ€โ™‚๏ธ

Hm. Should be showing then. Not sure. I'll hop on desktop in a bit and see if theres anything in the console on your site for clues. Do you have stuff in the archive folder now? Because if so, it should be showing in the vault.

Nothing in archive. I have it set to live-only

When you're live, do you see the output files in live

Nope, but from restreamer I can see that it's connected. From gnostream server I can see the IP of viewers. The 1935 and 8080 are up. That's about it. I've tried changing the host IP for rtmp from quad0, 127, localhost and the IP issued from DNS. I made a systemd service file, to running it in the background. I added rtmp support, added it to nginx.conf. I wasn't sure if I needed to do that.

Do you have ffmpeg?

The rmtp server does not have to be available to public. Because you are just streaming to it locally and the program makes hls files to serve on the webpage as a stream.

I fixed it! There was a conflict with ffmpeg. Upgraded to Trixie and all is right as rain. ๐Ÿซกโšก

I'm home now. Tag me when you try again and I'll check it out!

Making this a new top-level reply so its easier to find/see.

Summary

For a pre-release this is awesome! I've been contemplating the idea of self-hosting streaming since trying out zap.stream last year and this is absolutely a viable replacement.

I tried to organize my notes and thoughts as best I could; let me know if you need clarification on anything.

Docker host

- VM on Proxmox 9

- 2 cores of a Xeon E5-1630 v3, 4GB RAM

- Ubuntu Server LTS 24.04

- Separate Caddy container handling HTTPS/LetsEncrypt

- sharing Docker host with 4 other containers, mostly idle

- No performance issues.

System / Technical

- Setup was flawless except for FFmpeg missing (partly my fault for missing the requirement in the docs). Ended up having to build it in the Dockerfile without librtmp; error messages were vague but indicated an incompatibility with something in gnostream.

- RTMP stream key support will be a must for both general security and compatibility with some streaming tools (more on this in the UI / UX section).

- An admin interface of some kind for updating stream info would be nice, especially for those using Docker (its a pain to edit files directly inside containers). Though this would come with its own security load, so making it optional / separate / community-provided may be the better choice.

- Was able to stream from OBS on Windows and a sketchy app on iOS, and watch live and archives on the website on Windows (Firefox) and iOS (Orion).

- Was able to see Nostr stream events in noStrudel (Windows, Firefox). Haven't found or tested any Nostr clients for iOS that support NIP-53 events (I will admit I didn't look very hard...)

UI / UX

- OBS is the gold standard for desktop streaming and handles no auth with a simple checkbox, but all but one (sketchy) iOS app I tried required a stream key. I don't know how common streaming from mobile is (or whether the Android ecosystem is different), but I'd highly recommend adding stream key support.

- Much of the black-on-green text on the website is difficult to see. Inspector shows it as "cyan" and "green", but its displaying as black, and I couldn't find what was overriding it.

- The shimmer effect across the site runs over-top of the video window; not sure how big of a pain it would be to get it to run behind.

- Both the Data Vault and Recent Transmission section on the Live Feed page feel unwieldy to browse; auto-shrinking or capping the size of the video thumbnails would solve this.

- Some users may want archived / saved streams auto-posted to their Blossom server and/or as a simple link in a Kind-1 event, though given the file size of a longer stream Blossom may not be viable.

- The ability to export saved streams as single video files would be nice to have (admin only).

- Direct links for archived streams would be nice to have.

- The option to also post a Kind-1 event with a simple link to the stream would be nice to have. Would be awesome if the links used the stream thumbnail as their thumbnail (instead of the page/site preview) (I'm pretty sure there's some web magic that can achieve this, but it's been a while since I used it.)

- The play window for archived streams opening at the bottom of the Data Vault page is awkward; unsure if this is a bug or intentional.

- A super-simplified UI mode for the website that doubles as a template hosters can use to make their own custom UI? The webdevs among us could easily customize the current one, but having a simplified template would help encourage the up-and-coming webdevs to do so.

Perfect. Thanks so much. I'm going to address this point by point in the morning.

I'm pushing a new commit that has ffmpeg added to the container. So that should work now.

The RMTP server is not accessible by the internet at this point. It is for you to stream locally to from your software (obs) This is why no stream key is needed. If I ever add the ability for others to use your gnostream instance simultaniously stream keys will be needed of course. I won't say it's planned but it's not out of the question. (something like a zap top up for stream time credit using your stream server)

I know it's a pain to edit the configs directly, especially in docker. An admin panel to edit stream info and setting is planend but for much later after I know everything is working smoothly. I still want to add nostr client integration so people can chat on the site. I'm also eyeing youtube and twitch settings to create a unified platform to stream across all the major platforms in addition to nostr and your self hosted site with a unified chat across all platforms on the self hosted site.

Further on the stream key. I think adding a way to use a stream key optionally is something I can add to satisfy apps that require it.

The tailwind css might not be properly built, causing the bad ui displaying as black. I'll have to look into this further.

I'm pushing a commit that optimizes the mobile view and may solve some of the unwieldy browsing you experienced.

Something with blossom may be in the future, but I kind of want to build my own blossom server so I have something I built I can test with. Planned but way later.

You can use VLC or ffmpeg to to export your streams to a single video file at the moment but you can consider this planned. Will require nostr login then I can allow the feature for the server owner by nostr key.

What do you mean by direct links to archived files? You should be able to navigate to the direct link to the output file in archive as it stands now. The direct link is what's in the nostr event.

posting a kind 1 for the stream can come pretty easily once I integrate nostr login and more frontend nostr things.

Once things are working smoothly, I intend to simplify the ui enough to be able to make custom themes and such so anyone can change it to their liking with ease.

Keep an eye out for a new pre-release to try soon. I'll tag you when it's up.