PHPackages                             sitegeist/flowakamainetstorage - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. sitegeist/flowakamainetstorage

ActiveNeos-package[File &amp; Storage](/categories/file-storage)

sitegeist/flowakamainetstorage
==============================

v2.0.2(3y ago)08.1kPHP

Since Apr 15Pushed 3y ago7 watchersCompare

[ Source](https://github.com/sitegeist/Sitegeist.Flow.AkamaiNetStorage)[ Packagist](https://packagist.org/packages/sitegeist/flowakamainetstorage)[ RSS](/packages/sitegeist-flowakamainetstorage/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (5)Versions (22)Used By (0)

Sitegeist Flow Akamai NetStorage Connector
==========================================

[](#sitegeist-flow-akamai-netstorage-connector)

This Flow package allows you to store assets (resources) in Akamai's NetStorage. It enables you to use Akamai NetStorage as a Storage or a Target in your Neos Project.

It uses the [Akamai PHP Storagekit](https://github.com/akamai/NetStorageKit-PHP)

Authors &amp; Sponsors
----------------------

[](#authors--sponsors)

- Florian Heinze -

*The development and the public-releases of this package is generously sponsored by .*

Features
--------

[](#features)

- storage implementation of the `WritableStorageInterface`
- target implementation of the `TargetInterface`
- commands to be run via `./flow` e.g. to test your configuration and connectivity
- cleanup a folder to remove old assets (useful for post-deploy scripts)

With this connector you can run a Neos website without storing asset (images, PDFs etc.) on your local webserver.

Installation
------------

[](#installation)

The connector is installed as a Flow package via Composer. For your existing project, simply include \[TODO -&gt; correct package name from packagist\] into the dependencies of your Flow or Neos distribution:

`composer require [TODO]`

Configuration
-------------

[](#configuration)

To be able to use Akamai NetStorage you have to configure your credentials in your `storageOptions` and your `targetOptions`in your `Settings.yaml`. For more Information on how to configure Neos check out the docs of the [Flow ResourceManagement](https://flowframework.readthedocs.io/en/stable/TheDefinitiveGuide/PartIII/ResourceManagement.html)

```
Neos:
  Flow:
    resource:
      storages:
        akamaiPersistentResourcesStorage:
          storage: 'Sitegeist\Flow\AkamaiNetStorage\AkamaiStorage'
          storageOptions:
            host: 'YOURHOST-HERE.akamaihd.net'
            key: 'YOUR-KEY-HERE'
            keyName: 'KEY-NAME-HERE'
            cpCode: 'YOUR-CP-CODE-HERE'
            restrictedDirectory: 'functional-testcase-storage'
            workingDirectory: 'storage'
      targets:
        akamaiPersistentResourcesTarget:
          target: 'Sitegeist\Flow\AkamaiNetStorage\AkamaiTarget'
          targetOptions:
            host: 'YOURHOST-HERE.akamaihd.net'
            staticHost: 'YOUR-STATIC-HOST-HERE'
            key: 'YOUR-KEY-HERE'
            keyName: 'KEY-NAME-HERE'
            cpCode: 'YOUR-CP-CODE-HERE'
            restrictedDirectory: 'functional-testcase-storage'
            workingDirectory: 'target'
      collections:
        persistent:
          storage: 'akamaiPersistentResourcesStorage'
          target: 'akamaiPersistentResourcesTarget'
```

- **`host`**- The host of the API
- **`proxy`**- The proxy to use (if needed)
- **`staticHost`** - The host for providing static content
- **`key`** - The internally-generated Akamai Key. This is the value used when provisioning access to the API.
- **`keyName`** - The name ("Id") of an Upload Account provisioned to access the target Storage Group. It can be gathered from the Luna Control Center.
- **`cpCode`** - The unique CP Code that represents the root directory in the applicable NetStorage Storage Group
- **`restrictedDirectory `** - Path with additional sub-directories that the $key is restricted to
- **`workingDirectory `** - The directory, that you want to store files in, e.g. "storage" or "target" You need to use different working directories when configuring your storage and target.

**Do not forget to replace the upper case characters with your configuration.**

**IMPORTANT:** for all paths do Not use leading or trailing slashes!

You can test your configuration by executing the connect command:

`./flow akamai:connect`

```
Please specify the required argument "collectionName": persistent
storage connection is working
true

target connection is working
true

```

Configuring a general connection
--------------------------------

[](#configuring-a-general-connection)

Beside using Akamai as a Asset Source for Neos, you can configure a general connection. This is used in the CLI tool `akamai:list` and `akamai:cleanup`.

Configuration is as follow:

```
Sitegeist:
  Flow:
    AkamaiNetStorage:
      options:
        host: 'YOURHOST-HERE.akamaihd.net'
        staticHost: 'YOUR-STATIC-HOST-HERE'
        key: 'YOUR-KEY-HERE'
        keyName: 'KEY-NAME-HERE'
        cpCode: 'YOUR-CP-CODE-HERE'
        restrictedDirectory: 'YOUR-RESTRICTED-DIRECTORY-HERE'

```

Listing content
---------------

[](#listing-content)

With the Flow CLI tool you can list content of a specific folder

`./flow akama:list --working-directory `

The `restrictedDirectory` will be taken into account, when putting together the folder.

Cleanup
-------

[](#cleanup)

If you are using Akamai for a static asset in a deployment step, you will end up with old assets.

A helping hand with cleaning that up automatically, is the `akama:cleanup` script

`./flow akamai:cleanup --working-directory static --keep 10`

This will remove folders from the `--working-directory` and only keep the number given by the `--keep` argument.

This can be used in a post-build step.

Running Tests
-------------

[](#running-tests)

For running the tests you need an Akamai account and credentials to access NetStorage. According to our understanding Akamai does not seem to provide developer accounts. -&gt; [Akamai Forum - Is there developer account for testing Open API ?](https://community.akamai.com/customers/s/question/0D50f00005RtrCZCAZ/is-there-developer-account-for-testing-open-api-?language=en_US)

Please adjust the `Settings.yaml` as follows to configure the Akamai storages for running the tests:

```
Sitegeist:
  Flow:
    AkamaiNetStorage:
      functionalTests:
        storageOptions:
          host: 'YOURHOST-HERE.akamaihd.net'
          staticHost: 'YOUR-STATIC-HOST-HERE'
          key: 'YOUR-KEY-HERE'
          keyName: 'KEY-NAME-HERE'
          cpCode: 'YOUR-CP-CODE-HERE'
          restrictedDirectory: 'functional-testcase-storage'
```

**Do not forget to replace the upper case characters with your staging config before running the tests.**

`ffunctionaltest Tests/Functional`

Further Reading
---------------

[](#further-reading)

- [Flow ResourceManagement](https://flowframework.readthedocs.io/en/stable/TheDefinitiveGuide/PartIII/ResourceManagement.html)
- [Akamai PHP Storagekit](https://github.com/akamai/NetStorageKit-PHP)
- [NetStorage Usage API](https://learn.akamai.com/en-us/webhelp/netstorage/netstorage-http-api-developer-guide/GUID-22B017EE-DD73-4099-B96D-B5FD91E1ED98.html)

###  Health Score

33

—

LowBetter than 74% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity18

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 61% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~109 days

Recently: every ~54 days

Total

14

Last Release

1164d ago

Major Versions

v1.1.2 → 2.0.x-dev2021-03-29

v1.3.4 → v2.0.02023-01-05

### Community

Maintainers

![](https://www.gravatar.com/avatar/1159e78bff9c03cc5ed626447ca5072097107f58af459a9b8bac8d933ba8298c?d=identicon)[wilhelm.behncke](/maintainers/wilhelm.behncke)

![](https://www.gravatar.com/avatar/829b4ccb51e8cff3c1e4b59d60cfe8d1b86f6d77fc31a6b3fc99227f432542ca?d=identicon)[mficzel](/maintainers/mficzel)

---

Top Contributors

[![mficzel](https://avatars.githubusercontent.com/u/1309380?v=4)](https://github.com/mficzel "mficzel (25 commits)")[![sorenmalling](https://avatars.githubusercontent.com/u/531918?v=4)](https://github.com/sorenmalling "sorenmalling (14 commits)")[![grebaldi](https://avatars.githubusercontent.com/u/2522299?v=4)](https://github.com/grebaldi "grebaldi (1 commits)")[![mwuest](https://avatars.githubusercontent.com/u/3205472?v=4)](https://github.com/mwuest "mwuest (1 commits)")

---

Tags

cloudflowframeworkneoscmsstorage

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/sitegeist-flowakamainetstorage/health.svg)

```
[![Health](https://phpackages.com/badges/sitegeist-flowakamainetstorage/health.svg)](https://phpackages.com/packages/sitegeist-flowakamainetstorage)
```

###  Alternatives

[aws/aws-sdk-php

AWS SDK for PHP - Use Amazon Web Services in your PHP project

6.3k511.3M2.2k](/packages/aws-aws-sdk-php)[google/cloud

Google Cloud Client Library

1.2k16.2M53](/packages/google-cloud)[stechstudio/laravel-zipstream

A fast and simple streaming zip file downloader for Laravel.

4633.7M3](/packages/stechstudio-laravel-zipstream)[fof/upload

The file upload extension for the Flarum forum with insane intelligence.

188171.7k15](/packages/fof-upload)[uploadcare/uploadcare-php

Uploadcare PHP integration handles uploads and further operations with files by wrapping Upload and REST APIs.

1022.5M6](/packages/uploadcare-uploadcare-php)[azure-oss/storage

Azure Blob Storage PHP SDK

37985.0k5](/packages/azure-oss-storage)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
