rusian/mediagoblin

By rusian

Updated over 4 years ago

A basic image for a MediaGoblin media server

Image
0

205

rusian/mediagoblin repository overview

MediaGoblin

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.

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

  • /srv/app/user_dev: Location to store user media uploads.

Ports

Create Database postgreSQL on Docker

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
Check ip network
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": ""
  }
}

Generate mediagoblin container

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

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:

$ 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.

Check password PostgreSQL

$ docker inspect postgres -f '{{ json .Config.Env }}' | jq '.'

Tag summary

Content type

Image

Digest

Size

810.9 MB

Last updated

over 4 years ago

docker pull rusian/mediagoblin