PHPackages                             laborb/bunny-stream - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Image &amp; Media](/categories/media)
4. /
5. laborb/bunny-stream

Abandoned → [laborb/statamic-bunny-stream](/?search=laborb%2Fstatamic-bunny-stream)Statamic-addon[Image &amp; Media](/categories/media)

laborb/bunny-stream
===================

Upload and embed videos from Bunny Stream

43.6k1Vue

Pushed 4w ago1 watchersCompare

[ Source](https://github.com/laborb/statamic-bunny-stream)[ Packagist](https://packagist.org/packages/laborb/bunny-stream)[ RSS](/packages/laborb-bunny-stream/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (3)Dependencies (1)Versions (27)Used By (0)

Video Stream GDPR Compliant (aka Bunny Stream)
==============================================

[](#video-stream-gdpr-compliant-aka-bunny-stream)

Statamic addon for managing one Bunny Stream library in the Control Panel and rendering its videos with Vidstack.

Features
--------

[](#features)

- Browse, search, and paginate the configured Bunny Stream library in the Statamic Control Panel.
- Support privacy-focused, GDPR/DSGVO-compliant video implementations without addon-side cookies, advertising, related-video integrations, or visitor tracking.
- Upload videos with resumable Uppy/TUS uploads.
- Edit video titles, descriptions, and custom metadata.
- Upload VTT/SRT captions and choose thumbnails from Statamic image assets.
- Delete videos with a two-step confirmation.
- Select videos through a Bunny fieldtype or the included reusable fieldset.
- Render Bunny HLS streams with Vidstack, optional posters and text tracks, or in background mode.
- Optionally expose share and iframe URLs with configurable CSP `frame-ancestors` restrictions.
- Use the same addon release with Statamic 5 and Statamic 6.

GDPR/DSGVO Compliance
---------------------

[](#gdprdsgvo-compliance)

The addon is designed to support GDPR/DSGVO-compliant video implementations. It uses direct Bunny Stream HLS delivery with a Vidstack player instead of Bunny's iframe player. The addon itself does not add cookies, advertising, related-video integrations, or visitor tracking.

Bunny states that Bunny Stream and Bunny Player do not set cookies or transmit personally identifiable information for playback and analytics. Anonymous technical telemetry and CDN performance data may still be sent to Bunny endpoints.

Actual compliance depends on the complete project setup, including the Bunny data processing agreement, storage and replication regions, logging settings, legal basis, privacy notice, and whether the default Vidstack CDN assets are used or self-hosted. Review [Bunny's Data and Privacy documentation](https://docs.bunny.net/stream/data-and-privacy) and [GDPR information](https://bunny.net/gdpr/) for each project.

Installing this addon alone cannot guarantee legal compliance. If there is any doubt, have the implementation reviewed by your data protection officer (`Datenschutzbeauftragte/r`) or qualified privacy counsel before using it in production.

Bunny Account
-------------

[](#bunny-account)

A Bunny.net account and one Stream library are required. You can use our [affiliate link](https://bunny.net?ref=uhvsqhaw0n) to support development at no extra cost.

Compatibility
-------------

[](#compatibility)

- PHP `^8.2`
- Statamic `^5.0 || ^6.0`
- The host application must satisfy the PHP and Laravel requirements of its installed Statamic version.

The addon ships separate Control Panel bundles for Vue 2/Statamic 5 and Vue 3/Statamic 6. The matching bundle is selected automatically; the current Statamic 6 UI remains unchanged.

Installation
------------

[](#installation)

```
composer require laborb/statamic-bunny-stream
```

Statamic publishes the Control Panel assets during Composer installation. If a deployment skips Composer scripts, publish them manually:

```
php artisan vendor:publish --tag=statamic-bunny-stream --force
```

Configuration
-------------

[](#configuration)

Add the Stream library credentials to `.env`:

```
BUNNY_LIBRARY_ID=your-library-id
BUNNY_API_KEY=your-library-api-key
BUNNY_CDN_HOSTNAME=your-library-cdn-hostname
```

The values are available in the API section of the Stream library. See [Bunny's Stream dashboard documentation](https://docs.bunny.net/stream/dashboard).

The library API key is delivered to authenticated Control Panel JavaScript because video management and uploads call Bunny directly. Treat Control Panel access as privileged. Never render this key in public templates, commit it, or expose it in logs.

### Player Assets

[](#player-assets)

Add these tags once to the frontend layout that renders `{{ bunny }}`:

```

    {{ bunny:styles }}

    {{ bunny:scripts }}

```

By default, these tags load Vidstack JavaScript and CSS from `cdn.vidstack.io`. Publish the config to change or self-host these assets.

### Public Playback And Embedding

[](#public-playback-and-embedding)

Public playback and iframe routes are disabled by default. Enable them with a route prefix:

```
BUNNY_EMBED_PATH=/videos
BUNNY_EMBED_DOMAIN="'self' https://www.example.com"
```

This creates:

- `/videos/{video-id}`: public video page
- `/videos/{video-id}/embed`: iframe document

`BUNNY_EMBED_DOMAIN` becomes the iframe response's CSP `frame-ancestors` source list. The default `*` permits every embedding origin. Use valid CSP source expressions, including the quotes around `'self'` when needed.

These routes do not add authentication or generate Bunny playback tokens. Access restrictions for the HLS URLs must be configured separately in Bunny and your application.

### Custom CDN Hostname

[](#custom-cdn-hostname)

1. Open the pull zone linked to the Stream library.
2. Open `General > Hostnames` and add the hostname.
3. Copy the displayed CNAME target into the DNS provider. Disable proxying while Bunny verifies the record.
4. Select `Verify & Activate SSL` in Bunny.
5. Set `BUNNY_CDN_HOSTNAME` to the verified hostname.

See [Bunny's current custom hostname guide](https://docs.bunny.net/cdn/custom-hostname) for provider-specific details.

### Publish Configuration

[](#publish-configuration)

```
php artisan vendor:publish --tag=bunny-config
```

The published file is `config/statamic/bunny.php`.

### Publish Views

[](#publish-views)

```
php artisan vendor:publish --tag=bunny-views
```

This publishes the player, public playback, and iframe views to `resources/views/vendor/bunny`.

Usage
-----

[](#usage)

Render a video by its Bunny video ID:

```
{{ bunny
    id="bunny-video-id"
    title="My Video"
    poster="https://example.com/poster.jpg"
    preload="metadata"
    class="custom-video"
    :tracks="tracks"
}}
```

The addon requests `https://{BUNNY_CDN_HOSTNAME}/{id}/playlist.m3u8` and passes that HLS source to Vidstack.

### Parameters

[](#parameters)

ParameterTypeDescription`id`stringRequired Bunny video ID.`title`stringOptional accessible video title.`poster`stringOptional poster image URL.`controls`booleanShows the Vidstack default layout when `true` (default). When `false`, the player uses muted autoplay, loop, and inline playback for background video.`preload`stringOptional Vidstack preload value, such as `auto`, `metadata`, or `none`.`tracks`arrayOptional Vidstack text-track objects or caption rows from the included fieldset.`class`stringOptional classes added to the player wrapper.### Text Tracks

[](#text-tracks)

Direct track arrays use Vidstack's text-track properties:

```
[
    {
        "src": "/captions/en.vtt",
        "kind": "captions",
        "srclang": "en",
        "label": "English",
        "default": true
    }
]
```

Common `kind` values include `captions`, `subtitles`, `descriptions`, `chapters`, and `metadata`. See the [Vidstack text-track documentation](https://vidstack.io/docs/wc/player/api/text-tracks/) for supported formats and properties.

The included Statamic fieldset instead exposes `source`, `kind`, `language`, and `label` fields. The addon converts those field values to Vidstack's `src` and `srclang` properties automatically.

### Bunny Field And Fieldset

[](#bunny-field-and-fieldset)

Add the Bunny fieldtype to any blueprint to store a video ID. The included `bunny_video` fieldset also provides poster, controls, and caption fields:

```
{{ bunny :id="bunny_video" :poster="bunny_poster[0]" :controls="bunny_controls" :tracks="bunny_captions" }}
```

Development
-----------

[](#development)

Install frontend dependencies, then build both compatibility bundles:

```
npm install
npm run build
```

Targeted commands are available during development:

```
npm run build:v5
npm run build:v6
npm run dev
```

`npm run dev` targets the Statamic 6/Vue 3 bundle. `npm run build` must pass before publishing because it creates both production bundles.

Customization
-------------

[](#customization)

Publish the views for markup changes and the config for player asset changes. See the [Vidstack player documentation](https://vidstack.io/docs/wc/player) for its API and styling options.

Disclaimer
----------

[](#disclaimer)

This addon is an independent project and is not affiliated with, endorsed by, or sponsored by Bunny.net. Users are responsible for complying with Bunny.net's terms and applicable legal requirements.

Support
-------

[](#support)

Report bugs and feature requests in the [GitHub issue tracker](https://github.com/laborb/statamic-bunny-stream/issues), or email .

###  Health Score

31

—

LowBetter than 65% of packages

Maintenance62

Regular maintenance activity

Popularity22

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity23

Early-stage or recently created project

 Bus Factor1

Top contributor holds 56.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~14 days

Recently: every ~27 days

Total

26

Last Release

734d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7f205ad8cb7aeee5fdbc88eee18f3c5df3c751b9ef6403adfefd1766e7482a62?d=identicon)[laborb](/maintainers/laborb)

---

Top Contributors

[![labSupport](https://avatars.githubusercontent.com/u/3942647?v=4)](https://github.com/labSupport "labSupport (9 commits)")[![laborb-hs](https://avatars.githubusercontent.com/u/133886848?v=4)](https://github.com/laborb-hs "laborb-hs (7 commits)")

### Embed Badge

![Health badge](/badges/laborb-bunny-stream/health.svg)

```
[![Health](https://phpackages.com/badges/laborb-bunny-stream/health.svg)](https://phpackages.com/packages/laborb-bunny-stream)
```

###  Alternatives

[statamic-rad-pack/runway

Eloquently manage your database models in Statamic.

137236.2k8](/packages/statamic-rad-pack-runway)[statamic/seo-pro

71548.3k](/packages/statamic-seo-pro)[statamic/statamic

Statamic

832182.1k](/packages/statamic-statamic)[duncanmcclean/statamic-cargo

Comprehensive e-commerce addon for Statamic. Build bespoke e-commerce sites without the complexity.

3622.8k](/packages/duncanmcclean-statamic-cargo)[statamic/eloquent-driver

Allows you to store Statamic data in a database.

128790.9k21](/packages/statamic-eloquent-driver)[rias/statamic-redirect

29347.4k](/packages/rias-statamic-redirect)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
