Jump to page contentJump to main navigation
Major Texas Flooding and Storm · Alveus Update

Page header

Tech at Alveus

Alveus Sanctuary is a virtual education center, and with that comes the need for a lot of technology to make it all work, from livestream broadcast systems to PTZ cameras and microphones in the ambassador enclosures.

Live Cam Controls

Anyone subscribed to Alveus Sanctuary on Twitch can control the position of the cameras currently shown on the livestream! Use the commands below in the Twitch chat to load preset positions, change the layout of the stream, or even tweak the focus or zoom of the cameras.

!ptzlist [camera:string]
Copy

Get all preset positions for a camera, or get the cameras on stream currently

!ptzload <camera:string> <preset:string>
Copy

Move a camera to a preset position

!ptzhome <camera:string>
Copy

Move a camera to its home position

!ptzzoom <camera:string> <zoom:number>
Copy

Change the relative zoom level of a camera (greater than 100 zooms in, less than 100 zooms out)

!ptzfocus <camera:string> <focus:number>
Copy

Change the relative focus distance of a camera (-9999 to 9999)

!ptzautofocus <camera:string> <mode:'on'|'off'>
Copy

Control auto-focus (if supported)

!swap <camera:string> <camera:string>
    | <camera:string> <position:number>
    | <position:number> <position:number>
    | <position:number> <camera:string>
Copy

Swap the layout of cameras currently on stream

Commands can be run from the AlveusSanctuary Twitch chat, or from the AlveusGG Twitch chat instead to keep the main chat clean. In either case, you need to be a subscriber to the main Alveus Sanctuary Twitch channel to use the commands.

Need help with moving the cameras to a position not covered by presets? Ask the moderators in Twitch chat as they have full access to control the cameras (and edit preset positions for you to use).

Camera Presets

Overwhelmed by the number of camera presets available, or just don't want to run commands by hand in chat? We've got you covered with our camera presets page! View thumbnail previews and descriptions of all the camera presets available, and if you're signed in as a subscriber, you can load them directly from the page to control what views are shown on stream.

View Camera Presets

Chat Commands

The bot that we use in our Twitch chat to control the cameras has many more commands available! Many of the commands are restricted to moderators only, but some of them are available to subscribers (beyond those documented above) or even everyone in chat.

Explore More Commands

