Nostr Media Uploads
Nostr Media Uploads for WordPress
★ 19stars
3forks
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/fabianfabian/nostr-media/archive/refs/heads/main.zipNostr Media Uploads for WordPress
Host images and media you post from your nostr client in your own WordPress installation using this plug-in.
Features
- Upload media using HTTP Auth (NIP-98) and HTTP File Storage Integration (NIP-96)
- Upload media using Blossom (BUD-05) - ('PUT /media')
- Download media using Blossom (BUD-01) - (GET /sha256 and HEAD /sha256)
- Mirror file from other server (BUD-04) - (PUT /mirror)
- Delete file using Blossom (BUD-02) - (DELETE /sha256)
- Keeps original image and generates a scaled version
- Media will also be available in your WordPress back-end on the Media page.
Requirements
- PHP 7.4 or higher, with xml and gmp extensions
- Mininum WordPress version unknown, tested with 6.3.2
Installation
(Tutorial video here: https://nostur.com/v/nostr-media.mp4)
- In WordPress go to Plugins -> Add New -> Upload Plugin -> Choose nostr-media.zip -> Install Now -> Activate Plugin
- Go to Users -> Edit -> Nostr Media -> Public key (npub) -> Enter your npub here, this npub/user will be allowed to upload files to this WordPress installation. Click Update Profile to save.
Configuring a NIP-96 compatible Nostr Client
- Enter the URL of your WordPress installation as the File Storage Server address, eg: https://your-website.com
- Happy uploading!
Troubleshooting
-
Make sure your WordPress installation allows large uploads, and increase the time allowed for uploads, you can put this in your .htaccess
php_value upload_max_filesize 128M php_value post_max_size 128M php_value max_input_time 300 -
To make sure nostr web clients don't have problems downloading your media, add this to your .htaccess to fix CORS issues
<IfModule mod_headers.c> Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Allow-Methods "GET, POST, PUT, OPTIONS, HEAD, DELETE" Header always set Access-Control-Allow-Headers "X-Requested-With, Content-Type, Accept, Origin, Authorization, X-Content-Type, X-Content-Length, X-SHA-256" </IfModule>
Development
- git clone this repository
- run
composer install - Copy entire folder to your WordPress plugins directory