# MediaGoblin A basic container for a private MediaGoblin media server (https://mediagoblin.org/), including Nginx and uWSGI. Assumes a separate PostgreSQL database for persistence, and an email host for sending email notifications. Source at https://projects.torsion.org/witten/mediagoblin-docker ## Environment variables * `NOTIFICATION_EMAIL`: From address for MediaGoblin notification emails. * `EMAIL_HOSTNAME`: Hostname used to send outgoing notification emails. * `EMAIL_PORT`: Port number used to send outgoing notification emails. * `EMAIL_USERNAME`: Username used to connect to outgoing email host. * `EMAIL_PASSWORD`: Password used to connect to outgoing email host. * `EMAIL_TLS_SSL`: "true" or "false" for using TLS/SSL encryption for sending emails. * `EMAIL_STARTTLS`: "true" or "false" for using STARTTLS encryption for sending emails. * `DATABASE_URL`: Connection string for database to use for persistence, including credentials. See example below. ## Volumes * `/app/user_dev`: Location to store user media uploads. ## Ports * `80`: Only listens on port 80 for HTTP. Intended to be used in conjunction with an external reverse proxy like https://hub.docker.com/r/jwilder/nginx-proxy/ to provide HTTPS or anything else that's needed. ## Example ```console $ sudo docker run --detach --name=mediagoblin \ --env NOTIFICATION_EMAIL=media@example.org \ --env EMAIL_HOSTNAME=mail.example.org \ --env EMAIL_PORT=587 \ --env EMAIL_USERNAME=bob@example.org \ --env EMAIL_PASSWORD=pass \ --env EMAIL_TLS_SSL=false \ --env EMAIL_STARTTLS=true \ --env DATABASE_URL=postgresql://mediagoblin:password@database.example.org/mediagoblin \ --volume /var/lib/mediagoblin/user_dev:/app/user_dev \ --publish 80:80 \ witten/mediagoblin:latest ``` ## User management Since this image is for running a private MediaGoblin server, user self-registration is disabled. So, to add a user, first exec into the running Docker image: ```console $ sudo docker exec -it mediagoblin bash ``` Where `mediagoblin` is the name of your running Docker container. If you don’t know the name to use, try looking in `docker ps` output. Then, add a user (follow the prompts): ```console # su - mediagoblin $ gmg --conf_file /app/mediagoblin_local.ini adduser ``` Finally, if you want to make the new user into an admin user: ```console $ gmg --conf_file /app/mediagoblin_local.ini makeadmin username ``` Where `username` corresponds to the user you added above.