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

Отримати VPS arrow_forward

AFFiNE на VPS: встановлення, налаштування та обслуговування

calendar_month June 16, 2026 schedule 20 хв. читання visibility 21 переглядів
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.