Portainer Stack Generator

Achievement Engine + ABS Stats

This builder outputs a single Portainer-compatible stack file for both containers and an optional user_xp_start.json sidecar. By default it generates a portable stack using Docker named volumes, with bind mounts available only when you need host-specific paths for Linux, macOS, Windows, or Unraid.

Import Existing Stack

Auto-fill from YML
Import a portainer-stack.yml to pre-fill all fields. Imported values flash green. Fields that are still required will be highlighted in amber.

Stack Basics

Shared Portainer Settings
Used only as a label in Portainer instructions.
Both containers join this bridge network.
Usually leave this alone.
Use named volumes for a stack that works across Docker hosts. Use bind mounts only if you need direct host file access.

Achievement Engine Container

Image, Port, Volumes
Needed if you use custom user icons and want to manage them from the host.
Leave blank if you do not want to override built-in static files.

Achievement Engine Environment

Core, Users, Progression, Wrapped
Set this if you configured a Discord webhook on abs-stats. Routes achievement notifications through abs-stats to Discord.
How often Release Radar polls Audible for new releases (default: 12)
Email address for user Series Request submissions via /request page.
Optional achievement-engine user filter.
Pick an avatar for each user. Saved as /icons/users/filename.png paths in the YML.

SMTP

Optional Email Notifications

ABS Stats Container

Companion Service
Full URL to your Audiobookshelf server. Without this abs-stats cannot fetch any listening data.
Single-user mode. Leave blank if using per-user tokens below.
Multi-user mode from the Unraid template.

Optional XP Start Overrides

Generates user_xp_start.json
One username/date pair per line. Format: username=YYYY-MM-DD. This file should live inside the achievement engine data folder if you use it.