Skip to main content

Branding & customization plugin for Alliance Auth — custom logos, login backgrounds, favicons, and more.

Project description

AA Customizer

A branding & customization plugin for Alliance Auth.

Gives administrators a simple admin-panel UI to customize their Alliance Auth installation without touching code or replacing static files.


Screenshots

Split Screen layout

Split Screen layout

Centered Card layout (default)

Centered Card layout

Side Bar Icon

Sidebar Icon


Features

Feature What it does
Custom site name Overrides SITE_NAME from local.py across the whole site
Login background URL or uploaded image; falls back to a CSS color, then the default AA space background
Login layout Centered Card, Split Screen (background left), or Split Screen (login left)
Login logo URL or uploaded image shown at the top of the login card
Login title & subtitle Welcome heading and description text on the login card
Login extra HTML Raw HTML injected below the EVE SSO button (notices, Discord links, etc.)
Custom favicon URL or uploaded image replacing all Alliance Auth browser-tab icons
Navbar logo URL or uploaded image alongside the site name in the top navigation bar
Sidebar logo URL or uploaded image replacing the Alliance Auth logo in the sidebar
Custom CSS — URL External stylesheet linked in every page <head>, loaded after the active theme
Custom CSS — inline CSS text injected via <style> on every page, loaded after the active theme
Extra <head> HTML Raw HTML at the end of <head> on every page (analytics, font imports, meta tags)

Requirements

  • Alliance Auth ≥ 4.0.0 (Bootstrap 5 template set)
  • django-solo
  • Pillow

Installation

Bare Metal install

1 — Install the package

# Activate your Alliance Auth virtualenv first, then:
pip install aa-customizer

2 — Add to INSTALLED_APPS

Open your local.py and add above INSTALLED_APPS =:

INSTALLED_APPS.insert(0, 'aa_customizer')

Django searches each app's templates/ folder in INSTALLED_APPS order and uses the first match. Placing aa_customizer first ensures its template overrides are picked up before the Alliance Auth originals.

3 — Add the context processor

In local.py, add to the settings section to append the existing TEMPLATES list:

TEMPLATES[0]["OPTIONS"]["context_processors"].append(
    "aa_customizer.context_processors.aa_customizer"
)

4 — Run migrations

python manage.py migrate aa_customizer

5 — Collect static files

python manage.py collectstatic

6 — (Optional) Configure media file serving

Only needed if you want to use file uploads instead of image URLs.

In local.py:

MEDIA_ROOT = "/path/to/your/media/"
MEDIA_URL  = "/media/"

Make sure your web server (nginx, Apache, etc.) is configured to serve files from MEDIA_ROOT at MEDIA_URL.


Docker install

The recommended approach for Docker is to use URL fields for all images (point at an external CDN, Imgur, GitHub raw assets, etc.) so you don't need to mount a media volume just to serve a few files.

1 — Install the package inside the container

# Activate your Alliance Auth virtualenv first, then:
pip install aa-customizer

Add aa-customizer to your pip requirements file (e.g. requirements.txt or the equivalent in your Docker setup), then rebuild:

auth migrate
auth collectstatic
exit

2 — Add to INSTALLED_APPS

Open your local.py and add above INSTALLED_APPS =:

INSTALLED_APPS.insert(0, 'aa_customizer')

Django searches each app's templates/ folder in INSTALLED_APPS order and uses the first match. Placing aa_customizer first ensures its template overrides are picked up before the Alliance Auth originals.

3 — Add the context processor

In local.py, add to the settings section to append the existing TEMPLATES list:

TEMPLATES[0]["OPTIONS"]["context_processors"].append(
    "aa_customizer.context_processors.aa_customizer"
)

4 — (Optional) Media file uploads

If you want to upload images through the admin instead of using URLs, you need a media volume:

In local.py:

MEDIA_ROOT = "/home/allianceserver/aa-docker/media/"
MEDIA_URL  = "/media/"

Mount the volume in docker-compose.yml for both the gunicorn and nginx services:

volumes:
  - ./media:/home/allianceserver/aa-docker/media

And configure nginx to serve it:

location /media/ {
    alias /home/allianceserver/aa-docker/media/;
}

For most Docker installs, using URL fields is simpler — just paste an image link and skip all of the above.


Usage

  1. Log in to the Alliance Auth admin panel (/admin/).
  2. Find AA Customizer → Custom Branding in the left-hand sidebar.
  3. Fill in whichever fields you want to customize and click Save.

