MAATRIX / Блог / Файлообменник PsiTransfer на сервере: частые ошибки и решения

Файлообменник PsiTransfer на сервере: частые ошибки и решения

Файлообменник PsiTransfer на сервере: частые ошибки и решения

MAATRIX

Свой файлообменник PsiTransfer подняли, а он капризничает: крупный файл обрывается на загрузке с ошибкой 413, загруженные файлы внезапно пропадают, диск неожиданно заполнился, а по домену сервис не открывается. Эти ошибки файлообменника PsiTransfer на сервере почти всегда сводятся к прокси, томам и настройкам хранения. Разберём их по схеме «симптом — причина — решение».

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

С чего начинать диагностику

Диагностика начинается с состояния контейнера и его логов, плюс проверки прокси, потому что PsiTransfer работает в связке с ним. Посмотрите, жив ли контейнер и что он пишет:

docker ps -a | grep psitransfer
docker logs --tail=50 psitransfer

Затем проверьте, отвечает ли сервис локально в обход прокси — это разделяет проблему PsiTransfer и проблему реверс-прокси:

curl -I http://127.0.0.1:3000

Если локально сервис отвечает, а по домену нет или файлы обрываются — виноват прокси. Если сам контейнер не поднимается или теряет данные — дело в томе и настройках. Отдельно всегда держите под рукой проверку свободного места, потому что для файлообменника это критичный ресурс:

df -h
du -sh /opt/psitransfer/data

Держа перед глазами логи контейнера, ответ локального сервиса и состояние диска, вы быстро отнесёте проблему к нужной категории. Дальше — разбор частых симптомов.

Загрузка большого файла обрывается на 413

Самая частая жалоба: мелкие файлы грузятся, а крупный обрывается с ошибкой 413 Request Entity Too Large или просто останавливается. Причина почти всегда в реверс-прокси перед PsiTransfer: по умолчанию он ограничивает размер тела запроса, и большой файл в него не влезает.

Снимите ограничение размера в конфиге прокси. Для Nginx это директива в блоке сервера или location:

server {
    client_max_body_size 0;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_request_buffering off;
    }
}

Значение 0 убирает лимит, а proxy_request_buffering off позволяет передавать большие файлы потоком, не буферизуя их целиком на диске прокси. После правки проверьте и перезагрузите:

nginx -t && systemctl reload nginx

Вторая причина обрыва — сам лимит PsiTransfer. Если задан PSITRANSFER_MAX_FILE_SIZE меньше размера файла, сервис отклонит загрузку независимо от прокси. Проверьте и при необходимости поднимите этот лимит. Третья причина — таймауты прокси на медленном канале: очень долгая загрузка обрывается по таймауту, и тогда их увеличивают. Обычно достаточно первых двух исправлений.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS

Загруженные файлы пропадают

Тревожный симптом: файлы, которые должны храниться, исчезают. Здесь важно различить две ситуации. Первая и нормальная — файлы удаляются по истечении срока жизни ссылки. Это штатное поведение: если при загрузке выбран срок «1 час» или «одноразовая ссылка», файл удаляется по расписанию или после первого скачивания. Это не ошибка, а функция.

Вторая ситуация — ненормальная: файлы пропадают при пересоздании или перезапуске контейнера. Причина в том, что данные не сохраняются в томе, а лежат внутри контейнера. Проверьте, что каталог данных смонтирован:

docker inspect psitransfer | grep -A10 Mounts

Если тома /opt/psitransfer/data:/data нет в списке монтирований, значит, данные живут внутри контейнера и гибнут при его пересоздании. Пересоздайте контейнер с правильным монтированием тома. Именованный том или каталог хоста — обязательное условие сохранности файлов между перезапусками. После этого перезапуск и обновление контейнера перестают уничтожать загруженное.

Переполнен диск и сервис встал

Неприятный сюрприз, характерный именно для файлообменников: диск заполнился, и сервис перестал принимать загрузки. Логика простая — люди грузят файлы, а если сроки хранения длинные или лимиты размера большие, хранилище растёт быстро. Проверьте, сколько занято:

