A basic image for a MediaGoblin media server
205
A basic image for a MediaGoblin media server, including Nginx and uWSGI. Assumes a separate PostgreSQL database for persistence, and an email host for sending email notifications.
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./srv/app/user_dev: Location to store user media uploads.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.docker run --detach --name some-postgres \
--env POSTGRES_USER=postgres \
--env POSTGRES_PASSWORD=mysecretpassword \
--volume ${PWD}/postgres-data:/var/lib/postgresql \
--publish 5432:5432 postgres:12.6
Access database from host using PostgreSQL URI
psql postgresql://postgres:[email protected]:5432/postgres
Create user and databse for mediagoblin
postgres=# create database mediagoblin;
postgres=# create user myuser with encrypted password 'mypass';
postgres=# grant all privileges on database mediagoblin to myuser;
postgres=# \q
docker network inspect bridge -f '{{json .Containers}}' | jq '.'
Ouput example:
{
"4a2238fead89b01f3197a7732d48bb99e7aec4494d4b4a1c4e1de355b3c81554": {
"Name": "some-postgres",
"EndpointID": "47a85d11808782be03aecc24fa854782abb580dfe2c53ce9a59700deb3db2112",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
}
docker run --detach --name=mediagoblin \
--network bridge \
--env [email protected] \
--env EMAIL_HOSTNAME=mail.com \
--env EMAIL_PORT=587 \
--env [email protected] \
--env EMAIL_PASSWORD=mypassword \
--env EMAIL_TLS_SSL=True \
--env EMAIL_STARTTLS=False \
--env SOURCE_LINK='https://git.sr.ht/~heckyel/mediagoblin' \
--env DATABASE_URL=postgresql://myuser:[email protected]:5432/mediagoblin \
--volume "${PWD}/persist/srv/mediagoblin:/srv/app/user_dev" \
--publish 8000:80 \
rusian/mediagoblin:latest
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:
$ 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):
# su - mediagoblin
$ ./bin/gmg --conf_file /srv/app/mediagoblin_local.ini adduser
Finally, if you want to make the new user into an admin user:
$ ./bin/gmg --conf_file /srv/app/mediagoblin_local.ini makeadmin username
Where username corresponds to the user you added above.
$ docker inspect postgres -f '{{ json .Config.Env }}' | jq '.'
Content type
Image
Digest
Size
810.9 MB
Last updated
over 4 years ago
docker pull rusian/mediagoblin