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_dumporrsyncis straightforward.
Integration & Extensibility
- Plugin API:
mediagoblin.pluginspackage exposes hooks for request processing, media conversion, and UI rendering. - Command‑line interface:
mgcommands 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.cfgwith 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
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Socks5 Proxy Server
Secure, Authenticated Socks5 Proxy in Docker
JupyterLab
Interactive notebooks in a modern, extensible interface
bitmagnet
Self‑hosted BitTorrent indexer with DHT crawling
LidaTube
Fetch missing Lidarr albums via yt‑dlp
Restreamer
Free, self‑hosted live stream distribution platform
Pomerium
Zero‑trust, clientless access to internal apps

