Файловое облако на своём сервере

Своё. Зашифровано. Быстро. Работает.

Залейте 100 ГБ. Уходите. Возвращайтесь к готовому. Никакой няньки, сломанных загрузок и зависаний на «финализации».

Cotton workspaceLibrary / Photography / 2026
ФайлыСнимкиШары
Библиотека/Фото/2026
2.4k
Фото
18.4 GB
947
Документы
92.1 GB
mountain-backup.jpg
lake-trip.heic
leaf-macro.jpg
spring-blossom.jpg
castle-raw.jpg
02:14walkthrough.mov
Отчёт о безопасности
audit.pdfPDF
12:48
voice-note.m4aзашифрованное превью
bracket-v3.stl
Приложения

Не только вкладка в браузере.

У Cotton есть настоящие клиенты: приложение для Android и десктопный агент Cotton Sync для Windows и Linux. Поставьте один раз — файлы всегда синхронизированы.

Что умеет

Восемь вещей, на которые большинство облаков забивает.

Детали, на которые обычно забивают при разработке. Каждая из них — реальная часть продукта, а не слайд из презентации.

Перемотка зашифрованного видео. Без расшифровки всего файла.Чтения диапазона проходят через AES-GCM-чанки. Теги аутентификации по чанкам собирают нужный кусок на лету. Без временного файла, без полного скачивания. Большинство облаков на своём сервере сначала расшифровывают на диск. Cotton — нет.
Аудио, которое реально удобно листать.Встроенная обложка — если она есть. Сгенерированная волна — если обложки нет. Синхронный текст из соседнего LRC-файла. Один компонент превью, без маркетплейса плагинов.
3D-модели. В браузере. Прямо сейчас.STL, OBJ, 3MF — рендерятся через f3d в том же конвейере превью. 3MF берёт встроенные миниатюры, когда они есть, и откатывается к рендеру на лету, когда их нет. Смысл не в ещё одном просмотрщике, а в одной файловой поверхности для фото, документов, аудио, видео и моделей.
Залейте 100 ГБ. Уходите. Без зависания на «финализации».Чанки хешируются в web worker. Загрузки идут параллельно. Повторяются только пропавшие чанки. В конце нет шага «подождите, мы всё пересчитаем». Доказательство продукта — стабильный прогресс, а не красивый первый рывок.
Markdown, который выглядит как документ.Заголовки, подсветка кода, оглавление, выделяемый текст. Открываешь README внутри файлового облака, а не скачиваешь его только чтобы понять, что внутри.
Поиск по миллионам файлов. Мгновенно.Структурные метаданные, а не grep по строкам пути. Деревья с сотнями тысяч записей возвращают совпадения без кручения вентилятора. Попробуй тот же поиск в папке, про которую сам забыл.
Admin Security Checkup. Харденинг с оценкой 0-10.15+ сигналов контейнерного харденинга проверяются изнутри приложения: .NET diagnostics, seccomp, ptrace caps, no-new-privileges, dumpability, AppArmor, Docker socket exposure. Получаешь оценку, а не «skill issue».
БД потерялась? Cotton восстанавливается из своего бэкапа.При старте Cotton проверяет, пустая ли база, находит последний манифест бэкапа в своём защищённом хранилище, пересобирает дамп из чанков, сверяет хеши, восстанавливает и уведомляет админов. Восстановление — часть продукта, а не только внешний runbook.
Покликайте по реальному инстансу вместо того, чтобы читать про него.Открыть демо
Попробуйте

Выберите свою сеть. И увидите, что реально получите.

Выберите канал, на котором работаете дома или в офисе. Cotton сравнит его с самой медленной измеренной стадией локальной записи, чтобы было видно реальную ёмкость сервера, а не красивую цифру из синтетического бенчмарка.

Как устроено хранилище

Десять человек грузят один файл. На диске — одна копия.

Cotton разделяет, кто владеет файлом и где лежат байты. Один и тот же файл от десяти пользователей не требует десяти физических копий. У каждого свой видимый файл, версии, доступы и права; чанки хранятся один раз.

Наивный путь

Три загрузки. Три копии. Диск съеден три раза.

Так делают многие файловые облака. Легко представить, дорого растить, и за каждый дубль платишь, как будто диск резиновый. Он не резиновый.

Зашифровано, но вслепую

Три запечатанных blob. Зашифровано — и всё равно три копии.

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

Путь Cotton

Три видимых файла. Один набор чанков на диске.

У каждого пользователя остаётся свой файл, версии, шары и права. Байты лежат один раз. Хеш-идентичность, сжатие, шифрование и манифесты работают вместе по дизайну.

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

Один движок: из браузера на диск и обратно. Без аварийного костыля.

