01
Что это
Раз в неделю любой команде надо быстро передать файл: макет заказчику, дамп коллеге, видео на 200 мегабайт, которое не проходит в мессенджере. Публичные файлообменники либо просят регистрацию, либо показывают рекламу, либо молча удаляют файл через сутки. Мы сделали свой — ровно под эту задачу.
Ключевая деталь — отдача файлов. Блобы не раздаются приложением и не лежат по предсказуемому пути: nginx отдаёт их через внутренний редирект, поэтому угадать адрес файла на диске невозможно, а само приложение не тратит ресурсы на перекачку байтов.
02
возможности
Что оно умеет
01
Загрузка без регистрации
Перетащил — получил ссылку. До 200 МБ, живёт неделю, потом убирается автоматически.
02
Аккаунт для постоянного хранения
С аккаунтом файлы лежат бессрочно в пределах квоты, с поиском по имени и своим списком.
03
Непредсказуемые ссылки
Опциональный случайный суффикс в имени и короткая ссылка в корне. Имя файла не выдаёт другие файлы.
04
Отдача через внутренний редирект
nginx отдаёт блоб по внутренней локации — путь на диске наружу не утекает.
05
Доступ по SFTP
Отдельная учётная запись с замкнутым каталогом; загруженное по SFTP заводится в базу одной командой.
06
Автоуборка по расписанию
Systemd-таймер убирает просроченное. Место не заканчивается потому, что «руки не дошли».
03
архитектура
Как устроено
01
Загрузка файла
02
Запись в базу и квоты
03
Выдача ссылки
04
Раздача через nginx
05
Автоуборка по TTL
Под капотом
- FastAPI-приложение под своим системным пользователем, который вправе писать только в каталог файлов.
- SQLite как реестр файлов, квот и пользователей.
- Слушает только локальный интерфейс; наружу — только nginx.
- CLI для эксплуатации: инициализация, создание админа, смена пароля, уборка, импорт SFTP-каталога.
- Юридический минимум на месте: ответственность загрузившего, фиксация IP, кнопка жалобы на файл.
- Один процесс, один файл базы, ноль внешних зависимостей — сервис, который не ломается.
04
масштаб
Цифры
200 МБ
лимит без регистрации
7 дней
TTL анонимного файла
∞
хранение с аккаунтом
0
внешних зависимостей
