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