Загрузка, шифрование, хранение, превью, перемотка, общий доступ, проверка и очистка — всё через один конвейер, те же чанки, та же модель. Заметка в 10 КБ и папка на 100 ГБ идут по одному коду.

Приём01

Хешируем. Режем. Догружаем только пропавшее.

1
Хеширование в web worker
Не в UI-потоке, так что браузер остаётся живым даже посреди загрузки.
2
Параллельная загрузка чанков
Wi-Fi отвалился на 47 ГБ? Повторяются только недостающие чанки.
клиент проверка сервером
Обработка02

Сжать. Зашифровать. Остаться в горячем пути.

3
Zstd до шифрования
То, что умеет сжиматься, уменьшается до того, как станет непрозрачным.
4
Потоковый AES-GCM
Аутентифицированные чанки. Без шага «загрузить весь файл в RAM».
буферы файловая система или S3
Выдача03

Превью, перемотка, шары, проверка, уборка.

5
Перемотка внутри зашифрованных файлов
Чтения диапазона собирают нужный кусок через шифр. Без временного файла.
6
Фоновая проверка целостности
Выборочно перехешируем чанки. Умирающий диск ловится раньше пользователей.
манифест фичи продукта
Дерево пользователя
Раскладка
Узлы папок
Видимый файл
Файл узла
Линия версий
Контент
Манифест
Упорядоченные ссылки чанков
Хранилище
SHA-256-чанки
Файловая система или S3
Прогоните весь конвейер сами за 30 секунд.docker compose up -d
Зачем он существует

Сделан потому, что больше ничего не работало.

Семь вещей, которые этот продукт считает базой. Большинство облаков относят их к планам, плагинам или «не нашей проблеме».

Современный стек

Не выглядит как 2007-й. И не выглядит заброшенным.

Next.js на фронте, .NET на бэке, Postgres в базе. Новые релизы выходят каждые пару недель. Продукт ощущается быстрым, потому что стек не тащит его назад — а git-лог открыт, если хочешь видеть работу вживую.

Зашифровано

По умолчанию. А не «файлы в папке, которую откроет кто угодно».

Потоковый AES-GCM с тегами аутентификации на каждый чанк. Обёрнутые ключи на каждый файл. Выбранные папки можно увести в клиентское E2E с ключом-хранилищем, который сервер не видит. Чтобы получить безопасность, не нужно ничего передёргивать.

Дедупликация

Один файл от десяти человек = один слот на диске.

Контентно-адресуемые чанки (SHA-256). У каждого пользователя всё равно свой файл, версии, доступы, права — но за хранение платишь один раз. Дедупликация — это движок, а не плагин, который ставишь.

Целостность

Если диск теряет чанк, Cotton поднимает шум.

Фоновые задачи выборочно перехешируют хранимые чанки и сверяют их с манифестом. Тихую порчу диска ловят раньше, чем заметят пользователи. Большинство облаков узнают об умирающем диске из баг-репорта — этот узнаёт первым.

Паранойя по умолчанию

Подписанные строки. Ключ только в памяти. Чек-ап админки с оценкой 0-10.

Мастер-ключу не обязательно жить в env-переменных — разблокируй через браузер, ключ остаётся только в памяти процесса. После рестарта украденный сервер без ключа превращается в тыкву: контейнер есть, диски есть, а открыть нечего. Чувствительные строки БД подписаны материалом, выведенным из этого ключа, так что подменённые пользователи, токены или манифесты ловятся при чтении. Admin Security Checkup читает 15+ сигналов харденинга контейнера (.NET diagnostics, seccomp, ptrace, dumpability, AppArmor) и даёт оценку, а не «skill issue».

Просто запускать

Один контейнер. Postgres рядом. Всё.

Никакого Redis, который надо держать живым, никакого маркетплейса плагинов для няньканья, никакой отдельной армии воркеров. Один Docker-образ крутит веб-интерфейс, API, фоновые задачи, превью и конвейер хранения. Запусти за своим обычным TLS, делай бэкапы — и пусть архитектура приложения остаётся скучной.

Сделано для себя

Написано тем, кому пришлось пользоваться этим каждый день.

Каждая деталь, на которую наткнёшься — UX восстановления, жизненный цикл ссылок, PDF на мобильном, аудио-волна, 3D-превью, подписи целостности — существует потому, что автор однажды разозлился и починил. А не потому, что продакт-менеджер занёс её в бэклог.

Мелочи

Мелочи, которые замечаешь, только когда их нет.

