Данная статья предназначена для тех, кто искал подробное и понятное руководство о том, как установить Outline и Keycloak с использованием Docker Compose.

Outline — это бесплатный самостоятельный вики-движок и совместная база знаний для команд.

💾 Репозиторий, использованный в этом руководстве, можно найти на GitHub.

В данном руковдстве Outline будет использовать учетные записи пользователей, созданные в Keycloak, для доступа к панели управления Outline и MinIO для хранения загруженных при помощи Outline документов.

Мы будем использовать Traefik в качестве нашего обратного прокси. Он будет отвечать за получение криптографических сертификатов от Let’s Encrypt для ваших доменных имен и направлять запросы к соответствующим службам на основе этих доменов.

❗ Помните, что без безопасного соединения сервисы работать не будут.

❗ Для получения криптографических сертификатов вам потребуются записи типа A во внешней зоне DNS, которые указывают на IP-адрес вашего сервера, где установлен Traefik. Если вы создали эти записи недавно, следует подождать, прежде чем начать установку сервисов. Полная репликация данных записей между DNS-серверами может занять от нескольких минут до 48 часов или даже больше в редких случаях.

💡 Обратите внимание на известное ограничение MinIO: вы не можете использовать свой домен или поддомен в качестве имени для вашего хранилища. Например, если адрес вашей вики outline.<your-domain>.<tld>, выберите для вашего хранилища другое имя.

❗ Убедитесь, что AWS_S3_UPLOAD_BUCKET_URL в файле .env является публично доступным URL, соответствующим вашему домену. Это важно, так как сервер Outline направляет трафик прямо на MinIO.

В этом руководстве мы будем рассматривать тот случай, когда у вас уже есть сервер с установленной на нем операционной системой Ubuntu Server 22.04 LTS.

Подробно о том, как установить Ubuntu Server 22.04 LTS, вы можете прочитать в моем руководстве “Установка Ubuntu Server 22.04 LTS”.

Также на сервере должен быть установлен Docker Engine и Docker Compose.

Узнать о том, как установить Docker Engine на Ubuntu Server, вы можете, прочитав “Установка Docker Engine и Docker Compose на Ubuntu Server”.

Кроме того, на сервер должен быть установлен OpenSSH, а также открыт 22 порт, чтобы иметь возможность подключаться к серверу по протоколу SSH.

Для установки OpenSSH на сервер вы можете воспользоваться командой:

sudo apt install openssh-server

Если вы планируете подключиться к серверу, используя операционную систему Windows, то можете воспользоваться PuTTY или MobaXterm.

В данном руководстве рассматривается подключение к серверу при помощи терминального эмулятора iTerm2, установленного на операционную систему macOS.

💡 Обратите внимание, вам потребуется открыть следующие порты TCP для доступа к сервисам:

  • TCP порт 80 - для получения бесплатного криптографического сертификата через центр сертификации Let’s Encrypt.
  • TCP порт 443 - для доступа к веб-интерфейсу Outline.

Подключаемся к серверу, на который планируется установить Outline.

Теперь необходимо создать сети для ваших служб.

Создаем сеть для Traefik с помощью команды:

docker network create traefik-network

Установка Outline и Keycloak с использованием Docker Compose

Создаем сеть для Keycloak с помощью команды:

docker network create keycloak-network

Установка Outline и Keycloak с использованием Docker Compose

Создаем сеть для Outline с помощью команды:

docker network create outline-network

Установка Outline и Keycloak с использованием Docker Compose

Далее нужно клонировать репозиторий, который содержит конфигурационные файлы, которые содержать все необходимые условия для работы Outline.

Клонировать репозиторий можно с помощью команды:

git clone https://github.com/heyValdemar/outline-keycloak-traefik-letsencrypt-docker-compose.git

Установка Outline и Keycloak с использованием Docker Compose

Переходи в директорию с репозиторием с помощью команды:

cd outline-keycloak-traefik-letsencrypt-docker-compose

Установка Outline и Keycloak с использованием Docker Compose

Далее вам необходимо изменить переменные в файле .env в соответствии с вашими требованиями.

💡 Обратите внимание на известное ограничение MinIO: вы не можете использовать свой домен или поддомен в качестве имени для вашего хранилища. Например, если адрес вашей вики outline.<your-domain>.<tld>, выберите для вашего хранилища другое имя.

❗ Убедитесь, что AWS_S3_UPLOAD_BUCKET_URL в файле .env является публично доступным URL, соответствующим вашему домену. Это важно, так как сервер Outline направляет трафик прямо на MinIO.

