bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward

AFFiNE на VPS: установка, настройка и обслуживание

calendar_month 16 июня 2026 schedule 20 мин. чтения visibility 60 просмотров
person
Valebyte Team
AFFiNE на VPS: установка, настройка и обслуживание

Установка AFFiNE на VPS позволяет развернуть мощную, приватную и гибкую платформу для управления знаниями, заметками и проектами, используя Docker и Docker Compose для упрощения процесса, а также обеспечить надежную настройку, включая reverse proxy, HTTPS и регулярное обслуживание, для стабильной работы под нагрузкой.

В современном цифровом мире эффективное управление информацией является ключом к продуктивности как для отдельных специалистов, так и для целых команд. Существует множество решений для заметок, баз знаний и планирования проектов, но не все они предлагают идеальный баланс функциональности, контроля данных и гибкости. AFFiNE — это инновационная платформа, которая стремится объединить лучшие черты Notion, Miro и Obsidian, предлагая унифицированное пространство для работы с текстом, визуализации и организации задач. Однако, как и многие облачные сервисы, AFFiNE в своем публичном варианте может не удовлетворять всех требований к конфиденциальности данных или индивидуальной настройке. Именно здесь на помощь приходит affine self-hosted вариант, развернутый на собственном виртуальном приватном сервере (VPS).

Размещение AFFiNE на VPS дает полный контроль над данными, значительно повышает безопасность и позволяет масштабировать ресурсы в соответствии с вашими потребностями. В этой статье мы подробно рассмотрим, что такое AFFiNE, каковы его системные требования, и проведем пошаговую установку AFFiNE на VPS, используя контейнеризацию с помощью Docker и Docker Compose. Мы также уделим внимание настройке reverse proxy для доступа по доменному имени с HTTPS, стратегиям резервного копирования и обновления, а также определим оптимальный VPS-конфиг для различных сценариев нагрузки. Если вы ищете надежное решение для своей команды или личного использования, развертывание AFFiNE на сервере Valebyte.com станет отличным выбором, обеспечивая высокую производительность и стабильность.

Что такое AFFiNE и почему стоит выбрать self-hosted на VPS?

AFFiNE позиционируется как универсальное рабочее пространство нового поколения, объединяющее функции текстового редактора, инструмента для создания диаграмм и схем, а также полноценной системы управления задачами и проектами. Он разработан с акцентом на гибкость и интуитивно понятный пользовательский интерфейс, позволяя пользователям свободно переключаться между текстовыми документами, базами данных, канбан-досками и интерактивными диаграммами, сохраняя при этом целостность информации. Возможности AFFiNE охватывают:

  • Гибкие блоки контента: От обычного текста и заголовков до списков, таблиц, изображений и даже встраиваемых объектов.
  • Режимы работы: Переключение между режимом документа, доски (канбан, mind map) и презентации для различных сценариев использования.
  • Базы данных: Создание структурированных данных с возможностью фильтрации, сортировки и различных представлений.
  • Командная работа: Инструменты для совместного редактирования и комментирования.
  • Открытый исходный код: Проект с открытым исходным кодом, что способствует прозрачности и развитию сообщества.

Преимущества развертывания AFFiNE на VPS

Выбор affine self-hosted решения на виртуальном приватном сервере от Valebyte.com предоставляет ряд значительных преимуществ по сравнению с использованием облачных версий или локальных инсталляций:

  1. Полный контроль над данными: Ваши данные хранятся на вашем сервере, а не на сторонних облачных платформах. Это критически важно для обеспечения конфиденциальности, соответствия регулятивным требованиям (например, GDPR) и защиты интеллектуальной собственности.
  2. Безопасность: Вы самостоятельно управляете безопасностью сервера, выбирая уровни шифрования, доступ и аутентификацию. Это позволяет создать изолированную и защищенную среду, минимизируя риски утечек.
  3. Гибкость и кастомизация: Вы можете настроить серверную среду и, при необходимости, модифицировать исходный код (если это позволяет лицензия проекта) или интегрировать AFFiNE с другими самохостинговыми сервисами, такими как Wiki.js или Trilium, для создания комплексного рабочего пространства.
  4. Производительность и масштабируемость: Выбирая VPS с необходимыми ресурсами (CPU, RAM, NVMe-хранилище), вы гарантируете высокую производительность AFFiNE, особенно при работе с большими объемами данных или большим количеством пользователей. При росте потребностей вы легко можете масштабировать ресурсы VPS.
  5. Экономическая эффективность: В долгосрочной перспективе, особенно для команд, самохостинг может оказаться более выгодным, чем подписка на дорогие облачные тарифы, особенно если у вас уже есть VPS для других целей.
  6. Опыт и навыки: Развертывание и управление собственными сервисами на VPS развивает ваши навыки системного администрирования и работы с Docker, что является ценным опытом в IT-сфере.

