Skip to content
 
 

Repository files navigation

Stacks - Download Manager for Anna's Archive

Stacks Logo

Docker Python Flask Tampermonkey License


Overview

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.

Key Features

  • 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

Quick Start

Docker Installation

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.


Docker Compose

Prerequisites

  • Docker and Docker Compose installed
  • (Optional) Anna's Archive membership for fast downloads
  1. Create a file named docker-compose.yaml and 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
  2. Update the volume paths to wherever you want Stacks to keep its files.

  3. Change PASSWORD to something secure (seriously, do this).

  4. In the same directory, run:

    docker compose up

Docker CLI Installation

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
  1. Create the required folders on your host:

    mkdir -p /path/to/config /path/to/download /path/to/logs
  2. 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

  • USERNAME and PASSWORD only apply on first run; afterward Stacks is configured via config.yaml.

  • Change the left side of -p 7788:7788 if 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

First-Time Setup

  1. Navigate to the web interface at http://localhost:7788
  2. Log in with default credentials (or custom if set via environment variables)
  3. Go to Settings tab
  4. Change your password in the Login Credentials section
  5. Copy your API key for usage with the Tampermonkey script in step 9
  6. (Optional) Configure your Anna's Archive fast download key and enable fast downloads.
  7. Adjust download delays and retry settings as needed
  8. Click Save Settings
  9. Install the Tampermonkey Script (see the Tampermonkey documentation for more information)

Security

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:

  1. Change the default password immediately after first login
  2. Use strong, unique passwords
  3. Keep your API key secure
  4. Don't expose Stacks directly to the internet without additional security (use a VPN or reverse proxy with HTTPS)

Further reading

License

This project is licensed under the MIT License - see the LICENSE file for details.

Disclaimer

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.

About

Lightweight download manager for Anna's Archive with fast downloads, web UI, and API support.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages