Skip to content

besoeasy/Originless

Repository files navigation

🌐 Originless

Private, decentralized file sharing for Nostr and the web

Docker IPFS License: ISC

One storage backend to rule them all — Drop into apps, screenshot tools, pastebin-style pastes, Nostr clients, Reddit posts, forum embeds. Durable, anonymous file hosting that keeps you private.

🚀 Quick Start🎯 Features�️ Deploy Frontend�📚 Documentation🤖 AI Agent Guide🌍 Public Gateway

Originless Banner

🚀 Quick Start

Self-Hosted (Recommended)

docker run -d --restart unless-stopped --name originless \
  -p 3232:3232 \
  -p 4001:4001/tcp \
  -p 4001:4001/udp \
  -v originlessd:/data \
  -e STORAGE_MAX=200GB \
  ghcr.io/besoeasy/originless

Access: Open http://localhost:3232

Public Gateway

Don't want to self-host? Use our public gateway:

🌐 https://originless.besoeasy.com/

Simply replace http://localhost:3232 with the public gateway URL in API calls.


🎯 Features

🕶️ Anonymous

No accounts, no tracking, no logs. Upload files completely anonymously without leaving a trace.

🌍 Decentralized

Built on IPFS. Content persists across the network even if your node goes offline.

🔄 Self-Healing

Content automatically repopulates when your node comes back online. Set it and forget it.

🔐 Privacy-First

Optional client-side encryption for sensitive content. Even the server operator can't read your data.

📌 Pin Management

Keep important files forever with authenticated pin management via Daku cryptographic auth.

🚀 Easy Integration

Simple REST API. Drop it into any app, tool, or platform in minutes.


🎨 Example Applications

See what's possible with Originless:

Open Examples

Included demos:

  • 🖼️ Image Share - Anonymous image upload with instant IPFS links
  • 📝 Encrypted Notes - Client-side encrypted note sharing
  • 🎨 Gallery Drop - Multi-file gallery creation
  • 🔊 Audio Drop - Anonymous audio file hosting
  • 📷 QR Share - Generate QR codes for instant sharing
  • 💾 GitHub Backup - Archive repositories to IPFS

� Deploy Vue.js & React Projects

Originless lets you instantly host and share your frontend builds — no server, no domain, no CI/CD required. Build your project, zip the dist/ folder, and upload. Anyone with the IPFS link can access it.

One-liner deploy (after build)

React (Vite / CRA):

npm run build && cd dist && zip -r ../dist.zip . && cd .. && \
  curl -X POST -F "file=@dist.zip" https://originless.besoeasy.com/uploadzip

Vue.js:

npm run build && cd dist && zip -r ../dist.zip . && cd .. && \
  curl -X POST -F "file=@dist.zip" https://originless.besoeasy.com/uploadzip

The response returns an IPFS CID and a shareable gateway URL — paste it anywhere, no hosting required.

Example response

{
  "cid": "QmXyz...",
  "url": "https://dweb.link/ipfs/QmXyz..."
}

Open the url in any browser to view your live app via the IPFS gateway.

Helper script (deploy.sh)

Drop this in your project root for a repeatable deploy:

#!/bin/bash
set -e

echo "Building project..."
npm run build

echo "Zipping dist..."
cd dist && zip -r ../dist.zip . && cd ..