Таким образом, AFFiNE на VPS — это не просто альтернатива, а стратегическое решение для тех, кто ценит контроль, безопасность и гибкость в управлении своей цифровой информацией.

Системные требования AFFiNE: какой VPS выбрать?

Прежде чем приступить к установке AFFiNE, важно убедиться, что ваш VPS соответствует минимальным системным требованиям. AFFiNE, будучи современным веб-приложением на основе Node.js и баз данных, требует адекватных ресурсов для стабильной и быстрой работы. Основные компоненты, которые будут запущены, включают сам сервер AFFiNE, базу данных (PostgreSQL) и, возможно, другие вспомогательные сервисы, все это обычно упаковано в affine docker контейнеры.

Минимальные и рекомендуемые конфигурации VPS

Выбор конфигурации VPS зависит от предполагаемой нагрузки — количества активных пользователей, объема хранимых данных и интенсивности использования. Ниже представлены общие рекомендации:

  • Операционная система:
    • Минимально: Любой современный дистрибутив Linux с поддержкой Docker (Ubuntu 20.04+, Debian 11+, CentOS 8+).
    • Рекомендуется: Ubuntu Server LTS (например, 22.04) или Debian Stable. Эти дистрибутивы хорошо поддерживаются, имеют обширные репозитории и актуальные версии ядра.
  • Процессор (CPU):
    • Минимально (1-2 пользователя, легкая нагрузка): 1-2 vCPU. Для базовых операций и тестирования этого может быть достаточно.
    • Рекомендуется (5-20 пользователей, средняя нагрузка): 2-4 vCPU. Обеспечит плавную работу интерфейса и быструю обработку запросов базы данных.
    • Для больших команд (20+ пользователей): 4+ vCPU.
  • Оперативная память (RAM):
    • Минимально: 2 GB RAM. Это абсолютный минимум для Docker, базы данных и самого AFFiNE. При активном использовании возможны замедления и необходимость в SWAP.
    • Рекомендуется: 4 GB RAM. Оптимальный объем для большинства сценариев использования, обеспечивающий комфортную работу.
    • Для больших команд: 8+ GB RAM. Особенно если вы планируете запускать другие сервисы на том же VPS.
  • Дисковое пространство (Storage):
    • Минимально: 20-40 GB NVMe/SSD. AFFiNE хранит данные в базе данных, а также может кэшировать файлы. NVMe значительно ускоряет операции ввода-вывода.
    • Рекомендуется: 80-100 GB NVMe/SSD. Достаточно для долгосрочного хранения данных, резервных копий и операционной системы.
    • Тип диска: Настоятельно рекомендуется использовать NVMe-диски из-за их высокой скорости чтения/записи, что критически важно для работы баз данных и общей отзывчивости системы.
  • Сетевое подключение:
    • Минимально: 100 Mbps.
    • Рекомендуется: 1 Gbps. Высокая скорость сети важна для быстрой загрузки контента и совместной работы.

Для большинства пользователей, начинающих с AFFiNE на VPS, тарифный план с 2 vCPU, 4 GB RAM и 80 GB NVMe-диска будет хорошей отправной точкой. Valebyte.com предлагает различные тарифы VPS, которые легко масштабируются, позволяя вам наращивать ресурсы по мере роста ваших потребностей без необходимости миграции.

Ищете надёжный сервер для ваших проектов?

VPS от $10/мес и выделенные серверы от $9/мес с NVMe, DDoS-защитой и поддержкой 24/7.

Смотреть предложения →

Подготовка VPS к установке AFFiNE

Перед тем как приступить непосредственно к установке AFFiNE, необходимо подготовить ваш виртуальный сервер. Этот этап включает обновление операционной системы, установку Docker и Docker Compose, а также базовую настройку безопасности. Для примера мы будем использовать Ubuntu Server 22.04 LTS, но команды будут аналогичны для большинства Debian-подобных систем.

