Skip to content

codemowers/memelord

 
 

Repository files navigation

MemeLord

A Python Django Meme Image Board




Buy Me A Coffee

image

⭐ Features

  • Web-based meme board for images, GIFs and videos
  • Tagging with suggestions and tag-based filtering
  • Commenting system with per-user delete permissions
  • Local authentication and OIDC Single Sign-On (SSO)
  • Light and dark mode with responsive Bootstrap 5 UI
  • Drag & drop and clipboard paste for uploads
  • Media files stored on disk for easy backup and direct access
  • Infinite scroll feed with pagination fallback
  • Admin view with thumbnails, uploader info and tags
  • Support for SQLite3 and PostgreSQL

🔥 Installation

# create volume dirs for persistence
mkdir -p ./volume-data/database ./volume-data/media 

# adjust volume ownership to www-data (33)
sudo chown -R 33:33 volume-data/*

# spawn the stack
docker compose -f docker/docker-compose.yml up -d

# retrieve login credentials from container logs
docker compose -f docker/docker-compose.yml logs -f

Tip

An official Unraid app exists in the store. See wiki.

🌏 Environment Variables

MemeLord takes various environment variables to configure settings.py:

Variable Description Default Optional/Mandatory
DOMAIN Your Fully Qualified Domain Name (FQDN) or IP address. Used to define ALLOWED_HOSTS and CSRF_TRUSTED_ORIGINS for the Django framework. May define multiple ones by using a comma as delimiter. localhost Mandatory
SECURE_COOKIES Set to True if you use a reverse proxy with TLS. Enables the secure cookie flag and HSTS HTTP response header, which will only work for SSL/TLS encrypted communication channels (HTTPS). False Optional
SESSION_EXPIRE_AT_BROWSER_CLOSE Set to False if you want to keep sessions valid after browser close. True Optional
SESSION_COOKIE_AGE Define the maximum cookie age in minutes. 30 Optional
SECRET_KEY Defines a fixed secret key for the Django framework. If missing, a secure secret is auto-generated on the server-side each time the container starts. <auto-generated> Optional
PORT Defines a custom port. Used to set CSRF_TRUSTED_ORIGINS in conjunction with the DOMAIN environment variable for the Django framework. Only necessary, if VoucherVault is operated on a different port than 8000, 80 or 443. 8000 Optional
TZ Defines the TIME_ZONE variable in Django's settings.py. Europe/Berlin Optional
OIDC_ENABLED Set to True to enable OIDC authentication. False Optional
OIDC_AUTOLOGIN Set to True if you want to automatically trigger OIDC flow on login page False Optional
OIDC_CREATE_USER Set to True to allow the creation of new users through OIDC. True Optional
OIDC_RP_SIGN_ALGO The signing algorithm used by the OIDC provider (e.g., RS256, HS256). HS256 Optional
OIDC_RP_IDP_SIGN_KEY The signing key used by the OIDC provider. If RS256 signing algo is used, either this or OIDC_OP_JWKS_ENDPOINT must be defined. None Optional
OIDC_OP_JWKS_ENDPOINT URL of the JWKS endpoint for the OIDC provider. If RS256 signing algo is used, either this or OIDC_RP_IDP_SIGN_KEY must be defined. None Optional
OIDC_RP_CLIENT_ID Client ID for your OIDC RP. None Optional
OIDC_RP_CLIENT_SECRET Client secret for your OIDC RP. None Optional
OIDC_OP_AUTHORIZATION_ENDPOINT Authorization endpoint URL of the OIDC provider. None Optional
OIDC_OP_TOKEN_ENDPOINT Token endpoint URL of the OIDC provider. None Optional
OIDC_OP_USER_ENDPOINT User info endpoint URL of the OIDC provider. None Optional
OIDC_RENEW_ID_TOKEN_EXPIRY_SECONDS The length of time it takes for an id token to expire in seconds. 900 Optional
DB_ENGINE Database engine to use (e.g., postgres for PostgreSQL or sqlite3 for SQLite3). sqlite3 Optional
POSTGRES_HOST Hostname for the PostgreSQL database. db Optional
POSTGRES_PORT Port number for the PostgreSQL database. 5432 Optional
POSTGRES_USER PostgreSQL database user. memelord Optional
POSTGRES_PASSWORD PostgreSQL database password. memelord Optional
POSTGRES_DB PostgreSQL database name. memelord Optional

About

A taggable image meme board written in Python Django with OIDC SSO support.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HTML 48.3%
  • Python 28.8%
  • CSS 16.3%
  • JavaScript 4.9%
  • Shell 1.1%
  • Dockerfile 0.6%