Update README.md with documentation
This commit is contained in:
parent
4820bfc69f
commit
b3ffee9e78
1 changed files with 121 additions and 2 deletions
123
README.md
123
README.md
|
|
@ -1,3 +1,122 @@
|
|||
# s3-uploader
|
||||
# FramelightX S3 Uploader
|
||||
|
||||
Grassvalley AMPP S3 uploader utility
|
||||
A browser-based file upload tool for pushing media assets to any S3-compatible object storage endpoint (RustFS, MinIO, AWS S3, etc.). Built for broadcast and post-production environments where large files need to land in a managed folder structure.
|
||||
|
||||
## Features
|
||||
|
||||
- Upload up to 50 files at once (50GB max per file)
|
||||
- Hierarchical folder tree for organizing files into prefixed S3 keys
|
||||
- Multi-user authentication with admin and standard user roles
|
||||
- Optional live AMPP job monitoring panel (Grassvalley AMPP integration)
|
||||
- Blocks executable file uploads server-side
|
||||
- Persistent folder tree and user data stored in a Docker volume
|
||||
- Timeout-tolerant uploads — treats slow S3 acknowledgements as success rather than failing
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Docker and Docker Compose
|
||||
- An S3-compatible storage endpoint with access credentials
|
||||
- (Optional) A Grassvalley AMPP account and API key for job monitoring
|
||||
|
||||
## Quick Start
|
||||
|
||||
1. Clone the repo and copy the example env file:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
2. Edit `.env` with your credentials:
|
||||
|
||||
```env
|
||||
S3_ENDPOINT=https://your-s3-endpoint.com
|
||||
S3_ACCESS_KEY=your-access-key
|
||||
S3_SECRET_KEY=your-secret-key
|
||||
S3_BUCKET=upload
|
||||
S3_REGION=us-east-1
|
||||
PORT=3000
|
||||
|
||||
# Optional — enables the AMPP job monitoring panel
|
||||
AMPP_BASE_URL=https://us-east-1.gvampp.com
|
||||
AMPP_API_KEY=your-base64-encoded-client-credentials
|
||||
```
|
||||
|
||||
3. Start the service:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
4. Open `http://localhost:3000` in your browser.
|
||||
|
||||
## Default Credentials
|
||||
|
||||
On first run, a default admin account is created:
|
||||
|
||||
| Username | Password |
|
||||
|----------|----------|
|
||||
| Admin | BertAndErnieVPM2026 |
|
||||
|
||||
**Change this immediately** via the Admin panel after first login.
|
||||
|
||||
## Folder Structure & S3 Keys
|
||||
|
||||
The folder tree in the UI maps directly to S3 key prefixes. When you select a folder and upload files, the key is built as:
|
||||
|
||||
```
|
||||
FolderA--SubFolder--filename.ext
|
||||
```
|
||||
|
||||
Admins can add or remove folders from the tree. Default folders are: `Media`, `Dailies`, `VFX`, `Audio`.
|
||||
|
||||
## User Roles
|
||||
|
||||
| Role | Can Upload | Manage Users | Manage Folders |
|
||||
|------|-----------|-------------|----------------|
|
||||
| user | ✓ | ✗ | ✗ |
|
||||
| admin | ✓ | ✓ | ✓ |
|
||||
|
||||
## AMPP Job Monitoring (Optional)
|
||||
|
||||
When `AMPP_API_KEY` is configured, the dashboard displays a live panel showing the status of jobs running on the Grassvalley AMPP platform. The API key should be a Base64-encoded `client_id:client_secret` string, which is exchanged for a bearer token automatically using the OAuth2 client_credentials flow.
|
||||
|
||||
## Environment Variables
|
||||
|
||||
| Variable | Default | Description |
|
||||
|----------|---------|-------------|
|
||||
| `S3_ENDPOINT` | `https://broadcastmgmt.cloud` | S3-compatible storage URL |
|
||||
| `S3_ACCESS_KEY` | — | S3 access key |
|
||||
| `S3_SECRET_KEY` | — | S3 secret key |
|
||||
| `S3_BUCKET` | `upload` | Target bucket name |
|
||||
| `S3_REGION` | `us-east-1` | S3 region |
|
||||
| `PORT` | `3000` | HTTP port to listen on |
|
||||
| `AUTH_USER` | `Admin` | Default admin username |
|
||||
| `AUTH_PASS` | `BertAndErnieVPM2026` | Default admin password |
|
||||
| `DATA_DIR` | `/data` | Path for persistent JSON data |
|
||||
| `AMPP_BASE_URL` | `https://us-east-1.gvampp.com` | AMPP API base URL |
|
||||
| `AMPP_API_KEY` | — | Base64 client credentials for AMPP OAuth2 |
|
||||
|
||||
## Docker Compose
|
||||
|
||||
```yaml
|
||||
services:
|
||||
s3-uploader:
|
||||
build: .
|
||||
ports:
|
||||
- "3000:3000"
|
||||
volumes:
|
||||
- uploader-data:/data
|
||||
env_file: .env
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
uploader-data:
|
||||
```
|
||||
|
||||
## File Upload Security
|
||||
|
||||
The following file extensions are blocked from uploading regardless of user role:
|
||||
|
||||
`exe`, `sh`, `bash`, `bat`, `cmd`, `ps1`, `msi`, `dll`, `py`, `rb`, `php`, `jar`, `apk`, and others.
|
||||
|
||||
Blocked uploads are rejected at the server level — the file never reaches S3.
|
||||
|
|
|
|||
Loading…
Reference in a new issue