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

Отримати VPS arrow_forward
eco Початковий Туторіал

Встановлення Linkward

calendar_month Aug 17, 2026 schedule 21 хв. читання visibility 40 переглядів
Установка Linkwarden на VPS: самоуправляемый менеджер закладок с тегами и коллекциями
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Встановлення Linkwarden на VPS: самокерований менеджер закладок з тегами та колекціями

TL;DR

У цьому докладному посібнику ми крок за кроком налаштуємо Linkwarden — потужний самокерований менеджер закладок — на вашому Virtual Private Server (VPS). Ви дізнаєтеся, як підготувати сервер на базі Ubuntu 24.04 LTS, встановити Docker, розгорнути Linkwarden за допомогою Docker Compose, налаштувати безпечний доступ через HTTPS з використанням Caddy та реалізувати стратегію резервного копіювання для захисту ваших даних.

  • Налаштування Linkwarden на VPS для повного контролю над вашими закладками.
  • Використання Docker та Docker Compose для легкого встановлення та керування.
  • Забезпечення безпеки за допомогою HTTPS (Caddy) та базового захисту сервера.
  • Розгортання на Ubuntu 24.04 LTS з актуальними версіями ПЗ на 2026 рік.
  • Впровадження системи резервного копіювання для збереження даних.
  • Отримання повноцінного менеджера закладок з тегами, колекціями та пошуком.

Що ми налаштовуємо і навіщо

Схема: Що ми налаштовуємо і навіщо
Схема: Що ми налаштовуємо і навіщо

Ми будемо встановлювати Linkwarden — це відкрите та самокероване рішення для збереження, організації та архівування веб-посилань. У світі, де інформація постійно змінюється, а статті та сайти зникають, Linkwarden дозволяє вам зберігати не тільки посилання, але й повні копії веб-сторінок, забезпечуючи їх постійну доступність. Це ідеальний інструмент для тих, хто активно працює з інформацією, проводить дослідження, збирає корисні ресурси або просто хоче мати надійний архів своїх улюблених сайтів.

У підсумку, ви отримаєте повністю функціональний, приватний менеджер закладок, доступний з будь-якої точки світу через ваш власний домен. Він буде оснащений потужним пошуком, можливістю додавати теги та створювати колекції, а також функцією архівації сторінок, щоб контент не зникав. Це означає повний контроль над вашими даними та відсутність залежності від сторонніх сервісів, які можуть змінити свою політику або припинити існування.

Альтернативи та чому self-hosted на VPS

Існує безліч рішень для керування закладками. До них відносяться хмарні сервіси, такі як Pocket, Raindrop.io, Instapaper, а також інші self-hosted варіанти, наприклад, Wallabag або Shaarli.

  • Хмарні сервіси: Зручні, не вимагають налаштування, але ви довіряєте свої дані третій стороні, і функціонал часто обмежений платними підписками. Ви не контролюєте зберігання даних та їх конфіденційність.
  • Інші self-hosted рішення: Wallabag та Shaarli також є чудовими проєктами, але Linkwarden виділяється сучасним інтерфейсом, активною розробкою та набором функцій, які часто більш орієнтовані на "архівацію" та "керування знаннями", ніж просто на "збереження для читання пізніше".

Вибір self-hosted рішення на VPS дає вам повний суверенітет над вашими даними. Ви самі вирішуєте, де і як зберігаються ваші закладки, хто має до них доступ, і які функції ви використовуєте. Це особливо важливо для розробників, дослідників, команд, яким потрібна приватна база знань, або будь-кого, хто цінує конфіденційність та контроль. VPS надає необхідну гнучкість та масштабованість для такого роду застосунків, дозволяючи вам за необхідності легко збільшувати ресурси або додавати інші сервіси на той самий сервер.

Який VPS-конфіг потрібен для цього завдання

Схема: Який VPS-конфіг потрібен для цього завдання
Схема: Який VPS-конфіг потрібен для цього завдання

Linkwarden — відносно легковажний застосунок, особливо для індивідуального використання або невеликої команди. Однак, чим більше посилань ви зберігаєте і чим частіше використовуєте функцію архівації сторінок (яка зберігає повний HTML та медіа), тим більше ресурсів знадобиться.

Мінімальні вимоги (для 1-5 користувачів, до 1000 посилань):

  • CPU: 1 vCPU (сучасний процесор, наприклад, Intel Xeon E5 або AMD EPYC).
  • RAM: 2 ГБ (для стабільної роботи Docker, Linkwarden та бази даних).
  • Диск: 40-60 ГБ SSD (для операційної системи, Docker-образів, бази даних Linkwarden та архівованих сторінок. SSD значно прискорює роботу).
  • Мережа: 100 Мбіт/с (достатньо для більшості завдань, якщо немає інтенсивного завантаження/вивантаження архівованих даних).

