Skip to content
Allure report logoAllure Report
Main Navigation ModulesDocumentationStarter Project

English

Español

English

Español

Appearance

Sidebar Navigation

Allure 3

Install & Upgrade

Install Allure

Upgrade Allure

Configure

Create Reports

How to generate a report

How to view a report

Improving readability of your test reports

Improving navigation in your test report

Reading Allure charts

Migrate from Allure 2

Allure 2

Install & Upgrade

Install for Windows

Install for macOS

Install for Linux

Install for Node.js

Upgrade Allure

Create Reports

How to generate a report

How to view a report

Improving readability of your test reports

Improving navigation in your test report

Features

Agent Mode

Test steps

Attachments

Test statuses

Assertion diffs

Sorting and filtering

Environments

Multistage Builds

Categories

Visual analytics

Test stability analysis

History and retries

Self-hosted storage

Quality Gate

Global Errors and Attachments

Timeline

Export to CSV

Export metrics

Guides

JUnit 5 parametrization

JUnit 5 & Selenide: screenshots and attachments

JUnit 5 & Selenium: screenshots and attachments

Setting up JUnit 5 with GitHub Actions

Pytest parameterization

Pytest & Selenium: screenshots and attachments

Pytest & Playwright: screenshots and attachments

Pytest & Playwright: videos

Playwright parameterization

Publishing Reports to GitHub Pages

Deploying Self-Hosted Storage with Docker

Deploying Self-Hosted Storage on Cloudflare Workers

Allure Report 3: XCResults Reader

How it works

Overview

Glossary

Test result file

Container file

Categories file

Environment file

Executor file

History files

Test Identifiers

Integrations

Azure DevOps

Bamboo

GitHub Action

Gradle

Jenkins

JetBrains IDEs

Maven

TeamCity

Visual Studio Code

Frameworks

AVA

Getting started

Configuration

Reference

Axios

Getting started

Configuration

Reference

Behat

Getting started

Configuration

Reference

Behave

Getting started

Configuration

Reference

Bun

Getting started

Configuration

Reference

Chai

Getting started

Reference

Codeception

Getting started

Configuration

Reference

CodeceptJS

Getting started

Configuration

Reference

Cucumber.js

Getting started

Configuration

Reference

Cucumber-JVM

Getting started

Configuration

Reference

Cucumber.rb

Getting started

Configuration

Reference

Cypress

Getting started

Configuration

Reference

Dart and Flutter

Getting started

Configuration

Reference

Fetch

Getting started

Configuration

Reference

Go

Getting started

Configuration

Reference

Jasmine

Getting started

Configuration

Reference

JBehave

Getting started

Configuration

Reference

Jest

Getting started

Configuration

Reference

JUnit 4

Getting started

Configuration

Reference

JUnit 5

Getting started

Configuration

Reference

Mocha

Getting started

Configuration

Reference

Newman

Getting started

Configuration

Reference

Node.js Test Runner

Getting started

Configuration

Reference

NUnit

Getting started

Configuration

Reference

PHPUnit

Getting started

Configuration

Reference

Playwright

Getting started

Configuration

Reference

Playwright Java

Getting started

Configuration

Reference

pytest

Getting started

Configuration

Reference

Pytest-BDD

Getting started

Configuration

Reference

Reqnroll

Getting started

Configuration

Reference

REST Assured

Getting started

Configuration

Robot Framework

Getting started

Configuration

Reference

Rust Cargo Test

Getting started

Configuration

Reference

RSpec

Getting started

Configuration

Reference

SpecFlow

Getting started

Configuration

Reference

Spock

Getting started

Configuration

Reference

TestCafe

Getting started

Configuration

Reference

TestNG

Getting started

Configuration

Reference

Vitest

Getting started

Configuration

Reference

WebdriverIO

Getting started

Configuration

Reference

xUnit.net

Getting started

Configuration

Reference

On this page

Deploying Self-Hosted Storage on Cloudflare Workers Allure 3 ​

Run Allure Report Storage as a Cloudflare Worker, backed by Cloudflare D1 (metadata) and R2 (report files).

  1. Create the Cloudflare resources.
  2. Configure secrets.
  3. Deploy.
  4. Validate it's running.
  5. Use S3-compatible storage instead of R2 (optional).

