Эксплуатация и жизненный цикл¶
Эта страница — канонический владелец правил persistence, остановки, удаления контейнеров и destructive cleanup. Выберите жизненный цикл до первой загрузки.
Managed VPS: обновление и откат¶
Для временного стенда нормальный путь — создать VPS, провести тест и удалить VPS. Обновление на месте нужно только долгоживущей установке.
xferry update загружает manifest, executable и attestations во временный
каталог вне /opt, проверяет manifest/tag/platform/size/SHA-256 и provenance,
а затем устанавливает версию в новый release directory. Символическая ссылка
current переключается atomically. Успех фиксируется только после запуска и
authenticated health check; при ошибке восстанавливаются предыдущая ссылка и
состояние service.
sudo xferry update
sudo xferry update --version VERSION
sudo xferry rollback
sudo xferry rollback --to VERSION
Хранятся текущий и один предыдущий verified release. Команды не доверяют floating tag и не помещают credentials в argv или logs.
Обычный uninstall удаляет runtime под /opt/xferry, но сохраняет
/etc/xferry, /var/lib/xferry, auth/config, uploads и ACME state:
Удаление данных требует двойного гейта:
# DESTRUCTIVE: удаляет config, credentials, data и ACME state.
sudo xferry uninstall --purge-data --yes
Docker: выбор lifecycle¶
| Вариант | /data |
После остановки | Необратимое действие |
|---|---|---|---|
| Disposable | anonymous -v /data |
container и volume удаляются через --rm |
остановка удаляет uploads и notes |
| Persistent | named -v xferry-data:/data |
volume сохраняется | docker volume rm xferry-data |
| Compose | named volumes | docker compose down сохраняет данные |
docker compose down --volumes |
Удаление container и удаление данных — разные операции для named volume.
Persistent named volume¶
Используйте тот же verified XFERRY_IMAGE, что и в Quick Start,
но выберите named volume до первой загрузки:
docker run --rm --pull=missing -v xferry-data:/data \
--name xferry-persistent \
--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
Ctrl+C и --rm удалят container, но uploads и encrypted notes останутся в
xferry-data.
docker volume inspect xferry-data
# DESTRUCTIVE: безвозвратно удаляет uploads и notes.
docker volume rm xferry-data
Для Compose используйте down без --volumes, если данные нужны:
docker compose -f <compose-file> down
# DESTRUCTIVE: удаляет named volumes проекта.
docker compose -f <compose-file> down --volumes
Где хранятся данные¶
/data/uploads/— пользовательские файлы./data/notes/— encrypted blobs и plaintext metadata заметок, но не ключ долговременного восстановления./home/xferry/.xferry/acme/— ACME account keys, private keys и chains./tmp— временные runtime-файлы и self-signed certificate material.
Потеря клиентского session key делает старую Secure Notepad заметку невосстановимой даже при сохранённом volume. ACME volume защищайте как secret.
Ресурсы и квоты¶
--body-memory-budget — admission budget для одновременно принятых request
bodies, а не RSS ceiling. Дополнительная память нужна Python objects, decoded
payloads, TLS buffers, worker threads и WebSocket connections.
Persistent capacity состоит из двух уровней:
- hard quota файловой системы, volume или платформы;
- application limits:
--upload-storage-limit,--upload-file-limit,--upload-reserve-free, лимиты Notepad и retention SMUGGLE.
Меняйте memory limit, workers, --max-size и body budget совместно после
измерений. Для public-direct используйте отдельную
процедуру.
Contributor-only Compose¶
examples/docker/docker-compose.yml собирает xferry:local из checkout и не
заменяет отсутствующий published digest:
docker compose -f examples/docker/docker-compose.yml up --build xferry
docker compose -f examples/docker/docker-compose.yml down
Default service публикует только 127.0.0.1:8080.