Обновление системы и установка Docker/Docker Compose

Подключитесь к вашему VPS по SSH. Прежде всего, обновите список пакетов и установленные пакеты до последних версий:

sudo apt update && sudo apt upgrade -y

Далее установим необходимые зависимости для Docker:

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

Добавьте официальный GPG ключ Docker и репозиторий:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Теперь можно установить Docker Engine, Docker CLI и containerd:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

Убедитесь, что Docker установлен и запущен:

sudo systemctl status docker

Вывод должен показать, что служба активна (active (running)).

Добавьте текущего пользователя в группу docker, чтобы избежать использования sudo при каждой команде Docker:

sudo usermod -aG docker $USER
newgrp docker

Выйдите из SSH сессии и зайдите снова, чтобы изменения вступили в силу, или выполните newgrp docker.

Теперь установим Docker Compose. Рекомендуется использовать плагин Docker Compose V2, который устанавливается как часть Docker Desktop или отдельно. Мы будем устанавливать его как плагин:

sudo apt install -y docker-compose-plugin

Проверьте версию Docker Compose:

docker compose version

Вывод должен быть примерно таким: Docker Compose version v2.x.x.

Настройка файрвола (UFW)

Для обеспечения безопасности вашего affine на сервере, настройте файрвол UFW (Uncomplicated Firewall). Разрешите SSH-доступ (порт 22), HTTP (порт 80) и HTTPS (порт 443). Если у вас другой порт для SSH, укажите его.

sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw status

Убедитесь, что файрвол активен и правила настроены корректно.

Теперь ваш VPS готов к установке AFFiNE с использованием affine docker контейнеров.

rocket_launch Быстрый выбор

Ищете сервер, который просто работает?

Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.

Смотреть тарифы VPS arrow_forward

Пошаговая установка AFFiNE на VPS через Docker Compose

Теперь, когда ваш VPS подготовлен, можно перейти к основной части — установке AFFiNE на VPS. Мы будем использовать Docker Compose, который значительно упрощает развертывание многокомпонентных приложений, таких как AFFiNE, управляя всеми необходимыми контейнерами (сервер AFFiNE, база данных PostgreSQL).

Создание файла docker-compose.yml

Создайте директорию для проекта AFFiNE и перейдите в нее:

mkdir ~/affine
cd ~/affine

Создайте файл docker-compose.yml:

nano docker-compose.yml

Вставьте следующее содержимое. Этот конфигурационный файл описывает два сервиса: affine-server (основное приложение AFFiNE) и postgres (база данных). Обратите внимание на использование постоянных томов (volumes) для сохранения данных.

version: '3.8'

services:
  affine-server:
    image: ghcr.io/toeverything/affine:stable # Используем стабильный образ AFFiNE
    container_name: affine-server
    restart: unless-stopped
    ports:
      - "3010:3000" # Порт хоста:Порт контейнера. Измените 3010 при необходимости.
    environment:
      # Настройки базы данных
      - POSTGRES_HOST=postgres
      - POSTGRES_PORT=5432
      - POSTGRES_USER=affine_user
      - POSTGRES_PASSWORD=${AFFINE_DB_PASSWORD}
      - POSTGRES_DB=affine_db
      # Настройки сервера AFFiNE
      - AFFINE_SERVER_PORT=3000
      - AFFINE_SERVER_HOST=0.0.0.0
      # Другие настройки, если требуются (например, для S3-хранилища файлов)
      # - AWS_S3_ACCESS_KEY_ID=YOUR_S3_ACCESS_KEY_ID
      # - AWS_S3_SECRET_ACCESS_KEY=YOUR_S3_SECRET_ACCESS_KEY
      # - AWS_S3_REGION=YOUR_S3_REGION
      # - AWS_S3_BUCKET_NAME=YOUR_S3_BUCKET_NAME
    volumes:
      - affine_data:/app/data # Постоянное хранение данных AFFiNE
    depends_on:
      - postgres

  postgres:
    image: postgres:15-alpine # Используем легковесный образ PostgreSQL
    container_name: affine-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_USER=affine_user
      - POSTGRES_PASSWORD=${AFFINE_DB_PASSWORD}
      - POSTGRES_DB=affine_db
    volumes:
      - affine_db_data:/var/lib/postgresql/data # Постоянное хранение данных PostgreSQL

volumes:
  affine_data:
  affine_db_data:

Важные замечания:

  • Порты: "3010:3000" означает, что AFFiNE будет доступен на порту 3010 вашего VPS. Вы можете выбрать любой свободный порт.
  • Переменные окружения: Для безопасности пароль к базе данных (AFFINE_DB_PASSWORD) вынесен в отдельный файл.
  • Тома (Volumes): affine_data и affine_db_data — это именованные тома Docker, которые гарантируют, что ваши данные не будут потеряны при пересоздании контейнеров.

Конфигурация переменных окружения

Создайте файл .env в той же директории, что и docker-compose.yml, для хранения чувствительных данных, таких как пароль к базе данных:

nano .env

Вставьте строку, заменив YOUR_STRONG_PASSWORD на надежный пароль:

AFFINE_DB_PASSWORD=YOUR_STRONG_PASSWORD

Сохраните и закройте файл (Ctrl+X, Y, Enter).

Запуск AFFiNE Docker контейнеров

Теперь, когда все настроено, запустите контейнеры с помощью Docker Compose:

docker compose up -d
  • up: Запускает контейнеры.
  • -d: Запускает контейнеры в фоновом режиме (detached mode).

Процесс может занять несколько минут, так как Docker будет скачивать образы. После завершения вы можете проверить статус запущенных контейнеров:

docker compose ps

Вы должны увидеть два запущенных контейнера: affine-server и affine-postgres.

