n9k
4eaf9b56f7
Might not be necessary, but if it is then it prevents a sitation where a websocket is still open but we've forgotten about it, so we will never broadcast any new messages to it and the client will be practically frozen in time until they disconnect and open a new websocket. Also update the user's last_seen when the websocket is closed. This prevents a user with js enabled who's actually idle being considered absent and being rotated when their websocket accidentally closes for a few seconds. |
||
---|---|---|
LICENSES | ||
anonstream | ||
.gitignore | ||
README.md | ||
STREAMING.md | ||
app.py | ||
config.toml | ||
requirements.txt | ||
title.txt |
README.md
anonstream
Recipe for livestreaming over Tor
Repo
The canonical location of this repo is https://git.076.ne.jp/ninya9k/anonstream.
These mirrors also exist:
Setup
You must have Python 3.10 at a minimum.
Clone the repo:
git clone https://git.076.ne.jp/ninya9k/anonstream.git
cd anonstream
Install dependencies in a virtual environment:
python -m venv venv
source venv/bin/activate
python -m pip install -r requirements.txt
Before you run it might want to edit /config.toml:
-
secret_key
: used for cryptography, make it any long random string (e.g.$ dd if=/dev/urandom bs=16 count=1 | base64
) -
segments/directory
: directory containing stream segments, the default isstream/
in the project root -
title/file
: location of the stream title, the default istitle.txt
in the project root -
captcha/fonts
: locations of fonts for the captcha, leaving it blank will use the default font
Run it:
python -m uvicorn app:app --port 5051
This will start a webserver listening on localhost port 5051.
If you go to http://localhost:5051
in a regular web browser now
you should see the interface. When you started the webserver some
credentials were printed in the terminal; you can log in with those at
http://localhost:5051/login
(requires cookies).
The only things left are (1) streaming, and (2) letting other people access your stream. /STREAMING.md has instructions for setting up OBS Studio and a Tor onion service. The instructions will be useful even if you want to use different streaming software and put your stream on the Internet some other way.
Copying
anonstream is AGPL 3.0 or later, see /LICENSES/AGPL-3.0-or-later.md.
Assets
- /anonstream/static/settings.svg: setting by ulimicon is licensed under CC BY 3.0.
Dependencies
-
aiofiles https://github.com/Tinche/aiofiles (Apache 2.0)
-
itsdangerous https://github.com/pallets/itsdangerous/ (BSD 3-Clause)
-
quart https://gitlab.com/pgjones/quart (MIT)
-
toml https://github.com/uiri/toml (MIT)
-
werkzeug https://github.com/pallets/werkzeug (BSD 3-Clause)