Owncast v0.1.0

Note: Please read these release notes in their entirety. There are many changes and it’s important for you to know what has changed and how it will affect you.

Three years of Owncast!

The first commit to Owncast was May 23, 2020. It’s been a wild ride seeing what everyone has been streaming and all the creative use cases people have come up with. Thank you to everyone who has contributed to the project, and to everyone who has been using it. I won’t use this place to talk about how awesome you all are, but here’s to many more years of your streams!

A big update!

Owncast v0.1.0 is a large update with many changes to the web interface. It is a complete rewrite of the frontend and like any rewrite it results in many improvements, but also room for bugs and regressions. Please report any issues you find to the issue tracker.

This release is made up of over 380 completed tasks. That’s not 380 commits, 380 standalone tasks. That’s so much stuff. If you’re interested in some behind the scenes there’s blog posts about Owncast design and the web project.

It may make sense for some who relied on heavy customization in previous versions to test out this release outside of your production install of Owncast to make sure any visual customization you previously made can be moved over.

A special thank you to the contributors for this release

This release was a large undertaking and would not have been possible without the help of all the people who pitched in their skills to make it happen. A full list is at the bottom of these release notes.

Goals of this release

With all the future features that we want to add to Owncast it was required to take a step back and rebuild the web frontend from scratch so it would be easier to add to and maintain. This release is the result of that work.

The goals of this release were:

  1. Make it easier to work on and contribute to, especially first time contributors to Owncast.
  2. Make it load faster.
  3. Be more accessible.
  4. Be more mobile friendly.
  5. Be easier to customize.
  6. Set us up for future features.

Web source code is no longer included in releases

One side-effect of these changes is we no longer ship the raw web source code with each release. This was previously the webroot directory. While most people didn’t take advantage of this in the past, some did. If you find there are things you can no longer do that you once did there are two options:

  1. Download the Owncast source code and build it yourself, editing what you need.
  2. Open an issue on the issue tracker and let us know what you used to be able to do that you no longer can.

We hope the addition of additional customization options in the admin will make up for this change.

Webroot directory

While the webroot directory will not be automatically deleted, and any files you had previously manually put there will be safe, it will no longer be used for anything and you are free to delete it yourself when you’re ready.

Appearance customization

The new appearance section under General settings in the Owncast admin allows for an easier approach to customizing your instance. While you could, and still can, write your own CSS, the new options allow you to customize the appearance of your Owncast instance without writing any CSS by selecting colors other miscellaneous options.

While not every single individual component or element can be customized via point-and-click, we hope this at least gives most people a simpler to customize right out of the box. Via CSS you can still customize anything you want and CSS variables can be set manually.

Note that any CSS you had written for previous releases of Owncast will not be compatible with the new version, as the entire web frontend changed.

Read more about the appearance customization page in the Appearance customization guide.

Insert custom Javascript

Under the General settings page you can add custom Javascript to your Owncast instance’s web page. Read more about this in the documentation.

Streaming keys and admin password

Previously the admin password and stream key were the same. Due to requests these have been split up, and you can now create any number of streaming keys. Most people will continue to not need this functionality, but if you have a specific use case where you have multiple streamers, and you don’t want any of them to access the admin for some reason, this is now possible.

By default the admin password and single stream key are both the same. So you should see no difference when upgrading to this new release.

Custom emoji

The default custom emoji set has been replaced with images that we are confident can be shipped with Owncast due to their license. Those who have been using Owncast from previous versions, however, will keep their images and only new users will get the new emoji set.

A new emoji page has been added to the Admin under Chat & Users -> Emojis where you can add and remove your own custom emoji images without having to access your server’s filesystem. If you do want to manually manage these files, however, they can be now found in the data/emoji directory.

Read more details about custom emoji in the documentation

Chat colors

As a participant in the chat you can now change your color, not just your name. The selection of colors can be customized via the appearance customization page. Additionally as an admin you can change the set of colors available to your users to match your preferences.

Hide viewer count

Some people prefer to not display a viewer count, and now that can be accomplished by turning it off in the admin under General settings.

Offline banner

When your stream is not live a new “Offline Banner” is displayed with either a default or custom message. This can be customized in the admin under General settings. This is a good way to leave a message such as when you normally stream, or if you’re taking a break.

Write HTML for external action buttons

You’ve always been able to link to external URLs to display when you press action buttons on the page, but now you can choose to write your own HTML to display instead. Visit Integrations -> External Actions in the admin.

Host your own public assets

If you need to host your own images, fonts, css files or anything you need to make publicly available you can do so via the new data/public directory. Most people will not need this, but if you previously used to put assets in your webroot directory to make them publicly accessible, this would be the replacement of that.

Admin pages

Some admin pages have been combined and some URLs have changed. Particularly have a look at the “General” and the “Server config” pages to find additional sections like S3 Object Storage and custom CSS.

Built-in Twitter notifications have been removed