❗ Значение для переменной OUTLINE_OIDC_CLIENT_SECRET можно получить после установки Keycloak с помощью 02-keycloak-outline-docker-compose.yml.

❗ Кроме того, вам нужно указать свои значения для OUTLINE_SECRET_KEY и OUTLINE_UTILS_SECRET.

Значения для OUTLINE_SECRET_KEY и OUTLINE_UTILS_SECRET можно сгенерировать с помощью команды:

openssl rand -hex 32

Теперь запустим Traefik с помощью команды:

docker compose -f 01-traefik-outline-letsencrypt-docker-compose.yml -p traefik up -d

Установка Outline и Keycloak с использованием Docker Compose

Далее запустим Keycloak с помощью команды:

docker compose -f 02-keycloak-outline-docker-compose.yml -p keycloak up -d

Установка Outline и Keycloak с использованием Docker Compose

С рабочей станции переходим по ссылке https://keycloak.outline.heyvaldemar.net, где keycloak.outline.heyvaldemar.net - имя моего субдомена для доступа к панели управления Keycloak. Соответственно, вам необходимо указать свое доменное имя, которое указывает на IP-адрес вашего сервера с установленным сервисом Traefik, который перенаправит запрос к Keycloak.

Нажимаем на кнопку “Administration Console”.

Установка Outline и Keycloak с использованием Docker Compose

Указываем имя пользователя и пароль, заданный ранее в файле .env, и нажимаем на кнопку “Sign In”.

Установка Outline и Keycloak с использованием Docker Compose

Теперь необходимо создать новый Realm и правильно его настроить, чтобы пользователи могли входить в Outline при помощи Keycloak.

Нажимаем на кнопку “Create Realm” слева вверху.

Установка Outline и Keycloak с использованием Docker Compose

В поле “Realm name” указываем “outline” (маленькими буквами) и нажимаем на кнопку “Create”.

Установка Outline и Keycloak с использованием Docker Compose

Далее выбираем “Clients” в разделе “Manage” и нажимаем на кнопку “Create client”.

Установка Outline и Keycloak с использованием Docker Compose

В поле “Client type” выбираем “OpenID Connect”.

В поле “Client ID” указываем “outline” (маленькими буквами) и нажимаем на кнопку “Next”.

Установка Outline и Keycloak с использованием Docker Compose

Далее необходимо включить “Client authentication” и выбрать “Standard flow” в разделе “Authentication flow”.

Все остальные значения долнжы быть отключены.

Нажимаем на кнопку “Next”.

Установка Outline и Keycloak с использованием Docker Compose

В поле “Root URL” указываем https://outline.heyvaldemar.net/

В поле “Home URL” указываем https://outline.heyvaldemar.net/

В поле “Valid redirect URIs” указываем https://outline.heyvaldemar.net/*

💡 Обратите внимание, outline.heyvaldemar.net — доменное имя моего сервиса. Соответственно, вам необходимо указать свое доменное имя, которое указывает на IP-адрес вашего сервера с установленным сервисом Traefik, который перенаправит запрос к Outline.

Нажимаем на кнопку “Save”.

Установка Outline и Keycloak с использованием Docker Compose

Переходим на вкладку “Credentials” и копируем содержимое поля “Client secret”.

Установка Outline и Keycloak с использованием Docker Compose

Вставляем скопированное содержимое поля “Client secret” в переменную OUTLINE_OIDC_CLIENT_SECRET в файле .env.

Установка Outline и Keycloak с использованием Docker Compose

Теперь создадим пользователя, который сможет войти в Outline с помощью Keycloak.

Выбираем “Users” в разделе “Manage” и нажимаем на кнопку “Add user”.

Установка Outline и Keycloak с использованием Docker Compose

На следующем шаге необходимо указать: username, адрес электронной почты, имя, фамилию и пароль.

💡 Обратите внимание, если вы укажите адрес электронной почты, то пользователь сможет войти в Outline не только используя username, но и email.

Нажимаем на кнопку “Create”.

Установка Outline и Keycloak с использованием Docker Compose

Далее необходимо задать пароль для нового пользователя.

Переходим на вкладку “Credentials” и нажимаем на кнопку “Set password”.

Установка Outline и Keycloak с использованием Docker Compose

Указываем надежные пароль и нажимаем на кнопку “Save”.

Установка Outline и Keycloak с использованием Docker Compose

Нажимаем на кнопку “Save password”, чтобы подтвердить назначение нового пароля для пользователя.

Установка Outline и Keycloak с использованием Docker Compose

Новый пароль успешно установлен.

