zero-confirmation, javascript-optional, monero-only superchat app for livestreams

Shadowchan, the unofficial mascot character of Shadowchat



ABOUT

Livestreaming is a popular source of entertainment for almost everybody online. Whether gamers, VTubers, or podcasts, most content creators use livestreaming to communicate directly with their audience and fans. YouTube is the most popular place for livestreams by far, but there are others. Twitch, D-Live, Odysee, and others offer the same functionality.



One of the key features of livestreaming is superchats. They allow fans to communicate directly with streamers, and streamers to get financial support from their fans. Unfortunately, on mainstream platforms like YouTube and Twitch, fan support requires using real-life bank accounts and credit cards, which is both a privacy and a security problem. Newer platforms use cryptocurrency, such as LBC on Odysee or TRX on DLive. While this is an improvement, it's still far from perfect. Some platforms still require verification with real-life ID to user cryptocurrency superchats. And even if they don't, they're still centralized on one website and controlled by one company.



Thankfully, there's a solution. Shadowchat is a zero-confirmation, javascript-optional, monero-only superchat app for livestreams. Shadowchat uses Go to create a webserver connected to the Monero Wallet RPC. Viewers can send a message attached to a Monero transaction, which appears on a password-protected private page and can be viewed in popular streaming software like OBS. Because it's self-hosted, no third parties can interfere to impose unfair rules. The system can be used on any livestreaming platform, even self-hosted ones like PeerTube and OwnCast. And best of all, Shadowchat is Free and Open Source Software.




INSTALL

Download / Install

You'll need to install the Go toolchain (at least verion 1.21.x) and make note of your GOPATH afterwards before you proceed with installation.



Shadowchat requires a public, internet-facing server for other people to access. Renting a VPS might be the easiest way to do this. The examples below assume you're installing in /opt/shadowchat, but you're free to put it anywhere you like as long as the config points to it correctly.

Log into your server and run the following from the command line:

  1. sudo mkdir -p /opt/shadowchat
  2. sudo chown shadowchat:shadowchat /opt/shadowchat
  3. go install gitgud.io/greyarea/shadowchat@latest
  4. sudo mv $(go env GOPATH)/bin/shadowchat /opt/shadowchat/

Monero Setup

It's recommended to allow shadowchat to manage the monero-wallet-rpc. The instructions below assume this, but you're free to run it seperately if you prefer.

  1. Generate a view only wallet using the monero-wallet-gui from getmonero.org. Make sure NOT to set a password for this wallet.
  2. Copy the newly generated walletname_viewonly and walletname_viewonly.keys files onto your VPS, into /opt/shadowchat/. Make sure that both files are in the same directory, alongside the shadowchat executable.
  3. Download the monero-wallet-rpc binary that is bundled with the getmonero.org wallets and copy it to the VPS, also into /opt/shadowchat alongside the wallet and shadowchat files.


Configuration

The shadowchat executable can create a commented example configuration file to use as the basis for the configuration. This MUST be edited and shadowchat will refuse to run with the default configuration:

  1. /opt/shadowchat/shadowchat default-config -o /opt/shadowchat/config.yml
  2. nano /opt/shadowchat/config.yml

The following config options should be set:


Once the edited config.yml is saved, you may start the shadowchat service:

At this point, the shadowchat service is not automated and will stop if the server reboots. You may automate the service based on your preference, but a simple systemd unit file is provided in the source code as an example.


Usage

A webserver at 127.0.0.1:8900 is now running. You'll need to set up a nginx proxypass to point a URL at it.

.

There are a handful of sub-commands that can be used to administer a running instance. See shadowchat --help for more details


JavaScript is included in shadowchat, but is 100% optional. Content is generated server-side via the Go template library, and visitors with script-blockers will be able to seamlessly access and use your shadowchat instance without issue


OBS

Add a Browser source in OBS and point it to https://example.com/alert?auth=auth_key





SOURCE CODE

Shadowchat comes from https://gitgud.io/greyarea/shadowchat/. It started off as https://git.sr.ht/~anon_/shadowchat, which was forked to https://github.com/lukesmithxyz/shadowchat. The original author has vanished off the face of the Earth, and the original upstream has since disappeared.


Japanese localization and the Shadowchan mascot are based on https://gitgud.io/japananon/shadowchatjp and used with permission.


Shadowchat was neither created nor is it being developed or maintained by the makers of this website. This site exists solely for the purpose of spreading awareness of Shadowchat, and encouraging its adoption.


The Shadowchat software is licensed under GPLv3. The mascot character "Shadowchan" is licensed under CC BY-SA 4.0, and is free to copy, share, remix, and reuse under the terms of that license.


Donate

The current maintainer of Shadowchat is not accepting donations. The creator of this website is too ashamed to ask for any. And the original creator of Shadowchat is MIA, so there's no guarantee they'd even receive any if you sent them. Use this software for zero dollars with a clean conscience.




EXAMPLES

See Shadowchat in action at the following addresses:




CONTACT

In the unlikely event you need to contact the creator of this website, please feel free to use the following contact form at https://peertube.anon-kenkai.com/about/contact


If you'd like to contact the developer of Shadowchat, you can try going to the GitGud repo and figuring it out for yourself.