Blog · Deploy guides
How to self-host Owncast in 2026: its Compose file, one command, HTTPS and RTMP
You want Owncast, the live video and chat server you run yourself, at an address with HTTPS, with a port your streaming software can reach, and without setting up a proxy or certificates. Owncast's docs give a Docker Compose file, and on Pethost a Compose file is a project. Save it as it is and run pethost deploy. Owncast started in 10 seconds, its page at an address the deploy gave by itself and its RTMP port open for OBS.
- The file is Owncast's own: the
docker-compose.ymlof its “Use a container image” page, nine lines, unchanged. - One command:
pethost deploy. The machine finds the web port the file publishes, 8080, and serves it athttps://owncast.yourname.pethost.app. - The stream goes in over RTMP: port 1935, which the file publishes too, is opened as written. Point OBS at
rtmp://owncast.yourname.pethost.app:1935/live. - The data stays: the folder the file binds,
./data, is kept as a volume of the project that the nightly backup includes. A new version of Owncast is one changed tag and one deploy. - The price: €9.99 a month for a machine of 2 vCPU, 3 GB and 30 GB. Owncast took 128 MB of its memory. There is no free tier.
What you need to self-host Owncast in 2026
Three things: Owncast's Compose file, the pethost command and a Pethost account.
The file is on the page “Use a container image” of Owncast's docs. Make a folder, whose name becomes the project's name, and save the file there as docker-compose.yml:
services:
owncast:
image: owncast/owncast:latest
restart: unless-stopped
ports:
- "8080:8080"
- "1935:1935"
volumes:
- ./data:/app/data
The command is one program, installed by one line. Every command it has is in the CLI's reference.
curl -fsSL https://pethost.dev/install.sh | sh # macOS, Linux
irm https://pethost.dev/install.ps1 | iex # Windows, in PowerShell
The account needs a plan. If you are not signed in, pethost deploy opens your browser and signs you in. If you have no plan yet, it shows you where to choose one, and waits.
Deploy Owncast with pethost deploy
Nothing in the file is changed. Run pethost deploy in the folder. This is the whole screen:
$ pethost deploy
Name it [owncast]: it will live at https://owncast.sam.pethost.app
✓ Packed 1 file, 172 B
✓ Uploaded straight to your machine
✓ Started in 10 s
· deployed docker-compose.yml as compose.yaml
✓ owncast listens on 8080 → https://owncast.sam.pethost.app
It answers 200.
https://owncast.sam.pethost.app
Wrote .pethost (commit it). Next: pethost logs -f · pethost open
The file publishes two ports, and the machine asked each what it is. Port 8080 answered in HTTP, so it got the project's address: it is served there over HTTPS and is not opened on the machine beside it. Port 1935 is RTMP and no web port, so it is opened on the machine as the file says, for your streaming software. This is the project after the deploy:
$ pethost
owncast · https://owncast.sam.pethost.app
owncast running since 2026-10-13T15:42:56Z listens on 1935, 8080 memory 128 MB
1 service runs · last deploy succeeded 2026-10-13T15:42:57Z
Open the address: it is Owncast's page, with the player, the chat and “offline” until a stream comes.
Sign in to the Owncast admin and change the defaults
The admin is at /admin of the address. A new Owncast lets you in with the name admin and the password abc123, and takes a stream with the same abc123 as its key. Both are in Owncast's docs for everyone to read, and your server is on the internet from its first second, so change them before anything else: the admin password and the stream key are under Configuration > Server Setup.
Without the password the admin answers nothing: a request to its API got 401 from our deploy. While you are there, give the server its name and its address under Configuration > General. The name we set stayed through a restart and through an update.
To use a name of your own, such as live.example.com, run pethost domain add live.example.com owncast:8080. It prints the one DNS record to make, a CNAME to your machine's name, and the certificate comes by itself once the name resolves.
Send your stream to Owncast from OBS
Every name under your account's domain is your machine, and port 1935 is open on it. So the server your software streams to has the project's own name. In OBS, open Settings > Stream, choose the service Custom, and enter:
Server rtmp://owncast.sam.pethost.app:1935/live
Stream Key the key you set in the admin
We sent a test stream to that port with ffmpeg. Owncast's status went to online, and the stream's playlist, /hls/stream.m3u8, answered at the address over HTTPS, which is what the player on the page reads. With the stream running Owncast took 163 MB of memory.
The viewers come over HTTPS on the address and never touch port 1935. The port is open only while the project is there: before the deploy, the machine refused a connection to it.
Where the Owncast data is, and how it is backed up
Owncast keeps its database, its settings and the stream's segments in one folder, /app/data, and the file binds ./data to it. On Pethost a folder a Compose file binds for writing is kept as a volume of the project, named after the folder. The machine keeps it through restarts and deploys, and the nightly backup includes it:
$ pethost volume
owncast (.pethost)
data 5.1 MB owncast:/app/data backed up 2026-10-13T15:46:48Z
pethost backup lists the snapshots, and pethost backup restore puts one back. To take the folder to another server one day, as Owncast's docs suggest, pethost cp copies a folder out of the volume as one archive.
Update Owncast to a new version
The file's tag is latest. Owncast's docs update it by pulling the image and making the container again, and here that is one command: pethost restart --pull. To choose the moment of an update yourself, name a release in the file and deploy again. We went from 0.2.5 to 0.3.0 this way:
image: owncast/owncast:0.3.0
$ pethost deploy
owncast (.pethost)
✓ Packed 2 files · uploaded · started in 9 s
· deployed docker-compose.yml as compose.yaml
· kept the project's x-pethost
It answers 200.
https://owncast.sam.pethost.app
The address stayed, and so did the settings: the server's name was the one we had set. Take a snapshot with pethost backup now before a large update: a rollback puts the earlier Compose file back, and a volume's data is not part of a version.
What you get for the price
Pethost is €9.99 a month for everything you host, on 2 vCPU, 3 GB of memory and 30 GB of disk. Owncast took 128 MB of that memory at rest, so the same machine has room for your other projects, such as an Umami for your site or an RSSHub beside it. There is no fee per project, and the price is the same every month.
- €9.99 a month for the whole machine
- 10 s to pull and start Owncast
- 128 MB of memory at rest
What is already done on it: HTTPS with certificates that renew themselves, nightly backups kept for 14 days, SSH into any container, and a Compose project that runs from its own file. The machine is in the EU and always on, so a stream can start at any hour and the page never waits for a cold start. The plans are on the pricing part of the first page.
Pethost is the best pick for
- Streamers who want their own page, with their own chat and no platform between them and their viewers
- Communities and meetups that stream now and then and keep the server for everything else
- Solo developers with several small apps and one bill to pay
- People whose agent deploys for them: Claude Code or Codex deploys the Compose file and reads its logs
Look elsewhere if
- You stream to a large audience at several qualities at once: encoding video wants more cores, or a GPU, which a virtual machine has none of
Questions
Can I self-host Owncast with Docker Compose without a server to manage?
Yes. On Pethost the Compose file of Owncast's docs is the project: save it and run pethost deploy. The deploy gives Owncast an address with HTTPS by itself, and the proxy and the backups are already there.
Does the RTMP port work on Pethost?
Yes. A port a Compose file publishes that does not answer HTTP is opened on the machine as written. Owncast's 1935 is one, so OBS streams to rtmp://owncast.yourname.pethost.app:1935/live. We sent a test stream there, and the page showed it.
Do I need a reverse proxy or a certificate for Owncast?
No. The machine serves the web port the file publishes, 8080, at the project's address over HTTPS, with a certificate that renews itself. Nothing is added to the file for it.
Where does Owncast keep its data on Pethost?
In /app/data, which the file binds to ./data. The machine keeps that folder as a volume of the project, named data, through restarts and deploys, and the nightly backup includes it.
How do I update self-hosted Owncast?
Run pethost restart --pull to get the newest latest image, or name a release in the file and run pethost deploy. The settings stay: we went from 0.2.5 to 0.3.0 and the server kept its name.
What does it cost to self-host Owncast on Pethost?
€9.99 a month for the Starter machine of 2 vCPU, 3 GB and 30 GB, with no fee per project: the same machine runs your other apps. There is no free tier. Prices are without VAT.
The screens are deploys of the Compose file in Owncast's docs, with Owncast 0.3.0 and pethost 0.2.4, on a test machine of ours. The account in them is the example one, sam.
- Owncast: use a container image
- Owncast: broadcasting with OBS
- Owncast: configuration
- pethost, the command line of Pethost
Put your projects online today
A machine of your own, as many projects as fit, one flat price. Nothing metered, nothing billed on top.