System Overview

  • Output: Twitch Stream

    Connected to:

    • Server: Cloud OBS

      Open Broadcaster Software, running on a remote cloud server.

      Connected to:

      • Server: Local OBS

        Open Broadcaster Software, running on a local studio server.

        Connected to:

        • Source: Cameras

          Live IP cameras around the property, mainly Axis devices.

          Connected to:

          • Control: Axis Companion

            Axis IP camera management software allowing PTZ control.

          • Control: Chat Bot

            Custom Node.js application allowing control of stream layout and PTZ cameras from Twitch chat.

            Connected to:

            • GitHub: alveusgg/chatbot

              GitHub repository for the chat bot, allowing control of the stream layout and cameras.

        • Source: Overlays

          Browser-based overlays added to the stream in OBS, providing alerts etc., mainly using StreamElements.

        • Control: Chat Bot

          Custom Node.js application allowing control of stream layout and PTZ cameras from Twitch chat.

          Connected to:

          • GitHub: alveusgg/chatbot

            GitHub repository for the chat bot, allowing control of the stream layout and cameras.

      • Service: LiveU Service

        LiveU cloud streaming service, for ingesting remote video from a LiveU Solo.

        Connected to:

        • Source: Livestream Backpack

          LiveU Solo, a portable video encoder for live streaming, with a DSLR camera.

      • Service: IRL Pro

        IRL Pro, a mobile app for live streaming from a phone.

        Connected to:

        • Source: Mobile Phone

          Mobile phone, with IRL Pro app, for on-the-go streaming.

      • Control: Chat Bot

        Custom Node.js application allowing control of stream layout and PTZ cameras from Twitch chat.

        Connected to:

        • GitHub: alveusgg/chatbot

          GitHub repository for the chat bot, allowing control of the stream layout and cameras.

    • GitHub: alveusgg/extension

      GitHub repository for the Twitch extension showing ambassador information on the stream.

  • Output: YouTube Stream

    Connected to:

    • Server: Cloud OBS

      Open Broadcaster Software, running on a remote cloud server.

      Connected to:

      • Server: Local OBS

        Open Broadcaster Software, running on a local studio server.

        Connected to:

        • Source: Cameras

          Live IP cameras around the property, mainly Axis devices.

          Connected to:

          • Control: Axis Companion

            Axis IP camera management software allowing PTZ control.

          • Control: Chat Bot

            Custom Node.js application allowing control of stream layout and PTZ cameras from Twitch chat.

            Connected to:

            • GitHub: alveusgg/chatbot

              GitHub repository for the chat bot, allowing control of the stream layout and cameras.

        • Source: Overlays

          Browser-based overlays added to the stream in OBS, providing alerts etc., mainly using StreamElements.

        • Control: Chat Bot

          Custom Node.js application allowing control of stream layout and PTZ cameras from Twitch chat.

          Connected to:

          • GitHub: alveusgg/chatbot

            GitHub repository for the chat bot, allowing control of the stream layout and cameras.

      • Service: LiveU Service

        LiveU cloud streaming service, for ingesting remote video from a LiveU Solo.

        Connected to:

        • Source: Livestream Backpack

          LiveU Solo, a portable video encoder for live streaming, with a DSLR camera.

      • Service: IRL Pro

        IRL Pro, a mobile app for live streaming from a phone.

        Connected to:

        • Source: Mobile Phone

          Mobile phone, with IRL Pro app, for on-the-go streaming.

      • Control: Chat Bot

        Custom Node.js application allowing control of stream layout and PTZ cameras from Twitch chat.

        Connected to:

        • GitHub: alveusgg/chatbot

          GitHub repository for the chat bot, allowing control of the stream layout and cameras.

  • Output: Website

    Connected to:

    • Output: Low Latency Feed

      Low latency feed used by moderators for responsive PTZ control.

      Connected to:

      • Service: Cloudflare Stream

        Cloudflare Stream, used for the low latency feed over WebRTC.

        Connected to:

        • Server: Local OBS

          Open Broadcaster Software, running on a local studio server.

          Connected to:

          • Source: Cameras

            Live IP cameras around the property, mainly Axis devices.

            Connected to:

            • Control: Axis Companion

              Axis IP camera management software allowing PTZ control.

            • Control: Chat Bot

              Custom Node.js application allowing control of stream layout and PTZ cameras from Twitch chat.

              Connected to:

              • GitHub: alveusgg/chatbot

                GitHub repository for the chat bot, allowing control of the stream layout and cameras.

          • Source: Overlays

            Browser-based overlays added to the stream in OBS, providing alerts etc., mainly using StreamElements.

          • Control: Chat Bot

            Custom Node.js application allowing control of stream layout and PTZ cameras from Twitch chat.

            Connected to:

            • GitHub: alveusgg/chatbot

              GitHub repository for the chat bot, allowing control of the stream layout and cameras.

    • Service: Vercel

      Vercel hosting for the Alveus Sanctuary website.

      Connected to:

      • GitHub: alveusgg/alveusgg

        GitHub repository for the Alveus Sanctuary website.

Network + Enclosure Cameras

  • 16 Network Switches,
  • 13 WiFi Access Points,
  • 31 Cameras,
  • 5 Microphones

On-Site Compute

Alongside the complex network of switches and cameras that feed the livestream for Alveus, we also make use of a number of servers on-site to handle the processing of the video feeds and running various bits of tooling to support the livestream and the sanctuary itself.

Core Network

Living at the top of our main rack is our core networking equipment. This is where the fiber links from all the enclosures land, as well as the main uplink to the internet.

Fiber Aggregation

A USW Pro Aggregation switch from Ubiquiti offers us 28 SFP+ 10 Gbps ports, and 4 SFP28 ports with 25 Gbps capability, for high-speed connections to the rest of the network. We use this to connect all the enclosure fiber links to the network, as well as our other core networking equipment and the servers below.

Network Router

