Быстрый старт¶
Основной путь рассчитан на новый 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. Новый
пароль создаётся командой:
Посмотреть рассчитанные workers, body budget и storage до изменений:
Первый файл¶
- Откройте URL, показанный
setup, и войдите с выданными credentials. - В Send выберите небольшой тестовый файл и нажмите Send.
- Проверьте status, server path и точный размер.
- В 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:
Полное удаление данных необратимо и требует двойного подтверждения:
# 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 по процедуре эксплуатации, а не меняйте команду вслепую.
Локальный защищённый запуск¶
Интерактивно:
Для service/container/CI credentials должны поступать из файла:
Launch presets меняют configuration posture, но не скрывают HTTP-методы.