Installation and updates #
Start with an empty data directory, then configure the bot, storage, and users in the web console.
Binary deployment #
Download and extract a release for your platform:
chmod +x saveany-bot
./saveany-bot
The default data directory is data/ under the current working directory. The web UI listens on 127.0.0.1:28080 by default. At startup it prints a direct URL with an access token:
Web UI available at http://127.0.0.1:28080/?token=...
Open that URL; the token creates an authenticated session. Unless an access token is set under Settings → Web, a new token is generated on every start.
To expose the web UI on another interface or port, pass the listen address on the command line:
./saveany-bot --listen 0.0.0.0:28080
The equivalent environment variable is SAVEANY_LISTEN:
SAVEANY_LISTEN='0.0.0.0:28080' ./saveany-bot
The generated admin password remains available for password login; set SAVEANY_ADMIN_PASSWORD to choose it. It is printed only on the first start. After signing in, change it from the sidebar Change password dialog. Open the logged URL and follow the Guide page:
- Enter the bot token on the Telegram page.
- Add at least one storage on the Storages page.
- Add your Telegram user ID on the Users page.
Process supervision #
Docker deployment #
Docker Compose #
Download docker-compose.yml, adjust ports and paths if needed, then start:
docker compose up -d
docker compose logs -f saveany-bot
Default mounts:
./data:/app/data— settings, task history, and sessions./downloads:/app/downloads— default local storage./cache:/app/cache— download cache
Set an admin password, or read the generated one from the log. Set the listen address for bridge networking:
environment:
SAVEANY_ADMIN_PASSWORD: change-me
SAVEANY_LISTEN: 0.0.0.0:28080
Docker #
docker run -d --name saveany-bot \
-p 28080:28080 \
-e SAVEANY_LISTEN=0.0.0.0:28080 \
-v ./data:/app/data \
-v ./downloads:/app/downloads \
-v ./cache:/app/cache \
ghcr.io/krau/saveany-bot:v1-beta
Read the tokenized URL from the logs and open it. With Docker, 127.0.0.1 means the Docker host; replace it with the host IP when opening the URL from another machine. For local storage in Docker, use /app/downloads as the base path.
v1-beta is the moving beta channel. Pin an exact image tag when you need a reproducible deployment.
Updates #
Binary #
./saveany-bot up
You can also send /update in Telegram. The updated process restarts itself; on Windows, restart it from your service manager.
Docker #
docker pull ghcr.io/krau/saveany-bot:v1-beta
docker restart saveany-bot
Docker Compose #
docker compose pull
docker compose up -d
Back up data/ before updating and keep the Docker volume.