PHPackages                             bagart/selectel-storage - 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. bagart/selectel-storage

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

bagart/selectel-storage
=======================

Selectel CDN Storage for League Flysystem. Laravel preferred

0274PHP

Since Aug 20Pushed 7y ago2 watchersCompare

[ Source](https://github.com/bagart/selectel-storage)[ Packagist](https://packagist.org/packages/bagart/selectel-storage)[ RSS](/packages/bagart-selectel-storage/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (2)Used By (0)

[Selectel](https://selectel.com/) CDN Storage
=============================================

[](#selectel-cdn-storage)

Optional: Laravel 5.\* storage

Setup Selectel official site
----------------------------

[](#setup-selectel-official-site)

- Register at Selectel
- Create container in Selectel Storage (private access is recommended)
- Create user for safety use
- Grant access with custom access permissions to container(read/write)

Install composer package
========================

[](#install-composer-package)

```
composer require bagart/selectel-storage
```

Configure ENV
-------------

[](#configure-env)

Add to $\_ENV (Laravel: `.env` file)

```
SELECTEL_URL=https://auth.selcdn.ru/
SELECTEL_USERNAME=00000_some_user
SELECTEL_PASSWORD=___PASSWORD___
```

### Optional:

[](#optional)

For safe use private documents with access to file without password - prepare TEMP\_URL\_SECRET Reason: access to private file with temporary key

Add to $\_ENV (Laravel: `.env` file)

```
SELECTEL_TEMP_URL_SECRET=___ANY_SAFE_STRING_AS_SECRET___
```

preset `___ANY_SAFE_STRING_AS_SECRET___ `to CDN

```
#put username and password
curl -i -X POST https://api.selcdn.ru/v2.0/tokens -H 'Content-type: application/json' -d '{"auth": {"passwordCredentials": {"username": "00000_some_user", "password": "___PASSWORD___"}}}'
#put selectel_id, ___TOKEN___ and ___ANY_SAFE_STRING_AS_SECRET___
curl -i -X POST https://api.selcdn.ru/v1/SEL_00000 -H "X-Auth-Token: ___TOKEN___" -H "X-Account-Meta-Temp-URL-Key: ___ANY_SAFE_STRING_AS_SECRET___"
```

Configure APP
-------------

[](#configure-app)

Laravel: Add to `disks` section in `config/filesystems.php`:

```
   'some_named_container' => [
        'driver' => 'selectel',
        'serviceName'  => env('SELECTEL_SERVICE_NAME'),
        'username' => env('SELECTEL_USERNAME'),
        'password' => env('SELECTEL_PASSWORD'),
        'endpoint' => env('SELECTEL_URL'),
        'container' => env('FS_NS_DEFAULT', 'default'),
        'tenantId'     => env('SELECTEL_TENANT_ID'),
        'tenantName'   => env('SELECTEL_TENANT_NAME'),
        'region'        => env('SELECTEL_REGION'),
#        'cache' => [
#            'store' => env('SELECTEL_CACHE_DRIVER')
#                ?? env('CACHE_DRIVER')
#                ?? 'redis',
#            'expire' => env('SELECTEL_CACHE_EXPIRE', 600),
#            'prefix' => 'cache-selectel-'.env('FS_NS_DEFAULT', 'default'),
#        ],
    ],
```

#### Legacy

[](#legacy)

For Laravel version less then 5.5 (not need on actual version) Add to service\_provider section in `config/app.php`:

```
BAGArt\SelectelStorage\SelectelServiceProvider::class,
```

Laravel use
===========

[](#laravel-use)

```
    dump([
        'put' => Storage::disk('some_named_container')->put('test_file_name', 'some test content'),
        'get' => Storage::disk('some_named_container')->get('test_file_name'),
        'delete' =>  Storage::disk('some_named_container')->delete('test_file_name'),
    ]);
```

Native use
----------

[](#native-use)

```
    //example in configure section
    $config_selectel =  config('filesystem.disks.some_named_container');

    $disk = new Filesystem(
        new SelectelAdapter(
            (new SelectelOpenStack(
                $config_selectel['endpoint'],
                $config_selectel
            ))
                ->buildContainer()
        )
    );
```

###  Health Score

22

—

LowBetter than 21% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/02a582356aa07935e42e622817f56810dce45be995af444215fabb072a39992b?d=identicon)[bagart](/maintainers/bagart)

---

Top Contributors

[![bagart](https://avatars.githubusercontent.com/u/2109022?v=4)](https://github.com/bagart "bagart (9 commits)")

### Embed Badge

![Health badge](/badges/bagart-selectel-storage/health.svg)

```
[![Health](https://phpackages.com/badges/bagart-selectel-storage/health.svg)](https://phpackages.com/packages/bagart-selectel-storage)
```

###  Alternatives

[venveo/craft-compress

Create smart zip files from Craft assets on the fly

124.7k](/packages/venveo-craft-compress)

PHPackages © 2026

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