Детали, которые обычно превращаются в тикеты, плагины или скрытую возню админа. Cotton держит их прямо в работе с файлами.

  • Passkeys + WebAuthn + TOTPСовременная авторизация, а не просто поле пароля.
  • Версии файловДиалог версий, откат на прошлую, политика хранения.
  • Ссылки с истечением срокаОдноразовые токены, автоуборка, страницы шар с превью.
  • Синхронизация в реальном времениИзменения в одной вкладке сразу видны в другой. Без F5, как в молодости.
  • Тексты и обложки в аудиоLRC рядом с файлом, встроенная обложка, волна как запасной вариант.
  • HEIC, SVG, подсветка кодаОткрывается в браузере. Без скачивания, без плагина.
  • ZIP-скачивания (ZIP64, UTF-8)Настоящий архив с content-length, а не потоковая гадалка.
  • UI на EN / RUОдин словарь и те же компоненты, без отдельного русского форка.
Vadim Belov
Кто сделал

Я Вадим. Я сделал Cotton, потому что каждое облако на своём сервере, которое я пробовал, меня бесило.

Каждая фича есть потому, что я однажды разозлился и починил. Ни один продакт-менеджер не оценивал «аудиоволну» или «просмотрщик STL» для бэклога — я добавил их, потому что они были нужны. Git-log публичный. На issues отвечаю. Демо выше — тот же Cotton, которым я пользуюсь каждый день.

Сравнение

Выбирай по задаче. Не по логотипу.

Три места, где Cotton бьёт сильнее всего. Двенадцать честных сравнений в полной таблице.

Зона
Cotton
Большинство облаков на своём сервере
Большие загрузки
Чанковый путь загрузки. Повторяются пропавшие чанки. Нет зависания на «финализации».
Бодро стартует — а на финише уходит в себя.
Перемотка видео в зашифрованном хранилище
Нативно — собирает диапазон байтов прямо через шифр.
Сначала расшифровывает весь файл на диск. Ты ждёшь. Диск плачет.
Скорость WebDAV
Тот же чанковый конвейер, что и у нативного клиента.
Обычно отдельный путь, и тот еле дышит.
Быстрый старт

30 секунд до работающего инстанса.

Сгенерируйте пароль. Вставьте один раз. Примонтируйте том. Всё.

docker-compose.yml
services:
  postgres:
    image: postgres:18
    environment:
      POSTGRES_DB: cotton
      POSTGRES_USER: cotton
      POSTGRES_PASSWORD: "замените выводом: openssl rand -base64 32"

  cotton:
    image: bvdcode/cotton:latest
    security_opt:
      - no-new-privileges:true
    ports:
      - "8080:8080"
    volumes:
      - /data/cotton:/app/files
    environment:
      COTTON_PG_HOST: postgres
      COTTON_PG_DATABASE: cotton
      COTTON_PG_USERNAME: cotton
      COTTON_PG_PASSWORD: "то же значение, что POSTGRES_PASSWORD"

      # Опционально для рестартов без ручного unlock; иначе разблокируйте в браузере:
      # COTTON_MASTER_KEY: "замените выводом: openssl rand -base64 24"
Вопросы

Короткие ответы до того, как нырнуть в документацию.

Короткие прямые ответы. Подробности — в документации и на страницах с разбором.

Cotton — это сквозное шифрование (E2E)?

Два слоя. Чанки хранилища по умолчанию шифруются AES-GCM — это стандарт. Выбранные папки могут ещё использовать клиентское шифрование с ключом-хранилищем, который не покидает браузер. Мы не называем всё это «E2E», потому что это была бы маркетинговая выдумка — E2E только у клиентских папок.

Какое файловое облако выбрать — Cotton или то, что уже использую?

Это разные продукты. Большинство «персональных облаков» — комбайны «всё в одном»: календарь, контакты, чат, офис, федерация, 200+ приложений. Cotton — файловое облако, сфокусированное на хранении, превью, общем доступе и восстановлении файлов в масштабе. Живёшь внутри комбайна — оставайся там. Если файлы — главная задача, переходи.

Можно попробовать без регистрации?

Да. Откройте живое демо — оно генерирует креды под браузер и наполняет свежий аккаунт контентом по умолчанию. Это настоящий Cotton. Каждый клик попадает в реальный инстанс. Сломать не получится — а получится, так мы только спасибо скажем.

Какие у Cotton сейчас ограничения?

Называем сразу: клиентское E2E сегодня ограничено 512 MB на файл (браузерный Blob-конвейер), а бенчмарки — машинные базовые замеры, а не математика живой загрузки. Шифрование хранилища — AES-GCM «по учебнику», пока без стороннего аудита.

Поднимите демо. Кликайте куда угодно. Оно настоящее.

Или запустите сами: docker compose up -d. Полный исходник на GitHub, лицензия MIT. Без регистрации, без допродаж, без «оставьте имейл, чтобы посмотреть демо».