История облачных файловых платформ для самохостинга похожа на семейную драму с длинным шлейфом разногласий. ownCloud появился в 2010 году как первый серьёзный ответ облачным гигантам. В 2016 году основатель проекта Фрэнк Карличек ушёл с большей частью разработчиков и основал Nextcloud, который за десять лет вырос в мощную платформу с сотнями приложений. Сам ownCloud не сдался, а пошёл другим путём - переписал всё с нуля на Go и микросервисах под названием Infinite Scale. Получился продукт, философски противоположный Nextcloud. Никакого PHP, никакой базы данных, никакого LAMP-стека. Просто бинарник, который запускается одной командой и работает как набор связанных сервисов. Ниже разложен путь от чистой Ubuntu до рабочего OCIS с реверс-прокси, валидным сертификатом и доступом из интернета.

Архитектурные различия между Infinite Scale и классическими PHP платформами

Перед установкой стоит понять, во что именно ввязывается администратор. Nextcloud и старый ownCloud 10 - это монолитные PHP-приложения, которые крутятся в связке с Apache или Nginx, MySQL или PostgreSQL, Redis для кеша и кучей расширений. Каждый запрос пользователя проходит через PHP-FPM, дёргает базу, читает файлы с диска, отдаёт ответ. Архитектура понятная, обкатанная десятилетиями, но с характерной для PHP проблемой - под нагрузкой требуются всё новые воркеры, тонкая настройка кешей и серьёзная база данных.

OCIS работает совсем иначе. Это набор микросервисов на Go, которые общаются между собой через gRPC. Один сервис отвечает за хранение файлов, другой за индексацию поиска, третий за шаринг, четвёртый за генерацию миниатюр, пятый за управление пользователями. На малых инсталляциях все эти сервисы запускаются в одном бинарнике через embedded supervisor, что упрощает деплой до неприличия. На больших развёртываниях каждый сервис можно вынести в отдельный контейнер или даже на отдельный сервер.

Главное практическое следствие архитектуры. OCIS не требует внешней базы данных. Метаданные хранятся в собственном встроенном хранилище и в файловой системе через концепцию decomposed FS - данные пользователей лежат в виде blob-файлов с ID, метаинформация в отдельных JSON. Это даёт радикальный прирост производительности при работе с большими файлами и упрощает бэкапы. Одновременно это и ограничение. Привычной возможности заглянуть в SQL-таблицу и что-то поправить руками здесь нет, всё работает через API сервисов.

Сравнение функциональности тоже честное. Nextcloud - швейцарский нож с видеозвонками Talk, офисом OnlyOffice или Collabora из коробки, календарём, контактами, почтой, маркетплейсом из четырёхсот приложений. OCIS - сфокусированный файловый sync-and-share с акцентом на производительность и масштабирование. Если нужна вся пачка коллабораций - Nextcloud правильнее. Если нужен быстрый, лёгкий, хорошо работающий с S3 файловый облачный сторадж - OCIS подходит лучше.

Подготовка Ubuntu и базовые требования к серверной инфраструктуре

Минимальные требования у OCIS скромные по меркам корпоративного софта. Двухядерного процессора и 2 ГБ оперативки хватает для домашнего использования с парой пользователей. Для полноценной production-инсталляции с офисными приложениями уже нужны 4 ядра и 8 ГБ памяти. Хранилище - сколько потребуется под медиатеку, с непременным SSD под систему и метаданные. Сетевой адаптер гигабитный, потому что синхронизация больших файлов любит быструю сеть.

Ubuntu Server 24.04 LTS - оптимальный выбор для свежего деплоя. Базовая подготовка системы стандартна:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git unzip ca-certificates gnupg

OCIS можно поставить тремя способами. Первый - просто скачать бинарник и запустить. Второй - использовать Docker Compose с минимальной конфигурацией. Третий - развернуть полноценный production-стек с Traefik, Let's Encrypt и офисными приложениями. Для серьёзного использования рекомендуется именно третий путь, потому что он сразу даёт автоматические сертификаты, реверс-прокси и продуманную структуру файлов.

Установка Docker делается через официальный репозиторий, потому что версия из Ubuntu repo обычно отстаёт:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Проверка установки идёт командой docker compose version. Должна появиться строка с актуальной версией плагина. Дальше нужен домен с правильно настроенными DNS-записями на адрес сервера. Без публичного домена и валидных DNS получить сертификат от Let's Encrypt не получится, а самоподписанный сертификат отвадит мобильные клиенты.

Развёртывание полноценного production стека через Docker Compose