Рекомендований конфіг (для 5-20 користувачів, до 10000 посилань або активної архівації):

  • CPU: 2 vCPU.
  • RAM: 4 ГБ.
  • Диск: 80-120 ГБ SSD (або NVMe для максимальної продуктивності).
  • Мережа: 1 Гбіт/с.

Для оренди VPS з такими характеристиками можна розглянути VPS із зазначеними характеристиками, що підходить для більшості завдань з розгортання Linkwarden.

Коли потрібен dedicated, а не VPS

Dedicated сервер може знадобитися, якщо:

  • Ви плануєте використовувати Linkwarden для дуже великої команди (сотні користувачів).
  • Ви будете архівувати величезну кількість сторінок (терабайти даних), що вимагає значних обсягів сховища та високої швидкості введення/виведення.
  • На сервері розміщуватимуться інші ресурсомісткі сервіси, крім Linkwarden.
  • Вам необхідна максимальна продуктивність та ізоляція, які VPS не може забезпечити через спільну інфраструктуру.
  • Потрібні специфічні апаратні конфігурації, недоступні на VPS (наприклад, RAID-масиви, спеціалізовані мережеві карти).

Локація: на що впливає

Вибір локації VPS впливає на кілька факторів:

  • Затримка (Latency): Чим ближче сервер до вас та ваших основних користувачів, тим нижча затримка та швидшою буде відповідь веб-інтерфейсу.
  • Юридичні аспекти: Законодавство країни, де розташований сервер, може впливати на приватність та обробку даних. Враховуйте це, якщо ваші дані чутливі.
  • Доступність мережі: У деяких регіонах мережева інфраструктура більш розвинена та стабільна.
  • Вартість: Ціни на VPS можуть варіюватися залежно від регіону.

Для більшості користувачів Linkwarden достатньо вибрати локацію, яка географічно близька до основної аудиторії, щоб забезпечити мінімальну затримку.

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

Схема: Підготовка сервера
Схема: Підготовка сервера

Перед встановленням Linkwarden необхідно виконати базове налаштування безпеки та встановити необхідні утиліти на ваш VPS. Ми будемо використовувати Ubuntu 24.04 LTS (Noble Numbat) як основну операційну систему, оскільки вона є однією з найпопулярніших та добре підтримуваних платформ для серверів.

Підключіться до вашого VPS по SSH, використовуючи дані, надані вашим провайдером. Зазвичай це виглядає так:


ssh root@ВАШ_IP_АДРЕС

1. Оновлення системи

Насамперед, оновіть список пакетів та встановлені пакети до актуальних версій.


sudo apt update             # Оновити список доступних пакетів
sudo apt upgrade -y         # Оновити встановлені пакети
sudo apt autoremove -y      # Видалити непотрібні пакети

2. Створення нового користувача з правами sudo

Працювати під обліковим записом root небезпечно. Створіть нового користувача та надайте йому права sudo.


sudo adduser linkwardenuser # Створити нового користувача з іменем linkwardenuser
sudo usermod -aG sudo linkwardenuser # Додати користувача до групи sudo

Після створення користувача, вийдіть із сесії root та увійдіть під новим користувачем:


exit
ssh linkwardenuser@ВАШ_IP_АДРЕС

3. Налаштування SSH-ключів (рекомендується)

Для підвищення безпеки рекомендується використовувати SSH-ключі замість паролів. Якщо у вас ще немає SSH-ключа, згенеруйте його на вашій локальній машині:


ssh-keygen -t rsa -b 4096 # Генерувати новий SSH-ключ (на локальній машині)

Потім скопіюйте публічний ключ на ваш VPS:


ssh-copy-id linkwardenuser@ВАШ_IP_АДРЕС # Скопіювати публічний ключ на сервер

Після цього можна відключити автентифікацію за паролем у файлі /etc/ssh/sshd_config, змінивши PasswordAuthentication yes на PasswordAuthentication no та перезапустивши службу SSH. Це значно підвищить безпеку.

4. Налаштування брандмауера (UFW)

Увімкніть Uncomplicated Firewall (UFW) та дозвольте лише необхідні порти: SSH (22), HTTP (80) та HTTPS (443).


sudo apt install ufw -y # Встановити UFW, якщо не встановлено
sudo ufw allow OpenSSH # Дозволити SSH-з'єднання
sudo ufw allow http # Дозволити HTTP (порт 80)
sudo ufw allow https # Дозволити HTTPS (порт 443)
sudo ufw enable # Увімкнути брандмауер
sudo ufw status # Перевірити статус брандмауера