Установка Outline и Keycloak с использованием Docker Compose

Теперь можно запустить Outline с сопутствующими сервисами и войти в Outline, используя ранее созданного пользователя.

Запустим Outline с помощью команды:

docker compose -f 03-outline-minio-redis-docker-compose.yml -p outline up -d

Установка Outline и Keycloak с использованием Docker Compose

Для доступа к панели управления Outline необходимо с рабочей станции перейти по ссылке https://outline.heyvaldemar.net, где outline.heyvaldemar.net — доменное имя моего сервиса. Соответственно, вам необходимо указать свое доменное имя, которое указывает на IP-адрес вашего сервера с установленным сервисом Traefik, который перенаправит запрос к Outline.

💡 Обратите внимание, вам нужно указать доменное имя сервиса, заданное ранее в файле .env.

Нажимаем на кнопку “Continue with Keycloak”.

Установка Outline и Keycloak с использованием Docker Compose

Указываем имя пользователя или адрес электронной почты и пароль, заданный ранее в Keycloak.

Установка Outline и Keycloak с использованием Docker Compose

Добро пожаловать в панель управления Outline.

Установка Outline и Keycloak с использованием Docker Compose

Для доступа к панели управления MinIO необходимо с рабочей станции перейти по ссылке https://console.minio.outline.heyvaldemar.net, где console.minio.outline.heyvaldemar.net — доменное имя моего сервиса. Соответственно, вам необходимо указать свое доменное имя, которое указывает на IP-адрес вашего сервера с установленным сервисом Traefik, который перенаправит запрос к MinIO.

💡 Обратите внимание, вам нужно указать доменное имя сервиса, заданное ранее в файле .env.

Указываем имя пользователя и пароль, заданный ранее в файле .env, и нажимаем на кнопку “Login”.

Установка Outline и Keycloak с использованием Docker Compose

Для доступа к панели управления Traefik необходимо с рабочей станции перейти по ссылке https://traefik.outline.heyvaldemar.net, где traefik.outline.heyvaldemar.net — доменное имя моего сервиса. Соответственно, вам необходимо указать свое доменное имя, которое указывает на IP-адрес вашего сервера с установленным Traefik.

💡 Обратите внимание, вам нужно указать доменное имя сервиса, заданное ранее в файле .env.

Указываем имя пользователя и пароль, заданный ранее в файле .env, и нажимаем на кнопку “OK”.

Установка Outline и Keycloak с использованием Docker Compose

Добро пожаловать в панель управления Traefik.

Установка Outline и Keycloak с использованием Docker Compose


Мои курсы

🎓 Погрузитесь в мои обширные курсы по информационным технологиям, разработанные как для энтузиастов, так и для профессионалов. Независимо от того, хотите ли вы освоить Docker, покорить Kubernetes или углубить свои навыки в области DevOps, мои курсы предлагают структурированный путь к повышению вашего технического мастерства.

Мои услуги

💼 Загляните в мой каталог услуг и узнайте, как мы можем сделать вашу технологическую жизнь лучше. Будь то повышение эффективности вашей IT-инфраструктуры, развитие вашей карьеры или расширение технологических горизонтов — я здесь, чтобы помочь вам достичь ваших целей. От DevOps-трансформаций до сборки игровых компьютеров — давайте сделаем ваши технологии непревзойденными!

Пополнить запасы моего кофе

💡 Telegram | Boost
💖 PayPal
🏆 Patreon
💎 GitHub
🥤 BuyMeaCoffee
🍪 Ko-fi

Подпишись

Telegram | Блог
🎬 YouTube
🐦 Twitter
🎨 Instagram
🐘 Mastodon
🧵 Threads
🎸 Facebook
🧊 Bluesky
🎥 TikTok
💻 LinkedIn
📣 daily.dev Squad
🧩 LeetCode
🐈 GitHub

Этот контент создан искусственным интеллектом?

Нет! Каждая статья — результат моей работы, наполненной страстью к Docker и десятилетиями опыта в IT. Я применяю ИИ для улучшения грамматики, чтобы обеспечить четкость технических деталей, однако все идеи, стратегии и рекомендации исключительно мои. Этот метод иногда может вызывать срабатывание детекторов ИИ, но можете быть уверены, что вся представленная информация и опыт — подлинно мои.

Владимир Михалев
Я - Владимир Михалев, Капитан Docker, но друзья могут называть меня Вальдемарыч.

DevOps комьюнити

Привет! 👋 Если у тебя есть вопросы по установке или настройке, то задайте их мне и другим IT-экспертам нашего сообщества: