
MediaGoblin is a free and open-source platform that allows users to host and share their own media, such as videos, images, and audio files, without relying on centralized services like YouTube or Flickr.
The platform is designed to be community-driven, with users having control over their own media and the ability to interact with each other through comments and ratings.
One of the key benefits of MediaGoblin is its decentralized architecture, which means that users can host their own media without relying on a single central server.
By hosting their own media, users can maintain control over their content and avoid the risks of censorship or data mining associated with centralized services.
If this caught your attention, see: Media Temple
Development and Deployment
The MediaGoblin project has a robust development and deployment process. The source code is hosted in various repositories, including MediaGoblin, mediagoblin-docker, and process-home-videos.
MediaGoblin's repository contains a mirror of the core repo, along with Circle CI configuration, and a custom branch mtlynch-custom with specific fixes for a user's instance. These fixes include replacing the old video player and trimming unnecessary parts of the UI.
The mediagoblin-docker repository builds a Docker image for MediaGoblin, with a custom branch mtlynch-custom that points to a Google Cloud Storage bucket and adds HTTP Basic Authentication. This allows for secure and efficient deployment of the application.
Here's a quick rundown of the repositories involved in MediaGoblin's development and deployment process:
Create Files
To create the necessary files for development and deployment, you'll need to start by creating a scenes YAML file. This file will instruct scripts on how to chop up videos and import them to MediaGoblin.
First, copy config.example.yaml from process-home-videos to config.yaml, and edit it for your clips based on the instructions in the file. This will help you create a configuration file tailored to your needs.
Next, create paths for the CSV and YAML files of clip metadata. If you're following along with the example spreadsheet, you can download it as a CSV.
To convert your CSV to a YAML file, run the provided script. This will create a YAML file that you can use to import your clips and metadata into MediaGoblin.
Here are the paths you'll need to create:
- CSV file: This is where you'll store your clip metadata.
- YAML file: This is where you'll store the instructions for MediaGoblin to import your clips.
By following these steps, you'll be able to create the necessary files for development and deployment.
Copy Files to Google Cloud Storage
To copy files to Google Cloud Storage, first locate the files generated in your MG_SERVING_DIR directory.
These files were created by the MediaGoblin container, which we set up earlier.
Move them to the Google Cloud Storage bucket you created in the previous step.
Remember, this bucket is where you'll store your files for serving.
Copy your files to this bucket by using the command to upload files to Google Cloud Storage.
Curious to learn more? Check out: Google Website Hosting Wordpress
Deploying to Heroku
Deploying to Heroku is a great way to host your MediaGoblin server. Heroku offers a generous free tier for Docker containers.
To deploy to Heroku, you'll need to authenticate the Heroku CLI on your machine. This involves logging in with your Heroku credentials.
If you haven't already authenticated, you can do so by logging in with your Heroku credentials. This will give you access to Heroku's features.
Next, you'll need to authenticate to Heroku's container registry. This will allow you to create a new Heroku app. By default, the created app will be a free Heroku dyno.
Creating a new Heroku app is straightforward. You can do this by authenticating to Heroku's container registry.
Once you've created your app, you'll see the URL of your new MediaGoblin instance. This is the URL you'll use to access your server.
Source Code
Let's take a look at the source code for MediaGoblin, a free and open-source media repository.
The MediaGoblin repository is available on GitHub, where you can find the core code and Circle CI configuration.
One user, mtlynch, has a custom branch called mtlynch-custom that includes their own fixes for the video player and UI.
There's also a mediagoblin-docker repository that builds a Docker image for MediaGoblin.
This Docker image can be customized with mtlynch's customizations, which include pointing to a Google Cloud Storage bucket and adding HTTP Basic Authentication.
If you're interested in chopping up raw video files into clips and publishing them to MediaGoblin, you can check out the process-home-videos repository.
Here's a quick rundown of the repositories mentioned:
Design and Features
MediaGoblin's design and features are a perfect blend of functionality and user-friendliness. The platform is built on the principles of free and open-source software, with its code released under the GNU Affero General Public License.

