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.
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]
Get all preset positions for a camera, or get the cameras on stream currently
!ptzload <camera:string> <preset:string>
Move a camera to a preset position
!ptzhome <camera:string>
Move a camera to its home position
!ptzzoom <camera:string> <zoom:number>
Change the relative zoom level of a camera (greater than 100 zooms in, less than 100 zooms out)
!ptzfocus <camera:string> <focus:number>
Change the relative focus distance of a camera (-9999 to 9999)
!ptzautofocus <camera:string> <mode:'on'|'off'>
Control auto-focus (if supported)
!swap <camera:string> <camera:string>
| <camera:string> <position:number>
| <position:number> <position:number>
| <position:number> <camera:string>
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).
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 PresetsThe 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 CommandsOutput: 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.
Server: Cloud OBS
Model: Open Broadcaster Software
Links:
Network Switch: Studio
Model: Ubiquiti USW-24-PoE
Connection: Cloud
Links:
Server: Local OBS
Model: Open Broadcaster Software
Connection: Ethernet
WiFi Access Point: Studio
Model: Ubiquiti UAP-FlexHD
Connection: Ethernet
Network Switch: Reptile Room
Model: Ubiquiti USW-24-PoE
Connection: Ethernet
Links:
Camera: Noodle
Model: AXIS M5525-E (PTZ)
Connection: Ethernet
Camera: Patchy
Model: AXIS M5075-G (PTZ)
Connection: Ethernet
Camera: Toast
Model: AXIS M5075-G (PTZ)
Connection: Ethernet
Camera: Georgie
Model: AXIS M5075-G (PTZ)
Connection: Ethernet
Camera: Georgie Water
Model: AXIS P1245 (Fixed)
Connection: Ethernet
Network Switch: Critter Cave Upper
Model: Ubiquiti USW-Lite-8-PoE
Connection: Ethernet
Links:
Camera: Zebra Isopod
Model: AXIS M5075-G (PTZ)
Connection: Ethernet
Camera: Spanish Orange Isopod
Model: AXIS M5075-G (PTZ)
Connection: Ethernet
Network Switch: Critter Cave Lower
Model: Ubiquiti USW-Lite-8-PoE
Connection: Ethernet
Links:
Camera: Hank
Model: AXIS M5075-G (PTZ)
Connection: Ethernet
Camera: Hank Corner
Model: AXIS M1065-LW (Fixed)
Connection: Ethernet
Network Switch: HQ
Model: Ubiquiti USW-16-PoE
Connection: Ethernet
Links:
WiFi Access Point: HQ
Model: Ubiquiti UAP-FlexHD
Connection: Ethernet
WiFi Access Point: Area Wide
Model: Ubiquiti UAP-AC-M-Pro
Connection: Ethernet
Network Switch: Training Center
Model: Ubiquiti USW-Lite-8-PoE
Connection: Ethernet
Links:
WiFi Access Point: Pasture
Model: Ubiquiti UAP-AC-M-Pro
Connection: Ethernet
Media Converter: Pasture
Model: TP-Link MC220L
Connection: Fiber
Links:
Network Switch: Pasture
Model: Ubiquiti USW-Lite-8-PoE
Connection: Ethernet
Links:
Audio I/O Interface: Pasture Audio I/O
Model: AXIS T6112 Mk II
Connection: Ethernet
Links:
Camera: Pasture
Model: AXIS Q6135-LE (PTZ)
Connection: Ethernet
Microphone: Pasture Microphone
Model: AXIS TU1001-VE
Connection: Ethernet
WiFi Access Point: Studio Radio
Model: airMAX NanoStation 5AC Loco
Connection: Ethernet
Links:
WiFi Access Point: Parrot Radio
Model: airMAX NanoStation 5AC Loco
Connection: WiFi
Links:
Network Switch: Parrot
Model: Ubiquiti USW-24-PoE
Connection: Ethernet
Links:
Camera: Parrot
Model: AXIS P5676-LE (PTZ)
Connection: Ethernet
Speaker: Parrot Speaker
Model: AXIS C1610-VE Network Sound Projector
Connection: Ethernet
WiFi Access Point: Parrot
Model: Ubiquiti UAP-AC-M-Pro
Connection: Ethernet
Audio I/O Interface: Parrot Audio I/O
Model: AXIS P8221 I/O Audio Module
Connection: Ethernet
Links:
Microphone: Parrot Microphone
Model: AXIS TU1001-VE
Connection: Ethernet
Network Switch: Nutrition House
Model: Ubiquiti USW-24-PoE
Connection: Ethernet
Links:
Camera: Nutrition House
Model: OBSBOT Tiny 4K (PTZ)
Connection: Ethernet
WiFi Access Point: Nutrition House
Model: Ubiquiti UAP-FlexHD
Connection: Ethernet
Network Switch: Wall Switch
Model: Ubiquiti USW-Lite-8-PoE
Connection: Ethernet
Links:
Camera Control Unit: Spare Control Module
Model: AXIS F9114
Connection: Ethernet
Links:
Camera: Spare Upper
Model: AXIS F4105-LRE (Fixed)
Connection: Coax
Camera: Spare Middle
Model: AXIS F4105-LRE (Fixed)
Connection: Coax
Camera: Spare Lower
Model: AXIS F4105-LRE (Fixed)
Connection: Coax
Camera Control Unit: Chin Control Module
Model: AXIS F9114
Connection: Ethernet
Links:
Camera: Chin Upper
Model: AXIS F4105-LRE (Fixed)
Connection: Coax
Camera: Chin Middle
Model: AXIS F4105-LRE (Fixed)
Connection: Coax
Camera: Chin Lower
Model: AXIS F4105-LRE (Fixed)
Connection: Coax
Network Switch: Power Distribution
Model: Ubiquiti USW-Lite-8-PoE
Connection: Ethernet
Links:
Network Switch: Crow
Model: Ubiquiti USW-Lite-16-PoE
Connection: Ethernet
Links:
Camera: Crow Outside
Model: AXIS M5525-E (PTZ)
Connection: Ethernet
Camera: Crow Inside
Model: AXIS M5525-E (PTZ)
Connection: Ethernet
WiFi Access Point: Crow
Model: Ubiquiti UAP-AC-M-Pro
Connection: Ethernet
Audio I/O Interface: Crow Audio I/O
Model: AXIS P8221 I/O Audio Module
Connection: Ethernet
Links:
Microphone: Crow Microphone
Model: AXIS TU1001-VE
Connection: Ethernet
Network Switch: Wolf
Model: Ubiquiti USW-Pro-24-PoE
Connection: Ethernet
Links:
Camera: Wolf SwitchPen
Model: AXIS Q6155-E (PTZ)
Connection: Ethernet
Camera: Wolf Pond
Model: AXIS Q6318-LE (PTZ)
Connection: Ethernet
Camera: Wolf Deck
Model: AXIS Q6318-LE (PTZ)
Connection: Ethernet
Camera: Wolf Den 1
Model: AXIS P1435-LE (Fixed)
Connection: Ethernet
Camera: Wolf Indoor
Model: AXIS P5676-LE (PTZ)
Connection: Ethernet
Speaker: Wolf Speaker
Model: AXIS C1610-VE Network Sound Projector
Connection: Ethernet
WiFi Access Point: Wolf Indoor
Model: Ubiquiti UAP-AC-M
Connection: Ethernet
Network Switch: Wolf Deck
Model: Ubiquiti USW-Flex
Connection: Ethernet
Links:
Camera: Wolf Den 2
Model: AXIS P1455-LE (Fixed)
Connection: Ethernet
WiFi Access Point: Wolf Deck
Model: Ubiquiti UAP-AC-M
Connection: Ethernet
Network Switch: Marmoset
Model: Ubiquiti USW-24-PoE
Connection: Ethernet
Links:
Camera: Marmoset Outside
Model: AXIS M5525-E (PTZ)
Connection: Ethernet
Camera: Marmoset Inside
Model: AXIS M5525-E (PTZ)
Connection: Ethernet
WiFi Access Point: Marmoset
Model: Ubiquiti U6-Mesh
Connection: Ethernet
Audio I/O Interface: Marmoset Audio I/O
Model: AXIS D3110 Connectivity Hub
Connection: Ethernet
Links:
Microphone: Marmoset Microphone
Model: AXIS TU1001-VE
Connection: Ethernet
Media Converter: Fox
Model: FS UMC-1F1T
Connection: Ethernet
Links:
Network Switch: Fox
Model: Ubiquiti US-8-150W
Connection: Fiber
Links:
Camera: Fox
Model: AXIS M5525-E (PTZ)
Connection: Ethernet
Camera: Fox Corner
Model: AXIS M2036-LE (Fixed)
Connection: Ethernet
Camera: Fox Den
Model: AXIS P3268-LV (Fixed)
Connection: Ethernet
WiFi Access Point: Fox
Model: Ubiquiti UAP-AC-M
Connection: Ethernet
Audio I/O Interface: Fox Audio I/O
Model: AXIS P8221 I/O Audio Module
Connection: Ethernet
Links:
Microphone: Fox Microphone
Model: AXIS TU1001-VE
Connection: Ethernet
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!
Website: github.com/alveusgg/alveusgg
Extension (Twitch): github.com/alveusgg/extension
Chatbot (Twitch): github.com/alveusgg/chatbot
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.