df -h
du -sh /opt/psitransfer/data/*

Решение двоякое. Оперативное — разобраться, что занимает место, и убедиться, что механизм удаления по сроку работает: старые файлы с истёкшими ссылками должны исчезать сами. Если они копятся, проверьте настройки сроков хранения. Стратегическое — задать разумную политику: умеренный максимальный размер файла и не слишком длинные сроки жизни ссылок, чтобы хранилище не росло бесконечно:

-e PSITRANSFER_RETENTIONS="one-time:One Time,3600:1 Hour,86400:1 Day,604800:1 Week"
-e PSITRANSFER_MAX_FILE_SIZE=5368709120

И главный вывод: файлообменник по своей природе прожорлив к диску. Если сервисом активно пользуются и объёмы большие, никакая чистка не отменит потребность в месте. Это прямой повод взять VPS с вместительным диском. У MAATRIX серверы с большим быстрым NVMe доступны в локациях RU, US и UK с оплатой из России картой или криптой.

Сервис недоступен по HTTPS

Симптом: локально по 127.0.0.1:3000 PsiTransfer отвечает, а по домену через HTTPS не открывается или сертификат невалиден. Причин несколько. Первая — сертификат не выпустился, потому что домен не указывает на сервер. Проверьте A-запись:

dig +short files.example.com

Она должна вернуть публичный IP вашего VPS. Вторая причина — ошибка в конфиге прокси или он не перезагружен после правки; проверьте синтаксис через nginx -t и перечитайте. Третья — порт 80 закрыт, и certbot не смог пройти проверку: для выпуска сертификата HTTP-методом порт 80 должен быть открыт снаружи. Проверьте доступность и откройте нужные порты:

ufw allow 80/tcp
ufw allow 443/tcp

Ещё одна тонкость: если сервис должен быть непубличным, а вы ограничили доступ по IP или паролю на прокси, убедитесь, что ваши правила не блокируют вас самих или легитимных пользователей. Файлообменник часто делают доступным ограниченному кругу, и здесь легко случайно закрыть доступ слишком широко.

Профилактика типовых ошибок

Большинство проблем PsiTransfer предотвращается на этапе настройки. Всегда монтируйте данные в том, чтобы файлы переживали перезапуск контейнера. В прокси задавайте client_max_body_size 0 и proxy_request_buffering off, чтобы крупные файлы грузились без обрыва. Настраивайте разумные сроки хранения и лимиты размера, чтобы диск не переполнялся. Выпускайте HTTPS-сертификат и держите порты 80 и 443 открытыми для ACME и доступа.

Отдельно продумайте, публичный сервис или для узкого круга: если для своих, ограничьте доступ на прокси, чтобы файлообменником не пользовались посторонние и не забивали диск. И следите за местом — для этого класса сервисов диск заканчивается первым. Когда объёмы обмена растут, тонкая настройка уже не спасает от нехватки места, и надёжнее перейти на VPS с большим диском и хорошим каналом. У MAATRIX такие серверы с чистым IP доступны в локациях RU, US и UK с оплатой из России картой или криптой, что делает собственный файлообменник стабильным и независимым.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Частые вопросы

Почему загрузка большого файла в PsiTransfer обрывается?

Реверс-прокси ограничивает размер тела запроса; задайте client_max_body_size 0 и proxy_request_buffering off, а также проверьте лимит PSITRANSFER_MAX_FILE_SIZE.

Почему загруженные файлы пропадают?

Либо истёк заданный срок жизни ссылки (это нормально), либо данные не в томе и гибнут при пересоздании контейнера; смонтируйте каталог /data в том.

Что делать при переполнении диска?

Задайте умеренные сроки хранения и лимит размера, проверьте, что файлы с истёкшими ссылками удаляются, а при больших объёмах берите VPS с вместительным диском.

Почему файлообменник не открывается по HTTPS?

Домен не указывает на сервер, закрыт порт 80 для ACME или ошибка в конфиге прокси; проверьте dig, откройте порты и перечитайте Nginx.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.