115 lines
3.1 KiB
Markdown
115 lines
3.1 KiB
Markdown
# Embedder 🖼️
|
|
|
|
A media host specialized in producing visually appealing embeds for services like Discord. Enjoy limitless file sizes and no compression.
|
|
|
|

|
|
|
|
## 🚀 Upcoming Features
|
|
|
|
- 📊 MariaDB/SQL support (currently uses SQLite)
|
|
- 🔗 Redundancy & Sync: Enhance reliability and enable synchronization across nodes.
|
|
|
|
## 🌐 Potential Features
|
|
|
|
- 🛰️ IPFS Integration
|
|
|
|
## 🔧 How to Run
|
|
|
|
### Using Source
|
|
|
|
```bash
|
|
$ export EBPASS=changeme
|
|
$ export EBPORT=3000
|
|
$ export EBAPI_KEY=changeme # For ShareX support
|
|
$ export EB_PROCESS_VIDEO=true # Enable video processing
|
|
|
|
$ npm install
|
|
$ npm start
|
|
```
|
|
|
|
**Note**: Default username is `admin` with the password being whatever `EBPASS` is set to.
|
|
|
|
### ShareX Support
|
|
|
|
Enabled at `/upload`. Requires authentication with key. `expire` key specifies duration in days.
|
|
|
|
```json
|
|
{
|
|
"Version": "14.1.0",
|
|
"Name": "embedder",
|
|
"DestinationType": "ImageUploader, FileUploader",
|
|
"RequestMethod": "POST",
|
|
"RequestURL": "http://localhost:3000/sharex",
|
|
"Headers": {
|
|
"key": "changeme"
|
|
},
|
|
"Body": "MultipartFormData",
|
|
"Arguments": {
|
|
"fileupload": null,
|
|
"expire": null
|
|
},
|
|
"FileFormName": "fileupload",
|
|
"URL": null,
|
|
"ThumbnailURL": null,
|
|
"DeletionURL": null,
|
|
"ErrorMessage": null
|
|
}
|
|
```
|
|
|
|
### Configuration
|
|
|
|
This project uses environmental variables for configuration:
|
|
|
|
| Variable | Description | Default |
|
|
|----------|-------------|---------|
|
|
| `EBPASS` | Password for the admin account | required |
|
|
| `EBAPI_KEY` | Key for API uploading (ShareX) | required |
|
|
| `EBPORT` | Port the server runs on | required |
|
|
| `EB_PROCESS_VIDEO` | Enable video processing/optimization | `true` |
|
|
| `EB_ENCODER` | Video encoder to use (CPU, NVENC, QSV, etc.) | `CPU` |
|
|
| `EB_FFMPEG_PATH` | Path to ffmpeg binary | auto-detected or bundled |
|
|
| `EB_FFPROBE_PATH` | Path to ffprobe binary | auto-detected or bundled |
|
|
| `EB_RANDOMIZE_NAMES` | Randomize uploaded file names | `false` |
|
|
|
|
#### Video Processing
|
|
|
|
When `EB_PROCESS_VIDEO` is enabled (which is the default), Embedder will:
|
|
|
|
1. Process uploaded videos to create optimized 720p versions
|
|
2. Show "Copy as GIFv" links for video files
|
|
3. Display a processing spinner while videos are being optimized
|
|
|
|
If disabled by setting `EB_PROCESS_VIDEO=false`, videos will be served directly without processing, which can be useful on systems with limited resources.
|
|
|
|
### Using Docker
|
|
|
|
```bash
|
|
docker run -d -p "3000:3000" \
|
|
-e EBPORT=3000 \
|
|
-e EBPASS=changeme \
|
|
-e EBAPI_KEY=changeme \
|
|
-e EB_PROCESS_VIDEO=true \
|
|
ghcr.io/waveringana/embedder:1.13
|
|
```
|
|
|
|
### Docker Compose
|
|
|
|
```yaml
|
|
services:
|
|
embedder:
|
|
ports:
|
|
- "3000:3000"
|
|
environment:
|
|
- EBPORT=3000
|
|
- EBPASS=changeme
|
|
- EBAPI_KEY=changeme
|
|
- EB_PROCESS_VIDEO=true
|
|
volumes:
|
|
- ./db:/var/db
|
|
- ./uploads:/uploads
|
|
image: ghcr.io/waveringana/embedder:1.13
|
|
```
|
|
|
|
## 📜 License
|
|
|
|
Distributed under [The Unlicense](https://opensource.org/licenses/unlicense).
|