Skip to content

Commit

Permalink
📝(website): polish out the rough edges
Browse files Browse the repository at this point in the history
  • Loading branch information
debloper committed Sep 4, 2024
1 parent 433e463 commit f674f03
Show file tree
Hide file tree
Showing 15 changed files with 207 additions and 197 deletions.
7 changes: 0 additions & 7 deletions build.sh

This file was deleted.

10 changes: 7 additions & 3 deletions docs/src/content/docs/intro/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import Xplex from '@components/Xplex.astro';

## What does it do?

<Xplex /> acts as a bridge between your streaming software (e.g. OBS Studio, Streamlabs OBS, XSplit etc.) and the streaming services (e.g. Twitch, YouTube etc.). It takes the stream from your streaming software and goes live on all of the streaming services you've asked it to &mdash; **all at once**!
<Xplex /> acts as a bridge between your streaming software (e.g. OBS, XSplit etc.) and the streaming services (e.g. Twitch, YouTube etc.). It takes the stream from your streaming software and goes live on all of the streaming services you've confiugured it to&mdash;**all at once**!

:::note[Think of it this way...]
Imagine <Xplex /> is an HDMI splitter. You connect your streaming software to <Xplex /> (like you connect your HDMI source to the splitter), and <Xplex /> forwards the stream to multiple streaming services (like the splitter forwards the video to multiple screens).
Expand All @@ -25,12 +25,14 @@ Imagine <Xplex /> is an HDMI splitter. You connect your streaming software to <X
For now, it takes running at least an oneliner command in a terminal to make it work; so you could say it's for technically adept streamers.

:::caution[Stay tuned!]
We are working on getting the need for CLI commands down to zero. At which point, <Xplex /> is for anybody who want to multi-stream without a headache.
We are working on getting the need for CLI commands down to zero. At which point, <Xplex /> is for anybody wanting to multi-stream without a headache.
:::

## Where does it run?

Ideally you would want to setup <Xplex /> on a cloud server with good network bandwidth, so it can handle multiple streams. But you can also run it on your local machine, or on a homelab server.
Ideally you would want to setup <Xplex /> on a cloud server with good network bandwidth, so it can handle multiple streams. You can also run it on your local machine, or on a homelab server, but you should avoid running it on your main workstation.

This [reference on host selection](/refs/choose/hosts) goes a bit deeper to explain the reasoning behind this.

:::tip[Compute & Complexity]
There's no transcoding involved, so not only the stream quality remains the same as what you're sending from your streaming software, but there's no significant overhead on the server either. You can run <Xplex /> even on the lowest-end VM/VPS that cloud providers have to offer.
Expand All @@ -40,6 +42,8 @@ There's no transcoding involved, so not only the stream quality remains the same

<Xplex /> is **free and open source software**. You can run it on your own home server, or use a cloud server to host it. The only cost you would incur is the server cost; and the exact value depends on your cloud provider and their pricing of the compute unit of your choice.

The [reference for choosing cloud providers](/refs/choose/clouds) has cost comparison for basic estimation. It also has **referral sign up links** with free credits for you to get started with the evaluation.

---

Hopefully you now have a good idea of what to expect from <Xplex /> as a user. But, if you're still curious to know more about its internal details, let's dive in a bit deeper...
8 changes: 3 additions & 5 deletions docs/src/content/docs/intro/internals.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,13 @@ while leaving room for progressive enhancements
- This is simpler than installing Node.js on the `nginx-rtmp` image.
- We may want to move out or refactor Node.js dependency in future.
- **Then we apply configurations for the HTTP & RTMP servers.**
- But we don't start the nginx process yet
- Better to start the Node.js server (on port 8080) first
- Else nginx won't reverse proxy it to port 80 without another reload
- Reverse proxying is not functionally necessary for the setup to work, but it's the easiest way to infer that the setup is working by being able to access the dashboard over port 80.
- The HTTP server reverse proxies the <Xplex /> server to run on port 8080 to port 80.
- Reverse proxying is not functionally necessary for the setup to work (API or stream).
- But accessing dashboard over port 80 the easiest way to validate nginx build success.
- **Then we install <Xplex isHQ /> as a simple Node.js app to manage the ingest URLs**
- **Finally, we start the processes inside the container in sequence**
- The Node.js server is started first & sent to background
- Then the nginx process is started with daemon mode off
- This is needed to keep the container running & also helpful for following logs

