{"id":13588667,"url":"https://github.com/grafana/grafana-image-renderer","last_synced_at":"2026-02-03T12:17:02.812Z","repository":{"id":37819571,"uuid":"133923497","full_name":"grafana/grafana-image-renderer","owner":"grafana","description":"A Grafana backend plugin that handles rendering of panels \u0026 dashboards to PNGs using headless browser (Chromium/Chrome)","archived":false,"fork":false,"pushed_at":"2025-05-08T21:03:24.000Z","size":30686,"stargazers_count":416,"open_issues_count":75,"forks_count":157,"subscribers_count":152,"default_branch":"master","last_synced_at":"2025-05-08T22:19:56.017Z","etag":null,"topics":["docker","grafana","grafana-backend-plugin"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grafana.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-05-18T08:05:52.000Z","updated_at":"2025-05-05T12:32:15.000Z","dependencies_parsed_at":"2024-04-16T12:41:09.027Z","dependency_job_id":"e90833a7-ba2f-4b47-8796-6d6baa40c946","html_url":"https://github.com/grafana/grafana-image-renderer","commit_stats":{"total_commits":286,"total_committers":38,"mean_commits":7.526315789473684,"dds":0.7027972027972028,"last_synced_commit":"614dc6ba9e24d05f6306ee8d6e88e5827e09f967"},"previous_names":[],"tags_count":67,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grafana%2Fgrafana-image-renderer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grafana%2Fgrafana-image-renderer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grafana%2Fgrafana-image-renderer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grafana%2Fgrafana-image-renderer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grafana","download_url":"https://codeload.github.com/grafana/grafana-image-renderer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254328385,"owners_count":22052632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","grafana","grafana-backend-plugin"],"created_at":"2024-08-01T15:06:51.303Z","updated_at":"2026-01-22T10:01:43.719Z","avatar_url":"https://github.com/grafana.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# grafana-image-renderer\n\nA backend service for Grafana.\nIt provides panel and dashboard rendering with a headless browser (Chromium).\nYou can get your favourite dashboards as PDFs, PNGs, or with Grafana Enterprise, CSVs and even over emails with Grafana Reports.\n\n## Installation\n\nYou can find installation details in the [docs](/docs/sources/_index.md).\n\n\u003c!-- FIXME: Use the grafana.com docs when it's published --\u003e\n\n## Compile\n\nTo compile the Go service, run:\n\n```shell\n$ go build -buildvcs -o grafana-image-renderer .\n```\n\nTo compile the Docker image, run:\n\n```shell\n$ docker build .\n```\n\nThe following tools are also useful for engineers:\n\n```shell\n$ go tool goimports # our code formatter of choice\n$ golangci-lint run # our linter of choice\n$ IMAGE=tag-here go test ./tests/acceptance/... -count=1 # run acceptance tests\n```\n\n## Release\n\nWhen you are ready to make a release, tag it in Git (`git tag vX.Y.Z`; remember the `v` prefix), then push it.\nGitHub Actions deals with the build and deployment.\n\n## Updating Chromium\n\nOne of the quick ways you can check the latest version available is by going to [https://packages.debian.org/trixie/chromium](https://packages.debian.org/trixie/chromium) (change `trixie` for the codename of the current Debian version we use in the `Dockerfile`, as of writing `13`).\n    \nMake sure that the build for amd64 and arm64 are both available first (scroll down to the bottom of the page and check that there are no red backgrounds), and ignore anything after the `-` in the version, this is what we'll use.\n  \nIn the `Dockerfile`, update the cachebuster date to today's date. Then find `CHROMIUM_VERSION=` and update that to the version found in the website.\n  \nOpen a PR, merge it, and create a new GitHub release. You're done!\n\n## Updating Go\n\nFor a new minor N, only update to a `.0` patch if there are security vulnerabilities that are fixed and not present in the N-1 minor. Otherwise try to stick with the N-1 minor until the N minor is at least on a `.1` patch.\n  \n1. Change the `go` directive to the new version in `go.mod`. \n2. Update the image at the top of the `Dockerfile` starting with `FROM golang:...` with the new version. Don't forget to pin it with the sha256!\n    - You can find it by going to DockerHub, or pulling the image yourself you can see a `Digest: ...` line with the value. \n\n**Note**: On minor updates, golangci-lint might break. Also update the CI action to use the latest version, once that is available with support for the new minor.\n\n## Updating Debian\n\nIt is good to update whenever a new image is tagged, as it mainly contains package updates or potential security fixes which are always nice to have.\n  \n1. Update the image in the `Dockerfile` starting with `FROM debian:...` with the new version. Don't forget to pin it with the sha256!\n    - You can find it by going to DockerHub, or pulling the image yourself you can see a `Digest: ...` line with the value.\n2. Bust the cache. Changing the base image will invalidate it anyways but for good manners set it to today's date.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrafana%2Fgrafana-image-renderer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrafana%2Fgrafana-image-renderer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrafana%2Fgrafana-image-renderer/lists"}