Requirements ​

  • A Cloudflare account
  • wrangler, Cloudflare's CLI

1. Create the Cloudflare resources ​

Create the D1 database and R2 bucket:

bash
corepack enable
yarn dlx wrangler d1 create allure-report-storage
yarn dlx wrangler r2 bucket create allure-report-storage

Update wrangler.toml with the database_id printed by the first command. The R2 bucket name must match bucket_name in wrangler.toml (allure-report-storage by default) or be updated there.

2. Configure secrets ​

bash
yarn dlx wrangler secret put ACCESS_TOKEN
yarn dlx wrangler secret put SECRET

Both are plain strings you choose yourself when prompted, not a generated or fixed-format value; pick anything long and unguessable. Their use is narrow: ACCESS_TOKEN only authorizes minting a report-access token (POST /api/token) and setting a project's main branch, nothing else; SECRET is never sent anywhere, it just signs the report-access tokens issued from those ACCESS_TOKEN requests. Neither is what you give to Allure 3 directly - that's a separate, freshly minted ars1.<payload>.<signature> token, covered in Connecting Allure 3 to the storage service.

3. Deploy ​

bash
corepack enable
yarn dlx wrangler deploy

Or run it locally first, entirely on your own machine. wrangler dev emulates D1 and R2 locally, with no real Cloudflare resources touched:

bash
yarn dlx wrangler dev

4. Validate it's running ​

bash
curl https://<your-worker-domain>/api/ping

A {"pong":true,...} response confirms the service is up. From here, connect Allure 3 to the storage service.

5. Use S3-compatible storage instead of R2 ​

Set STORAGE_BACKEND=s3 (as a var or Worker secret, same as ACCESS_TOKEN/SECRET) to store report files in an S3-compatible bucket instead of the native R2 binding.

VariableRequiredPurpose
S3_BUCKETYesBucket name
S3_REGIONYesBucket region (auto for Cloudflare R2)
S3_ENDPOINTYesS3-compatible endpoint URL
S3_ACCESS_KEY_IDNo*Access key
S3_SECRET_ACCESS_KEYNo*Secret key
S3_FORCE_PATH_STYLEYestrue for most self-hosted S3-compatible servers (e.g. MinIO), false for R2
S3_SESSION_TOKENNoSession token, for temporary credentials
S3_PREFIXNoPrefix applied to every object key
S3_REPORTS_PREFIXNoPrefix for report files (default files)
S3_ASSETS_PREFIXNoPrefix for shared assets (default assets)

* If omitted, the AWS SDK's default credential provider chain is used instead.

bash
yarn dlx wrangler secret put STORAGE_BACKEND
yarn dlx wrangler secret put S3_BUCKET
yarn dlx wrangler secret put S3_REGION
yarn dlx wrangler secret put S3_ENDPOINT
yarn dlx wrangler secret put S3_ACCESS_KEY_ID
yarn dlx wrangler secret put S3_SECRET_ACCESS_KEY
yarn dlx wrangler secret put S3_FORCE_PATH_STYLE

Cloudflare R2 example values:

bash
STORAGE_BACKEND=s3
S3_BUCKET=allure-report-storage
S3_REGION=auto
S3_ENDPOINT=https://<cloudflare-account-id>.r2.cloudflarestorage.com
S3_ACCESS_KEY_ID=<access-key>
S3_SECRET_ACCESS_KEY=<secret-key>
S3_FORCE_PATH_STYLE=false

Bucket-specific R2 endpoints (<bucket>.<account-id>.r2.cloudflarestorage.com) are normalized internally to the account-level form above.

See Self-hosted storage for how to use it: publishing, branches, history, and deleting reports.

Pager
Previous pageDeploying Self-Hosted Storage with Docker
Next pageAllure Report 3: XCResults Reader
Powered by

Subscribe to our newsletter

Get product news you actually need, no spam.

Subscribe
Allure TestOps
  • Overview
  • Why choose us
  • Cloud
  • Self-hosted
  • Success Stories
Company
  • Documentation
  • Blog
  • About us
  • Contact
  • Events
© 2026 Qameta Software Inc. All rights reserved.
A Markdown version of this page is available at /docs/guides/self-hosted-storage-cloudflare.md