Ghost: obrázky v object storage
Konfigurácia object storage adaptéru pre ghost v backblaze b2.
Platforma primárne ukladá obrázky do filesystému ./content/images/
. Pretože používam Backblaze B2 na domáce zálohy, tak si vravím, že do ňho uložím aj obrázky tohto blogu.
V oficálnej dokumetácií je pekne a jednoducho popísaná konfigurácia storage adaptéru a dostupné integrácie so službami tretích strán. Tak, ako sa mi to páči.
Očakávania však predčila tvrdá realita. Keďže Ghost je backendový JS, tak aj spomínané adaptéry sú v JS. Malý kariérny úlet som s prostredím JavaScriptu na backendovej strane zažil, ale bolo to, poviem vám obskúrny čas môjho života. Od tej doby som s JS nepracoval a nainvne som si myslel, že sa komunita okolo JS normalizovala.
Pre využívanie B2 storagu sa ponúka, natívne ghost-b2 adaptér, prípadne s3-store. B2-ka má kompatibilné API s S3. Bohužiaľ ani jeden z adaptérov spomenutých v oficiálnej dokumentácii nefungoval! Nieje sa čomu diviť, jeden má 5 rokov a druhý 3.
Nevadí, skúsime nájsť niečo aktuálnejšie. Pri vyhľadávaní na npm som pre B2 API najšiel najnovší adaptér 9 mesiacov starý. Dokumentácia OK, bohužiaľ inštalačný postup nefunkčný. Naučil som sa "vyreleasovať" takýto JS balík, ale finálne riešenie bolo polofunkčné. Skúsil som aj staršie adaptéry pre B2 API, ale bez úspechu.
U S3 adaptérov je situácia viac-menej rovnaká. Veľa adaptérov, forky forkov, každý opravujúci rodiča, ktorý prestal v minulosti nefungovať a vo finále dnes už nefunguje ani potomok.
Nakoniec som vyskúšal najčerstvejší, 21 dní starý s3-ghost. Sprvoti som ho preskočil, pretože sa mi nepáčila dokumentácia. Pri pohľade do zdrojáku som však potrebné informácie získal a mohol sa pustiť do konfigurácie.
Postup
V prvom rade je potrebné mať účet u Backblaze, založený bucket a API kľúč.
Inštalácia adaptéru je popísaná v README.md adaptéru:
cd /var/www/ghost
rm -rf content/adapters/storage/s3-ghost
mkdir content/adapters/storage/s3-ghost
cd content/adapters/storage/s3-ghost
yarn init -y
yarn add s3-ghost
cp node_modules/s3-ghost/index.js .
rm -rf node_modules/s3-ghost package.json yarn.lock
Následne je potreba fixnúť permissions a ownera:
find ./ ! -path "./versions/*" -type f -exec chmod 664 {} \;
chown -R ghost:ghost ./content
A v konfiguráku config.production.json
nastaviť nasledovné:
"storage": {
"active": "s3-ghost",
"s3-ghost": {
"accessKeyId": "xxxx",
"secretAccessKey": "yyyy",
"bucketName": "jozefjuris-sk",
"region": "eu-central-003",
"assetsBaseUrl": "https://jozefjuris-sk.s3.eu-central-003.backblazeb2.com",
"endpoint": "https://s3.eu-central-003.backblazeb2.com",
"ghostDirectory": "/var/www/ghost/current"
}
}
A v poslednom kroku je potreba otočiť ghosta:
ghost restart
Priznám sa, že toto bola prvá závažná výzva. Doteraz som platfromu a všetko okolo nej vnímal "slniečkovo", uvidíme ako to bude s rozbehaním mailu.