Установка Linkding на Ubuntu 22.04 через Docker и Nginx

Ссылка Linkding — это простой и гибкий веб-менеджер закладок для Linux. Похожий на офлайн-менеджеры закладок, он позволяет создавать и аннотировать накопленные веб-ссылки. Это руководство объясняет, как установить Linkding на Ubuntu 22.04 с помощью Docker и Docker Compose и как создать обычного (не‑администратора) пользователя в инстансе.
Оглавление
- Зачем размещать собственный менеджер закладок
- Требования и подготовка (Docker, Docker Compose)
- Развёртывание контейнера Linkding
- Настройка Nginx как обратного прокси и получение SSL
- Создание и управление пользователями в Linkding
- Резервное копирование и миграция данных
- Безопасность и эксплуатация
- Проверки и критерии приёмки
- Часто задаваемые вопросы
Зачем размещать собственный менеджер закладок
Linkding легко развернуть на существующем сервере и начать использовать всего за несколько минут. Это значит, что не нужно выделять новую физическую машину — достаточно контейнера. Linkding расширяет базовый набор функций менеджеров закладок: совместное использование ссылок, многопользовательский режим и простая админ-панель.

Важно: Linkding ориентирован на простоту — он хранит данные в SQLite по умолчанию, что удобно для небольших инстансов и для быстрой установки.
Требования и подготовка
Что потребуется:
- Сервер с Ubuntu 22.04 (можно виртуальная машина или VPS).
- Доступ с правами sudo.
- Открытый порт 80/443 (если планируете публичный доступ).
- Назначенное доменное имя для SSL (если требуется публичный доступ).
Минимальные пакеты и команды для подготовки (корректные команды для терминала):
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo nano /etc/apt/sources.list.d/docker.listВ файл /etc/apt/sources.list.d/docker.list вставьте:
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stableОбновите пакеты и установите Docker, плагин Docker Compose и Nginx:
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginxПримечание: команды выше исправлены для корректной работы в типичной среде Ubuntu 22.04.
Развёртывание контейнера Linkding
- Создайте каталог для проекта и перейдите в него:
mkdir -p ~/linkding && cd ~/linkding- Создайте файл docker-compose.yml (например, через nano):
nano ./docker-compose.ymlВставьте следующий корректный compose-файл:
version: "3"
services:
linkding:
container_name: ${LD_CONTAINER_NAME:-linkding}
image: sissbruecker/linkding:latest
ports:
- ${LD_HOST_PORT:-9090}:9090
volumes:
- ${LD_HOST_DATA_DIR:-./data}:/etc/linkding/data
env_file:
- .env
restart: unless-stopped- Создайте файл .env с переменными окружения:
nano ~/linkding/.envПример содержимого .env (обязательно замените логин/пароль на надёжные значения):
LD_CONTAINER_NAME="linkding"
LD_HOST_PORT="9090"
LD_HOST_DATA_DIR="./data"
LD_SUPERUSER_NAME="linkding" # ЗАМЕНИТЕ НА БЕЗОПАСНОЕ ИМЯ
LD_SUPERUSER_PASSWORD="linkding" # ЗАМЕНИТЕ НА НАДЁЖНЫЙ ПАРОЛЬ
LD_DISABLE_BACKGROUND_TASKS="False"
LD_DISABLE_URL_VALIDATION="False"
LD_ENABLE_AUTH_PROXY="False"
LD_CSRF_TRUSTED_ORIGINS="https://linkding.your-domain-name.here"- Запустите контейнеры в фоновом режиме:
docker compose up -dПроверка статуса контейнера:
docker ps --filter name=linkdingЕсли контейнер запущен, Linkding доступен по адресу http://localhost:9090 на сервере.
Настройка Nginx как обратного прокси и получение SSL
Чтобы сделать сервис доступным публично и включить шифрование TLS, настроим обратный прокси Nginx.
- Создайте новый конфиг сайта:
sudo nano /etc/nginx/sites-available/linkdingВставьте следующий корректный блок:
server {
listen 80;
listen [::]:80;
root /var/www/html;
server_name linkding.your-domain-name.here;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:9090;
}
}- Удалите включение дефолтного сайта и создайте символьную ссылку:
sudo rm -f /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/linkding /etc/nginx/sites-enabled/linkding- Перезапустите Nginx и включите его при загрузке:
sudo systemctl restart nginx
sudo systemctl enable --now nginxВключение SSL через Certbot (Let’s Encrypt)
Убедитесь, что snapd установлен и обновлён, затем установите Certbot и получите сертификат:
sudo snap install core
sudo snap install certbot --classic
sudo certbot register --agree-tos -m ramces@email.invalid
sudo certbot --nginx -d linkding.your-domain-name.hereПосле успешного выполнения certbot автоматически настроит перенаправление HTTP → HTTPS и установит сертификаты. Проверьте в браузере https://linkding.your-domain-name.here