Changes take effect immediately on the next page load — no server restart needed.


Field reference

Site

Field Description
Site Name Overrides SITE_NAME from local.py

Login Page — Background

Field Description
Login Background — URL URL of a background image (takes priority over an upload)
Login Background — Upload Uploaded background image (bare metal / media volume only)
Login Background Color CSS color fallback when no image is set (e.g. #1a1a2e)

Login Page — Layout

Field Description
Login Page Layout Centered Card — login card centered over the full-page background (default). Split Screen — Background Left — background on the left, dark login panel on the right. Split Screen — Login Left — mirrors it.
Split Panel — Show Overlay Text Tick to show text on the background panel; untick to hide it entirely
Split Panel — Overlay Text Text shown on the background panel. Leave blank to auto-display the site name
Split Panel — Text Position Vertical position of the overlay text: Top, Center, or Bottom

Login Page — Branding

Field Description
Login Logo — URL URL of a logo image (takes priority)
Login Logo — Upload Uploaded logo image
Login Logo Max Width (px) Maximum display width of the login logo
Login Page Title Custom heading shown above the SSO button
Login Page Subtitle Optional description text below the title
Login Page Extra HTML Raw HTML injected below the EVE SSO button (notices, links, etc.)

Favicon

Field Description
Favicon — URL URL of a favicon image (takes priority)
Favicon — Upload Uploaded favicon image

Navigation Bar Logo

Field Description
Navbar Logo — URL URL of a navbar logo image (takes priority)
Navbar Logo — Upload Uploaded navbar logo image
Navbar Logo Height (px) Display height of the navbar logo

Sidebar Logo

Field Description
Sidebar Logo — URL URL of an image to replace the AA logo in the sidebar (takes priority)
Sidebar Logo — Upload Uploaded sidebar logo image
Sidebar Logo Width (px) Display width of the sidebar logo

Custom CSS

Field Description
Custom CSS — URL External stylesheet URL linked in every page <head>
Custom CSS Inline CSS injected via <style> on every page

Extra HTML

Field Description
Extra <head> HTML Raw HTML injected at the end of <head> on every page

Image recommendations

Field Recommended size / format
Login background ≥ 1920 × 1080 px, JPEG or PNG
Login logo ≥ 256 × 256 px, transparent PNG
Favicon ≥ 192 × 192 px, PNG or ICO
Navbar logo Transparent PNG, height ≤ 64 px
Sidebar logo Transparent PNG, width ≤ 256 px

Security notes

  • Raw HTML fields (Login Page Extra HTML, Extra <head> HTML) are rendered without sanitization and are only editable by Django admin users (staff/superusers).
  • Custom CSS URL is validated as a URL by Django's field validator; only http/https schemes are accepted.
  • AA Customizer works alongside Alliance Auth's built-in Custom CSS admin (/admin/custom_css/customcss/). The customizer's CSS loads after the built-in one, so it takes precedence.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aa_customizer-1.0.13.tar.gz (21.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aa_customizer-1.0.13-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

File details

Details for the file aa_customizer-1.0.13.tar.gz.

File metadata

  • Download URL: aa_customizer-1.0.13.tar.gz
  • Upload date:
  • Size: 21.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aa_customizer-1.0.13.tar.gz
Algorithm Hash digest
SHA256 4d21965d0d738575a0f2e9748aa2fec8e32885a7ac249a00521af8319711f13f
MD5 0e2cd1179a2241a584a3453ecd7a63a5
BLAKE2b-256 95e15e5f17bf50d0ad05a9be0f2a119193a26ad59865bed644204949267721d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for aa_customizer-1.0.13.tar.gz:

Publisher: publish.yml on Thrainkrilleve/aa-customizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aa_customizer-1.0.13-py3-none-any.whl.

File metadata

  • Download URL: aa_customizer-1.0.13-py3-none-any.whl
  • Upload date:
  • Size: 27.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aa_customizer-1.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 6bb9b0052b64e7627a3815c073e703357f6b19f7e2712b7ca5ec2de5decbce97
MD5 35408b5f02e632378e7785723701d7a0
BLAKE2b-256 a5d6f28062b5e7f2c99b32b8d1b4309b63869e56a5eb5bcb11fc2d60cc449abd

See more details on using hashes here.

Provenance

The following attestation bundles were made for aa_customizer-1.0.13-py3-none-any.whl:

Publisher: publish.yml on Thrainkrilleve/aa-customizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page