PHPackages                             nextdeveloper/s3 - 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. nextdeveloper/s3

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

nextdeveloper/s3
================

NextDeveloper s3 Package

v1.1.29(1w ago)0196↑50%[1 PRs](https://github.com/nextdeveloper-nl/s3/pulls)MITPHPPHP &gt;=8.2.0

Since May 29Pushed 3d agoCompare

[ Source](https://github.com/nextdeveloper-nl/s3)[ Packagist](https://packagist.org/packages/nextdeveloper/s3)[ Docs](https://github.com/nextdeveloper-nl/s3)[ RSS](/packages/nextdeveloper-s3/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (5)Dependencies (14)Versions (42)Used By (0)

S3
==

[](#s3)

This module provides S3-compatible object storage management for the PlusClouds platform, backed by a [SeaweedFS](https://github.com/seaweedfs/seaweedfs) cluster. It exposes a full REST API to manage storage accounts, buckets, access keys, quotas, bandwidth tracking, audit logs, WORM commitments, and webhook notifications — all integrated with the platform's IAM and billing layers.

The storage agent (`storaged`) that runs alongside the SeaweedFS cluster on each storage server is a separate Go binary. This module is its orchestration counterpart: it holds desired state, receives telemetry, and dispatches commands to the agent over NATS.

Resources
---------

[](#resources)

ResourceDescription`Accounts`S3 storage accounts (one per IAM account)`Buckets`S3 buckets belonging to an account`AccessKeys`HMAC access key pairs for S3 API authentication`Servers`Storage servers running the SeaweedFS cluster`ServerTelemetries`Real-time capacity and health reports from each server`AuditLogs`Per-request access log for compliance`BandwidthMonthlies`Monthly egress/ingress usage per account`DepositLedgers`Billing credits deposited against an account`MultipartUploads`In-progress multipart upload sessions`Webhooks`Outbound event notification endpoints`WebhookDeliveries`Delivery history and retry log for each webhook`UsageSnapshots`Point-in-time storage usage snapshots`WormCommitments`WORM (Write Once Read Many) bucket lock commitments`NotificationsSents`Record of quota and lifecycle notifications sentActions
-------

[](#actions)

ActionDescription`AccessKeys/Revoke`Immediately revoke an access key pair`Accounts/Block`Suspend all API access for an account`Accounts/Unblock`Restore API access for a blocked account`Buckets/EnableVersioning`Enable object versioning on a bucket`Buckets/SuspendVersioning`Suspend object versioning on a bucket`MultipartUploads/Abort`Abort an in-progress multipart upload and free its parts`Servers/RegenerateApiKey`Rotate the API key used between this service and the storage agent`Webhooks/Pause`Pause delivery of events to a webhook endpoint`Webhooks/Resume`Resume delivery of events to a paused webhook endpoint`WormCommitments/Cancel`Cancel a pending WORM commitment before it becomes activeArtisan Commands
----------------

[](#artisan-commands)

```
# Take usage snapshots and enforce quota thresholds for all active accounts
php artisan s3:check-quotas

# Abort and remove multipart uploads inactive for more than 48 hours
php artisan s3:cleanup-multipart

# Sync current egress/ingress usage into the monthly bandwidth tracking table
php artisan s3:parse-bandwidth

# Process WORM commitment lifecycle: expire active commitments and purge old ones
php artisan s3:worm-lifecycle
```

These commands are intended to run on a schedule. Add them to your `app/Console/Kernel.php` or a cron table:

```
* * * * * php artisan s3:check-quotas
0 * * * * php artisan s3:parse-bandwidth
0 3 * * * php artisan s3:cleanup-multipart
0 4 * * * php artisan s3:worm-lifecycle

```

Required .env Keys
------------------

[](#required-env-keys)

```
# AES-256-GCM key for encrypting access key secrets at rest (32-byte raw or 64-char hex)
S3_ENCRYPTION_KEY=

# Default quota limits applied when provisioning a new account
S3_DEFAULT_QUOTA_STORAGE_BYTES=10737418240       # 10 GB
S3_DEFAULT_QUOTA_EGRESS_BYTES_MO=107374182400    # 100 GB
S3_DEFAULT_QUOTA_MAX_BUCKETS=10
S3_DEFAULT_QUOTA_MAX_OBJECTS=1000000

# WORM pricing and lifecycle
S3_WORM_PRICE_PER_GB_MO=0.023
S3_WORM_PURGE_GRACE_DAYS=30
```

Architecture
------------

[](#architecture)

```
┌─────────────────────────────────────────────────────┐
│               PlusClouds Orchestration               │
│            S3 Module (this package)                  │
│  Accounts · Buckets · Keys · Quotas · Billing        │
└──────────────┬──────────────────────────────────────┘
               │  NATS commands / telemetry
               ▼
┌──────────────────────────────────────────────────────┐
│                    Storage Server                    │
│  ┌──────────────────────────────────────────────┐   │
│  │              storaged (Go agent)             │   │
│  │  bucket management · SeaweedFS health watch  │   │
│  └───────────────────┬──────────────────────────┘   │
│                      │                              │
│  ┌───────────────────▼──────────────────────────┐   │
│  │              SeaweedFS cluster               │   │
│  │        master · volume · filer · s3          │   │
│  └──────────────────────────────────────────────┘   │
└──────────────────────────────────────────────────────┘

```

The `storaged` Go agent design is documented in [docs/storaged-design.md](docs/storaged-design.md). The NATS command/event contract between this module and the agent is defined in [docs/agent/seaweed-nats-contract.md](docs/agent/seaweed-nats-contract.md).

Planned Feature List
--------------------

[](#planned-feature-list)

- Account and bucket lifecycle management
- Access key provisioning and revocation
- Quota enforcement with notifications
- Monthly bandwidth tracking
- Multipart upload cleanup
- WORM commitment lifecycle
- Webhook delivery with retry log
- Audit logging
- Server telemetry ingestion
- storaged Go agent (first release)
- Automated billing ledger reconciliation
- Cross-region replication support

---

Our Libraries
-------------

[](#our-libraries)

This library is part of the **NextDeveloper / PlusClouds open-source ecosystem**. Browse all available libraries and find the right building blocks for your next project:

---

Join the Community
------------------

[](#join-the-community)

We believe great software is built together. The PlusClouds developer community is a place where engineers share ideas, ask questions, showcase what they have built, and help shape the direction of these libraries. Whether you are integrating a single package or building an entire platform on top of our stack, you are very welcome here.

Come and join us — we would love to see what you build:

###  Health Score

48

—

FairBetter than 94% of packages

Maintenance99

Actively maintained with recent releases

Popularity15

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity58

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.

###  Release Activity

Cadence

Every ~1 days

Total

40

Last Release

13d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/95028646?v=4)[Harun Barış Bulut](/maintainers/yakari007)[@yakari007](https://github.com/yakari007)

---

Top Contributors

[![yakari007](https://avatars.githubusercontent.com/u/95028646?v=4)](https://github.com/yakari007 "yakari007 (72 commits)")

---

Tags

s3s3-management

### Embed Badge

![Health badge](/badges/nextdeveloper-s3/health.svg)

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

###  Alternatives

[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[google/cloud

Google Cloud Client Library

1.2k16.7M57](/packages/google-cloud)[craftcms/cms

Craft CMS

3.6k3.6M3.2k](/packages/craftcms-cms)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k16](/packages/tempest-framework)[filegator/filegator

Filegator

3.0k1.1k](/packages/filegator-filegator)[concrete5/core

Concrete core subtree split

20166.1k53](/packages/concrete5-core)

PHPackages © 2026

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