This means that MediaGoblin adheres to the principles of free and open-source software. The licensing of other elements, such as design and logo, is under the public domain.
MediaGoblin's main page displays an upper banner with its unique typeface and an authentication section for users. The remaining space is left to show thumbnails of the latest posted works.
Each user has a personal profile that's comprised of two vertical sections – one for uploads arranged as a gallery and another with a customizable text box. This allows users to showcase their work in a clean and organized way.
The platform focuses on displaying the work itself rather than cluttering it with too many options and buttons. However, users can add comments under the artwork description to engage with others.
Some other features, like tags, metadata, theming, Creative Commons licensing, and GPS support, can be enabled as separate plug-ins to enrich the usage of MediaGoblin. This flexibility makes it easy to customize the platform to suit different needs.
MediaGoblin successfully hosts and displays many sorts of media, including:
- Plain text (ASCII art)
- Images (PNG and JPEG)
- Video and/or audio in WebM format (using HTML5 capabilities)
- 3D models (with preview and renderization capabilities)
Software Prerequisites

To start development, you'll need to install some essential software.
Python 2.6 or 2.7 is required to use our software, so make sure you have one of these versions installed.
The Python Imaging Library is also a must-have, as it provides the image processing capabilities we need.
git is another crucial tool, allowing you to manage your code and collaborate with others.
You'll also need a database management system, such as SQLite or PostgreSQL, to store and retrieve data.
python-lxml and virtualenv are also required software prerequisites.
Here are the software prerequisites in a summary table:
Community and Resources
MediaGoblin has a strong community and a wealth of resources available for users and developers alike.
You can find the main project page on Savannah, which serves as the central hub for MediaGoblin's development and community.
The MediaGoblin project has multiple mailing lists where you can get in touch with other developers and users, including the mediagoblin-devel list and the social-mediagoblin list.
You might like: List of Photo and Video Apps
For those interested in contributing to MediaGoblin's development, the project has a VCS repository viewable on Savannah, which allows you to browse the code and track changes.
If you're using Debian, you can find the MediaGoblin package tracker on Debian's website, which provides information on the package's status and version.
Here are some key resources and communication channels for MediaGoblin:
Why MediaGoblin Matters
MediaGoblin is a decentralized platform that allows users to host and share media files, giving them complete control over their content and how it's used. This is in contrast to traditional platforms like YouTube and Vimeo, which have strict guidelines and can take down content at any time.
One of the key benefits of MediaGoblin is its ability to be self-hosted, allowing users to run their own instances of the platform on their own servers. This gives users the freedom to customize their experience and ensure that their data is secure and private.
By giving users control over their content and data, MediaGoblin empowers creators to produce and share media that might not be possible on traditional platforms.
On a similar theme: Website Hosting Control Panel
Standardizing Network Freedom
Standardizing network freedom is crucial for a truly free and open internet. This process involves gathering feedback from various projects to ensure a better and more clear standard.
The ActivityPub standardization process took three years, with the author dedicating the vast majority of their time to it. This effort included a multi-stage process, starting with an Editor's Draft, followed by a First Public Working Draft, a Working Draft, and finally a Candidate Recommendation.
The author's initial goal was to have a one-hour weekly commitment to the W3C Working Group on federation standards, but it ended up consuming most of their time. This highlights the complexity and time-consuming nature of standardizing network freedom.
The standardization process involves replying to every issue raised and either satisfying the person who raised it or clearly documenting why they weren't satisfied. This ensures that all concerns are addressed and the standard is robust.
You might like: Social Network Hosting Service
Why They Need Our Help
The MediaGoblin team is made up of about fifty part-time volunteers, led by project founder Chris Webber.
They've made surprising progress in the year-and-a-half since the project's founding.
To perfect the system, they need donors' help to reach their goal of $60,000.
With this support, they plan to use the money to support a full-time project lead to organize volunteers and polish the project to a professional level.
Chris estimates that MediaGoblin will be usable within a year with this support and more hard work.
Donors can help out by going to http://mediagoblin.org/pages/campaign.html and picking a reward.
Here's an interesting read: Hostinger Help
GNU
GNU is a name you'll see associated with MediaGoblin, and it stands for the GNU Project, a collaborative effort to create free software. MediaGoblin is a GNU package, which means it's part of this larger project.
MediaGoblin itself is a free media publishing platform, allowing you to share your media with the world. It runs in a federalized manner, giving you more control over your data.
For another approach, see: GNU Emacs
Featured Images: pexels.com