Важно: если вы используете нестандартный порт или дополнительную защиту (WAF, CDN), убедитесь, что Certbot может подтвердить владение доменом по HTTP.
Создание и управление пользователями в Linkding
Войдите в интерфейс Linkding, используя суперпользователя, заданного в .env.
Откройте Settings → Admin (Настройки → Админ) для доступа в панель администратора.

- Чтобы добавить пользователя: в разделе Authentication and Authorization (Аутентификация и авторизация) нажмите Add рядом с Users, введите имя и пароль, затем нажмите Save.


После создания нового пользователя проверьте вход в новом окне браузера.

Отключение существующего пользователя
- В админ-панели выберите Users.
- Кликните нужное имя пользователя, в разделе Permissions снимите галочку Active и сохраните.


Резервное копирование и миграция данных
Linkding использует SQLite (db.sqlite3) по умолчанию. Есть два способа получить резервную копию:
- Через интерфейс: Settings → General → Export → Download — экспортирует данные текущего пользователя в формате, пригодном для импорта.
- Файловая копия: скопируйте файл db.sqlite3 из каталога данных контейнера (по умолчанию ~/linkding/data):
# Остановите контейнер перед копированием для согласованности
docker compose down
cp ~/linkding/data/db.sqlite3 ~/backups/linkding-db-$(date +%F).sqlite3Преимущество файловой копии: она содержит полную базу данных для всего инстанса (все пользователи и закладки).
Советы по миграции:
- При переносе на другой сервер просто скопируйте папку data и .env, затем выполните docker compose up на новом хосте.
- При миграции на более крупную СУБД (Postgres) потребуется изменить конфигурацию и выполнить миграции — это продвинутый сценарий, требующий тестирования.
Безопасность и эксплуатация
Ключевые рекомендации по безопасности:
- Используйте надёжные пароли для суперпользователя и админов.
- Отключите публичный доступ к Docker сокету (unix:///var/run/docker.sock) для не‑админов.
- Настройте брандмауэр (ufw) и разрешите только нужные порты:
sudo apt install ufw
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable- Включите автоматическое обновление Certbot и следите за сроком действия сертификатов.
- Рассмотрите установку fail2ban для защиты панели от перебора паролей.
- Делайте регулярные бэкапы db.sqlite3 и храните их вне сервера.
Дополнительные меры:
- Разверните Linkding за VPN или в закрытой сети, если он предназначен только для внутреннего пользования.
- Если ожидается большое количество пользователей, рассмотрите перевод на серверную СУБД (Postgres) для повышения масштабируемости.
Проверки и критерии приёмки
Критерии приёмки установки (что проверить перед сдачей):
- Контейнер linkding запущен (docker ps показывает контейнер).
- [ ] Сайт доступен по HTTPS (https://linkding.your-domain-name.here) и сертификат валиден.
- Вход под суперпользователем работает.
- Создание нового пользователя проходит и новый пользователь может войти с другого браузера.
- Экспорт и копирование db.sqlite3 работают и файл не пустой.
- Регулярное резервное копирование настроено (вручную или скриптом).
Тестовые сценарии (acceptance):
- Попытка входа с неверным паролем должна не допустить доступа.
- Добавление и последующий экспорт закладки: добавьте закладку, затем экспортируйте и убедитесь, что её данные присутствуют в файле экспорта.
- Отключение пользователя: после снятия галочки Active пользователь не должен иметь доступа.
Практические решения и шаблоны
Шаблон команды для бэкапа и архивации (можно поместить в cron):
#!/bin/bash
TIMESTAMP=$(date +"%F_%H-%M")
SRC_DIR=~/linkding/data
DST_DIR=~/backups/linkding
mkdir -p "$DST_DIR"
cp "$SRC_DIR/db.sqlite3" "$DST_DIR/db.sqlite3.$TIMESTAMP"
find "$DST_DIR" -type f -mtime +30 -name 'db.sqlite3.*' -deleteРекомендуемый план восстановления после сбоя:
- Остановить контейнеры: docker compose down
- Восстановить файл db.sqlite3 в ~/linkding/data
- Запустить контейнеры: docker compose up -d
Роль‑ориентированные чек‑листы:
- Администратор:
- Проверить статус контейнеров
- Обновить образ Linkding и тестировать обновления на стенде
- Делать и проверять бэкапы
- Разработчик / Сисадмин:
- Настроить CI для тестового развёртывания
- Настроить мониторинг контейнера и логов
- Обычный пользователь:
- Создавать/удалять закладки
- Экспортировать свои закладки при необходимости
Альтернативные подходы и когда этот метод не подходит
Когда Linkding с Docker — хорошее решение:
- Нужен лёгкий приватный менеджер закладок для небольших команд.
- Хотите быстрое развёртывание и простое хранение (SQLite).
Когда это не подходит:
- Вам требуется масштабируемая система с высокой нагрузкой — лучше использовать приложение с серверной СУБД (Postgres) и более крупной архитектурой.
- Нужны продвинутые возможности каталогизации/поиска на уровне корпоративной индексации — Linkding рассчитан на простоту.
Быстрая инструкция (SOP) — свод действий
- Подготовить сервер и установить Docker + Nginx.
- Создать ~/linkding, docker-compose.yml и .env с надёжными параметрами.
- docker compose up -d и убедиться, что контейнер запустился.
- Настроить Nginx, проверить локально по HTTP.
- Установить Certbot и получить сертификат для домена.
- Войти в Linkding, создать пользователей и проверить экспорт/бэкапы.
Мини‑модель принятия решения (Mermaid)
flowchart TD
A[Нужен менеджер закладок?] --> B{Публичный доступ?}
B -- Да --> C[Использовать Docker + Nginx + Certbot]
B -- Нет --> D[Использовать Docker локально, выключить Nginx]
C --> E{Много пользователей?}
D --> E
E -- Да --> F[Рассмотреть СУБД Postgres и масштабирование]
E -- Нет --> G[SQLite 'стандартная конфигурация' подходит]Часто задаваемые вопросы
Можно ли установить Linkding без Docker?
Нет. Разработчики Linkding ориентировали проект на контейнеризацию: приложение имеет зависимости, которые проще и безопаснее разворачивать в контейнерах.
Можно ли импортировать существующие закладки в Linkding?
Да. Linkding поддерживает импорт из форматов, экспортируемых большинством браузеров (например, HTML‑экспорт Chrome/Edge). Также в интерфейсе есть опции экспорта/импорта.
Как сделать бэкап базы Linkding вне Docker?
Да. Либо через интерфейс Settings → Export для отдельных пользователей, либо скопировав файл db.sqlite3 из ~/linkding/data — он содержит всю базу данных инстанса.
Краткое резюме
Linkding — удобный и быстрый способ получить приватный менеджер закладок на собственном сервере. Подход с Docker + Nginx + Certbot обеспечивает простоту установки и безопасный доступ по HTTPS. Для продакшна обязательно включайте регулярные бэкапы, настройте брандмауэр и контролируйте доступ к Docker сокету.

Автор фото (фон): Lauren Mancke via Unsplash. Логотип и скриншоты: Linkding Github. Изменения и скриншоты: Ramces Red.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента