- What is laravolt/metabase used for?
- laravolt/metabase is a Laravel integration package for embedding Metabase dashboards and questions inside an existing application. It handles signed JWT embed URLs so you can render Metabase content in an iframe without building custom embedding logic. It is aimed at Laravel apps that already use Metabase for analytics.
- How do I install and configure laravolt/metabase in a Laravel app?
- Install it with Composer using composer require laravolt/metabase, then publish the package configuration if the README instructs you to. Set the Metabase site URL and embedding secret in your environment or config, clear Laravel's config cache, and generate a signed URL from a controller or Blade view. Confirm exact config keys against the package README for your version.
- Which Laravel and PHP versions does laravolt/metabase support?
- The package is built for Laravel applications, but the provided context does not list exact Laravel and PHP version constraints for release 0.4.2. Check the package's composer.json and README before upgrading, especially because the JWT dependency changed. Run composer why-not laravolt/metabase or inspect Composer resolution against your app's PHP and Laravel constraints.
- How do I generate a signed Metabase embed URL in Laravel?
- Use the package's configuration and helpers or service to create a signed JWT for the Metabase resource, then append or pass that token to the Metabase embedded dashboard or question URL. Render the resulting URL in an iframe within an authenticated Laravel page. Validate token expiry and claims against your Metabase embedding setup.
- Does laravolt/metabase support embedding both dashboards and questions?
- Yes, the package description states that it embeds both Metabase dashboards and questions. You generate a signed embed URL for the specific resource you want to show. The Metabase side must have embedding enabled for that resource.
- What Metabase configuration is required for embedding?
- In Metabase, enable embedding for the dashboard or question and copy the embedding secret. Configure your Laravel app with the Metabase site URL and that shared secret, and ensure the Metabase instance is reachable from users' browsers. The signed token must match the Metabase embedding configuration, including expiry and resource claims.
- What changed in laravolt/metabase 0.4.2 and how do I upgrade?
- Release 0.4.2 replaces the internal lcobucci/jwt library with firebase/php-jwt and does not advertise public API changes. Existing users should update via Composer, clear the Laravel config cache, and verify signed dashboard URLs in staging because claim handling, algorithm defaults, secret encoding, and expiry behavior can differ subtly. No database migrations are expected.
- Is laravolt/metabase safe for production use?
- It is reasonable for production when configured carefully, but treat it as medium-low technical risk because it is a small community-maintained package and 0.4.2 changed JWT internals. JWT generation is stateless and scales with your Laravel app, with no extra database or session storage required. Test token expiry, secret rotation, unauthorized access, and Metabase embedding behavior in staging before release.
- How do I troubleshoot a blank Metabase iframe or authentication error?
- A blank iframe or Metabase authentication error usually means the JWT signature, embedding secret, site URL, or token expiry is wrong. Check that Metabase embedding is enabled, the shared secret matches, the token has not expired, and server clocks are reasonably synchronized. Also verify the resource claims and JWT algorithm match your Metabase version and that Laravel config cache is cleared.
- What are alternatives to laravolt/metabase for Laravel?
- Alternatives include signing Metabase embed JWTs directly in your Laravel app or using another Metabase embedding package. Because the Metabase contract is a signed JWT passed to the embed URL, you can fall back to direct signing if laravolt/metabase lags Laravel or PHP releases. Keep the package small and isolate URL generation behind your own service if portability matters.