Підтвердіть увімкнення, натиснувши 'y'.

5. Встановлення Fail2Ban

Fail2Ban допомагає захистити сервер від атак методом підбору пароля, блокуючи IP-адреси, з яких відбуваються численні невдалі спроби входу.


sudo apt install fail2ban -y # Встановити Fail2Ban
sudo systemctl enable fail2ban # Увімкнути автозапуск Fail2Ban
sudo systemctl start fail2ban # Запустити Fail2Ban

Можна створити файл конфігурації /etc/fail2ban/jail.local для тонкого налаштування, але базова установка вже забезпечує хороший захист SSH.


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Переконайтеся, що секція [sshd] активна (enabled = true).

6. Встановлення базових утиліт

Встановіть корисні утиліти, які можуть знадобитися в процесі встановлення та налагодження.


sudo apt install curl wget git htop unzip -y # Встановити curl, wget, git, htop та unzip

Тепер ваш сервер готовий до встановлення Linkwarden.

Встановлення ПЗ — покроково

Схема: Встановлення ПЗ — покроково
Схема: Встановлення ПЗ — покроково

Linkwarden найкраще розгортати з використанням Docker та Docker Compose, що забезпечує ізоляцію, переносимість та простоту керування. Ми встановимо Docker Engine та Docker Compose, а потім розгорнемо Linkwarden.

1. Встановлення Docker Engine (актуально для 2026 року)

Для Ubuntu 24.04 LTS рекомендується встановлювати Docker з офіційного репозиторію Docker.


# Видалити старі версії Docker, якщо вони є
for pkg in docker.io docker-doc docker-compose docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; do sudo apt remove $pkg -y; done

# Встановити необхідні пакети для використання репозиторію HTTPS
sudo apt update
sudo apt install ca-certificates curl gnupg -y

# Додати офіційний GPG ключ Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Додати репозиторій Docker до APT джерел
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Оновити список пакетів з урахуванням нового репозиторію
sudo apt update

# Встановити Docker Engine, Docker CLI та Containerd (версії будуть актуальні на 2026 рік, наприклад, Docker 26.x)
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# Додати поточного користувача до групи docker, щоб не використовувати sudo для команд docker
sudo usermod -aG docker $USER

# Застосувати зміни групи (необхідно вийти та знову увійти в SSH сесію)
# Для цього вийдіть з поточної SSH-сесії та увійдіть заново: exit, потім ssh linkwardenuser@ВАША_IP_АДРЕСА

Після повторного входу в SSH-сесію перевірте встановлення Docker:


docker run hello-world # Запустити тестовий контейнер для перевірки встановлення Docker

Ви повинні побачити повідомлення "Hello from Docker!".

2. Встановлення Docker Compose (якщо не встановлено як плагін)

Починаючи з Docker Engine 20.10, Docker Compose включено як плагін docker compose. Якщо ви встановили його за допомогою docker-compose-plugin, окреме встановлення не потрібне. Ви можете перевірити його наявність:


docker compose version # Перевірити версію Docker Compose плагіна (наприклад, v2.24.x)

Якщо команда docker compose version працює, то Docker Compose встановлено. Якщо ні, або ви віддаєте перевагу старому синтаксису docker-compose, встановіть його окремо:


# Завантажити актуальну версію Docker Compose (наприклад, 2.24.x для 2026 року)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# Надати права на виконання
sudo chmod +x /usr/local/bin/docker-compose

# Створити символічне посилання (опціонально, для зручності)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# Перевірити версію
docker-compose --version # Перевірити версію Docker Compose (наприклад, Docker Compose version 2.24.5)

3. Створення директорії для Linkwarden

Створіть директорію, де зберігатимуться файли конфігурації Linkwarden.


mkdir ~/linkwarden # Створити директорію linkwarden у домашній папці користувача
cd ~/linkwarden # Перейти до створеної директорії

4. Завантаження файлу docker-compose.yml

Linkwarden надає офіційний файл docker-compose.yml. Завантажте його.


wget https://raw.githubusercontent.com/linkwarden/linkwarden/main/docker-compose.yml # Завантажити файл docker-compose.yml

Відкрийте файл docker-compose.yml для ознайомлення. Він міститиме сервіси linkwarden (сам застосунок) та db (база даних PostgreSQL).

5. Створення файлу .env

Створіть файл .env для зберігання змінних оточення та секретів. Це найкращий спосіб керувати конфігурацією без зміни основного файлу docker-compose.yml.


nano .env # Створити та відкрити файл .env для редагування

Вставте наступний вміст, змінивши значення на свої:


