# Tárolás: Cloudflare R2

> A digitális termékek fájljainak tárolása a Cloudflare R2-ben: hitelesítő adatok, tároló (bucket) kiválasztása és fájlkezelés.

A Cloudflare R2 a Cloudflare objektumtároló szolgáltatása. Ugyanazt az S3 API-t beszéli, mint az Amazon S3, de a fájlokat a Cloudflare globális hálózatán keresztül szolgálja ki, és a kimenő forgalomért nem számol díjat, vagyis nem fizetsz minden letöltésnél. Nagy fájlokat tartalmazó digitális termékeknél, nagy archívumoknál és nemzetközi vevőkörnél gyakran ez a legkedvezőbb megoldás.

A FluentCart Pro natív R2-illesztőt tartalmaz, saját beállításokkal, tárolókezeléssel és felülettel.

## A beállítások megnyitása

1. Nyisd meg a **Beállítások → Tárolási beállítások** oldalt.
2. A **Tárhelyszolgáltatók** listában keresd meg a **Cloudflare R2** sort, és kattints a **Kezelés** gombra.

![A Storage Providers lista a Local, S3 és Cloudflare R2 tárolókkal](./kepek/tarolas-beallitasok.webp)

*A Storage Providers lista a Local, S3 és Cloudflare R2 tárolókkal* (https://minta-bolt.hu/wp-admin/admin.php?page=fluent-cart)

A listában a **Helyi** (a webhely saját tárhelye) mindig működik, az **S3** és a **Cloudflare R2** külön állítható be. Az R2 beállítása két lépésből áll: **Credential** (hogyan azonosítja magát a FluentCart a Cloudflare-nél) és **Bucket** (melyik R2-tároló tartalmazza a fájlokat). Az R2 biztonsága a Cloudflare oldalán, a token és a tároló szintjén dől el, ezért nincs külön biztonsági lépés.

## Előkészületek

Szükséged lesz:

- egy Cloudflare-fiókra, amelyen az R2 be van kapcsolva (a Cloudflare vezérlőpultján kell engedélyezni, a bekapcsolás ingyenes),
- a Cloudflare-fiók azonosítójára (**Account ID**),
- egy R2 API-tokenre, amelyből az **Access Key ID** és a **Secret Access Key** származik.

### A hitelesítő adatok beszerzése a Cloudflare-nél

1. Jelentkezz be a Cloudflare vezérlőpultjára. A bal oldali menüben nyisd ki a **Storage & databases** részt, és kattints az **R2 Object Storage** pontra. Ha első alkalommal használod, fogadd el az R2 feltételeit.
2. Az áttekintő jobb oldalán, az **Account Details** alatt másold ki az **Account ID** értékét (hosszú hexadecimális szöveg) a másoló ikonnal.
3. Az **Account Details** kártyában az **API Tokens** sor mellett kattints a **Kezelés** gombra.
4. Kattints a **Create Account API token** gombra. Az ilyen token a Cloudflare-fiókhoz tartozik, és akkor is él, ha a létrehozó kilép a szervezetből. A **User API Tokens** egyetlen felhasználóhoz kötött, és ha az illető kilép, érvényét veszti, ezért inkább csak személyes vagy rövid életű fejlesztői célra jó.
5. Töltsd ki az űrlapot:
   - **Token name:** bármilyen felismerhető név, például „R2 token a FluentCarthoz”.
   - **Permissions:** válaszd az **Admin Read & Write** jogosultságot. Erre azért van szükség, hogy a FluentCart fel tudja sorolni a tárolókat és újat is tudjon létrehozni. Szűkebb token is használható (**Object Read & Write**, egyetlen tárolóra szűkítve), de akkor a tárolók böngészése és létrehozása nem lesz elérhető a bővítményben.
   - **TTL:** válaszd a **Forever** értéket, hogy a token lejárata miatt ne álljon le észrevétlenül a tárolás. Ha a biztonsági szabályzatod forgatást kér, olyan dátumot adj meg, amelyet nyomon is követsz.
   - **Client IP Address Filtering:** hagyd üresen, kivéve, ha a webhelyed rögzített IP-címekről fut. IP-szűrésnél a terheléselosztók és az időzített feladatok címét is vedd fel, különben a háttérfolyamatok feltöltései elbuknak.
6. Kattints a lap alján a **Create Account API Token** gombra. A Cloudflare egyszer megmutatja az **Access Key ID** és a **Secret Access Key** értékét. A titkos kulcsot csak most látod: ha elveszted, a tokent újra kell generálni. Másold ki mindkettőt, lehetőleg jelszókezelőbe.

## 1. lépés: Credential

A FluentCart kétféleképpen fogadja a hitelesítő adatokat.

### A. mód: kulcsok a `wp-config.php` fájlban (ajánlott)

Ez a legbiztonságosabb: a kulcsok a WordPress-konfigurációs fájlban vannak, nem az adatbázisban, és az admin felületről nem szerkeszthetők. A beállítóoldal a **Define access keys in wp-config.php (Recommended)** opciót mutatja a megfelelő kódrészlettel és a **Copy Snippet** gombbal. Másold be a kódot a `wp-config.php` elejére, a „That's all, stop editing!” sor elé, és cseréld ki a helyőrzőket a saját értékeidre:

```php
define( 'FCT_R2_ACCOUNT_ID', 'az-account-id-d' );
define( 'FCT_R2_ACCESS_KEY', 'az-access-key-id-d' );
define( 'FCT_R2_SECRET_KEY', 'a-secret-access-key-ed' );
```

![Az R2 hitelesítő lépése a wp-config.php kódrészlettel és a Copy Snippet gombbal](./kepek/tarhely-r2-credential-wpconfig.webp)

*Az R2 hitelesítő lépése a wp-config.php kódrészlettel és a Copy Snippet gombbal* (https://minta-bolt.hu/wp-admin/admin.php?page=fluent-cart)

A képen a kódrészlet és a **Copy Snippet** gomb látszik. A beállítás ezen a ponton még csak az első lépésnél tart (**1/2 Befejezve**).

Amint a FluentCart észleli ezeket az állandókat, a mezők zárolódnak, és a **Connection Method** kártya jelzi, hogy a kulcsok a `wp-config.php` fájlból jönnek. Ha később másik módra váltasz, töröld vagy kommentezd ki a három `define` sort, és töltsd újra az oldalt.

### B. mód: kulcsok az adatbázisban

Ha csak a felületen szeretnél beállítani, válaszd a **Store credentials in the database** opciót. Ez a kulcsokat az adatbázisban tárolja, ezért kifejezetten el kell fogadnod a kockázatot: jelöld be az „I understand the risks but I'd like to store access keys in the database anyway.” négyzetet. Ezután add meg az **Account ID**, az **Access Key ID** és a **Secret Access Key** értékét, és kattints a **Save & Continue** gombra.

![Az R2 hitelesítő lépése, az adatbázisban tárolás módja](./kepek/tarhely-r2-credential-adatbazis.webp)

*Az R2 hitelesítő lépése, az adatbázisban tárolás módja* (https://minta-bolt.hu/wp-admin/admin.php?page=fluent-cart)

A képen a három beviteli mező látszik: **Account ID**, **Access Key** és **Secret Key**. A varázsló felső sarkában a haladás (**1/2 Befejezve**) mutatja, hogy az R2 beállítása két lépésből áll.

## 2. lépés: Bucket

Az R2-tároló (bucket) egy elnevezett tárolóegység a Cloudflare-fiókodban. Háromféleképpen választhatsz vagy hozhatsz létre egyet.

**Meglévő tároló, név kézi megadásával:**

1. Válaszd a **Use Existing Bucket** opciót.
2. Válaszd az **Enter bucket name** lehetőséget.
3. Írd be a tároló nevét, és kattints a **Beállítások mentése** gombra.

**Meglévő tároló, böngészés a Cloudflare-ből:**

1. Válaszd a **Use Existing Bucket** opciót.
2. Válaszd a **Browse existing buckets** lehetőséget.
3. Ha a frissen létrehozott tároló nem látszik, kattints a frissítés ikonra.
4. Kattints a kívánt tárolóra, majd a **Beállítások mentése** gombra.

**Új tároló létrehozása a felületről:**

1. Válaszd a **Create New Bucket** opciót.
2. Add meg a **Bucket Name** értékét. Az R2-tárolók nevei az összes Cloudflare R2-fiók között egyediek.
3. Válassz **Region / Jurisdiction** értéket (lásd lent). Az **Automatic** biztonságos alapérték.
4. Kattints a **Beállítások mentése** gombra. A FluentCart létrehozza a tárolót, és automatikusan ki is választja.

### Az R2-joghatóságok

Az R2 lehetővé teszi, hogy a tárolót földrajzi joghatósághoz kösd az adatok elhelyezése, a késleltetés vagy a megfelelőség miatt.

| Érték | Felirat | Mikor válaszd |
|---|---|---|
| `auto` | Automatic | Alapérték. A Cloudflare az írás helye alapján a legjobb helyet választja. |
| `apac` | Asia-Pacific (APAC) | A vevőid többsége Ázsia és a Csendes-óceán térségében él. |
| `eeur` | Eastern Europe (EEUR) | Kelet-európai vevők vagy megfelelőségi követelmények. |
| `enam` | Eastern North America (ENAM) | Elsősorban az Egyesült Államok keleti partján vagy Kelet-Kanadában élő vevők. |
| `weur` | Western Europe (WEUR) | Nyugat-európai vevők vagy GDPR-vezérelt adatelhelyezés. |
| `wnam` | Western North America (WNAM) | Elsősorban az Egyesült Államok nyugati partján vagy Nyugat-Kanadában élő vevők. |
| `oc` | Oceania (OC) | Elsősorban Ausztráliában és Új-Zélandon élő vevők. |

A tároló joghatósága létrehozás után nem módosítható. Ha mást szeretnél, hozz létre új tárolót, és költöztesd át a fájlokat.

## Csatlakoztatott állapot

Ha a hitelesítő adatok ellenőrzése sikeres és a tároló ki van választva, a **Cloudflare R2** kártya **Active** jelzéssel mutatja a szolgáltatót a tároló nevével és a joghatósággal. A kártya elemei:

- **Active** kapcsoló: a szolgáltatót a beállítások elvesztése nélkül kapcsolhatod be és ki. Kikapcsolva a Cloudflare-ről semmi nem törlődik, csak az új feltöltések nem mennek rajta át.
- **Edit:** újra megnyitja a **Credential → Bucket** varázslót, ahol módosíthatod a hitelesítő adatokat vagy a tárolót. Csak a módosuló mezőket kell frissíteni, nem kell leválasztani és újra csatlakoztatni, a meglévő fájlok hivatkozása érvényes marad.
- A tároló neve, és a joghatóság felirata (például `ENAM`).
- **Check Connection:** igény szerint újra lefuttatja a kapcsolat ellenőrzését az R2 felé.

## Fájlkezelés

Csatlakozás után a digitális termékek feltöltései automatikusan az R2-tárolóba mennek. A FluentCart fájlböngészőjében:

- új fájlokat tölthetsz fel közvetlenül az R2-be,
- böngészheted a tároló meglévő fájljait,
- fájlnév alapján kereshetsz,
- törölheted a már nem szükséges fájlokat,
- minden fájl mellett jelvény mutatja, melyik tárolóillesztőn van.

Az R2 és az Amazon S3 egyszerre is beállítható, és a kettő között kapcsolgathatsz, melyik legyen aktív.

## Hibaelhárítás

- **A kapcsolat hitelesítési hibával elbukik:** ellenőrizd, hogy az **Account ID** pontos (hosszú hexadecimális szöveg, nem az e-mail-címed vagy a fiókneved), az **Access Key ID** és a **Secret Access Key** teljesen és felesleges szóközök nélkül került be, és hogy a token rendelkezik **Object Read & Write** jogosultsággal. Ha újragenerálták a tokent, az előző kulcsok érvénytelenek.
- **A „Browse existing buckets” üres:** a Cloudflare-fiókodban még nincs R2-tároló (válaszd a **Create New Bucket** lehetőséget), vagy a token más tárolókra van korlátozva.
- **A tároló létrehozása névütközéssel elbukik:** az R2-tárolónevek globálisan egyediek. Válassz specifikusabb nevet, például `aruhazneve-fluentcart-fajlok`.
- **A fájlok feltöltődnek, de a vevők nem tudják letölteni őket:** ellenőrizd, hogy a digitális termék tárolóillesztőként a Cloudflare R2-t használja, és hogy a token továbbra is rendelkezik **Object Read & Write** jogosultsággal (egy csak olvasó token a letöltést is megtöri).
- **A `FCT_R2_…` állandókat megadtam, de a mezők üresek maradnak:** mindhárom állandónak a `wp-config.php` fájlban kell lennie (nem bővítmény- vagy témafájlban), a FluentCart betöltése előtt, és a nevüknek pontosan egyeznie kell: `FCT_R2_ACCOUNT_ID`, `FCT_R2_ACCESS_KEY` és `FCT_R2_SECRET_KEY`.
- **Látszik a titkos kulcs mentés után?** Nem. A **A. módban** csak a `wp-config.php` fájlban van meg, a **B. módban** mentés után maszkolva látszik.
