16 KiB
ZPan
Файловый хостинг с открытым исходным кодом для вашего S3-совместимого хранилища.
Разворачивайте на Cloudflare Workers или в Docker. Загружайте файлы напрямую в объектное хранилище.
English · 简体中文 · 日本語 · 한국어 · Русский · Español · Português (BR)
Что такое ZPan?
ZPan — это лёгкая платформа файлового хостинга, построенная поверх S3-совместимого хранилища. Файлы загружаются напрямую с клиента в S3 через предподписанные (presigned) URL, полностью минуя пропускную способность сервера. Сервер выступает как уровень управления: аутентификация, метаданные, общий доступ, квоты, команды, WebDAV, интеграции с инструментами и административные операции.
Границы продукта намеренно очерчены: ZPan — это специализированный веб-диск на базе S3, а не обёртка над всеми потребительскими облачными дисками и не полноценный набор групповых приложений. Вы предоставляете S3-совместимый бакет, а ZPan даёт ему чистый веб-интерфейс, публичный общий доступ, API для хостинга изображений и варианты развёртывания, которые не требуют VPS или NAS.
Основные сценарии:
- Веб-диск на S3 — управляйте файлами, папками, предпросмотрами, корзиной, квотами и командными рабочими пространствами поверх собственного объектного хранилища
- Хостинг изображений — загружайте через PicGo, PicList, uPic, ShareX, Flameshot или API и мгновенно получайте стабильный URL
- Общий доступ к файлам — публикуйте ссылки с паролем, сроком действия, лимитом загрузок, прямыми ссылками и возможностью сохранения на диск
- Персональная домашняя страница — дайте каждому пользователю публичную страницу
/u/usernameс подобранными общими файлами и просмотром в стиле папок - Внешний доступ — монтируйте файлы через WebDAV и запускайте воркеры-загрузчики для удалённой загрузки
Почему ZPan?
Только S3, по замыслу. ZPan не гонится за каждым облачным диском и не строит слой вложенных облачных хранилищ. Контракт хранилища остаётся простым и надёжным: S3-совместимые бакеты, такие как Cloudflare R2, AWS S3, Backblaze B2, MinIO, RustFS, Tigris и другие S3-совместимые сервисы.
Cloudflare Workers в первую очередь. ZPan построен вокруг Cloudflare Workers, D1, Hono и веб-стандартных API, а Docker и другие среды выполнения служат дополнительными целями развёртывания. Вы можете запустить полноценный уровень управления файловым хостингом, не владея VPS, не держа NAS включённым и не проксируя загрузки через постоянно работающий сервер.
Прямой путь передачи. Загрузки и скачивания используют предподписанные URL объектного хранилища, когда это возможно. Это снижает нагрузку на пропускную способность сервера, устраняет центральное узкое место передачи файлов и позволяет объектному хранилищу выполнять основную работу.
Практичные сценарии работы с файлами. ZPan включает веб-файловый менеджер, публичный общий доступ, настройку хостинга изображений, API-ключи, доступ по WebDAV, команды, квоты, задачи удалённой загрузки, предпросмотр файлов и административные элементы управления — не превращаясь при этом в платформу-агрегатор провайдеров.
Разворачиваемые воркеры-загрузчики. Удалённая загрузка не обязана выполняться внутри основного экземпляра ZPan. Вы можете развернуть загрузчик вместе с ZPan для простой настройки или запустить его отдельно в окружении с лучшим сетевым доступом и меньшими ограничениями со стороны исходных сайтов, а затем позволить ZPan импортировать завершённые файлы в объектное хранилище.
Границы продукта
ZPan хорошо подходит, когда вам нужно:
- Сфокусированный веб-диск на базе S3 вместо зоопарка провайдеров хранилищ
- Самостоятельно размещаемый хостинг изображений и приложение для обмена файлами на базе собственного бакета
- Развёртывание в экосистеме Cloudflare без обслуживания VPS или NAS
- Передача из браузера в S3 вместо проксирования файлов через сервер приложения
- Интеграции с инструментами для скриншотов, публикации, WebDAV, удалённой загрузки и сценариев на основе API
ZPan не стремится быть:
- Набором для совместного редактирования документов в реальном времени, как Nextcloud Office
- Универсальным агрегатором облачных дисков, как AList
- Браузером локальных серверных каталогов, как File Browser
Как ZPan соотносится с другими
Большинство проектов самостоятельного файлового хостинга отталкиваются либо от серверных файлов, либо от синхронизации с настольным ПК, либо от совместной работы, либо от агрегации множества провайдеров. ZPan отталкивается от S3-совместимого объектного хранилища и уровня управления, дружественного к Cloudflare Workers.
| Возможность | ZPan | Cloudreve | AList | Nextcloud | Seafile | File Browser |
|---|---|---|---|---|---|---|
| Ориентация на продукт на базе S3 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| S3-совместимый бэкенд хранилища | ✅ | ✅ | ✅ | ✅ | ⚠️ | ❌ |
| Прямой путь из браузера в объектное хранилище | ✅ | ⚠️ | ⚠️ | ❌ | ❌ | ❌ |
| Развёртывание на Cloudflare Workers | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Не требуется VPS/NAS | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Сценарий хостинга изображений PicGo/ShareX | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Публичная домашняя страница файлов для каждого пользователя | ✅ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ❌ |
| Сценарий удалённой загрузки | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Отдельно разворачиваемый загрузчик/узел | ✅ | ✅ | ⚠️ | ❌ | ❌ | ❌ |
| Агрегация нескольких облачных дисков | ❌ | ❌ | ✅ | ⚠️ | ❌ | ❌ |
| Локальный серверный каталог как основной корень файлов | ❌ | ⚠️ | ⚠️ | ⚠️ | ❌ | ✅ |
| Совместное редактирование документов в реальном времени | ❌ | ❌ | ❌ | ✅ | ⚠️ | ❌ |
| Выделенные клиенты синхронизации | Запланировано | ❌ | ❌ | ✅ | ✅ | ❌ |
| Модель команд/рабочих пространств | ✅ | ⚠️ | ❌ | ✅ | ✅ | ❌ |
| Доступ по WebDAV | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Ссылки для общего доступа | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Развёртывание в Docker | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Условные обозначения: ✅ первоклассная или ключевая возможность; ⚠️ частичная, зависящая от редакции или не являющаяся основным фокусом продукта; ❌ не является ключевой возможностью.
Развёртывание
Cloudflare Workers (рекомендуется)
Разворачивайте через GitHub Actions без управления сервером. Бесплатного тарифа достаточно для личного использования.
- Сделайте форк этого репозитория
- В своём форке перейдите в Settings → Secrets and variables → Actions и добавьте:
CLOUDFLARE_ACCOUNT_ID— находится в боковой панели панели управления CloudflareCLOUDFLARE_API_TOKEN— создайте его здесь с правами Workers Scripts:Edit, D1:Edit и R2 Storage:Edit (область R2 нужна для автоматического создания бакета для аватаров/логотипа)
- Перейдите на вкладку Actions, выберите Deploy to Cloudflare Workers и нажмите Run workflow
После первоначальной настройки workflow запускается автоматически каждый раз, когда вы синхронизируете свой форк с последним релизом.
AWS Lambda
Разворачивайте через GitHub Actions с использованием SAM. Lambda Function URL обеспечивает HTTPS без необходимости в API Gateway.
- Сделайте форк этого репозитория
- В своём форке перейдите в Settings → Secrets and variables → Actions и добавьте:
TURSO_DATABASE_URLиTURSO_AUTH_TOKEN— из Turso (бесплатно, без банковской карты)AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_REGION
- Перейдите на вкладку Actions, выберите Deploy to AWS Lambda и нажмите Run workflow
См. docs/deploy/aws-lambda.md для полных инструкций по настройке и прав IAM.
Docker
Быстрый старт — загрузите готовый образ и подключите своё S3-хранилище:
curl -O https://raw.githubusercontent.com/saltbo/zpan/main/deploy/docker-compose.yml
docker compose up -d
С RustFS (самостоятельно размещаемое S3-совместимое хранилище, без внешних зависимостей):
curl -O https://raw.githubusercontent.com/saltbo/zpan/main/deploy/docker-compose.rustfs.yml
docker compose -f docker-compose.rustfs.yml up -d
После запуска:
- Откройте консоль RustFS по адресу
http://localhost:9001(admin / admin123) и создайте бакет (например,zpan-bucket) - Откройте ZPan по адресу
http://localhost:8222, зарегистрируйте пользователя (первый пользователь получает роль администратора) - Перейдите в Admin → Storage и добавьте хранилище RustFS:
- Endpoint:
http://localhost:9000(должен быть доступен из вашего браузера, а не внутренний хостнейм Docker) - Bucket: имя бакета, который вы создали на шаге 1
- Region:
us-east-1 - Access Key / Secret Key:
admin/admin123
- Endpoint:
Важно: конечная точка хранилища должна быть доступна из браузера клиента, поскольку файлы загружаются напрямую в S3 через предподписанные URL. Используйте
http://localhost:9000для локальной разработки или публичный URL вашего сервера для продакшена.
Документация
v1
Ищете ZPan v1 (версия на Go)? См. ветку v1.
Участие в разработке
Подробности см. в CONTRIBUTING.md.
Спасибо всем, кто внёс свой вклад в ZPan!
Лицензия
ZPan распространяется под лицензией GNU Affero General Public License v3.0. Подробности см. в файле LICENSE.