# Налаштування застосунку Linkwarden
# -----------------------------
# Ви ПОВИННІ змінити SECRET_KEY на сильний, випадковий рядок.
# Згенеруйте його за допомогою openssl rand -base64 32 або подібного.
SECRET_KEY=ВАШ_СЕКРЕТНИЙ_КЛЮЧ_ТУТ # Обов'язково згенеруйте унікальний ключ!
NEXTAUTH_URL=https://linkwarden.ВАШ_ДОМЕН.ru # URL, за яким буде доступний Linkwarden

# Налаштування бази даних (PostgreSQL)
# -----------------------------
# Ви ПОВИННІ змінити POSTGRES_PASSWORD на сильний, випадковий пароль.
POSTGRES_USER=linkwardenuser
POSTGRES_PASSWORD=ВАШ_ПАРОЛЬ_БАЗИ_ДАНИХ_ТУТ # Обов'язково згенеруйте унікальний пароль!
POSTGRES_DB=linkwarden

# Docker Volumes для збереження даних
# ----------------------------------
# Вони визначають, де дані Linkwarden та PostgreSQL зберігатимуться на вашому хості.
# Переконайтеся, що ці шляхи існують і Docker має дозволи на запис до них.
LINKWARDEN_DATA_DIR=./linkwarden_data
POSTGRES_DATA_DIR=./postgres_data

# Опціонально: Часовий пояс для Linkwarden
# Знайдіть свій часовий пояс тут: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TZ=Europe/Moscow

# Опціонально: Увімкнути електронну пошту для відновлення облікового запису, запрошень тощо.
# SMTP_HOST=smtp.your-email-provider.com
# SMTP_PORT=587
# [email protected]
# SMTP_PASSWORD=YOUR_EMAIL_PASSWORD
# SMTP_FROM=Linkwarden 

Важливо:

  • Замініть ВАШ_СЕКРЕТНИЙ_КЛЮЧ_ТУТ на випадковий рядок. Ви можете згенерувати його командою openssl rand -base64 32.
  • Замініть ВАШ_ПАРОЛЬ_БАЗИ_ДАНИХ_ТУТ на надійний, складний пароль.
  • Вкажіть ваш домен у NEXTAUTH_URL.
  • Переконайтеся, що LINKWARDEN_DATA_DIR та POSTGRES_DATA_DIR вказують на існуючі або будуть створені директорії.

Збережіть файл (Ctrl+X, Y, Enter).

6. Створення директорій для даних

Створіть директорії, вказані в .env для зберігання даних Linkwarden та PostgreSQL.


mkdir linkwarden_data # Створити директорію для даних Linkwarden
mkdir postgres_data # Створити директорію для даних PostgreSQL

7. Запуск Linkwarden

Тепер ви готові запустити Linkwarden за допомогою Docker Compose.


docker compose up -d # Запустити сервіси Linkwarden та PostgreSQL у фоновому режимі

Ця команда завантажить необхідні Docker-образи (linkwarden/linkwarden та postgres), створить контейнери та запустить їх. Процес може зайняти кілька хвилин залежно від швидкості вашого інтернет-з'єднання.

8. Перевірка статусу контейнерів

Переконайтеся, що всі контейнери запущені та працюють коректно.


docker compose ps # Показати статус запущених контейнерів

Ви повинні побачити статус Up для обох сервісів. Якщо якийсь сервіс має статус Exited або Restarting, перевірте логи:


docker compose logs linkwarden # Переглянути логи контейнера linkwarden
docker compose logs db # Переглянути логи контейнера бази даних

На цьому етапі Linkwarden запущено на вашому сервері, але він доступний лише за внутрішніми портами (зазвичай 3000 для Linkwarden). Для доступу ззовні та забезпечення безпеки нам потрібно буде налаштувати зворотний проксі-сервер з HTTPS.

Конфігурація

Схема: Конфігурація
Схема: Конфігурація

Після запуску контейнерів Linkwarden необхідно налаштувати доступ до програми через ваш домен, забезпечити безпеку за допомогою HTTPS та виконати початкове налаштування. Ми будемо використовувати Caddy як зворотний проксі-сервер, оскільки він автоматично керує сертифікатами Let's Encrypt та спрощує налаштування HTTPS.

1. Налаштування DNS

Перед тим як приступити до налаштування Caddy, переконайтеся, що ваш домен або піддомен (наприклад, linkwarden.ВАШ_ДОМЕН.ru) вказує на IP-адресу вашого VPS. Додайте запис типу A в налаштуваннях DNS вашого доменного реєстратора:

Тип записуІм'я (Хост)Значення (IP-адреса)TTL
AlinkwardenВАШ_IP_АДРЕС_VPSАвтоматично / 3600

