MCPSERV.CLUB
MediaGoblin

MediaGoblin

Self-Hosted

Open source, decentralized media hosting platform

Stale(40)
0stars
0views
MediaGoblin screenshot

Overview

Discover what makes MediaGoblin powerful

MediaGoblin is a federated, open‑source photo and media gallery platform that runs on standard web servers. It is designed to be a drop‑in replacement for proprietary hosting services while giving developers full control over data, scaling, and integration. At its core, MediaGoblin exposes a REST‑style API for uploading, organizing, and retrieving media objects, while also providing a rich web interface that can be customized via themes or plugins. The project is maintained by a community of contributors and offers extensive documentation that covers both end‑user and developer use cases.

Federated media sharing

Extensible plugin architecture

Rich metadata handling

Multiple storage backends

Overview

MediaGoblin is a federated, open‑source photo and media gallery platform that runs on standard web servers. It is designed to be a drop‑in replacement for proprietary hosting services while giving developers full control over data, scaling, and integration. At its core, MediaGoblin exposes a REST‑style API for uploading, organizing, and retrieving media objects, while also providing a rich web interface that can be customized via themes or plugins. The project is maintained by a community of contributors and offers extensive documentation that covers both end‑user and developer use cases.

Key Features

  • Federated media sharing – Built on the ActivityPub protocol, MediaGoblin can publish content to other servers (e.g., Mastodon) and pull media from external sources.
  • Extensible plugin architecture – Plugins can add new processors, authentication backends, or export formats without modifying core code.
  • Rich metadata handling – Supports IPTC, EXIF, XMP, and custom tags; media can be queried via a powerful search API.
  • Multiple storage backends – Files are stored on the local filesystem, Amazon S3, or other cloud providers through configurable adapters.

Technical Stack

  • Language: Python 3 (≥ 3.8)
  • Framework: Pyramid for routing and request handling; SQLAlchemy as the ORM.
  • Database: PostgreSQL (recommended) or SQLite for small deployments; optional support for MySQL.
  • Search: Elasticsearch or Whoosh can be plugged in to provide faceted search and full‑text indexing.
  • Front‑end: Vanilla JavaScript with optional integration of React or Vue for custom themes.
  • Background jobs: Celery workers handle transcoding, thumbnail generation, and federated publishing.

Core Capabilities

  • API: /api/v1/ endpoints for media upload, deletion, tagging, and retrieval.
  • Webhooks: Configurable events (e.g., media.uploaded, collection.created) that can trigger external services.
  • Authentication: OAuth2, OpenID Connect, and traditional session auth; can be swapped out via the plugin system.
  • Content negotiation: The API supports JSON, XML, and media‑type responses based on request headers.

Deployment & Infrastructure

  • Self‑hosting: Deployable behind any WSGI server (Gunicorn, uWSGI) with Nginx or Apache as a reverse proxy.
  • Containerization: Official Docker images are available; Kubernetes manifests can be generated using Helm charts.
  • Scalability: Horizontal scaling is achieved by separating the web tier, Celery workers, and database replicas.
  • Backup & restore: Database dumps and media archive scripts are provided; integration with tools like pg_dump or rsync is straightforward.

Integration & Extensibility

  • Plugin API: mediagoblin.plugins package exposes hooks for request processing, media conversion, and UI rendering.
  • Command‑line interface: mg commands allow programmatic management (e.g., mg import, mg export).
  • Webhooks & API: External services can listen to events or poll the REST API for synchronization.
  • Custom media types: Developers can register new MIME types and associated processors to handle niche formats.

Developer Experience

  • Configuration: YAML‑based mediagoblin.cfg with clear sections for database, storage, and plugin options.
  • Documentation: Comprehensive docs covering architecture, API reference, and plugin development are hosted on the project site.
  • Community: Active mailing list, IRC channel, and GitHub discussions provide quick support for integration questions.
  • Testing: Unit tests are written with pytest; CI pipelines run on GitHub Actions to ensure backward compatibility.

Use Cases

  • Personal media server – Host a private photo gallery with full control over privacy settings.
  • Federated art platform – Publish and consume media across multiple instances for artists and curators.
  • Enterprise asset management – Integrate with existing authentication providers (LDAP, SAML) and store media in compliant cloud buckets.
  • Educational projects – Use the plugin system to create custom visual analytics dashboards for student work.

Advantages

  • Open‑source and permissive license (MIT) allows unrestricted commercial use.
  • Python ecosystem means developers can quickly extend or replace components with familiar libraries.
  • Federation out of the box removes the need for custom integration layers when sharing across networks.
  • Fine‑grained control over storage and processing lets teams optimize cost (e.g., cheap object storage) without sacrificing performance.
  • Active community and mature API provide confidence that the platform will evolve with emerging standards (e.g., ActivityPub updates).

In summary, MediaGoblin offers a robust, extensible foundation for building self‑hosted media services. Its Python‑centric stack, plugin architecture, and federation support make it an attractive choice for developers who need a customizable gallery solution that can grow with their infrastructure and compliance requirements.

Open SourceReady to get started?

Join the community and start self-hosting MediaGoblin today