Skip to content
Conduit

mcp server

Files360

Self-hosted Cloudinary alternative: upload API and media library that optimizes images and previews documents on your own S3 bucket.

dot360io/Files360communitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 28, 2026

Files360

Self-hosted image and file API. Upload once, get optimized CDN URLs, keep everything on your own bucket.

Built and maintained by Dot360

CI Release Licence Docker Node Docs MCP server on npm

Docs · Install · API · Compare · Roadmap


In one minute

The problem. Every app needs to accept images and documents, resize them, store them somewhere fast and hand back URLs. Hosted services do it well, but they bill per GB and per transformation, keep your files in their account and put their domain in every URL.

Files360 is that pipeline as one container you run yourself:

flowchart LR
    A["Your app"] -- "POST /v1/files" --> F["Files360"]
    F -- "WebP / AVIF sizes<br>documents as uploaded" --> B[("Your S3 bucket")]
    F -- "JSON with URLs" --> A
    B --> C["Your CDN"] --> U["Browsers"]
  1. Your backend uploads an image, PDF, Office file, CSV or ZIP to one endpoint.
  2. Files360 processes it. Images become every size you configured. Documents are stored untouched, with a preview.
  3. Files land in your bucket (Hetzner, R2, B2, AWS, MinIO, and others). You get the URLs back as JSON.
  4. Browsers load files straight from your bucket or CDN. Files360 is never in the read path.

Try it in 30 seconds

curl -O https://raw.githubusercontent.com/dot360io/Files360/main/docker-compose.yml
docker compose up -d
docker compose logs files360 | grep setup     # open the link it prints

A setup wizard asks for four things: database (SQLite by default, nothing to install), admin account, storage bucket and first app. Then upload:

curl -X POST https://files.example.com/v1/files \
  -H "Authorization: Bearer $FILES360_API_KEY" \
  -F "file=@photo.jpg" -F "folder=products"
{
  "id": "66f1c2a9e4b0a1d2c3f4e5a6",
  "kind": "image",
  "variants": {
    "thumb":  { "url": "https://cdn.example.com/my-shop/products/3f9a…/thumb.webp",  "width": 320,  "height": 320 },
    "medium": { "url": "https://cdn.example.com/my-shop/products/3f9a…/medium.webp", "width": 800,  "height": 600 },
    "large":  { "url": "https://cdn.example.com/my-shop/products/3f9a…/large.webp",  "width": 1600, "height": 1200 }
  },
  "srcset": "…/medium.webp 800w, …/large.webp 1600w"
}

Upload the same file again and you get the same record back with "duplicate": true, so retries are always safe.


Who it is for

You are…Files360 gives you…
A team paying a media SaaS every monththe same upload, resize and serve flow for the price of a small server and a bucket
An agency running many client sitesone instance, one app per client, each with its own folder, sizes, keys and bucket
Bound by data residency rulesfiles that stay in the region and the account you chose
Building with AI agentsan MCP server, /openapi.json and /llms.txt, so agents can upload directly
Self-hosting everything alreadyone container, SQLite, no telemetry, arm64 images

How it compares

Hosted media services are excellent at some things. Here is the honest version:

Files360CloudinaryimgixUploadcare
Monthly costyour server + bucketfrom $99from $25from $79
Files live inyour buckettheir storageyour buckettheir storage
Plain URLs, no vendor syntaxyesnonono
Documents with previewsyesPDFsnoconversion
On-the-fly transformsroadmapyesyesyes
Video, AI taggingnoyespartlyyes
CDN and ops includedno, you run ityesyesyes

Example workload: 50 GB stored, 500 GB delivered and 20k uploads a month comes to about €13/month on a small Hetzner server (CX23) and bucket, against $249/month on Cloudinary Advanced. Prices were checked on 2026-10-16, and the full comparison shows the sources and the arithmetic.

Cloudinary, imgix and Uploadcare are trademarks of their owners. Files360 is not affiliated with or endorsed by them; they are named only to compare publicly listed features and prices.


What you get