ownCloud публикует готовый набор Docker Compose-файлов в репозитории на GitHub в директории deployments/examples/ocis_full. Этот набор содержит OCIS, Traefik для реверс-прокси, Collabora или OnlyOffice для офисных приложений и все необходимые конфиги. Скачивание стабильной версии и распаковка в рабочую папку:

sudo mkdir -p /opt/ocis
cd /opt/ocis
wget "https://download-directory.github.io?url=https://github.com/owncloud/ocis/tree/stable-7.0/deployments/examples/ocis_full" -O ocis.zip
unzip ocis.zip
mv 'owncloud ocis stable-7.0 deployments-examples_ocis_full'/* .
rmdir 'owncloud ocis stable-7.0 deployments-examples_ocis_full'

Главный файл настройки - .env в корне распакованной директории. Здесь задаются домены, пути к данным, почтовый сервер и параметры безопасности. Базовое редактирование требует осмысленной правки нескольких ключевых переменных:

nano .env

Критичные параметры, которые точно нужно поменять:

  • OCIS_DOCKER_IMAGE переключается с owncloud/ocis-rolling на owncloud/ocis для production
  • TRAEFIK_ACME_MAIL получает реальный e-mail для Let's Encrypt
  • TRAEFIK_ACME_CASERVER комментируется или меняется на production-сервер ACME
  • OCIS_DOMAIN, COLLABORA_DOMAIN, ONLYOFFICE_DOMAIN заполняются реальными поддоменами
  • OCIS_CONFIG_DIR и OCIS_DATA_DIR указывают на выделенные пути вне docker-volume
  • INSECURE комментируется, чтобы включить строгую проверку сертификатов
  • SMTP_HOST, SMTP_USERNAME, SMTP_PASSWORD заполняются для отправки уведомлений

Один важный момент с правами на каталоги. OCIS внутри контейнера работает от UID 1000, и эти права нужно выставить для bind-volume на хосте:

sudo mkdir -p /mnt/ocis-config /mnt/ocis-data
sudo chown -R 1000:1000 /mnt/ocis-config /mnt/ocis-data

Значения OCIS_CONFIG_DIR=/mnt/ocis-config и OCIS_DATA_DIR=/mnt/ocis-data в .env подскажут контейнерам, где искать конфиги и хранить данные. Это важно для бэкапов и переездов - данные лежат в понятном месте, а не в недрах /var/lib/docker/volumes.

Запуск стека делается одной командой из директории с docker-compose.yml:

sudo docker compose up -d

Первый запуск занимает несколько минут. Traefik подтягивает сертификаты от Let's Encrypt, OCIS инициализирует встроенное хранилище, Collabora или OnlyOffice стартует свои воркеры. Логи можно смотреть через sudo docker compose logs -f ocis. Когда в логах появится строка о готовности сервиса proxy, веб-интерфейс становится доступен по адресу из переменной OCIS_DOMAIN.

Получение административных учётных данных и первичная настройка пользователей

OCIS генерирует пароль администратора при первой инициализации. Стандартный логин - admin. Пароль печатается в логах контейнера ocis при первом старте. Достать его можно через:

sudo docker compose logs ocis | grep "admin"

В выводе будет строка с initial admin password. Этот пароль обязательно записывается в менеджер паролей - повторно его OCIS не покажет. После первого входа имеет смысл сменить пароль через настройки профиля и сразу создать дополнительных администраторов на случай потери основного аккаунта.

Веб-интерфейс OCIS построен на Vue.js и заметно отличается от привычного Nextcloud. Логика организована вокруг концепции Spaces - персональных пространств пользователей и совместных проектных пространств. Каждый пользователь получает свой Personal Space, куда складывает приватные файлы. Project Spaces создаются администратором или пользователями с нужными правами и работают как групповые папки с гибкими правами доступа.

Создание новых пользователей делается через раздел Admin Settings в веб-интерфейсе или через CLI прямо в контейнере:

sudo docker compose exec ocis ocis idm add-user --user-name john --display-name "John Doe" --email Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. --password "SecurePass123"

Для корпоративного использования OCIS из коробки умеет работать с внешними провайдерами идентификации через OpenID Connect. Это означает интеграцию с Keycloak, Authentik, Authelia, Microsoft Entra ID и любыми другими OIDC-совместимыми системами. Встроенный IDM на основе LibreGraph хорош для малых инсталляций, но для серьёзных развёртываний внешний IDP даёт single sign-on, многофакторную аутентификацию и централизованное управление пользователями.

Подключение офисных приложений и настройка коллаборативного редактирования

Просмотр и редактирование документов в браузере - одна из ключевых функций современного облачного хранилища. OCIS интегрируется с двумя основными офисными платформами - Collabora Online и ONLYOFFICE. Обе работают по протоколу WOPI и подключаются через специальный сервис ocis-wopiserver, который отдельно поднимается в Docker-стеке.

В готовом примере ocis_full офисные приложения уже настроены, нужно только указать соответствующий поддомен в .env. Collabora обычно вешается на collabora.example.com, ONLYOFFICE на onlyoffice.example.com. Traefik сам поднимет для этих поддоменов сертификаты и проксирует трафик.

Один тонкий момент с Content Security Policy. По умолчанию OCIS не разрешает iframe со сторонних доменов, и встраивание Collabora не работает. Решается через файл csp.yaml, шаблон которого лежит в репозитории ownCloud. В нём прописываются разрешённые источники, и адрес Collabora-сервера добавляется в connect-src и frame-src директивы.

После настройки в веб-интерфейсе появляется возможность открывать документы Word, Excel, PowerPoint и их свободные аналоги ODT, ODS, ODP прямо в браузере, редактировать их совместно с другими пользователями и сохранять обратно в OCIS. Курсоры коллег видны в реальном времени, изменения синхронизируются мгновенно, конфликтов слияния не возникает. Это та функциональность, ради которой многие выбирают самохостинг вместо Google Docs - данные остаются на собственном сервере.

Подключение клиентов и настройка регулярных бэкапов

Десктопные клиенты OCIS существуют для Windows, macOS и Linux. Они работают через WebDAV-совместимый API и поддерживают как классическую полную синхронизацию папок, так и Virtual Files - режим, при котором файлы появляются в системе как ярлыки и скачиваются по требованию. Это критично для пользователей с большими медиатеками на ноутбуках со скромными SSD.

Мобильные приложения для iOS и Android доступны в официальных магазинах. Подключение делается через указание домена сервера, после чего пользователь проходит OAuth-авторизацию в браузере. Никаких паролей в самом приложении хранить не нужно - токены обновляются автоматически.

Бэкапы для OCIS делаются проще, чем для классических PHP-облаков. Нет внешней базы данных, которую нужно дампить. Достаточно регулярно архивировать две директории - конфиг и данные. Простой скрипт backup.sh:

#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/mnt/backups/ocis"
mkdir -p $BACKUP_DIR

cd /opt/ocis
sudo docker compose stop ocis

tar -czf $BACKUP_DIR/ocis-config-$DATE.tar.gz -C /mnt ocis-config
tar -czf $BACKUP_DIR/ocis-data-$DATE.tar.gz -C /mnt ocis-data

sudo docker compose start ocis

find $BACKUP_DIR -name "ocis-*.tar.gz" -mtime +14 -delete

Запуск через cron строкой 0 3 * * * /opt/ocis/backup.sh - в три часа ночи, когда нагрузка минимальна. Остановка сервиса перед бэкапом гарантирует консистентность данных, потому что OCIS активно пишет в decomposed FS, и снимок без остановки может оказаться повреждённым. Простой даже на больших инсталляциях обычно укладывается в минуту-другую.

Для серьёзных развёртываний имеет смысл смотреть в сторону S3-совместимого хранилища как primary backend для OCIS. Это нативный сценарий использования платформы, и сама архитектура decomposed FS изначально проектировалась с прицелом на объектные хранилища. MinIO, Wasabi или Backblaze B2 спокойно подключаются через переменные окружения сервиса storage-users, и тогда фактические файлы пользователей живут в облаке, а локальный сервер хранит только метаданные.

Что в итоге собирается у того, кто прошёл этот путь. Полностью свой облачный сторадж без подписок и без зависимостей от чужих серверов. Современная микросервисная архитектура на Go, которая держит нагрузку лучше PHP-аналогов и масштабируется горизонтально без боли. Автоматические сертификаты, реверс-прокси, офисные приложения для совместной работы и desktop-клиенты для всех платформ. Бэкапы, которые сводятся к архивированию двух папок раз в сутки. И главное преимущество - отсутствие классических болезней LAMP-стека вроде утомительной настройки PHP-FPM, тонкой подкрутки OPCache и борьбы с медленными SQL-запросами. OCIS не пытается быть всем сразу - он хорошо делает одну вещь, и для тех, кому нужен именно файловый облачный сторадж без лишнего обвеса, это лучший выбор сегодня.