Coming soon: we're testing the installer download on a fresh server. Until it's live, the install line in step 4 won't work; the rest of this guide shows how it will go.
Put your show on a server
This is step 4 of starting your show with TEL - Stream EVE Today. By the end, your site is live at your own address and updates itself whenever you change your settings on GitHub.
It takes about an hour the first time, most of it waiting. You don't need to know Linux: you copy and paste each command from this page. If you have a friend who's handy with servers, this is the part to share with them.
Before you start, you need:
- your GitHub copy of Stream EVE Today (step 2 on the home page) with your show.json uploaded to it (step 3)
- a domain name for your show (for example
myshow.com), from any registrar - about $5 to $15 a month for a small server
Keep these four things handy as you go (a note on your PC is fine): your domain, your GitHub copy (owner/name), the server's IP address (step 1) and its root password if the provider gives you one. Keep the password in a password manager, never in a chat or in GitHub.
If you're Claude
A host may paste this guide into a chat and ask you to walk them through it. When that happens:
- Go one step at a time. Give the step, wait for them to say it's done or to paste what they see, then check it against "You should see" before moving on.
- Ask for what you need as you go: their domain, their GitHub copy (owner/name), and the server's IP address. Nothing else.
- Never ask for, accept or repeat passwords, tokens, keys or the contents of
.env.local. Keys go in only one place: the server window, throughbash deploy/keys.sh(step 5), which hides what they paste. If they paste a key into the chat, tell them to treat it as leaked: replace it at the source (Twitch, Discord, Google), then add the new one with the helper, not the chat. - Everything runs as root on their server, so say what a command does before they run it, and never improvise commands that delete things.
- If something fails, read the error with them and use "If something goes wrong" below. If it still fails, they can run the installer again; it skips what's already done.
1. Rent a small server
Any provider that offers a plain Linux server (often called a VPS) works, for example Hetzner, DigitalOcean, Vultr or Contabo. Choose:
- Ubuntu 24.04 (or 22.04, or Debian 12)
- 2 CPUs, 4 GB of memory, 40 GB of disk or more (2 GB of memory works, but building the site is slow)
- a location near your viewers
During setup, the provider asks how you'll log in. If you can, add an SSH key (the provider explains how); otherwise it gives you a root password. When it's ready, find the server's IP address. The provider shows it on the server's page in its control panel, usually labeled IPv4, Public IP or Main IP, and most also email it with the login details. Use the IPv4 one: four numbers with dots, like 203.0.113.25 (not the long IPv6 one with colons). Note it down; steps 2 and 3 use it.
2. Point your domain at the server
At your domain registrar, open the DNS settings for your domain and add two A records:
- name
@(or blank), value: your server's IP address - name
www, value: your server's IP address
DNS changes take a few minutes, sometimes up to an hour. Carry on while they spread.
3. Log in to the server
On Windows, open PowerShell; on a Mac, open Terminal. Type this, with your server's IP address from step 1 in place of the example:
ssh root@203.0.113.25The first time it asks "Are you sure you want to continue connecting?": type yes. Then enter the password if the provider gave you one (nothing shows on screen as you type; that's normal).
You should see a prompt ending in #, like root@myserver:~#. Everything below is typed there.
4. Run the installer
Copy this line, paste it into the server window, and press Enter:
bash <(curl -fsSL https://streamevetoday.space/install.sh)It asks:
- Your GitHub copy: as
owner/name, for exampleyourname/stream-eve-today. Pasting the whole GitHub address works too. - Folder: press Enter for the usual one,
/opt/stream-eve-today. The rest of this guide uses that folder; if you pick another, use yours wherever a command says/opt/stream-eve-today. - Your settings file: press Enter for
show.json.
You don't type the IP address here: the installer reads your domain from show.json and checks that it points at this server. If it says the domain points somewhere else, check the A records from step 2.
Then it installs what's needed (Docker and Caddy), turns on the firewall, connects to your GitHub copy, checks your show.json, builds your site, sets up HTTPS for your domain and switches on automatic updates. It shows a line for each step: OK is good, NOTE tells you something to know, and STOP says what to fix before running it again.
If your GitHub copy is private, the installer shows a key (one long line starting with ssh-ed25519) and a link. Open the link, paste the line into Key, leave Allow write access unticked, press Add key, then press Enter in the server window. This lets the server read your copy, nothing more.
If show.json isn't in your copy yet, it says so and waits. Upload it (the installer shows the link), then press Enter.
You should see == Done and your site's address. Open it in your browser. If the browser warns about the certificate, your domain isn't pointing at the server yet (step 2); wait a few minutes and reload.
5. Add your keys (only if the installer asks)
Some parts of your site need a secret key. Keys never go in show.json or GitHub; they live in one file on your server, core/.env.local, and a helper puts them there for you. If your show needs any, the installer names them at the end and offers to add them right then. If it doesn't mention keys, skip to step 6.
Which key, and where to get it
TWITCH_CLIENT_SECRET, for the LIVE badge (needed when you entered a Twitch app client ID on the setup page).- Sign in at dev.twitch.tv/console with your Twitch account. Twitch asks you to turn on two-factor sign-in first if it isn't on yet.
- Press Register Your Application. Name: your show's name. OAuth Redirect URL:
http://localhost. Category: Website Integration. Client type: Confidential. Then Create. - Press Manage on the new app. The Client ID goes on the setup page (step 8; it isn't secret). Press New Secret: that's the key for this step. Twitch shows it once, so copy it straight into the file below.
DISCORD_BOT_TOKEN, for your schedule and member count from Discord (needed when you entered a Discord server ID). Making the bot and adding it to your server is step 6 of the Discord guide.YOUTUBE_API_KEY, optional: shows your whole YouTube archive instead of the 15 newest uploads.- Sign in at console.cloud.google.com with your channel's Google account and make a project (any name).
- APIs & Services → Library → search YouTube Data API v3 → Enable.
- APIs & Services → Credentials → Create credentials → API key. Copy it. Then press Edit API key, under API restrictions choose Restrict key and tick YouTube Data API v3, and Save.
Put the keys on your server
Use the same steps to add a key later, or to replace one after you reset it.
- Log in to the server (step 3) and run the key helper:
cd /opt/stream-eve-today && bash deploy/keys.sh- It lists your keys, each marked
setorempty. Type the number of the one you have and press Enter. - Paste the key and press Enter. To paste: right-click in PowerShell, or Cmd+V in Mac Terminal. Nothing shows on screen as you paste; that's normal, and it keeps the key off your screen.
- The helper checks the key with Twitch, Discord or Google and says whether it works. If it says
STOP, read the line after it: you may have copied the wrong value (the client ID instead of the secret, say). Copy it again and paste the new one. - Press Enter on an empty line when you're done. The helper restarts your site with the new keys.
You should see OK Your site is back up with the new key. The LIVE badge appears the next time you go live on Twitch.
To see which keys are set without changing anything: bash deploy/keys.sh --list
6. Bookmark your runbook
Open https://yourdomain/runbook (with your domain) and bookmark it. It's your show week in one page, and its Updating your site section shows whether the site is up to date, with an Update my site now button.
From now on you don't need the server for everyday changes: change your show on the setup page, upload the new show.json to your GitHub copy, and the site updates itself within 5 minutes.
Optional extras
- Thumbnails: the installer offers to make them and refresh them every 6 hours. To do it later:
bash plugins/automate-thumbnails/install.sh show.json --cron - YouTube: needs a one-time Google sign-in on your PC; follow
plugins/automate-youtube/SETUP.mdin your copy. - A second show on the same server: give it its own ports in its show.json (
server.appPortandserver.mongoPort, for example 3030 and 27030) and run the installer again with a different folder.
If something goes wrong
STOP ... show.json has problems: the lines above it say what. Open the setup page, press Load file, fix those fields, Download, upload it to your copy again, and run the installer again.STOP ... Port 3010 is already used: something else on the server uses that port. Setserver.appPortandserver.mongoPortin show.json as in "A second show" above.- The browser says the site can't be reached: check the A records (step 2) point at the server's IP, then wait a few minutes. HTTPS starts by itself.
GitHub didn't accept it yet: the key wasn't added to the right repo, or Allow write access was ticked by mistake (untick it). Add it again and press Enter.- Can't find the IP address: it's on the server's page in your provider's control panel (step 1), and in the email they sent when the server was ready.
- Lost the server window: log in again (step 3) and run the installer again. It picks up where it stopped.
- Something else: the runbook's health checks, and the last update's log:
tail -50 /opt/stream-eve-today/core/data/update/last-deploy.log
FAQ
Do I need to know Linux? No. Every command is in this guide. If a step doesn't look like "You should see", stop there and ask your helper, or paste this guide into Claude and let it walk you through.
What does it cost? The server (about $5 to $15 a month) and your domain (about $10 to $20 a year). Stream EVE Today itself is free.
Can I use a server I already have? Yes, if it runs Ubuntu or Debian and ports 80 and 443 are free (or already served by Caddy). The installer keeps your existing Caddy sites and adds yours next to them.
Where does my site keep passwords and keys? Only on your server, in core/.env.local and private/. Never in GitHub. SECURITY.md has the details.
I pasted a key somewhere public (a chat, a screenshot, GitHub). Now what? Treat it as stolen. Make a new one where it came from (Twitch: New Secret; Discord: Reset Token; Google: delete the key and create another), then put the new one on your server with bash deploy/keys.sh (step 5). The old one stops working once you reset it.
How do I get new versions of Stream EVE Today? On your GitHub copy, press Sync fork, then Update branch. Your site updates itself within 5 minutes.
How do I undo it all? On the server: cd /opt/stream-eve-today/core && docker compose down, delete /etc/caddy/sites/<your show>.caddy and run systemctl reload caddy, and run bash /opt/stream-eve-today/deploy/install-autoupdate.sh show.json --off. Then cancel the server with your provider if you don't need it.