Дайте час на розповсюдження DNS-записів (зазвичай від кількох хвилин до кількох годин).

2. Встановлення Caddy

Ми встановимо Caddy як окремий сервіс Docker, щоб він міг легко керувати HTTPS для Linkwarden.

Спочатку створіть директорію для конфігурації Caddy та його даних:


cd ~/linkwarden # Перейдіть до директорії Linkwarden, якщо ви не там
mkdir caddy # Створити директорію для Caddy
mkdir caddy/data # Директорія для даних Caddy (сертифікати)
mkdir caddy/config # Директорія для конфігурації Caddy

Створіть файл Caddyfile у директорії ~/linkwarden/caddy/config:


nano caddy/config/Caddyfile # Створити та відкрити Caddyfile

Вставте наступний вміст, замінивши linkwarden.ВАШ_ДОМЕН.ru на ваш фактичний домен:


linkwarden.ВАШ_ДОМЕН.ru {
    # Проксіювати всі запити до контейнера Linkwarden
    reverse_proxy linkwarden:3000

    # Увімкнути стиснення даних
    encode gzip zstd

    # Додаткові заголовки безпеки (рекомендується)
    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        X-Frame-Options "DENY"
        X-Content-Type-Options "nosniff"
        Referrer-Policy "strict-origin-when-cross-origin"
        Permissions-Policy "geolocation=(), microphone=(), camera=()"
    }

    # Логування (опціонально)
    log {
        output file /var/log/caddy/access.log
    }
}

Збережіть файл (Ctrl+X, Y, Enter).

3. Додавання Caddy до Docker Compose

Тепер відредагуйте ваш файл ~/linkwarden/docker-compose.yml, щоб додати сервіс Caddy.


nano docker-compose.yml # Відкрити docker-compose.yml для редагування

Додайте наступну секцію caddy в кінець файлу, на тому ж рівні відступу, що й linkwarden та db:


  caddy:
    image: caddy:2.7.6-alpine # Актуальна версія Caddy на 2026 рік
    restart: unless-stopped
    ports:
      - "80:80" # Відкрити порт 80 для Let's Encrypt HTTP-01 challenge
      - "443:443" # Відкрити порт 443 для HTTPS
    volumes:
      - ./caddy/config/Caddyfile:/etc/caddy/Caddyfile # Мапінг вашого Caddyfile
      - ./caddy/data:/data # Мапінг для даних Caddy (сертифікати)
      - ./caddy/config:/config # Мапінг для конфігурації Caddy
      - ./caddy/logs:/var/log/caddy # Мапінг для логів Caddy (якщо увімкнено логування)
    networks:
      - default # Caddy має бути в тій же мережі, що й Linkwarden