Теперь ваш AFFiNE на сервере должен быть доступен по IP-адресу вашего VPS и указанному порту (например, http://ВАШ_IP_VPS:3010). Откройте этот адрес в браузере. Вы должны увидеть страницу приветствия AFFiNE, где можно будет создать первого администратора.

Поздравляем, установка AFFiNE успешно завершена! На следующем шаге мы настроим доступ через доменное имя с использованием HTTPS для обеспечения безопасности и удобства.

Настройка Reverse Proxy и HTTPS для AFFiNE

Прямой доступ к AFFiNE по IP-адресу и нестандартному порту не всегда удобен и безопасен. Для обеспечения доступа по доменному имени, шифрования трафика (HTTPS) и возможности размещения нескольких сервисов на одном VPS, рекомендуется использовать reverse proxy. Мы рассмотрим настройку с помощью Nginx и Caddy — двух популярных и эффективных решений.

Прежде чем начать, убедитесь, что у вас есть:

  1. Зарегистрированный домен (например, affine.yourdomain.com).
  2. DNS-запись типа A, указывающая ваш домен на IP-адрес вашего VPS.

Настройка Nginx как Reverse Proxy с HTTPS

1. Установка Nginx:

sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

2. Настройка Nginx для AFFiNE:

Создайте новый файл конфигурации для вашего домена:

sudo nano /etc/nginx/sites-available/affine.conf

Вставьте следующее содержимое, заменив affine.yourdomain.com на ваш реальный домен и 3010 на порт, на котором работает AFFiNE:

server {
    listen 80;
    listen [::]:80;
    server_name affine.yourdomain.com;

    location / {
        proxy_pass http://localhost:3010; # Порт, на котором слушает AFFiNE
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_read_timeout 900s; # Увеличить таймаут для больших файлов/операций
        proxy_send_timeout 900s;
        proxy_connect_timeout 900s;
        # Для WebSocket
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Сохраните и закройте файл.

3. Активация конфигурации и проверка:

sudo ln -s /etc/nginx/sites-available/affine.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Теперь вы можете попробовать открыть http://affine.yourdomain.com в браузере. Если все настроено правильно, вы увидите AFFiNE.

4. Установка Let's Encrypt для HTTPS (Certbot):

Установите Certbot и плагин Nginx:

sudo apt install -y certbot python3-certbot-nginx

Запустите Certbot для получения и установки SSL-сертификата:

sudo certbot --nginx -d affine.yourdomain.com

Следуйте инструкциям Certbot. Он автоматически изменит конфигурацию Nginx для использования HTTPS и настроит автоматическое обновление сертификата. После завершения, ваш affine.conf будет выглядеть примерно так (с дополнительными секциями для 443 порта и редиректом с HTTP на HTTPS):

server {
    listen 80;
    listen [::]:80;
    server_name affine.yourdomain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name affine.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/affine.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/affine.yourdomain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        proxy_pass http://localhost:3010;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_read_timeout 900s;
        proxy_send_timeout 900s;
        proxy_connect_timeout 900s;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Перезапустите Nginx еще раз:

sudo systemctl restart nginx

Теперь ваш AFFiNE на сервере доступен по https://affine.yourdomain.com с защищенным соединением.

Настройка Caddy как Reverse Proxy с HTTPS (Альтернатива)

Caddy — это современный веб-сервер, который автоматически управляет SSL-сертификатами Let's Encrypt, что значительно упрощает настройку HTTPS. Если вы предпочитаете более простой подход, Caddy может быть отличным выбором.

1. Установка Caddy:

Следуйте официальным инструкциям Caddy для установки. Для Debian/Ubuntu:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install -y caddy

2. Настройка Caddyfile:

Создайте или отредактируйте файл /etc/caddy/Caddyfile:

sudo nano /etc/caddy/Caddyfile

Удалите все существующее содержимое и вставьте следующее, заменив affine.yourdomain.com на ваш домен и 3010 на порт, на котором работает AFFiNE:

affine.yourdomain.com {
    reverse_proxy localhost:3010 {
        # Для WebSocket
        header_up Upgrade {http.request.header.Upgrade}
        header_up Connection {http.request.header.Connection}
    }
    # Опционально: включите логирование для отладки
    # log {
    #     output file /var/log/caddy/affine_access.log
    # }
}

Сохраните и закройте файл.

3. Проверка и запуск Caddy:

sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy

Caddy автоматически получит SSL-сертификат и начнет проксировать запросы. Ваш AFFiNE на сервере теперь доступен по https://affine.yourdomain.com.

Выбор между Nginx и Caddy зависит от ваших предпочтений и опыта. Nginx более гибок и мощный, но требует более детальной настройки, тогда как Caddy предлагает простоту и автоматизацию HTTPS "из коробки".

Обслуживание AFFiNE: бэкапы, обновления и мониторинг

Развертывание AFFiNE на VPS — это только половина дела. Для обеспечения стабильной, безопасной и актуальной работы сервиса необходимо регулярно выполнять задачи по обслуживанию: создавать резервные копии данных, обновлять приложение и мониторить его состояние. Эти меры помогут избежать потери данных и поддерживать высокую производительность.

Стратегии резервного копирования данных

Резервное копирование — критически важный аспект любого самохостингового сервиса. В случае с affine self-hosted, основные данные хранятся в базе данных PostgreSQL и, возможно, в файловой системе (если вы используете локальное хранилище файлов вместо S3). Нам нужно регулярно создавать резервные копии этих компонентов.

Что нужно бэкапить:

  1. База данных PostgreSQL: Это самый важный компонент, содержащий всю структуру ваших заметок, проектов и пользователей.
  2. Том данных AFFiNE: Если AFFiNE использует локальное хранилище для файлов (например, загруженных изображений), этот том также должен быть зарезервирован.
  3. Файл .env: Содержит чувствительные переменные окружения, такие как пароль к БД.
  4. Конфигурация Docker Compose: Файл docker-compose.yml.

Методы бэкапа:

  • Бэкап базы данных PostgreSQL:

    Используйте утилиту pg_dump изнутри контейнера PostgreSQL. Вот пример команды:

    docker exec affine-postgres pg_dump -U affine_user -d affine_db > ~/affine_backups/affine_db_$(date +%Y%m%d%H%M%S).sql
            

    Для восстановления: docker exec -i affine-postgres psql -U affine_user -d affine_db < ~/affine_backups/YOUR_BACKUP_FILE.sql

  • Бэкап томов Docker:

    Вы можете создать tar-архив из содержимого именованных томов Docker. Сначала найдите путь к тому на хост-системе:

    docker volume inspect affine_data
            docker volume inspect affine_db_data
            

    Вы найдете путь в поле Mountpoint (например, /var/lib/docker/volumes/affine_affine_data/_data). Затем создайте архив:

    sudo tar -czvf ~/affine_backups/affine_data_$(date +%Y%m%d%H%M%S).tar.gz /var/lib/docker/volumes/affine_affine_data/_data
            
  • Бэкап конфигурационных файлов:
    cp ~/affine/.env ~/affine_backups/
            cp ~/affine/docker-compose.yml ~/affine_backups/
            

Автоматизация бэкапов:

Создайте скрипт, который будет выполнять все эти действия, и настройте его запуск через Cron. Например, скрипт backup_affine.sh:

#!/bin/bash
BACKUP_DIR="/root/affine_backups"
TIMESTAMP=$(date +%Y%m%d%H%M%S)
AFFINE_COMPOSE_DIR="/root/affine"

mkdir -p $BACKUP_DIR

echo "Dumping PostgreSQL database..."
docker exec affine-postgres pg_dump -U affine_user -d affine_db > $BACKUP_DIR/affine_db_${TIMESTAMP}.sql

echo "Backing up AFFiNE data volume..."
# Получаем Mountpoint для тома affine_data
AFFINE_DATA_VOLUME_PATH=$(docker volume inspect affine_affine_data --format '{{ .Mountpoint }}')
sudo tar -czvf $BACKUP_DIR/affine_data_${TIMESTAMP}.tar.gz -C $AFFINE_DATA_VOLUME_PATH .

echo "Backing up Docker Compose files..."
cp $AFFINE_COMPOSE_DIR/.env $BACKUP_DIR/
cp $AFFINE_COMPOSE_DIR/docker-compose.yml $BACKUP_DIR/

echo "Cleaning up old backups (keeping last 7 days)..."
find $BACKUP_DIR -type f -name "affine_db_*.sql" -mtime +7 -delete
find $BACKUP_DIR -type f -name "affine_data_*.tar.gz" -mtime +7 -delete

echo "Backup finished."

Сделайте скрипт исполняемым: chmod +x ~/backup_affine.sh. Добавьте в Cron (например, для ежедневного бэкапа в 3 часа ночи):

sudo crontab -e

Добавьте строку:

0 3 * * * /root/backup_affine.sh >> /var/log/affine_backup.log 2>&1

Для более продвинутых решений по бэкапу рассмотрите использование специализированных инструментов, таких как Restic на VPS, который может автоматически шифровать и отправлять резервные копии на различные облачные хранилища.

Обновление AFFiNE и Docker-образов

Обновления важны для получения новых функций, исправлений ошибок и патчей безопасности. Процесс обновления affine docker контейнеров достаточно прост:

  1. Перейдите в директорию AFFiNE:
    cd ~/affine
            
  2. Остановите текущие контейнеры:
    docker compose down
            
  3. Загрузите последние образы:
    docker compose pull
            

    Это загрузит самые свежие версии образов ghcr.io/toeverything/affine:stable и postgres:15-alpine.

  4. Запустите контейнеры с новыми образами:
    docker compose up -d
            
  5. Очистка старых образов (опционально):
    docker image prune
            

    Это удалит неиспользуемые образы, освободив место на диске.

Рекомендуется выполнять обновления регулярно, но не слишком часто, чтобы иметь время на проверку стабильности новых версий. Перед крупными обновлениями всегда делайте резервную копию!

Мониторинг производительности и состояния

Мониторинг помогает своевременно выявлять проблемы с производительностью, нехватку ресурсов или сбои. Вот несколько базовых инструментов:

  • Docker-команды:
    • docker ps -a: Показывает статус всех контейнеров.
    • docker logs affine-server: Просмотр логов контейнера AFFiNE. Помогает выявить ошибки.
    • docker stats: Отображает использование ресурсов (CPU, RAM, сеть, диск) всеми запущенными контейнерами в реальном времени.
  • Системные утилиты:
    • htop: Интерактивный монитор процессов, показывает использование CPU и RAM на VPS.
    • df -h: Проверяет использование дискового пространства.
    • free -h: Проверяет использование оперативной памяти.
  • Специализированные инструменты:

    Для более глубокого мониторинга рассмотрите установку таких систем, как Netdata на VPS. Netdata предоставляет подробные графики и метрики по всем аспектам работы вашего сервера и Docker-контейнеров, позволяя быстро диагностировать проблемы и оптимизировать ресурсы.

Регулярная проверка логов и мониторинг ресурсов помогут поддерживать ваш AFFiNE на сервере в оптимальном состоянии.

rocket_launch Быстрый выбор

Ищете сервер, который просто работает?

Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.

Смотреть тарифы VPS arrow_forward

Оптимальный VPS-конфиг для AFFiNE под реальную нагрузку

Выбор правильной конфигурации VPS для AFFiNE на VPS критически важен для обеспечения стабильной производительности и отзывчивости приложения. Оптимальный конфиг зависит от количества пользователей, интенсивности их работы и общего объема данных. Valebyte.com предлагает гибкие тарифы, которые можно масштабировать по мере роста потребностей.

Ниже представлена таблица с рекомендациями по VPS-конфигурациям для различных сценариев использования AFFiNE. Указанные цены являются ориентировочными и могут варьироваться в зависимости от провайдера и региона, но дают представление о порядке затрат на высококачественные NVMe VPS.

Сценарий использования Количество пользователей vCPU (ядра) RAM (GB) NVMe/SSD (GB) Примерная стоимость VPS/месяц Примечания
Личное использование / Тестирование 1-2 1 2 40-60 $5 - $10 Для ознакомления с AFFiNE, минимальная нагрузка. Возможны небольшие задержки при интенсивной работе.
Малая команда / Стартап 3-10 2 4 80-100 $10 - $20 Оптимальный баланс производительности и стоимости. Комфортная работа для небольшой группы.
Средняя команда / Отдел 10-25 4 8 160-200 $20 - $40 Высокая производительность для активной совместной работы, большой объем данных, частые обновления.
Крупная команда / Корпоративное использование 25+ 6-8+ 16+ 300+ $40 - $80+ Максимальная производительность и отзывчивость, поддержка большого числа одновременных пользователей.

Ключевые факторы при выборе VPS для AFFiNE

  1. Тип диска (NVMe vs. SSD vs. HDD):

    NVMe — это бескомпромиссный выбор. База данных PostgreSQL, используемая AFFiNE, активно работает с диском. Высокая скорость чтения/записи NVMe-дисков значительно ускоряет операции с БД, загрузку контента и общую отзывчивость приложения. SSD также приемлемы, но HDD следует избегать любой ценой для продуктивных сред.

  2. Процессор (vCPU):

    Чем больше ядер, тем лучше параллельная обработка запросов. AFFiNE и PostgreSQL могут эффективно использовать несколько ядер, особенно при одновременной работе нескольких пользователей или выполнении сложных запросов.

  3. Оперативная память (RAM):

    Достаточный объем RAM позволяет кэшировать данные базы данных и самого приложения, минимизируя обращения к диску и ускоряя работу. Недостаток RAM приведет к активному использованию SWAP, что резко снижает производительность.

  4. Сетевое подключение:

    Высокоскоростное сетевое подключение (1 Гбит/с) важно для быстрой загрузки и синхронизации данных, особенно при работе с мультимедийным контентом или совместном редактировании.

  5. Расположение VPS:

    Выбирайте дата-центр, расположенный географически близко к вашей основной аудитории, чтобы минимизировать задержки (latency).

  6. Масштабируемость:

    Убедитесь, что ваш провайдер (как Valebyte.com) предлагает легкое масштабирование ресурсов VPS (CPU, RAM, диска) без необходимости переустановки или миграции сервера.

Для большинства пользователей, начинающих с AFFiNE на сервере, рекомендуется ориентироваться на конфигурацию для "Малой команды" или "Средней команды", чтобы сразу обеспечить комфортную и стабильную работу. Это позволит избежать проблем с производительностью на ранних этапах и даст запас для роста.

Устранение распространенных проблем при работе с AFFiNE

При установке AFFiNE на VPS и его последующем обслуживании могут возникать различные проблемы. Знание того, как их диагностировать и устранять, поможет поддерживать ваш сервис в рабочем состоянии. Вот несколько распространенных сценариев и их решения.

Проблемы с запуском или доступностью контейнеров

  1. Контейнер не запускается или постоянно перезагружается:
    • Диагностика: Используйте docker compose ps, чтобы увидеть статус контейнеров. Если статус Exited или (unhealthy), просмотрите логи: docker compose logs affine-server и docker compose logs postgres.
    • Причины: Неправильные переменные окружения (например, неверный пароль к БД в .env), нехватка ресурсов (RAM), повреждение данных тома.
    • Решение: Проверьте файл .env и docker-compose.yml на опечатки. Убедитесь, что на VPS достаточно RAM. Если проблема в повреждении БД, попробуйте удалить том affine_db_data (docker volume rm affine_affine_db_data) и перезапустить контейнеры (это приведет к потере данных, если нет бэкапа).
  2. Не удается получить доступ к AFFiNE по IP:порт:
    • Диагностика: Проверьте, что контейнер affine-server запущен и слушает на правильном порту (docker compose ps). Проверьте файрвол на VPS: sudo ufw status.
    • Причины: Порт в docker-compose.yml не соответствует порту, который вы пытаетесь использовать. Файрвол блокирует трафик на этом порту.
    • Решение: Убедитесь, что порт, указанный в ports: - "3010:3000" (где 3010 — порт на хосте), открыт в UFW: sudo ufw allow 3010/tcp.

Проблемы с Reverse Proxy и HTTPS

  1. Доступ по домену не работает или выдает ошибку 502/504:
    • Диагностика: Проверьте логи Nginx (sudo tail -f /var/log/nginx/error.log) или Caddy (sudo journalctl -u caddy -f). Убедитесь, что DNS-запись для вашего домена корректно указывает на IP вашего VPS (используйте dig affine.yourdomain.com).
    • Причины: Ошибка в конфигурации Nginx/Caddy (неправильный proxy_pass порт), AFFiNE не запущен или слушает на другом порту. Проблемы с DNS.
    • Решение: Убедитесь, что proxy_pass указывает на правильный IP и порт (например, http://localhost:3010). Проверьте, что AFFiNE доступен напрямую по IP:порт. Обновите DNS-записи и дождитесь их распространения.
  2. HTTPS не работает (сертификат недействителен или отсутствует):
    • Диагностика: Проверьте конфигурацию Nginx/Caddy на наличие SSL-директив. Проверьте статус Certbot (sudo certbot certificates).
    • Причины: Certbot не смог получить или обновить сертификат (часто из-за проблем с DNS или файрволом, блокирующим порт 80). Ошибка в пути к файлам сертификатов в Nginx.
    • Решение: Запустите Certbot снова: sudo certbot --nginx -d affine.yourdomain.com. Убедитесь, что порт 80 и 443 открыты в файрволе. Проверьте, что домен правильно настроен в DNS.

Проблемы с производительностью и дисковым пространством

  1. AFFiNE работает медленно или "зависает":
    • Диагностика: Используйте docker stats для мониторинга использования CPU и RAM контейнерами. Используйте htop для общего состояния VPS. Проверьте логи AFFiNE на наличие ошибок.
    • Причины: Недостаточно RAM или CPU на VPS для текущей нагрузки. Медленный диск. Большое количество пользователей.
    • Решение: Рассмотрите возможность увеличения ресурсов VPS (CPU, RAM). Убедитесь, что вы используете NVMe-диски. Оптимизируйте конфигурацию AFFiNE, если есть такая возможность.
  2. Недостаточно дискового пространства:
    • Диагностика: df -h покажет использование диска на хосте. docker system df покажет использование диска Docker.
    • Причины: Накопление старых логов, неиспользуемых Docker-образов/томов, или просто большой объем данных AFFiNE.
    • Решение: Очистите старые Docker-образы и кэш: docker system prune -a. Удалите старые бэкапы. Рассмотрите возможность увеличения дискового пространства VPS. Для управления файлами на сервере, особенно при очистке, может быть полезен такой инструмент как Filebrowser на VPS.

При возникновении любых проблем, всегда начинайте с просмотра логов соответствующих служб (Docker, Nginx/Caddy, самого AFFiNE) — это самый эффективный способ понять причину сбоя.

Выводы

Развертывание AFFiNE на VPS с использованием Docker Compose предоставляет надежное и масштабируемое решение для управления знаниями и проектами, обеспечивая полный контроль над вашими данными и гибкость в настройке. Выбор оптимальной конфигурации VPS от Valebyte.com, тщательная настройка reverse proxy с HTTPS и регулярное обслуживание, включая бэкапы и мониторинг, гарантируют стабильную и безопасную работу вашего affine self-hosted экземпляра. Настоятельно рекомендуем выбирать VPS с NVMe-дисками и достаточным объемом RAM для обеспечения максимальной производительности.

Готовы выбрать сервер?

VPS и выделенные серверы в 72+ странах с мгновенной активацией и полным root-доступом.

Начать сейчас →

Поделиться записью:

support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.