Sign inSign up

eaglestelle/never-stelle

By eaglestelle

•Updated about 1 month ago

Never Stelle is a self-hosted web app that downloads videos, images, and audios

Image
0

2.5K

eaglestelle/never-stelle repository overview

Never Stelle logo

⁠Never Stelle

Paste a link, get the file. Never Stelle is a self-hosted web app that downloads videos, images, and audios from anywhere, then keeps them organized and searchable in one library.

⁠Features

  • Queue one or many URLs from a browser UI, with a probe step that previews metadata before download.
  • Track active downloads with live progress parsed from the engines.
  • Route downloads dynamically: yt-dlp by default, automatic fallback to gallery-dl for image posts, slideshows, and galleries.
  • Optionally delegate Iwara and Oreno3D downloads to Swaratelle when configured, while showing them in the same queue and history UI.
  • Learn source keys from downloads and file each platform under /media/<source-key>.
  • Deduplicate downloads so repeated URLs reuse the existing record.
  • Browse, paginate, and search completed download history.
  • Reconcile history against files on disk.
  • Customize output with folder and filename templates.
  • Protect the app with session-based login and in-app account management.

⁠Docker

Never Stelle is distributed as eaglestelle/never-stelle:latest.

Create a docker-compose.yml like this:

services:
  never-stelle:
    image: eaglestelle/never-stelle:latest
    container_name: never-stelle
    restart: unless-stopped
    environment:
      NEVER_STELLE_USERNAME: "root"
      NEVER_STELLE_PASSWORD: "change-this-password"
      NEVER_STELLE_MAX_CONCURRENT: "3"
      NEVER_STELLE_COOKIE_SECURE: "false"
      NEVER_STELLE_DROP_CACHE_SYNC: "false"
      # Optional: read-only API token for external apps that consume Never Stelle data.
      # NEVER_STELLE_API_TOKEN: "change-this-token"
      # Optional: enable Iwara/Oreno3D delegation through Swaratelle.
      # SWARATELLE_URL: "http://swaratelle:8842"
      # SWARATELLE_API_TOKEN: "change-this-token"
    volumes:
      - ./data:/data
      - ./media:/media
      - ./scratch:/scratch
    ports:
      - "8840:8840"

Replace NEVER_STELLE_PASSWORD with a strong value before starting the container.

Start it:

docker compose up -d

Open:

http://localhost:8840

Stop the service:

docker compose down

The default port mapping is 8840:8840. If host port 8840 is already in use, change only the left side in docker-compose.yml, for example:

ports:
  - "9000:8840"

Then open http://localhost:9000.

⁠Credits

Tag summary

Content type

Image

Digest

sha256:a65ed5195…

Size

154 MB

Last updated

about 1 month ago

docker pull eaglestelle/never-stelle