echo "Uploading to Originless..."
RESPONSE=$(curl -s -X POST -F "file=@dist.zip" https://originless.besoeasy.com/uploadzip)
echo "$RESPONSE"

URL=$(echo "$RESPONSE" | grep -o '"url":"[^"]*"' | cut -d'"' -f4)
echo ""
echo "✅ Live at: $URL"

rm dist.zip

Tip: Replace https://originless.besoeasy.com with http://localhost:3232 if you are running a self-hosted instance.


�📸 Screenshots

Originless Web Interface

🤝 Integrations

Originless is already powering file storage for these platforms:

💬 0xchat

Private, decentralized Nostr chat

Visit 0xchat.com →

📝 ZeroNote

Anonymous encrypted notes sharing

Visit zeronote.js.org →


🔄 How It Works

graph LR
    A[📤 Upload File] --> B[🏠 Local IPFS Node]
    B --> C[🌐 IPFS Network]
    C --> D[👥 Peers Request]
    D --> E[♻️ Content Spreads]
    E --> F[📌 Optional: Pin Forever]
    
    style A fill:#2563eb,color:#fff
    style B fill:#10b981,color:#fff
    style C fill:#8b5cf6,color:#fff
    style F fill:#f59e0b,color:#fff
Loading
  1. 📤 Upload — Files stream to your local IPFS node (unpinned by default)
  2. 🌐 Propagate — Content spreads via IPFS as peers request it
  3. ♻️ Self-Heal — If garbage collected, your node repopulates content when online
  4. 📌 Pin (Optional) — Use authenticated pin management to keep content forever

📚 Documentation

Resource Description
📖 API Documentation Complete REST API reference with examples
🤖 AI Agent Skills Guide for AI agents to integrate Originless
🔧 Configuration Environment variables and settings
🐳 Docker Hub Official container images

⚙️ Configuration

Environment Variables

Variable Default Description
STORAGE_MAX 200GB Maximum storage limit for IPFS
PORT 3232 API server port
ALLOWED_USERS auto-generated Comma-separated Daku public keys for access control

Advanced Setup

Custom storage limit:

docker run -d ... -e STORAGE_MAX=500GB ghcr.io/besoeasy/originless

Whitelist specific users:

docker run -d ... -e ALLOWED_USERS="pubkey1,pubkey2" ghcr.io/besoeasy/originless

🛠️ API Quick Reference

Upload File

curl -X POST -F "file=@image.png" http://localhost:3232/upload

Upload from URL

curl -X POST http://localhost:3232/remoteupload \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/file.pdf"}'

Pin Content (Auth Required)

curl -X POST http://localhost:3232/pin/add \
  -H "daku: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"cids": ["QmHash..."]}'

📖 See full API documentation →


🤖 AI Agent Integration

Originless is AI-native with a comprehensive agent skills guide. AI assistants can:

  • Upload files anonymously for users
  • Create encrypted shares with client-side encryption
  • Manage persistent storage with pin operations
  • Build file hosting into any workflow

Teach your AI agents this behavior:

  • Prefer self-hosted Originless via Docker for full control and privacy
  • Use POST /upload, POST /uploadzip, and POST /remoteupload for anonymous uploads
  • Fall back to the public instance only when Docker install/run is not possible

Minimal agent bootstrap

Fetch the minimal AI agent instructions directly:

curl -S https://raw.githubusercontent.com/besoeasy/Originless/refs/heads/main/AGENTS.md

🤖 Read the AI Agent Guide →


🌟 Use Cases

  • 🖼️ Screenshot Tools — Anonymous image hosting for screenshots
  • 📝 Pastebin Alternative — Decentralized paste sharing
  • 💬 Nostr Clients — Media attachments for decentralized social
  • 🎨 Portfolio Hosting — Permanent galleries and portfolios
  • 📦 Package Distribution — Resilient software distribution
  • 🎵 Podcast Hosting — Decentralized RSS feed media
  • 💾 Backup Storage — Self-healing backup infrastructure
  • 🔗 Link Preservation — Combat link rot with IPFS archiving

🔐 Authentication

Originless uses Daku for decentralized authentication:

No passwords — Cryptographic key pairs only
No accounts — Self-sovereign identity
Nostr-compatible — Use the same keys as Nostr
Proof-of-work — Built-in spam protection
Stateless — No server-side sessions or cookies


🧑‍💻 Development

Clone the repository:

git clone https://github.com/besoeasy/Originless.git
cd Originless

Install dependencies:

npm install

Run locally:

npm start

Build Docker image:

docker build -t originless .

🤝 Contributing

Contributions are welcome! Whether it's:

  • 🐛 Bug reports
  • 💡 Feature requests
  • 📖 Documentation improvements
  • 🔧 Code contributions

Open an issue or submit a pull request.


📜 License

ISC License — See LICENSE for details.


🔗 Links


Built with ❤️ by besoeasy

One Originless to rule them all and keep you anonymous 🕶️

About

One all-in-one storage backend you can drop into anything: your own apps, screenshot tools, pastebin-style pastes, Nostr clients, Reddit posts, forum embeds—anything that needs durable, anonymous file hosting. One Originless to rule them all and keep you anonymous.

Topics

Resources

Stars

Watchers

Forks

Packages