A UDM Pro from Ubiquiti serves as our core router, handling all the routing and firewalling for the sanctuary. It provides the rest of the network with an uplink to the internet and is connected to the Pro Aggregation switch via a 10 Gbps direct attach copper cable (DAC) link.

Network Switch

Also connected to the Pro Aggregation switch over a 10 Gbps fiber link is a USW Pro Max 24 PoE switch from Ubiquiti, which provides 24 GbE RJ45 ports (8 of which are capable of 2.5 Gbps) for connections to the management ports of servers and other equipment in the rack, and miscellaneous other devices like our HomeAssistant server.

Security Recording

Finally, at the bottom of the networking section of the rack, is a UNVR Network Video Recorder from Ubiquiti, which handles the recording of security cameras around the sanctuary (enclosure camera feeds are recorded to the storage server below), connected to the Pro Max switch via a GbE link.

Core Compute

Development Server

A 1U Dell PowerEdge R630 acts as our development server. It's connected to the network with a GbE link to the Pro Max switch, plus a second link for its management port. Proxmox is installed as the host OS acting as a hypervisor, with Tailscale running on the host for remote access. We have a development Kubernetes cluster running within Proxmox, as well as any other VMs that we need to test or develop on.

  • CPU: 2x Intel Xeon E5-2650 v4 @ 2.2 GHz
  • RAM: 20x 32 GB DDR4 ECC @ 2400 MHz
  • Storage: 2x 120 GB Dell S3510 SATA SSD
  • Networking: 8x GbE RJ45, 1x BMC RJ45

Application Server

A 2U SuperMicro AS-2024S-TR Mainstream A+ SuperServer acts as our production application server. The server is networked with a 10 Gbps fiber link to the Pro Aggregation switch, as well as a management port link to the Pro Max switch. As with the development server, Proxmox is installed as the host OS acting as a hypervisor, alongside Tailscale for remote access. A Kubernetes cluster is running within Proxmox, which hosts the majority of our applications. Additional VMs are also run in Proxmox for non-containerized applications, such as our database instances.

  • CPU: 2x AMD EPYC™ 7313 16-Core @ 3.0 GHz
  • RAM: 4x 64 GB DDR4 ECC @ 3200 MHz
  • Storage: 3x 960 GB Micron 7450 PRO NVMe SSD
  • Networking: 2x 10 Gbps SFP+, 2x GbE RJ45, 1x BMC RJ45

Storage Server

A 2U SuperMicro AS-2024S-TR Mainstream A+ SuperServer also acts as our storage server for all our enclosure camera feeds. Like the application server, this server is networked with a 10 Gbps fiber link to the Pro Aggregation switch and a link to the Pro Max switch for the management port. It also has Proxmox installed as the host OS with Tailscale for access. Two key VMs are deployed to the server, running MediaMTX which handles ingesting and re-broadcasting the camera feeds, and TrueNAS to expose the storage RAIDZ2 ZFS array as a network share for the cameras to record their feeds to continually. Additional VMs are run in Proxmox to utilize the spare compute available on the server, complementing the deployments on the application server.

  • CPU: 2x AMD EPYC™ 7313 16-Core @ 3.0 GHz
  • RAM: 4x 64 GB DDR4 ECC @ 3200 MHz
  • Storage: 8x 14 TB Seagate Exos™ 2X14 SAS HDD, 1x 960 GB Samsung PM9A3 M.2 SSD
  • Networking: 2x 10 Gbps SFP+, 2x GbE RJ45, 1x BMC RJ45

Open-source

We believe in being transparent in all that we do, and that includes the code we're writing to power Alveus Sanctuary. This website, our Twitch extension, and even that chatbot used to control the cams, are all open-source on GitHub. We're not just building in public, we're also always looking for community contributors to help us improve them!

If you discover a security vulnerability within the website, or any of our other open-source projects, please email us: opensource@alveussanctuary.org

Thanks to Vercel (web hosting), and Cloudflare (DNS, video streaming, and web hosting), for providing us their services free of charge as part of their open-source/non-profit programs.

Stay Updated!

follow @alveussanctuary on all social platforms!

and keep up-to-date with our announcement channels: