Самохостинговая альтернатива Office 365: создание личного облака из коробки

Пошаговое руководство по созданию самохостинговой альтернативы Office 365. Узнайте, как настроить персональное облако на базе Nextcloud с полноценным Office-пакетом, обеспечить безопасность и синхронизацию данных без зависимости от облачных провайдеров.

Не указано

Подготовка сервера

Обновление системы и установка необходимых пакетов для работы Nextcloud

sudo apt update && sudo apt upgrade -y
sudo apt install apache2 mariadb-server libapache2-mod-php php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-bcmath php-xml php-zip -y

Настройка MariaDB

Создание базы данных и пользователя для Nextcloud

sudo mysql -u root -p
CREATE DATABASE nextcloud;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'ваш_надежный_пароль';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Установка Nextcloud

Скачивание и распаковка Nextcloud с настройкой прав доступа

cd /tmp
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
sudo mv nextcloud /var/www/
sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 755 /var/www/nextcloud

Настройка Apache

Создание и настройка конфигурационного файла для Apache

<VirtualHost *:80>
  ServerName ваш_домен.ru
  DocumentRoot /var/www/nextcloud
  
  <Directory /var/www/nextcloud/>
     Options FollowSymlinks
     AllowOverride All
     Require all granted
  </Directory>
  
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Настройка HTTPS

Установка и настройка SSL/TLS с помощью Certbot

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d ваш_домен.ru

Установка OnlyOffice

Настройка Docker-контейнера OnlyOffice для работы с документами

version: '2'

services:
  onlyoffice:
    container_name: onlyoffice
    image: onlyoffice/documentserver:latest
    depends_on:
      - postgre
      - redis
    ports:
      - "8080:80"
    environment:
      - DB_HOST=postgresql
      - DB_TYPE=pgsql
      - DB_PORT=5432
      - DB_NAME=onlyoffice
      - DB_USER=onlyoffice
      - DB_PASS=onlyoffice
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - AMQP_URI=amqp://guest:guest@rabbit:5672
    volumes:
      - ./data:/var/www/onlyoffice/Data
      - ./logs:/var/log/onlyoffice
      - ./lib:/var/lib/onlyoffice

  postgre:
    container_name: onlyoffice-postgres
    image: postgres:9.6-alpine
    environment:
      - POSTGRES_DB=onlyoffice
      - POSTGRES_USER=onlyoffice
      - POSTGRES_PASSWORD=onlyoffice
    volumes:
      - ./data/postgresql:/var/lib/postgresql/data

Оптимизация производительности

Настройка кэширования и оптимизация PHP и Apache

'memcache.local' => '\OC\Memcache\APCu',

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1

Настройка резервного копирования

Создание скрипта для автоматического резервного копирования

#!/bin/bash

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/var/backups/nextcloud"

# Создаем директорию для бэкапа, если ее нет
mkdir -p $BACKUP_DIR

# Бэкап базы данных
mysqldump -u root -pпароль_от_базы nextcloud > $BACKUP_DIR/nextcloud_db_$DATE.sql

# Бэкап файлов
tar -czf $BACKUP_DIR/nextcloud_files_$DATE.tar.gz /var/www/nextcloud

# Удаляем бэкапы старше 30 дней
find $BACKUP_DIR -type f -mtime +30 -delete