MAATRIX / Блог / Файлообменник PsiTransfer на Ubuntu 24.04: пошаговая установка

Файлообменник PsiTransfer на Ubuntu 24.04: пошаговая установка

Файлообменник PsiTransfer на Ubuntu 24.04: пошаговая установка

MAATRIX

Когда нужно быстро передать коллеге тяжёлый архив или видео, публичные сервисы вроде WeTransfer упираются в лимиты, рекламу и хранение ваших файлов на чужих серверах. Файлообменник PsiTransfer решает это на вашей стороне: пользователь загружает файл, получает ссылку с паролем и сроком жизни, а данные лежат только у вас. Ниже пошаговая установка PsiTransfer на Ubuntu 24.04 через Node.js с автозапуском и доступом по HTTPS.

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

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

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

Что такое PsiTransfer и зачем свой файлообменник

PsiTransfer — это лёгкий самостоятельный сервис для обмена файлами по ссылке, написанный на Node.js. Он даёт ровно то, что нужно: перетащили файл в браузере, получили ссылку, отправили её адресату. У ссылки настраивается срок жизни и пароль, а после истечения файл удаляется. Никаких аккаунтов, подписок и рекламы — минималистичный интерфейс и полный контроль над данными.

Свой файлообменник особенно ценен там, где файлы конфиденциальны: договоры, макеты, дампы баз, рабочие материалы, которые не хочется заливать на публичные сервисы неизвестной юрисдикции. Всё остаётся на вашем сервере, вы сами решаете, сколько хранить файлы и кому давать ссылки. Плюс это заметно дешевле платных тарифов файлообменников, если вы гоняете большие объёмы регулярно.

Сервис нетребователен к ресурсам: сама программа занимает считанные мегабайты памяти, а основную нагрузку создаёт лишь дисковый ввод-вывод при заливке и раздаче. Так что даже скромный VPS справится, а всё, что вам реально понадобится, — это диск под файлы и достаточная ширина канала.

Требования и подготовка сервера

Для PsiTransfer хватает минимального VPS: 1–2 ядра, 1–2 ГБ RAM. Ключевой ресурс — дисковое место под загружаемые файлы, поэтому оценивайте объём исходя из того, сколько и какого размера файлов будет храниться одновременно. Если планируете передавать многогигабайтные архивы нескольким людям сразу, важнее окажется ширина канала, чем процессор.

Начните с обновления системы и установки базовых утилит. Затем заведите отдельного системного пользователя, под которым будет работать сервис — запускать веб-приложение от root плохая практика.

apt update && apt upgrade -y
apt install -y curl git nginx
adduser --system --group --home /opt/psitransfer psitransfer

Заранее определитесь с доменом: направьте его A-запись на IP вашего VPS, это понадобится для сертификата HTTPS. Подумайте и о том, где будут физически лежать файлы — если данных ожидается много, разумно вынести каталог загрузок на отдельный том, чтобы расширять место, не трогая систему.

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

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

Арендовать VPS

Установка Node.js

PsiTransfer работает на Node.js, поэтому сначала поставим свежую LTS-версию. В репозиториях Ubuntu часто лежит устаревший Node, поэтому подключим официальный репозиторий NodeSource, который даёт актуальную поддерживаемую версию.

curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
node --version
npm --version

Проверьте версии командами node и npm — они должны отработать без ошибок. Node.js двадцатой линейки это долгосрочная поддерживаемая ветка, которой PsiTransfer вполне доволен. Если в будущем понадобится обновиться, достаточно будет переподключить репозиторий на новую LTS и обновить пакет.

Развёртывание PsiTransfer

Теперь получим сам сервис. Клонируем репозиторий в каталог пользователя, устанавливаем зависимости и задаём каталог для хранения файлов. Все действия выполняем от имени созданного пользователя, чтобы права на файлы были корректными.

cd /opt/psitransfer
git clone https://github.com/psi-4ward/psitransfer.git .
npm install --production
mkdir -p /opt/psitransfer/data
chown -R psitransfer:psitransfer /opt/psitransfer

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

PSITRANSFER_UPLOAD_DIR=/opt/psitransfer/data node app.js

Остановите ручной запуск сочетанием Ctrl+C — дальше мы оформим сервис через systemd, чтобы он работал в фоне и поднимался после перезагрузки.

Автозапуск через systemd

Чтобы файлообменник работал постоянно и переживал перезагрузки сервера, оформите юнит systemd. Создайте файл /etc/systemd/system/psitransfer.service со следующим содержимым, задав нужные переменные окружения.

[Unit]
Description=PsiTransfer file sharing
After=network.target

[Service]
Type=simple
User=psitransfer
Group=psitransfer
Environment=PSITRANSFER_UPLOAD_DIR=/opt/psitransfer/data
Environment=PSITRANSFER_PORT=3000
WorkingDirectory=/opt/psitransfer
ExecStart=/usr/bin/node app.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

Перезагрузите конфигурацию systemd и включите автозапуск сервиса. Параметр Restart=on-failure поднимет процесс, если он вдруг упадёт, — полезно для сервиса, который должен быть доступен постоянно.

systemctl daemon-reload
systemctl enable --now psitransfer
systemctl status psitransfer

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

HTTPS через Nginx и эксплуатация

Поставьте перед PsiTransfer обратный прокси Nginx: он завершает HTTPS и проксирует запросы на локальный порт 3000. В конфиге сайта важно снять ограничение на размер загружаемого тела, иначе большие файлы будут обрываться, — ведь смысл файлообменника именно в крупных файлах.

location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    client_max_body_size 0;
    proxy_request_buffering off;
}

Получите бесплатный сертификат Let's Encrypt и включите автопродление, чтобы через три месяца доступ не отвалился.

apt install -y certbot python3-certbot-nginx
certbot --nginx -d files.example.com

В эксплуатации следите за двумя вещами: свободным местом на диске и сроками хранения файлов. PsiTransfer сам удаляет истёкшие ссылки, но если люди активно грузят большие файлы с длинным сроком жизни, диск может заполниться. Задайте разумный срок хранения по умолчанию и периодически проверяйте занятость диска.

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

Полезно также настроить логирование и понимать типичную нагрузку. Раздача больших файлов упирается не в процессор, а в ширину канала: если несколько человек одновременно качают многогигабайтные архивы, узкий канал станет бутылочным горлышком раньше, чем закончатся память или диск. Поэтому при выборе сервера под файлообменник смотрите в первую очередь на пропускную способность сети и на объём диска, а не на число ядер.

Развернуть такой файлообменник удобно на VPS у MAATRIX: широкий канал под раздачу больших файлов, локация на выбор и оплата из России картой, СБП или криптой — сервер поднимается за минуты.

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

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

Арендовать VPS

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

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

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

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

Чем PsiTransfer лучше публичных файлообменников?

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

Сколько ресурсов нужно для PsiTransfer?

Сама программа почти не потребляет память, хватает 1–2 ГБ RAM. Главное — дисковое место под файлы и достаточная ширина канала для раздачи больших объёмов.

Как сделать так, чтобы большие файлы не обрывались?

Снимите ограничение размера тела в Nginx через client_max_body_size 0 и отключите буферизацию запроса. Иначе прокси отсечёт файлы больше дефолтного лимита.

Файлообменник переживёт перезагрузку сервера?

Да, если оформить его как systemd-юнит с автозапуском. Параметр Restart=on-failure дополнительно поднимет сервис, если процесс упадёт во время работы.

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

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