Переконайтеся, що секція networks: для linkwarden та db також присутня і вказує на default (або на ім'я вашої мережі, якщо ви її визначили явно). Якщо у вас немає секції networks в кінці файлу, додайте її:


networks:
  default:
    external: false

Збережіть docker-compose.yml (Ctrl+X, Y, Enter).

4. Перезапуск Linkwarden з Caddy

Тепер оновіть стеки Docker Compose, щоб запустити Caddy.


docker compose down # Зупинити та видалити існуючі контейнери Linkwarden (дані збережуться у volumes)
docker compose up -d # Запустити всі сервіси, включно з Caddy

Перевірте статус контейнерів:


docker compose ps # Переконайтеся, що caddy також запущено

Ви повинні побачити Up для linkwarden, db та caddy.

5. Перевірка працездатності

Відкрийте ваш браузер і перейдіть за адресою https://linkwarden.ВАШ_ДОМЕН.ru. Ви повинні побачити сторінку привітання Linkwarden. Caddy автоматично отримає та налаштує SSL-сертифікат від Let's Encrypt.

Якщо виникли проблеми, перевірте логи Caddy:


docker compose logs caddy # Переглянути логи Caddy для налагодження

При першому доступі до Linkwarden вам буде запропоновано створити обліковий запис адміністратора. Заповніть форму, використовуючи надійний пароль. Це буде ваш основний обліковий запис для керування закладками та користувачами.

6. Налаштування Linkwarden через веб-інтерфейс

Після створення облікового запису ви зможете увійти до Linkwarden. Вивчіть налаштування в розділі "Admin Settings", де можна налаштувати:

  • User Management: Додавати нових користувачів, керувати їхніми ролями.
  • Appearance: Змінити зовнішній вигляд.
  • Integrations: Налаштувати інтеграції (наприклад, з RSS).
  • Email Settings: Якщо ви налаштували SMTP в .env, тут можна перевірити та відправити тестовий лист.

Вітаємо! Ваш самокерований менеджер закладок Linkwarden повністю налаштований та захищений HTTPS.

Резервні копії та обслуговування

Схема: Резервні копії та обслуговування
Схема: Резервні копії та обслуговування

Регулярне резервне копіювання та своєчасне обслуговування є критично важливими для будь-якого production-сервісу. Linkwarden зберігає ваші цінні закладки та архіви, тому вкрай важливо забезпечити їх збереження.

1. Що резервувати

Для Linkwarden необхідно резервувати наступні компоненти:

  • База даних PostgreSQL: Містить усі метадані закладок, теги, колекції, облікові записи користувачів. Це найважливіший компонент.
  • Дані Linkwarden (linkwarden_data): Включає директорію з архівованими веб-сторінками, якщо ви використовуєте цю функцію.
  • Конфігурація Caddy (caddy/config): Файл Caddyfile.
  • Дані Caddy (caddy/data): Сертифікати Let's Encrypt. Хоча їх можна перевипустити, резервна копія прискорює відновлення.
  • Файл .env Linkwarden: Містить секретний ключ та паролі.

2. Простий скрипт авторезервування

Створимо скрипт, який виконуватиме дамп бази даних та архівуватиме важливі файли. Ми використовуватимемо docker exec для роботи з базою даних всередині контейнера та tar для архівації.

Створіть директорію для скриптів резервного копіювання та сам скрипт:


mkdir -p ~/backups/linkwarden # Створити директорію для резервних копій
nano ~/backups/linkwarden/backup_linkwarden.sh # Створити скрипт резервного копіювання

Вставте наступний вміст у файл backup_linkwarden.sh:


#!/bin/bash

# --- Конфігурація ---
BACKUP_DIR="/home/$USER/backups/linkwarden" # Директорія для зберігання резервних копій
LINKWARDEN_ROOT_DIR="/home/$USER/linkwarden" # Коренева директорія Linkwarden
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/linkwarden_backup_${TIMESTAMP}.tar.gz"
DB_DUMP_FILE="linkwarden_db_dump_${TIMESTAMP}.sql"
CONTAINER_NAME_DB="linkwarden-db-1" # Ім'я контейнера бази даних (може відрізнятися, перевірте docker ps)
DB_USER="linkwardenuser" # Користувач бази даних з вашого .env
DB_NAME="linkwarden" # Ім'я бази даних з вашого .env

# --- Створення дампу бази даних ---
echo "Створення дампу бази даних PostgreSQL..."
docker exec -t ${CONTAINER_NAME_DB} pg_dumpall -U ${DB_USER} > "${BACKUP_DIR}/${DB_DUMP_FILE}"
if [ $? -eq 0 ]; then
    echo "Дамп бази даних успішно створено: ${BACKUP_DIR}/${DB_DUMP_FILE}"
else
    echo "Помилка при створенні дампу бази даних."
    exit 1
fi

# --- Архівація даних Linkwarden, Caddy та конфігів ---
echo "Архівація даних Linkwarden, Caddy та конфігів..."
tar -czf "${BACKUP_FILE}" -C "${LINKWARDEN_ROOT_DIR}" \
    linkwarden_data \
    postgres_data \
    caddy/config/Caddyfile \
    caddy/data \
    .env \
    ${DB_DUMP_FILE} # Включаємо дамп БД в загальний архів

if [ $? -eq 0 ]; then
    echo "Архів успішно створено: ${BACKUP_FILE}"
else
    echo "Помилка при створенні архіву."
    exit 1
fi

# --- Видалення тимчасового дампу БД ---
rm "${BACKUP_DIR}/${DB_DUMP_FILE}"

# --- Очищення старих резервних копій (зберігати останні 7 днів) ---
echo "Видалення старих резервних копій..."
find "${BACKUP_DIR}" -type f -name 'linkwarden_backup_*.tar.gz' -mtime +7 -delete
echo "Резервні копії старші 7 днів видалено."

echo "Резервне копіювання завершено."

Збережіть файл (Ctrl+X, Y, Enter) і зробіть його виконуваним:


chmod +x ~/backups/linkwarden/backup_linkwarden.sh # Зробити скрипт виконуваним

Перевірте ім'я контейнера бази даних командою docker ps і за необхідності змініть CONTAINER_NAME_DB у скрипті. Воно може бути linkwarden-db-1 або linkwarden_db_1 залежно від версії Docker Compose.

3. Автоматизація резервного копіювання за допомогою Cron

Налаштуйте Cron для щоденного запуску скрипта резервного копіювання. Відкрийте crontab вашого користувача:


crontab -e # Відкрити файл crontab для редагування

Додайте наступний рядок в кінець файлу, щоб скрипт запускався щодня о 03:00 ночі:


0 3 * * * /home/linkwardenuser/backups/linkwarden/backup_linkwarden.sh >> /home/linkwardenuser/backups/linkwarden/backup.log 2>&1

Збережіть та закрийте файл. Тепер ваші резервні копії створюватимуться автоматично.

4. Куди зберігати резервні копії

Зберігання резервних копій на тому ж сервері, що й основний сервіс, вкрай ризиковано. Якщо сервер вийде з ладу, ви втратите і сервіс, і резервні копії. Рекомендується використовувати зовнішні сховища:

  • S3-сумісне сховище: Хмарні сервіси, такі як Amazon S3, DigitalOcean Spaces, Backblaze B2. Використовуйте rclone або awscli для автоматичного завантаження архівів після їх створення.
  • Окремий VPS: Можна налаштувати інший, менш потужний VPS для зберігання резервних копій та використовувати rsync по SSH для їх синхронізації.
  • NAS/локальне сховище: Якщо у вас є власне мережеве сховище, можна налаштувати VPN-тунель та передавати резервні копії туди.

Приклад додавання rclone до скрипта резервного копіювання (після створення архіву):


# --- Завантаження резервної копії в S3 (приклад з rclone) ---
# Переконайтеся, що rclone встановлено та налаштовано (rclone config)
# rclone copy "${BACKUP_FILE}" "s3remote:linkwarden-backups/"
# if [ $? -eq 0 ]; then
#     echo "Резервну копію успішно завантажено в S3."
# else
#     echo "Помилка при завантаженні резервної копії в S3."
# fi

5. Оновлення: rolling vs maintenance window

Підтримувати Linkwarden та сервер в актуальному стані критично важливо для безпеки та стабільності.

  • Оновлення системи (Ubuntu): Рекомендується виконувати раз на місяць.
    
    sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
                

    Перезавантаження сервера (sudo reboot) може знадобитися після оновлення ядра або важливих системних компонентів. Плануйте це на час найменшого навантаження (maintenance window).

  • Оновлення Docker-образів Linkwarden:

    Для оновлення Linkwarden до нової версії:

    
    cd ~/linkwarden # Перейти до директорії Linkwarden
    docker compose pull # Завантажити нові версії образів
    docker compose up -d # Перестворити контейнери з новими образами
                

    Рекомендується виконувати це в "вікно обслуговування", оскільки контейнери Linkwarden будуть перезапущені, що спричинить короткочасний простій сервісу.

  • Оновлення Docker Engine: Виконується разом із системними оновленнями, якщо Docker встановлено з офіційного репозиторію.

Завжди робіть резервну копію перед великими оновленнями! Це ваша страховка на випадок непередбачених проблем.

Вирішення проблем + FAQ

Навіть при найретельнішому налаштуванні можуть виникнути проблеми. Цей розділ допоможе вам діагностувати та вирішити найпоширеніші з них.

Не можу отримати доступ до Linkwarden за доменом. Що робити?

Спочатку перевірте, чи правильно налаштовані DNS-записи. Використовуйте команду dig linkwarden.ВАШ_ДОМЕН.ru на локальній машині, щоб переконатися, що вона вказує на IP-адресу вашого VPS. Далі, перевірте, що Caddy запущений і не має помилок у логах: docker compose logs caddy. Переконайтеся, що порти 80 і 443 відкриті в брандмауері UFW на вашому VPS: sudo ufw status. Якщо Caddy не може отримати сертифікат, це може бути пов'язано з проблемами DNS або блокуванням портів.

Linkwarden не запускається після docker compose up -d.

Перевірте логи контейнера Linkwarden: docker compose logs linkwarden. Часті причини: некоректно налаштований файл .env (наприклад, відсутній SECRET_KEY або неправильний NEXTAUTH_URL), проблеми з підключенням до бази даних (перевірте логи контейнера db: docker compose logs db), або конфлікт портів, якщо ви вручну змінили docker-compose.yml і якийсь порт вже зайнятий.

Який VPS-конфіг мінімально підійде?

Для одного користувача або невеликої групи (до 5 осіб) з помірною кількістю закладок (до 1000) та нечастим використанням функції архівації сторінок, мінімально підійде VPS з 1 vCPU, 2 ГБ RAM та 40-60 ГБ SSD. Цього буде достатньо для стабільної роботи Linkwarden та його бази даних. Однак, якщо ви плануєте активно використовувати архівацію або масштабувати сервіс, рекомендується вибирати конфігурацію з 2 vCPU та 4 ГБ RAM.

Що вибрати — VPS чи dedicated для цього завдання?

Для більшості користувачів та невеликих команд VPS буде оптимальним вибором. Він пропонує достатню продуктивність, гнучкість та економічність. Dedicated сервер виправданий лише у випадках, коли Linkwarden використовуватиметься дуже великою організацією (сотні користувачів), потрібне зберігання терабайтів архівованих сторінок, або якщо на сервері працюватимуть інші вкрай ресурсомісткі програми, що вимагають ексклюзивного доступу до апаратних ресурсів. Dedicated сервери значно дорожчі та вимагають більшого досвіду в управлінні.

Як оновити Linkwarden до нової версії?

Для оновлення Linkwarden до нової версії достатньо перейти в директорію ~/linkwarden та виконати команди: docker compose pull (щоб завантажити нові образи) і потім docker compose up -d (щоб перестворити та запустити контейнери з новими образами). Завжди рекомендується зробити бекап перед оновленням. Також слідкуйте за офіційними релізами Linkwarden на GitHub щодо важливих змін або міграцій бази даних.

Чому Linkwarden повільно працює?

Причини повільної роботи можуть бути різними:

  • Нестача ресурсів VPS: Перевірте завантаження CPU та RAM за допомогою htop. Якщо RAM постійно заповнена, або CPU працює на 100%, можливо, вам потрібен VPS з більшими ресурсами.
  • Повільний диск: Якщо у вас HDD замість SSD, операції з базою даних та читання архівованих сторінок будуть повільними.
  • Проблеми з базою даних: Перевірте логи db контейнера. Можливо, база даних потребує оптимізації, або відбувається занадто багато запитів.
  • Проблеми з мережею: Якщо Linkwarden встановлений далеко від вас, або у вашого провайдера проблеми з мережею, це може викликати затримки.

Як скинути пароль адміністратора Linkwarden?

Якщо ви забули пароль адміністратора, його можна скинути через командний рядок. Спочатку отримайте оболонку всередині контейнера Linkwarden: docker exec -it linkwarden-linkwarden-1 bash (ім'я контейнера може відрізнятися, перевірте docker ps). Потім виконайте команду для скидання пароля (точна команда може змінюватися, перевірте документацію Linkwarden, але зазвичай це щось на зразок npm run cli user:reset-password -- -e [email protected] -p new_strong_password). Після скидання вийдіть з контейнера (exit).

Як налаштувати кастомний домен для Linkwarden, якщо я вже використовую Caddy для інших сервісів?

Якщо у вас вже є Caddy, що працює на хості, вам не потрібно запускати його в Docker Compose. Просто додайте нову секцію для linkwarden.ВАШ_ДОМЕН.ru у ваш існуючий Caddyfile на хості. Переконайтеся, що Linkwarden і Caddy можуть спілкуватися (наприклад, якщо Caddy на хості, а Linkwarden у Docker, вам потрібно буде відкрити порт Linkwarden або використовувати Docker-мережу). Приклад: reverse_proxy 172.17.0.X:3000, де 172.17.0.X - IP-адреса контейнера Linkwarden у Docker-мережі (можна дізнатися через docker inspect).

Висновки та наступні кроки

Схема: Висновки та наступні кроки
Схема: Висновки та наступні кроки

Ви успішно встановили та налаштували Linkwarden на вашому VPS, створивши надійний, приватний та повністю контрольований менеджер закладок. Тепер у вас є потужний інструмент для збереження, організації та архівування цінної веб-інформації, захищений HTTPS та з регулярними резервними копіями.

Куди рухатися далі?

  • Запросіть користувачів: Якщо Linkwarden призначений для команди, запросіть колег та налаштуйте їхні облікові записи.
  • Встановіть розширення для браузера: Скористайтеся офіційними розширеннями Linkwarden для Chrome, Firefox або Edge, щоб швидко зберігати посилання.
  • Вивчіть додаткові функції: Ознайомтеся з можливостями Linkwarden, такими як RSS-імпорт, теги, колекції, функція "режим читання" та API для інтеграції з іншими сервісами.
  • Моніторинг продуктивності: Налаштуйте систему моніторингу (наприклад, Prometheus + Grafana або Netdata) для відстеження ресурсів VPS та продуктивності Linkwarden.
  • Масштабування: У міру зростання обсягу даних або кількості користувачів розгляньте можливість збільшення ресурсів VPS або оптимізації бази даних.

Чи був цей гайд корисним?

Ваш відгук допомагає нам покращувати гайди.

Share this post:

Надішліть гайд тому, кому він може стати в пригоді.

Telegram VKVK WhatsApp Facebook LinkedIn XX

встановлення linkwarden на vps: самокерований менеджер закладок з тегами і колекціями
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.