Перейти к содержанию

Быстрый старт

Основной путь рассчитан на новый VPS с Ubuntu 22.04/24.04/26.04 или Debian 12, Linux x86_64, systemd и root/sudo. Docker и установленный Python не нужны.

Installer пока не опубликован

Release asset ещё недоступен. Не запускайте latest-download команду, пока проверенный GitHub Release не опубликует install.sh.

Managed VPS: две команды

curl -fsSL https://github.com/kgmnotes/xferry/releases/latest/download/install.sh | sudo sh
sudo xferry setup

До записи файлов installer проверяет ОС, архитектуру, systemd и минимум 512 MiB RAM. Неподдерживаемая платформа завершается с кодом 4 без установки.

По умолчанию setup определяет публичный IPv4, создаёт dash-form имя sslip.io, слушает HTTPS на 0.0.0.0:443 и получает сертификат через ACME HTTP-01 на порту 80. Для своего имени используйте --domain DOMAIN, а для loopback-only установки — --private.

UFW никогда не включается автоматически. Если он уже активен, правила 80/tcp и 443/tcp меняются только после явного --firewall allow; --firewall deny останавливает публичную настройку.

После успешного authenticated health check setup один раз показывает username admin и пароль ровно из 12 символов. Сохраните его в password manager. Новый пароль создаётся командой:

sudo xferry credentials reset

Посмотреть рассчитанные workers, body budget и storage до изменений:

sudo xferry setup --dry-run --json

Первый файл

  1. Откройте URL, показанный setup, и войдите с выданными credentials.
  2. В Send выберите небольшой тестовый файл и нажмите Send.
  3. Проверьте status, server path и точный размер.
  4. В Files скачайте файл и затем удалите его.

Повседневные команды

sudo xferry status
sudo xferry status --json
xferry logs --follow
sudo xferry restart
sudo xferry doctor --deep
sudo xferry doctor --skip-network --json

Обычный временный цикл: install → setup → test → удалить VPS. Если хост будет использоваться повторно, обычный uninstall сохраняет config, credentials, uploads и ACME state:

sudo xferry stop
sudo xferry uninstall

Полное удаление данных необратимо и требует двойного подтверждения:

# DESTRUCTIVE: удаляет config, credentials, uploads, notes и ACME state.
sudo xferry uninstall --purge-data --yes

Вторичный Docker-путь

Используйте immutable digest из конкретного GitHub Release:

export XFERRY_IMAGE='ghcr.io/kgmnotes/xferry@sha256:<verified-manifest-digest>'
docker buildx imagetools inspect "$XFERRY_IMAGE"
gh attestation verify "oci://${XFERRY_IMAGE}" --repo kgmnotes/xferry

Пока manifest не опубликован, эти проверки ожидаемо остановятся. Не заменяйте digest плавающим tag.

До первой загрузки выберите lifecycle. Следующая команда создаёт disposable container и anonymous /data volume: остановка удалит uploads и notes.

docker run --rm --pull=missing -v /data \
  --name xferry-disposable \
  --init --read-only \
  --tmpfs /tmp:rw,nosuid,nodev,noexec,mode=1777 \
  --cap-drop ALL --security-opt no-new-privileges=true \
  --pids-limit 256 --memory 768m --cpus 1 \
  -p 127.0.0.1:8080:8080 \
  "$XFERRY_IMAGE" \
  --host 0.0.0.0 --port 8080 --dir /data --body-memory-budget 512

Откройте http://127.0.0.1:8080 и выполните сценарий первого файла. Ctrl+C останавливает процесс; --rm удаляет контейнер и anonymous volume.

Для сохранения данных используйте named volume по процедуре эксплуатации, а не меняйте команду вслепую.

Локальный защищённый запуск

Интерактивно:

xferry --preset local-secure

Для service/container/CI credentials должны поступать из файла:

xferry --preset local-secure --auth-file /run/secrets/xferry_auth

Launch presets меняют configuration posture, но не скрывают HTTP-методы.

Дальше