Primarily due to Twitter removing external API access to their service, but also due to Twitter being Twitter, this feature has been removed and will no longer be internally supported. If you still require this specific functionality you can use Webhooks to build something custom.


[0.1.0] - 2023-05-30 aka “Gabe’s Birthday Release”

Upgrade instructions from 0.0.13

  1. Stop the service from running. If you’re using a pre-installed image through a hosting provider, or setup Owncast to run under systemd you can probably just simply run systemctl stop owncast.
  2. Change to the directory where Owncast is installed on your server. If you’re using a pre-installed image through a hosting provider you it’s likely Owncast is located in /opt/owncast.
  3. If you’ve customized your web interface in any way you will want to back up the files you’ve changed or customized.
  4. Re-run the installer as the user you run Owncast under. For example if you are running owncast as the user “owncast”: su -c "curl https://owncast.online/install.sh |bash" owncast. If you are running as a different user, run the upgrade as the same user you’re running Owncast as.
  5. Restart the service. If you’re running under systemd systemctl start owncast.

Major updates


  • New setting: Allow hiding viewer count #1939

  • Add support for optional public web assets directory #2234

  • New admin page for customization #1915

  • Allow uploading custom emoji through the admin #2378

  • Option to mute embed by default #2420

  • Add support for arbitrary Javascript in page #2604

  • Auto-generate a complex, stream key when adding #2631

  • Allow providing HTML instead of a link for external actions #1718

  • Webhook for stream title change #2795

  • Feature Request: Sortable social media links #1818

  • Ability to edit external actions #1884

  • Implement WCAG 2.1 compliance #1826

  • Support brotli encoding #2697


  • Do not allow Federation if running on a non-standard port #2008

  • Make streaming key and admin password different values #2320

  • Enforce username requirements at register (API or headers) #2527

  • Player “Live” indicator circle should use the action CSS variable color #2890


  • Admin message moderation errors #2020

  • Admin only allows selecting 24fps or 120fps, nothing in between #2159

  • I get an error about 40 seconds into launching the server –> “panic: runtime error: index out of range [0] with length 0” #2423

  • fix minimum bitrate detection for system health report #2455

  • Admin logo upload UI sending empty payloads #2524

  • Android: Page doesn’t scroll when keyboard is displayed #2595

  • Fix Owncast Avatar URL for discord webhooks #2748

  • Give friendlier error in the admin when it cannot connect to Owncast service #2698

  • Crashes on 32-bit ARM (likely a bug in Metrics dependency) #2746

  • Nitpicky detail: resolution placeholders aren’t 16x9 #2799

  • Hardware info screen empty after start #2805

  • Viewer graph should always use 0 as minimal value #2806

  • Set correct content-type and cache-control for S3 uploads #2771

  • Loose div in Utilities > Stream health screen #2804

  • Video variant admin interface should start with the default setting values #1946


  • Remove Twitter notification support #2597

Thank you to our contributors!

The contributors for v0.1.0 were: LBBO, dorj222, heller, Rishav1707, prachurjya15, vwallen, xarantolus, dev265545, mehrdadbn9, juliana-mol, unclebinary1001, gingervitis, t1enne, stnfrd, elonyavist, JacobWrenn, bennett1412, mattdsteele, americobarros, Rehan-stack, andrew-secret, thisprojects, Pranav2612000, pippo, hsingh124, silksow, gabek, dhanusaputra, CutestNekoAqua, azyklus, jackgris, Yasir761 and MFTabriz. We also thank all of the fantastic people helping out in the Owncast chat answering questions, testing and providing feedback.

Thank you to our financial supporters!

A huge thanks to those giving us to the resources to run servers, have testing environments, host collaboration tools, pay for 3rd party services to test with and the means to experiment with new ideas we wouldn’t be able to do otherwise.

Our fantastic corporate sponsors Noblestreet, Okta and generous donors Simon Michalke, rootbeerdan, Luka Prinčič, Kyle Bronsdon, Flaki, Raffael Rehberger, Jnktn.tv, Joel Bradshaw, Paul Lindner, Real Targeted Traffic, TargetedVisitors, Incognito, nebunez, Merlin, Teklynk, Marius Hoel, Ole, PlayBox Technology, Guest, Incognito, Aqaba, Michał Sidor, Jacky Alcine, 2000staFM, Guest, SillySam, ruut, Ozoned, emacsen, Incognito, Jeff Moe, GunghoGeoduck, Patrick, Chris Heino, Didier Malenfant, Markus Ressel, Kit Aultman, Mohamed Elsheiry, Tom, Michael, Theodore Jones, Alex O’Carroll, Alex O’Carroll, Raymon Mens, Vencabot, James Carpenter, Vince, Robert Wolniak, Nullcasting and Martijn.

In-kind support

A special thank you to the organizations that offer services to help Owncast build, test and support and distribute the software.

Fastly, Cypress, BrowserStack, Chromatic, Docker and Rocket.Chat.