miniserve — CLI утилита для публикации файлов и каталогов по HTTP

miniserve — это небольшой автономный кроссплатформенный инструмент командной строки, который позволяет вам просто получить файл или группу файлов по HTTP. Иногда это просто более практичный и быстрый способ, чем другие стандартные решения.

Открыть доступ к папке можно выполнив:

miniserve linux-distro-collection/

Открыть доступ к конкретному файлу:

miniserve linux-distro.iso

Также есть возможность установить логин/пароль для авторизации, указав данные явно или только sha256 хэш:

miniserve --auth xakinfo:qwe123 unreleased-linux-distros/
ИЛИ
pw=$(echo -n "123" | sha256sum | cut -f 1 -d ' ')
miniserve --auth joe:sha256:$pw unreleased-linux-distros/

Генерация рандомной 6-символьной ссылки:

miniserve -i 192.168.0.1 --random-route /tmp
# Serving path /private/tmp at http://192.168.0.1/c789b6

Использование нескольких интерфейсов:

miniserve -i 192.168.0.1 -i 10.13.37.10 -i ::1 /tmp/myshare

Загрузка файла с помощью curl:

# в одном терминале
miniserve -u .
# во втором терминале
curl -F "[email protected]$FILE" http://localhost:8080/upload\?path\=/

(где $FILE путь к файлу. Также здесь используется стандартный порт 8080)

Особенности

  • Легко использовать
  • Просто работает: правильная обработка типов MIME из коробки
  • Отдельный бинарный файл без дополнительных зависимостей
  • Поддержка аутентификации с использованием имени пользователя и пароля (и хешированного пароля)
  • Мега быстрый (спасибо Rust и Actix )
  • Папка для скачивания (сжатие на лету в .tar.gzили .zip)
  • Загрузка файла
  • Красивые темы (со светлой и темной поддержкой)
  • Сканирование QR-кода для быстрого доступа
  • Автодополнение команды
  • Разумные и безопасные настройки по умолчанию

Установка

Packaging status

На Linux дистрибутивах: скачайте miniserve-linux с репозитория проекта и выполните

chmod +x miniserve-linux
./miniserve-linux

В случае использования Arch Linux, вы также можете выполнить

pacman -S miniserve

На MacOS: скачайте miniserve-osx с репозитория проекта и выполните

chmod +x miniserve-osx
./miniserve-osx

Также можно воспользоваться Homebrew.

brew install miniserve
miniserve

На Windows: скачиваем miniserve-win.exe репозитория проекта и запускаем

miniserve-win.exe

С использованием Cargo: убедитесь, что используете актуальную версию Rust. После выполните

cargo install miniserve
miniserve

С использованием Docker:

docker run -v /tmp:/tmp -p 8080:8080 --rm -it svenstaro/miniserve /tmp

Shell автодополнение

Если хотите воспользоваться встроенным автодополнением команд, необходимо выполнить miniserve --print-completions <your-shell> вставив название вашего шела по умолчанию с указанием пути к файлу настроек. Вот несколько примеров ниже:

# Для bash
miniserve --print-completions bash > ~/.local/share/bash-completion/miniserve
# Для zsh
miniserve --print-completions zsh > /usr/local/share/zsh/site-functions/_miniserve
# Для fish
miniserve --print-completions fish > ~/.config/fish/completions/miniserve.fish

Поведение при запуске

Из соображений удобства miniserve будет пытаться выполнить привязку ко всем интерфейсам по умолчанию (если не указать через -i нужный). Он также будет делать это, если явно предоставлен с помощью -i 0.0.0.0или -i ::. Во всех вышеупомянутых случаях он будет связываться как с IPv4, так и с IPv6. Если предоставлен явный интерфейс, отличный от интерфейса по умолчанию, он будет связываться ТОЛЬКО с этим интерфейсом. Вы можете указать использовать -i несколько раз  для одновременной привязки к нескольким интерфейсам.

Добавить комментарий