Stacks is a containerized download queue manager designed specifically for Anna's Archive. It provides a clean web interface to queue, manage, and download books automatically. With support for Anna's Archive's fast download API and automatic fallback to mirrors, Stacks ensures reliable downloads with minimal manual intervention.
- Secure Web Interface - Password-protected dashboard with session management
- Queue Management - Add books to a download queue from your browser with one click
- Fast Download Support - Utilize Anna's Archive membership for priority downloads
- Automatic Fallback - Seamlessly falls back to mirror sites when fast downloads are unavailable
- Real-time Dashboard - Monitor downloads, queue status, and history
- Browser Integration - Tampermonkey script adds download buttons directly to Anna's Archive
- Docker Ready - Easy deployment with Docker Compose
- Beautiful UI - Dracula-themed interface with live progress tracking
- Resume Support - Automatically resume interrupted downloads
- Download History - Track successful and failed downloads with retry capability
The fastest way to install Stacks is by using the Docker image available on Docker Hub. You can deploy it with either Docker Compose or the Docker CLI.
Prerequisites
- Docker and Docker Compose installed
- (Optional) Anna's Archive membership for fast downloads
-
Create a file named
docker-compose.yamland add the following:services: stacks: image: zelest/stacks:latest container_name: stacks ports: # Change the left port if 7788 is already in use - "7788:7788" volumes: # REQUIRED - change these paths to match your system - /path/to/config:/opt/stacks/config # Configuration files - /path/to/download:/opt/stacks/download # Downloaded files - /path/to/logs:/opt/stacks/logs # Log files restart: unless-stopped environment: # These only apply on first run, afterward edit config.yaml directly - USERNAME=admin # Default admin username (change if desired) - PASSWORD=stacks # Default admin password - CHANGE THIS! # Uncomment to reset the admin password to the above values on startup # - RESET_ADMIN=true # Set your timezone: # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - TZ=UTC
-
Update the volume paths to wherever you want Stacks to keep its files.
-
Change
PASSWORDto something secure (seriously, do this). -
In the same directory, run:
docker compose up
If you prefer running Stacks without Docker Compose, you can use the Docker CLI directly.
Prerequisites
- Docker installed
- (Optional) Anna's Archive membership for fast downloads
-
Create the required folders on your host:
mkdir -p /path/to/config /path/to/download /path/to/logs
-
Run the container:
docker run -d \ --name stacks \ -p 7788:7788 \ -v /path/to/config:/opt/stacks/config \ -v /path/to/download:/opt/stacks/download \ -v /path/to/logs:/opt/stacks/logs \ -e USERNAME=admin \ -e PASSWORD=stacks \ -e TZ=UTC \ --restart unless-stopped \ zelest/stacks:latest
Important notes
-
USERNAMEandPASSWORDonly apply on first run; afterward Stacks is configured viaconfig.yaml. -
Change the left side of
-p 7788:7788if port 7788 is already taken. -
Always change the default password before exposing Stacks publicly.
-
To reset the admin password later, add:
-e RESET_ADMIN=true
- Navigate to the web interface at
http://localhost:7788 - Log in with default credentials (or custom if set via environment variables)
- Go to Settings tab
- Change your password in the Login Credentials section
- Copy your API key for usage with the Tampermonkey script in step 9
- (Optional) Configure your Anna's Archive fast download key and enable fast downloads.
- Adjust download delays and retry settings as needed
- Click Save Settings
- Install the Tampermonkey Script (see the Tampermonkey documentation for more information)
Stacks implements multiple layers of security:
- Password Authentication: Bcrypt-hashed passwords with salt
- Session Management: Secure HTTPOnly cookies with SameSite protection
- Rate Limiting: 5 failed login attempts triggers 10-minute lockout
- API Key Authentication: Secure 32-character keys for external tools
- Auto-generated Secrets: API keys and session secrets generated on first run
Security Best Practices:
- Change the default password immediately after first login
- Use strong, unique passwords
- Keep your API key secure
- Don't expose Stacks directly to the internet without additional security (use a VPN or reverse proxy with HTTPS)
This project is licensed under the MIT License - see the LICENSE file for details.
This tool is for personal use only. Please respect copyright laws and Anna's Archive's terms of service. Support authors and publishers when possible by purchasing their work.