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

Получить VPS arrow_forward
eco Начальный Туториал

Установка Linkwarden на VPS: самоуправляемый менеджер закладок с тегами и коллекциями

calendar_month Aug 17, 2026 schedule 21 мин. чтения visibility 45 просмотров
Установка 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 Application Settings
# -----------------------------
# You MUST change the SECRET_KEY to a strong, random string.
# Generate one using openssl rand -base64 32 or similar.
SECRET_KEY=ВАШ_СЕКРЕТНЫЙ_КЛЮЧ_ЗДЕСЬ # Обязательно сгенерируйте уникальный ключ!
NEXTAUTH_URL=https://linkwarden.ВАШ_ДОМЕН.ru # URL, по которому будет доступен Linkwarden

# Database Settings (PostgreSQL)
# -----------------------------
# You MUST change POSTGRES_PASSWORD to a strong, random password.
POSTGRES_USER=linkwardenuser
POSTGRES_PASSWORD=ВАШ_ПАРОЛЬ_БАЗЫ_ДАННЫХ_ЗДЕСЬ # Обязательно сгенерируйте уникальный пароль!
POSTGRES_DB=linkwarden

# Docker Volumes for data persistence
# ----------------------------------
# These define where Linkwarden and PostgreSQL data will be stored on your host.
# Ensure these paths exist and Docker has permissions to write to them.
LINKWARDEN_DATA_DIR=./linkwarden_data
POSTGRES_DATA_DIR=./postgres_data

# Optional: Timezone for Linkwarden
# Find your timezone here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TZ=Europe/Moscow

# Optional: Enable email for account recovery, invitations etc.
# 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 установлен из официального репозитория.

Всегда делайте бэкап перед крупными обновлениями! Это ваша страховка на случай непредвиденных проблем.

Troubleshooting + 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 или оптимизации базы данных.

Был ли этот гайд полезен?

Ваш отзыв помогает нам улучшать гайды.

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

Отправьте гайд тому, кому он может пригодиться.

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.