163 lines
7.2 KiB
Markdown
163 lines
7.2 KiB
Markdown
# Установка 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`
|