# Установка F7cloud Client ## Быстрая установка Запустите скрипт инициализации от root: ```bash sudo bash install.sh ``` Скрипт выполнит: - ✅ Проверку и установку зависимостей (PHP, Apache, PostgreSQL клиент) - ✅ Установку и настройку Redis - ✅ Настройку виртуального хоста Apache - ✅ Интерактивный запрос данных PostgreSQL - ✅ Запрос данных администратора (логин и пароль) - ✅ Генерацию секретов (passwordsalt, secret, instanceid) - ✅ Создание `config/config.php` с настройками БД и Redis - ✅ Автоматический запуск `occ maintenance:install` для инициализации F7cloud - ✅ Создание первого администратора - ✅ Настройку прав доступа на файлы и директории ## Требования - **ОС**: Ubuntu/Debian (или совместимая) - **PHP**: 8.1+ с расширениями (php-fpm, php-pgsql, php-redis, php-apcu, php-gd, php-xml, php-mbstring, php-curl, php-zip, php-bcmath, php-intl) - **Apache**: 2.4+ с mod_rewrite, mod_headers, mod_php - **PostgreSQL**: 12+ (сервер может быть удалённым) - **Redis**: 6.0+ (для кэширования и блокировок) ## Что запрашивает скрипт 1. **Доменное имя** — например: `cloud.example.com` 2. **Путь установки** — по умолчанию текущая директория 3. **PostgreSQL**: - Хост (по умолчанию `localhost`) - Порт (по умолчанию `5432`) - Имя базы данных - Пользователь - Пароль - Префикс таблиц (по умолчанию `oc_`) 4. **Директория данных** — по умолчанию `/data` 5. **Trusted domains** — список доменов через запятую 6. **Trusted proxies** — IP адреса прокси через запятую (опционально) 7. **CLI URL** — URL для occ команд (по умолчанию `https://<домен>`) 8. **Логин администратора** — по умолчанию `admin` 9. **Пароль администратора** — пароль для первого пользователя ## После установки ### 1. Создайте базу данных (если ещё не создана) Скрипт проверит подключение к БД перед установкой. Если база не существует: ```bash sudo -u postgres psql CREATE DATABASE f7cloud_db OWNER f7user; \q ``` ### 2. Скрипт автоматически выполнит установку После создания `config.php` скрипт автоматически запустит: ```bash sudo -u www-data php occ maintenance:install \ --database pgsql \ --database-name <ваша_бд> \ --database-host <хост>:<порт> \ --database-user <пользователь> \ --database-pass '<пароль>' \ --admin-user <логин_админа> \ --admin-pass '<пароль_админа>' \ --data-dir <директория_данных> ``` После успешной установки скрипт автоматически обновит `config.php`: - `installed` => `true` - Добавит `overwriteprotocol` => `https` (для работы за прокси) ### 3. SSL сертификаты **SSL сертификаты настраиваются на прокси-сервере**, а не на сервере с F7cloud. Убедитесь, что прокси корректно передаёт заголовки и использует HTTPS. ## Структура config.php Скрипт создаёт `config/config.php` со следующими настройками: - **База данных**: PostgreSQL с указанными параметрами - **Redis**: `127.0.0.1:6379` для распределённого кэша и блокировок - **APCu**: для локального кэша - **Секреты**: автоматически сгенерированные `passwordsalt`, `secret`, `instanceid` - **Trusted domains**: указанные домены - **Data directory**: указанная директория (по умолчанию `/data`) ## Настройка F7Talk из конфига Чтобы настроить F7Talk автоматически без ручного ввода: 1. Скопируйте пример конфига: ```bash cp config/talk-config.example.php config/talk-config.php ``` 2. Отредактируйте `config/talk-config.php` и укажите нужные настройки: - `federation_enabled` — включить федерацию - `allowed_groups` — группы с доступом к Talk - `stun_servers` — STUN серверы - `breakout_rooms` — включить breakout rooms - и другие параметры 3. Запустите `install.sh` — скрипт автоматически обнаружит файл и применит настройки через `occ config:app:set`. Если файл `config/talk-config.php` отсутствует, скрипт предложит настроить Talk интерактивно. ## Безопасность - `config/config.php` имеет права `640` и владельца `root:www-data` - Директория данных имеет права `750` и владельца `www-data:www-data` - Старый `config.php` сохраняется в бэкап перед перезаписью - Пароли администратора и БД не отображаются при вводе (скрытый ввод) ## Устранение проблем ### Redis не запускается ```bash sudo systemctl status redis-server sudo systemctl start redis-server ``` ### Apache не перезапускается ```bash sudo apache2ctl configtest sudo systemctl restart apache2 ``` ### Ошибки прав доступа ```bash sudo chown -R www-data:www-data /var/www/f7cloud sudo chown -R www-data:www-data /data ``` ### Проверка подключения к PostgreSQL ```bash psql -h localhost -U f7user -d f7cloud_db -c "SELECT 1;" ``` ## Ручная установка Если скрипт не подходит, создайте `config/config.php` вручную на основе `config/config.sample.php` и заполните: - `passwordsalt` — случайная строка (32+ символов) - `secret` — случайная строка (32+ символов) - `instanceid` — случайная строка (8 символов) - `trusted_domains` — массив доменов - `datadirectory` — путь к директории данных - Параметры БД: `dbtype`, `dbname`, `dbhost`, `dbport`, `dbuser`, `dbpassword`, `dbtableprefix` - Настройки Redis: `redis` массив с `host`, `port`, `timeout`, `dbindex`