📤 One upload endpointImages, PDF, Word, Excel, PowerPoint (incl. 97-2003), CSV, text, ZIP. Types are decided from the bytes, not the file name.
🖼️ Named sizes per appUp to 8 sizes in WebP, AVIF or JPEG, with crop, fit or pad. A ready srcset. Images are never upscaled and metadata is stripped.
🪣 Any S3-compatible bucketPresets for 8 providers plus anything with an S3 API. Each connection is checked with a real write, read and delete.
🔗 URLs that never changeKeys contain a hash of the file and its settings, so you can cache for a year and never purge.
🗂️ Media libraryFolders, search, bulk delete, and previews of sheets, documents, decks and archives.
🔑 Apps and API keysPer-app settings, keys shown once and stored hashed, rate limits, and a generated integration guide.
🛡️ Built for hostile inputSVG allowlist, pixel limits, capped hand-written parsers, SSRF-safe URL imports. Details
🧙 Setup wizardPick the database, create the admin, connect storage, all in the browser. Locked behind a one-time token.
🤖 Agent-readynpx files360-mcp for Claude, Cursor and others. /openapi.json and /llms.txt on every instance.
🚚 Easy migrationnpm run import-cloudinary copies an existing Cloudinary library into your folders. Guide

What it is not

Saying this up front keeps expectations honest. These are decisions, not missing features:

  • ❌ Not a video transcoder
  • ❌ No AI tagging, moderation or auto alt text
  • ❌ Not an object store: it writes to your bucket, it is not an S3 server
  • ❌ Not a hosted service: there is no Files360 cloud, and the AGPL keeps it that way
  • ❌ Not an image editor

On the roadmap: signed on-the-fly transform URLs (/t/w_800,q_80/<id>.webp), upload webhooks, multiple admin accounts, and a Docker Hub image. See PLAN.md.


Storage providers

ProviderRegionsPer-object ACLs
Hetzner Object StorageEuropean buckets, low egress cost.fsn1, nbg1, hel1Yes
DigitalOcean SpacesSpaces with the built-in CDN edge.9 regionsYes
Amazon S3The original. Pair it with CloudFront if you want.17 regionsYes
Cloudflare R2No egress fees. Needs a public r2.dev or custom domain.autoBucket-wide only
Backblaze B2Cheapest per TB, free egress through Cloudflare.6 regionsBucket-wide only
Wasabi Hot Cloud StorageFlat pricing, no egress charges.12 regionsYes
Scaleway Object StorageFrench provider, S3 compatible.fr-par, nl-ams, pl-wawYes
MinIO Self-hostedYour own S3 server. Path-style URLs.your own endpointYes
Other S3-compatibleAny provider with an S3 API: Garage, SeaweedFS, Storj, iDrive e2, OVH, Linode, GCS.your own endpointYes

FAQ

Yes. The software is AGPL-3.0 with no paid tier and no limits. You pay your server and bucket provider directly.

Yes. Connect it under Storage in the dashboard. Files360 writes under one folder per app and never touches anything else in the bucket.

No. SQLite is the default and is enough for most installs. Postgres and MySQL are there if you want them, with ready compose files.

Nothing. New settings only apply to new uploads. Existing files and URLs never change.

Yes, and you should for global traffic. Set the bucket's public URL to your CDN domain and every returned URL uses it.

You can run it, including commercially, for your own apps. If you modify Files360 and offer it to others over a network, you have to share those modifications under the same licence.


Documentation

InstallDocker, Postgres or MySQL, from source, reverse proxy
ConfigureEnvironment variables, apps, sizes, backups
Storage providersPublic buckets, ACLs, moving apps between buckets
API referenceEvery endpoint, with examples in curl, Node.js and PHP
SecurityWhat reaches storage, keys, the setup wizard
AI agentsMCP server, OpenAPI, llms.txt
Migrating from CloudinaryConcept map and the import script

Contributing

git clone https://github.com/dot360io/Files360.git && cd Files360
npm install
npm run dev     # http://127.0.0.1:4360, prints a setup link on first run
npm test        # no database server or network needed

Read CONTRIBUTING.md and ARCHITECTURE.md first. Bug reports and feature requests go to issues. Security reports go through private vulnerability reporting, never a public issue.

Licence

AGPL-3.0 © Dot360

Files360 is built and maintained by Dot360, a custom software studio. It started as the upload service behind our own products. Need help running it or building on it? Get in touch.

If Files360 saves you a monthly bill, a ⭐ helps other people find it.

↑↓ navigate openesc close