## Future Roadmap

Expand Down
7 changes: 3 additions & 4 deletions docs/src/content/docs/quick-start.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
---
title: Quick Start
description: Abridged manual for setting up xplex.
next:
link: /setup
label: Set up Overview
---
import Xplex from '@components/Xplex.astro';
import { Steps } from '@astrojs/starlight/components';
Expand All @@ -26,7 +29,3 @@ This gets you jump-started with <Xplex />. For more comprehensive docs, use the
<span style="font-size: 4rem;">🚀🚀🚀</span>

</Steps>

:::tip[For more details]
Check the [docker setup guide](/setup/docker) for more detailed instructions.
:::
11 changes: 8 additions & 3 deletions docs/src/content/docs/refs/check/docker.mdx
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
---
title: Docker Installation
description: How to install & verify Docker on a Debian based system.
description: Install & verify Docker on a Debian based system.
prev:
link: /setup
label: Set up Overview
---
import Xplex from '@components/Xplex.astro';
import { Badge, Steps } from '@astrojs/starlight/components';

Docker is necessary for running <Xplex /> as a container. If you went with the [system image with Docker preinstalled](/setup/host#option-1-set-up-a-new-cloud-host), or if you want to run <Xplex /> natively, then you can skip this section.
:::note[Preinstalled Docker]
If you went with a [cloud instance with Docker preinstalled](/refs/choose/clouds#create-a-new-instance-with-docker), then you can skip this section.
:::

## Verify Installation

Expand All @@ -26,4 +31,4 @@ If not, then let's get started with the installation.
curl -fsSL https://get.docker.com | sudo sh
```

This script will install Docker on any Linux host. Make sure to verify the installation by running the commands mentioned above.
This script will install Docker on any Linux host. Make sure to verify the installation by running the verification commands mentioned above.
3 changes: 3 additions & 0 deletions docs/src/content/docs/refs/check/superuser.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
---
title: Superuser Access
description: Check if you have superuser access to the host system.
next:
link: /setup
label: Set up Overview
---
import Xplex from '@components/Xplex.astro';
import { Badge, Card, Icon, Steps } from '@astrojs/starlight/components';
Expand Down
18 changes: 13 additions & 5 deletions docs/src/content/docs/refs/choose/clouds.mdx
Original file line number Diff line number Diff line change
@@ -1,26 +1,32 @@
---
title: Cloud Host Provider
description: A guide to help you choose the right cloud provider to run xplex.
prev:
link: /refs/choose/hosts
label: Host System Type
next:
link: /setup
label: Set up Overview
---
import Xplex from '@components/Xplex.astro';
import { Badge, Card, Steps, Tabs, TabItem } from '@astrojs/starlight/components';

:::tip[Free Test Run]
The referral sign up links will give you ample credits to try <Xplex /> for a few months at no cost.
The referral sign up links will give you ample credits to try <Xplex /> at no cost to you:

<Tabs>
<TabItem label="DigitalOcean">
<Card title="<a href='https://m.do.co/c/97a76c3ca7ad' title='DigitalOcean Referral Sign Up Link' target='_blank'>Sign up to DigitalOcean</a>" icon="information">
<Card title="<a href='https://m.do.co/c/97a76c3ca7ad' title='DigitalOcean Referral Sign Up Link' target='_blank'>Sign up to DigitalOcean 🔗</a>" icon="information">
Use the link to get $200 starting credit on DigitalOcean for 2 months.
</Card>
</TabItem>
<TabItem label="Linode">
<Card title="<a href='https://login.linode.com/signup' title='Linode Sign Up Link' target='_blank'>Sign up to Linode</a>" icon="information">
<Card title="<a href='https://login.linode.com/signup' title='Linode Sign Up Link' target='_blank'>Sign up to Linode 🔗</a>" icon="information">
Linode sign up link (no referral yet&mdash;you have to pay out of pocket).
</Card>
</TabItem>
<TabItem label="Vultr">
<Card title="<a href='https://www.vultr.com/?ref=9638716' title='Vultr Referral Sign Up Link' target='_blank'>Sign up to Vultr</a>" icon="information">
<Card title="<a href='https://www.vultr.com/?ref=9638716' title='Vultr Referral Sign Up Link' target='_blank'>Sign up to Vultr 🔗</a>" icon="information">
Use the link to get $10 starting credit on Vultr for 1 months.
</Card>
</TabItem>
Expand All @@ -43,8 +49,10 @@ Here's a list of some popular cloud providers' <Badge text="cheapest" /> compute
<details>
<summary>If this is your first time setting up a cloud server, then start with [Vultr](https://www.vultr.com/?ref=9638716)</summary>
- You can do a lot of trial & error with the $10 credit for a month.
- You can run upto 4 parallel instances; so you can try different configurations.
- You can run upto 4 parallel $2.5 instances; to try different configurations.
- And if you mess up, you can just destroy the instance & start over.
- Instances are charged for the duration they're running.
- You're not billed twice for destroying and recreating instances.
</details>

<details>
Expand Down
12 changes: 9 additions & 3 deletions docs/src/content/docs/refs/choose/hosts.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
---
title: Host System Type
description: A guide to help you choose the right host system to run Xplex.
description: A guide to help you choose the right host system to run xplex.
prev:
link: /setup
label: Set up Overview
next:
link: /refs/choose/clouds
label: Cloud Host Provider
---
import Xplex from '@components/Xplex.astro';
import { Badge, Card, Steps } from '@astrojs/starlight/components';
Expand All @@ -16,7 +22,7 @@ import { Badge, Card, Steps } from '@astrojs/starlight/components';
You're not into system administration. You just want to get things done and move on.
:::

Just create an instance on the [cloud provider of your choice](/refs/decide/clouds), and then follow the guide on [how-to run as a Docker container](/setup/docker).
Just create an instance on the [cloud provider of your choice](/refs/choose/clouds), and then follow the guide on [how-to run as a Docker container](/setup/docker).
</details>
2. <details>
<summary>**Use Existing Cloud Host**</summary>
Expand Down Expand Up @@ -45,7 +51,7 @@ import { Badge, Card, Steps } from '@astrojs/starlight/components';

If you have the flexibility to choose the distro, then go with a Debian-based distro like Ubuntu LTS, latest stable version of Debian or OpenMediaVault etc.

Nothing wrong with other distros, but as we use Debian base images for creating the Docker containers, it's more comprehensively tested & less likely to have unpredictable surprises.
Nothing wrong with other distros, but as we use Debian base images for creating <Xplex /> containers, it's better tested & less likely to have unpredictable surprises.
</details>
<details>
<summary>Ensure a stable wired network</summary>
Expand Down
4 changes: 3 additions & 1 deletion docs/src/content/docs/refs/manage/encoder.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Set Up Encoder
description: A comprehensive guide on how to use xplex.
description: Optimize encoder configurations for streaming.
prev: false
next: false
---
import Xplex from '@components/Xplex.astro';

Expand Down
4 changes: 3 additions & 1 deletion docs/src/content/docs/refs/manage/firewall.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Configure Firewall
description: A comprehensive guide on how to use xplex.
description: Configure firewall to allow traffic on xplex ports.
prev: false
next: false
---
import Xplex from '@components/Xplex.astro';
import { Tabs, TabItem } from '@astrojs/starlight/components';
Expand Down
4 changes: 3 additions & 1 deletion docs/src/content/docs/refs/manage/ingest.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Collect Ingest Endpoints
description: A comprehensive guide on how to use xplex.
description: Discover the ingest endpoints & stream keys for streaming services.
prev: false
next: false
---
import Xplex from '@components/Xplex.astro';
import { Tabs, TabItem } from '@astrojs/starlight/components';
Expand Down
37 changes: 8 additions & 29 deletions docs/src/content/docs/setup/docker.mdx
Original file line number Diff line number Diff line change
@@ -1,47 +1,26 @@
---
title: Run with Docker
description: A comprehensive guide on how to setup xplex with Docker containers.
next:
link: /setup/postinstall
label: Post-installation
---
import Xplex from '@components/Xplex.astro';
import { Badge, Card, Steps } from '@astrojs/starlight/components';

:::note[]
If you went with the <Badge text="1-click setup" variant="caution" /> option with [Docker preinstalled](/refs/choose/clouds) system image on a cloud instance&mdash;then skip the next sections and jump ahead to the [interesting bit](/setup/docker#run-the-docker-container) down below.
:::

## Requirements

<Steps>

1. [**Verify superuser access**](/refs/check/superuser)
2. [**Ensure Docker is installed**](/refs/check/docker)
3. [**Look out for conflicting nginx**](/refs/check/nginx)
4. [**Confirm required ports are free**](/refs/check/ports)

</Steps>


## Configure Firewall

If the host is running a firewall, make sure to allow traffic on ports `80` (HTTP) & `1935` (RTMP). Follow [the firewall guide](/refs/manage/firewall) to learn how to open ports on your system.


## Run the Docker Container
import { Steps } from '@astrojs/starlight/components';

<Steps>

1. ```bash title="Run the xplex container"
docker run -d --name xplex -p 80:80 -p 1935:1935 xplex/xplex
```

2. Open a browser & access your <Xplex isHQ /> dashboard at `http://<hostname-or-IP>/`
2. Check the [firewall guide](/refs/manage/firewall) to ensure the host allows traffic on ports `80` (HTTP) & `1935` (RTMP).

3. Open a browser & access your <Xplex isHQ /> dashboard at `http://<hostname-or-IP>/`

</Steps>

<span style="font-size: 4rem;">🎉🎉🎉</span>

That's it... you now have a running <Xplex /> instance, which is ready for the multi-streaming setup.
That's it... you now have a running <Xplex /> instance, which is ready for the [post-installation setup](/setup/postinstall).
<Card title="<a href='/postinstall'>Jump to the post-installation configurations</a>" icon="random">
Configure <Xplex isHQ /> & your streaming software to setup <Xplex /> for multi-streaming.
</Card>
58 changes: 29 additions & 29 deletions docs/src/content/docs/setup/index.mdx
Original file line number Diff line number Diff line change
@@ -1,65 +1,65 @@
---
title: Set up overview
description: A comprehensive guide on how many ways to setup xplex.
prev:
link: /quick-start
label: Quick Start
---
import Xplex from '@components/Xplex.astro';
import { Badge, Card, CardGrid, Icon, LinkCard } from '@astrojs/starlight/components';
import { Badge, Card, CardGrid, LinkCard, Steps } from '@astrojs/starlight/components';

Setting up multi-streaming with <Xplex /> is pretty straightforward. Some technical expertise will sure be handy, but the only thing you need in abundance is excitement & determination to see it through.

:::tip[Docs can be fun too!]
This guide is like an exploration adventure where you scoot along the terrain... sometimes coming to a fork of decision, and then make a choice to go with one that fits you the most.

You may not even be installing <Xplex /> at the moment&mdash;that doesn't mean you can't have fun!
:::
Setting up multi-streaming with <Xplex /> is pretty straightforward. Some technical expertise will be handy&mdash;but what's crucial&mdash;is your excitement & determination to see it through.

**And if you just follow along the steps, you'll be up and live in no time!**

## Get a Host System

As a self hosted service, <Xplex /> needs a ***host*** to run. By that we mean it needs a computer&mdash;albeit small or cheap; but with an operating system &mdash;to run on.
As a self hosted service, <Xplex /> needs a ***host*** to run. By that we mean it needs a computer&mdash;albeit small or cheap; but with an operating system &mdash;to run on. This reference will help you decide:

If this is super obvious to you; and you've already decided on a host that's ready to go, then you can skip ahead to the next steps. But if you're new to this, then here's a guide to get you started:

<Card title="<a href='/setup/host'>Get a Host System</a>" icon="laptop">
A comprehensive guide on how to choose a host system to run <Xplex />.
<Card title="<a href='/setup/host'>Choose Host System</a>" icon="laptop">
A guide to help you choose the right host system to run <Xplex />.
</Card>


## Run Preliminary Checks

Before you start the setup process (especially if you're going with an existing homelab or cloud server with other services running on it, or maybe even on a new system with preinstalled software on it) you should ensure that the host system is ready to run it. This includes checking:
If you're using an existing homelab or cloud server with other services running on it, or even on a new system with preinstalled software packages&mdash;validate that it meets the requirements to run <Xplex />:

- if you have root access
- if there's no existing nginx service running, and
- if the required ports are available & not blocked by firewall.
<Steps>

Again, if you're already familiar with these checks, then you can skip ahead to the next steps. But if you're new to this, then here's a guide to get you started:
1. [**Verify superuser access**](/refs/check/superuser)
2. [**Ensure Docker is installed**](/refs/check/docker)
3. [**Look out for conflicting nginx**](/refs/check/nginx)
4. [**Confirm required ports are free**](/refs/check/ports)

</Steps>

<Card title="<a href='/setup/precheck'>Run Preliminary Checks</a>" icon="approve-check-circle">
A comprehensive guide on how to check if your host system is ready to run <Xplex />.
</Card>

## Choose Your Adventure

Brace yourself, <Badge text="you're all set" /> to install <Xplex /> and there are two ways to go on about it:
If you're ready to install <Xplex />, take one of these paths to set it up:

<CardGrid>
<Card title="Recommended" icon="seti:docker">
<LinkCard
title="Run it with Docker"
description="The easiest, one-and-done way to get started with <b>xplex</b>."
title="Run with Docker"
description="Simple, one-and-done way to get started with <b>xplex</b>&mdash;in 5-10min."
href="/setup/docker"
/>
</Card>
<Card title="Are you sure?" icon="linux">
<Card title="Experimental" icon="linux">
<LinkCard
title="Setup & run it manually"
description="For complete control & flexibility, at the cost of convenience."
title="Run native setup"
description="Complete control & flexibility for power users to tinker with."
href="/setup/native"
/>
</Card>
</CardGrid>

The recommend method (using Docker) will take **altogether 5-10min** to set it all up... and that's including signing up to a [cloud provider](/intro#how-much-does-it-cost). Whereas the manual method will take considerably longer (from 30min to a few hours), depending on your hardware and software environment.
## Post-installation Steps

But for some reason, if you **really need** to customize or rebuild <Xplex />'s internal components&mdash;either to fit your specific requirements or to set up a development environment&mdash;then you may want to manually build and install it. The guide is there only to point you towards the right direction; but if you're taking this path, then hopefully you know what you're doing.
Once <Xplex /> is installed & <Xplex isHQ /> dashboard is accessible&mdash;you need to set the ingest URLs of your streaming platforms and update destination in the broadcast software to start multi-streaming.

<Card title="<a href='/setup/postinstall'>Post-installation Configurations</a>" icon="seti:config">
Post-installation steps to configure <Xplex /> for multi-streaming.
</Card>
Loading

0 comments on commit f674f03

Please sign in to comment.