f7cloud_client/README_INSTALL.md
root 0af50038fe Add installation script with Talk config support
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-18 13:54:46 +00:00

163 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Установка 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`