Lightweight download manager for Anna's Archive with fast downloads, web UI, and API support.
100K+
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.
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
Create a file named docker-compose.yaml and add the following:
networks:
default:
name: stacks
services:
stacks:
image: zelest/stacks:latest
container_name: stacks
stop_signal: SIGTERM
stop_grace_period: 30s
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
# OPTIONAL: Separate incomplete folder (requires setting in Stacks UI)
# Uncomment and set incomplete_folder_path to "/incomplete" in the UI
# - "/path/to/incomplete:/opt/stacks/incomplete"
restart: unless-stopped
environment:
# These only apply on first run, afterward edit config.yaml directly
# or update the configuration from the UI.
- 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
# If you're using the included flaresolverr, this will automatically
# connect it. If you already got it running, you can change this
# address to match your local setup, or delete this variable and set
# it up inside Stacks later.
- SOLVERR_URL=flaresolverr:8191
# Set your timezone:
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
- TZ=UTC
# Optional, but recommended - bypasses Cloudflare and DDoS-Guard
# protection on mirror sites. Required if you encounter 403 errors when
# downloading. Not needed for fast downloads.
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
ports:
- "8191:8191"
environment:
- LOG_LEVEL=info
restart: unless-stopped
Update the volume paths to wherever you want Stacks to keep its files.
Change PASSWORD to 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
Create the required folders on your host:
mkdir -p /path/to/config /path/to/download /path/to/logs
Set up the network:
docker network create stacks
Set up FlareSolverr
docker run -d \
--name flaresolverr \
--network stacks \
-p 8191:8191 \
-e LOG_LEVEL=info \
--restart unless-stopped \
ghcr.io/flaresolverr/flaresolverr:latest
Set up Stacks
docker run -d \
--name stacks \
--network stacks \
--stop-signal SIGTERM \
-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 SOLVERR_URL=flaresolverr:8191 \
-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
By default, Stacks runs as root inside the container. This is normal fo rmany Docker images, but means that any files created or mounted volumes will also belong to root on the host.
If your other pass can't access the downloaded files, or you prefer stricter permission control, you can tell Docker to run Stacks as a different user.
Set a specific user in Docker Compose
services:
stacks:
# Use previous config and add:
user: 1000:1000 # Replace with the UID:GID you want Stacks to use
Set a specific user in Docker CLI
docker run -d \
--user 1000:1000 \
...
zelest/stacks:latest
If Stacks already have created files as root, you may need to update ownership nefore switching users:
sudo chown -R 1000:1000 /path/to/config
sudo chown -R 1000:1000 /path/to/download
sudo chown -R 1000:1000 /path/to/logs
Replace the UID/GID and paths to match your setup.
http://localhost:7788Stacks implements multiple layers of security:
Security Best Practices:
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.
Content type
Image
Digest
sha256:596d02602…
Size
20.5 MB
Last updated
7 months ago
docker pull zelest/stacks