Docker и Nginx - ВСЁ!
Больше невозможно по нормальному собрать некоторые сервисы и получить подтверждение Let's Encrypt ssl сертификата!
Больше невозможно по нормальному собрать некоторые сервисы и получить подтверждение Let's Encrypt ssl сертификата!
В этой части мы установим и настроим докер-контейнер с Audiobookshelf для потокового воспроизведения аудиокниг практически на любых устройствах (iOS вроде пока в бете).
В проводнике Windows, на смонтированном ранее сетевом диске, создаем папку "audiobooks".
В папку закидываем наши аудиокниги.
Важно!
Чтобы потом было меньше мороки, сразу делаем правильную структуру папок.
Audiobookshelf автоматически распознаёт порядок томов, если в начале папки стоит числовой префикс.
Рекомендованный формат:
01. Название книги
02. Название книги
03. Название книги
То есть важно:
две цифры (01, 02, 03…) — чтобы порядок был стабильным до 99 книг.


Структура папок (только картинкой, потому как текстом - ломает структуру :(
Как правило, обложки уже находятся внутри папки с книгами и Audiobookshelf сам их подтянет при добавлении.
Эти простые правила, по итогу, сэкономят вам кучу времени, когда будете собирать библиотеку.
Ничего сложного в этом процессе нет.
Заходим в админку Unraid и открываем вкладку Apps.
В поиске вводим audiobookshelf и нажимаем Install.
В настройках контейнера указываем путь к папке с вашими аудиокнигами, например:
/mnt/user/nas/audiobooks/
Сохраняем и запускаем контейнер.
На этом базовая установка завершена.



Установка и настройка контейнера
Теперь в админке Unraid открываем вкладку Docker — там будет отображаться наш новоиспечённый контейнер audiobookshelf.
Чтобы попасть в веб-интерфейс приложения, нажимаем левой кнопкой мыши по контейнеру и выбираем WebUI. Откроется новая вкладка с панелью управления Audiobookshelf.
Первый запуск
При первом входе система предложит задать пароль для пользователя root — создаём новый пароль и попадаем в админку.
Настройка интерфейса
Первым делом открываем Настройки — нажимаем на иконку шестерёнки в правом верхнем углу.
В настройках выбираем русский язык и активируем нужные галочки (как на скриншоте).


Создание пользователей
Теперь переходим во вкладку Пользователи и создаём отдельные аккаунты для себя и родных.
Да, можно пользоваться учёткой root, но это не сильно правильно и не очень безопасно.
Каждый пользователь, по итогу, получает:
свой логин и пароль,
свою историю прослушивания,
собственный прогресс по каждой книге.
Audiobookshelf будет запоминать, где конкретный пользователь остановился, даже если слушает на разных устройствах.
Не забываем заглянуть в настройки автоматического создания бэкапов и выставить параметры в соответствии со своими предпочтениями.




Настало время создать нашу первую библиотеку.
В данном примере я создам её в единственном варианте — по пути, который мы заранее подготовили на NAS, в папке audiobooks.
На моём основном Unraid у меня внутри audiobooks лежит несколько подпапок: detective, fantasy, romance и т.д. Для каждой из них создана своя отдельная библиотека по жанрам. Это удобно, если сервисом пользуются не только вы, но и семья/друзья — у всех свои литературные предпочтения, да и мешанины из разных жанров будет куда как меньше.
Вкладка Подробности
Указываем название библиотеки и путь к папке с аудиокнигами.
Вкладка Настройки
Выставляем галочки так, как на скриншоте.
Вкладка Сканер
Настраиваем параметры сканирования — тоже по образцу на скрине.
От корректных настроек сканера зависит правильный парсинг ваших книг.
Высочайший приоритет отдаём варианту “Folder structure”.
Планировщик
Этот раздел не трогаем.
Ура! Библиотека создана
Жмём кнопку Сканировать и ждём окончания процесса.







Создание библиотеки
Готово — библиотекой уже можно пользоваться.
Но… скорее всего, не для всех книг автоматически подтянулось описание (метаданные). Исправим это.
Наводим курсор на книгу без описания и нажимаем иконку редактирования в правом верхнем углу.
Откроется меню настроек конкретной книги.
Вкладка Match
Начнём отсюда — здесь находится "волшебная" кнопка поиска метаданных.
Выбираем источник метаданных. Для русскоязычных книг вариантов обычно два: Google Books или FantLab.
Правильно указываем название книги и автора.
Жмакаем Поиск.
Если для книги есть описание, оно появится в результатах: обложка, аннотация, автор, жанр и многое другое.
Выбираем подходящий вариант — все данные подтянутся автоматически.
Если у вас уже была собственная обложка и она нравится больше, чем предложенные, просто снимите галочку с замены — тогда сохранится ваша.
Вкладка Cover
Если описание есть, а обложки нет — переходим во вкладку Cover.
Здесь можно выполнить поиск по названию и автору или загрузить свою картинку вручную.
Вкладка Details
Переходим во вкладку Details и любуемся результатом — появилось описание, обложка и корректные метаданные.
Жмём Сохранить, и книга готова!




Слева находится основная навигация по разделам:
Домой — Стартовая страница: краткое меню, последние добавления, "продолжить прослушивание" и т.п.
Библиотека — Все ваши книги в одном списке.
Серии — Книги, сгруппированные по сериям. Очень удобно, если у вас много циклов.
Коллекции — Здесь вы можете создавать собственные коллекции. Они общедоступны внутри вашей библиотеки — все пользователи, имеющие доступ, смогут их просматривать.
Авторы — Каталог авторов. Если вы заполните метаданные, здесь появятся фото, биографические данные и прочая полезная информация.
Чтецы — Поиск и сортировка по чтецам (озвучкам). Особенно удобно, если вы предпочитаете конкретных дикторов.
Статистика — В этом разделе можно посмотреть общую статистику библиотеки, а также свой личный прогресс прослушивания за последний год.




Меню Audiobookshelf
С этим разобрались, теперь посмотрим, как пользоваться Audiobookshelf.
Сервис доступен практически откуда угодно:
с любого устройства через браузер,
через мобильные приложения.
iOS
Точной информации нет — я сам не пользуюсь, но официальное приложение находится в стадии разработки и вроде как уже доступно в бете.
Android
Открываем Google Play.
Ищем приложение Audiobookshelf.
Устанавливаем и запускаем.
После первого запуска делаем несколько простых шагов.
Подключение к вашему серверу
Указываем адрес сервера:
http://tower.local:13378
(Если у вас другой адрес или порт — вводим свой).
Далее вводим логин и пароль пользователя, которого вы создали ранее.
После этого вы попадаете на свой собственный сервер потокового воспроизведения аудиокниг.




Подключение к вашему серверу
Рекомендация: офлайн-прослушивание
Если вы открыли книгу, которую хотите слушать, нажмите кнопку скачивания (стрелочка вниз).
Файл загрузится на устройство — и вы сможете слушать книгу вне локальной сети, даже без интернета.
Это также работает при удалённом доступе к серверу, если вы его настроите.
Но имейте в виду: для внешнего доступа нужен белый (выделенный) IP-адрес, проброс порта на роутере или настройка через Nginx Proxy Manager.
Эти вещи уже выходят за рамки данного поста.
Я давно хотел иметь свой собственный семейный мессенджер, без зависимостей от Telegram/WhatsApp на случай, если один из них станет не доступен.
Мне нужен был простой вариант: сообщения, фото, файлы. Звонки и видео для меня были избыточными, поэтому всю усложняющую историю с coturn я сразу отбросил.
В итоге я развернул Matrix Synapse в Docker. Всё работает стабильно, шифрование есть, и самое главное - всё хранится у меня на домашнем сервере, в роли которого выступает старенький неттоп на Intel Core i3 7100T, на нем же крутится система умного дома Home Assistant, а так же медиасерверы Jellyfin и Navidrome.
Так как получил предложение написать об этом пост, рассказываю как это реализовывал.
Matrix - это защищённый протокол обмена сообщениями.
Он похож на Telegram, но:
полностью открытый
работает на вашем железе, либо на вашем облачном сервере
переписка шифруется на устройстве
Мы будем поднимать сервер Synapse (основная реализация Matrix) на Docker
Matrix может работать на SQLite, но лучше взять PostgreSQL - он надёжнее.
Вот минимальный рабочий docker-compose.yml:
services:
synapse:
image: matrixdotorg/synapse:latest
container_name: matrix-synapse
restart: unless-stopped
environment:
SYNAPSE_SERVER_NAME: chat.example.net
SYNAPSE_REPORT_STATS: "no"
volumes:
- ./synapse:/data
depends_on:
- postgres
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "3"
networks:
- internal
postgres:
image: postgres:14
container_name: matrix-postgres
restart: unless-stopped
environment:
POSTGRES_DB: synapse_db_r72m
POSTGRES_USER: synuser_k84t
POSTGRES_PASSWORD: dN8vQ3pL7wS1zFgB9rT2
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --lc-collate=C --lc-ctype=C"
volumes:
- ./postgres:/var/lib/postgresql/data
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "3"
networks:
- internal
networks:
internal:
driver: bridge
Всё, что вам нужно - создать папку с проектом и положить этот файл туда. Там же в дальнейшем появятся папки с конфигурациями самого сервера и сервера баз данных. Логин, пароль и имя базы созданы рандомно, вы их можете поменять на свои. Так же замените chat.example.net на ваш домен.
Synapse в самом начале нужно инициализировать:
docker compose run --rm synapse generate
Появится папка synapse/ с файлом homeserver.yaml.
Там находим блок базы данных и меняем его на PostgreSQL, блок с SQLite можно закомментировать:
database:
name: psycopg2
args:
user: synuser_k84t
password: dN8vQ3pL7wS1zFgB9rT2
database: synapse_db_r72m
host: matrix-postgres
port: 5432
Это всё.
docker compose up -d
Самый нормальный способ пробросить сервер наружу - через домен и HTTPS.
Я использую Nginx Proxy Manager (NPM), но подойдёт любой прокси.
Важно: Nginx Proxy Manager должен быть в одной Docker-сети с Matrix-сервером.
Synapse по умолчанию создаёт свою сеть - она называется так же, как папка с проектом, с суффиксом _internal (если не меняли compose файл). Если NPM не подключён к этой сети, он просто не увидит контейнер matrix-synapse и проксирование работать не будет.
Чтобы подключить NPM к нужной сети:
docker network connect <имя_сети_internal> <контейнер_NPM>
Создаём Proxy Host на matrix-synapse:8008
Получаем SSL-сертификат
Добавляем два обязательных пути .well-known:
location /.well-known/matrix/server {
add_header Content-Type application/json;
return 200 '{"m.server": "chat.example.net:443"}';
}
location /.well-known/matrix/client {
add_header Content-Type application/json;
return 200 '{"m.homeserver": {"base_url": "https://chat.example.net"}}';
}
Не забудьте заменить chat.example.net на ваш домен.
Проверяем прямо на сервере, или в консоли вашего компа:
Ответ должен быть таким:
{"m.homeserver":{"base_url":"https://chat.example.net"}}
Просто пробрасываете порт наружу и подключаетесь к серверу вот так:
http://server-ip:8008/
Matrix всё равно шифрует переписку, поэтому содержимое сообщений никто не увидит.
Минусы:
Element может ругнуться
федерации (общения с другими серверами) не будет
Для семейного чата идеальный упрощённый вариант.
После можно зайти через браузер. Если сервер успешно поднялся, вы увидите такую страницу:
Первого пользователя я создавал так:
docker exec -it matrix-synapse \
register_new_matrix_user \
-c /data/homeserver.yaml \
-a \
http://matrix-synapse:8008
(matrix-synapse:8008 — адрес внутри Docker-сети)
docker exec -it matrix-synapse \
register_new_matrix_user \
-c /data/homeserver.yaml \
--no-admin \
http://matrix-synapse:8008
При создании пользователей через CLI нельзя использовать в пароле символы UTF-16, иначе Synapse выдает ошибку:
UnicodeEncodeError: 'utf-8' codec can't encode character '\udce3'
Для работы с API нужен токен доступа.
Получить его проще всего через CLI-авторизацию.
Шаг 1. Выполнить вход через API:
docker exec -it matrix-synapse curl -s -X POST \
-H "Content-Type: application/json" \
-d '{"type":"m.login.password","user":"ВАШ_ЛОГИН","password":"ВАШ_ПАРОЛЬ"}' \
http://localhost:8008/_matrix/client/r0/login
Шаг 2. В ответе найдите поле:
"access_token": "syt_xxxxxxx..."
Проверить, кто вы:
docker exec -it matrix-synapse curl -H "Authorization: Bearer ВАШ_ТОКЕН" \
http://localhost:8008/_matrix/client/r0/account/whoami
Список пользователей:
docker exec -it matrix-synapse curl -H "Authorization: Bearer ВАШ_ТОКЕН" \
http://localhost:8008/_synapse/admin/v2/users
Список комнат:
docker exec -it matrix-synapse curl -H "Authorization: Bearer ВАШ_ТОКЕН" \
http://localhost:8008/_synapse/admin/v1/rooms
Удалить комнату:
docker exec -it matrix-synapse curl -X DELETE \
-H "Authorization: Bearer ВАШ_ТОКЕН" \
http://localhost:8008/_synapse/admin/v1/rooms/ROOM_ID
Деактивация пользователя:
docker exec -it matrix-synapse curl -s -X PUT \
-H "Authorization: Bearer ВАШ_ТОКЕН" \
-H "Content-Type: application/json" \
-d '{"deactivated": true}' \
"http://localhost:8008/_synapse/admin/v2/users/@user:chat.example.net"
Получить список устройств пользователя:
docker exec -it matrix-synapse curl -s \
-H "Authorization: Bearer ВАШ_ТОКЕН" \
"http://localhost:8008/_synapse/admin/v2/users/@user:chat.example.net/devices"
Удалить конкретное устройство:
docker exec -it matrix-synapse curl -s -X DELETE \
-H "Authorization: Bearer ВАШ_ТОКЕН" \
"http://localhost:8008/_synapse/admin/v2/users/@user:chat.example.net/devices/ИДЕНТИФИКАТОР_УСТРОЙСТВА"
На телефон ставим приложение Element (iOS/Android) и настраиваем подключение к другому серверу.
Если у вас HTTPS и домен:
Если вы работаете по IP:
http://server-ip:8008/
Далее вводите имя пользователя и пароль, затем через поиск находите второго пользователя:
@имя
И отправляете ему приглашение. Второй пользователь принимает приглашение и создается комната, в которой вы можете общаться.
Важно: Сохраните в настройках клиента ключи восстановления, чтобы в следующий раз восстановить зашифрованные сообщения, иначе не получится их прочитать.
Звонки и видео требуют настроенный TURN-сервер (coturn).
Он поднимается отдельно, настраивается не сложно, но это уже другая тема.
Для обычной текстовой переписки не нужен вообще.
Matrix - это несложно.
Он даёт вам:
свой личный мессенджер
без рекламы
без чужих серверов
с нормальным шифрованием
с хранением данных у вас
Для семьи или небольшой группы - идеальный вариант.
Я несколько раз поднимал n8n у себя. И каждый раз думал: почему базовая установка вроде работает, но ощущается… как тестовый стенд? Логов нет, база тормозит, интерфейс отваливается через пару дней. А потом понял – не сам n8n виноват, а настройки по умолчанию.
Если вы хотите не просто “запустить”, а работать с n8n как с надёжным инструментом, стоит уделить внимание конфигурации. Ниже – мой практичный чеклист с пояснениями, зачем включать или отключать каждую опцию.
Существует несколько способов установить n8n, включая npm. Но давайте договоримся сразу: если вы строите систему для работы, а не для тестов на один вечер, ваш выбор – Docker.
Почему? Все просто:
Изоляция: n8n и все, что ему нужно для работы (база данных, Redis и т.д.), живут в своих изолированных «контейнерах». Они не конфликтуют с другими программами на вашем сервере и не оставляют мусора в системе.
Воспроизводимость: Вся конфигурация вашей системы описывается в одном простом файле – docker-compose.yml. Вы можете взять этот файл, перенести на любой другой сервер, выполнить одну команду и получить точную копию вашей системы за пять минут.
Простота обновления: Вышла новая версия n8n? Вы выполняете docker-compose pull и docker-compose up -d – и все обновлено. Никаких ручных манипуляций с файлами и зависимостями.
Предполагается, что у вас уже есть чистый сервер (например, VPS на Ubuntu 22.04) и вы можете подключиться к нему по SSH.
Я рекомендую изучить материал: Гайд по Coolify: Как развернуть n8n и Supabase на одном VPS за вечер – там достаточно подробно рассмотрено, чем вам может быть полезен Coolify и как устанавливать сервисы по типу n8n в один клик на своём VPS.
Самая частая ошибка – поднять контейнер и радоваться, пока он работает. Но чтобы потом не ловить баги “из ниоткуда”, стоит сразу поправить несколько переменных окружения.
NODE_ENV=production
GENERIC_TIMEZONE=Europe/Moscow
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_PRUNE_MAX_COUNT=10000
NODE_ENV – в dev-режиме n8n ведёт себя иначе: меньше оптимизаций, медленнее отклик, иногда включен дебаг. В продакшене это просто лишнее.
GENERIC_TIMEZONE – Пока не поставите свой часовой пояс, все расписания будут сдвигаться. Особенно заметно, если вы триггерите задачи по времени – cron в UTC, вы в МСК, а воркфлоу срабатывает в 3 ночи.
EXECUTIONS_DATA_PRUNE – Если не включить очистку старых записей, база раздуется до гигабайтов.
Но есть нюанс: если вы активно тестируете сценарии – лучше временно выключить prune, чтобы не потерять логи.
n8n не хранит токены в открытом виде, но это не повод раздавать доступ всем.
Минимальный набор для спокойной работы выглядит примерно так:
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin N8N_BASIC_AUTH_PASSWORD=your_secure_password N8N_SECURE_COOKIE=true
N8N_DIAGNOSTICS_ENABLED=false N8N_VERSION_NOTIFICATIONS_ENABLED=false
Базовая авторизация – обязательна. Даже если вы на localhost, привычка “ставить пароль” спасает от случайных вторжений.
SECURE_COOKIE=true – если у вас HTTPS, это защита от кражи сессии. Без неё браузер может отправлять cookie даже в небезопасных запросах.
Отключаем телеметрию.
n8n по умолчанию отправляет анонимные данные разработчикам (версии, события). Не критично, но для своих установок это просто лишняя нагрузка.
Хуже всего, когда n8n падает тихо. Без логов вы не узнаете почему.
Пара строк решает вопрос:
N8N_LOG_LEVEL=info
N8N_LOG_OUTPUT=file
N8N_LOG_FILE_LOCATION=/home/node/.n8n/logs/
Теперь вы хотя бы увидите, почему сценарий “вдруг перестал работать”.
warn, error, debug – можете также переключить на нужный уровень в случае необходимости.
Бэкапы — три папки:
.n8n – ваши воркфлоу и креды,
postgres_data – база,
docker-compose.yml – вся инфраструктура в одном месте.
Обновление занимает 10 секунд:
docker-compose pull && docker-compose up -d
Но перед этим всё же протестируйте на копии – иногда меняется структура БД, либо пользуйтесь удобной командой из Coolify.
Когда воркфлоу начинают тормозить, первое желание – включить Redis и worker.
Но тут важно понимать: это не про ускорение, а про устойчивость.
EXECUTIONS_MODE=queue
QUEUE_BULL_REDIS_HOST=redis
QUEUE_BULL_REDIS_PORT=6379
QUEUE_HEALTH_CHECK_ACTIVE=true
Режим queue распределяет выполнение задач между воркерами – полезно, если вы гоняете десятки сценариев параллельно.
Если же у вас один сервер и 10 сценариев – worker-режим только усложнит жизнь.
Мой принцип: “Добавляй Redis, когда CPU стабильно в 80%”. Раньше просто рано.
Что это: отдельный воркфлоу, который автоматически срабатывает, когда любой другой воркфлоу падает. По сути – централизованный обработчик ошибок. n8n поддерживает «Error workflows» через Error Trigger/триггер ошибок.
Зачем: не нужно вручную мониторить executions; вы получаете контекст ошибки (какой воркфлоу, какие данные, где упало), можно сразу уведомить ответственных и логгировать данные для разбирательства.
Как настроить минимально полезный набор можно почитать подробнее тут.
Зачем: пароль – слабая линия защиты. Если вы открываете n8n в интернет (даже через домен), 2FA резко снижает риск взлома.
Как включить (опции):
Встроенная MFA (если доступна у вашей версии): проверьте N8N_MFA_ENABLED и включите у пользователей из UI/аккаунтов.
Лучший вариант для self-hosted (часто используемый): ставите аутентификацию на уровне reverse-proxy / identity provider (Keycloak / OAuth2-proxy). Это даёт SSO, централизованную 2FA и больше контроля (блокировка IP, MFA политики).
Практический вывод: если вам нужен надёжный 2FA – делайте это на уровне прокси/IdP; встроенная MFA – полезна, но на неё нельзя полностью полагаться как на единственный механизм защиты для критичных инстансов.
Используйте секреты в URL или проверку HMAC в запросах, если сервис поддерживает.
Если вебхуки публичны, добавьте rate-limiting на прокси и проверку подписей.
Зачем: webhook – это дверь в ваш n8n; без подписи чужой запрос может запустить процесс.
В каждом узле есть настройка Continue on fail / Execute on error – используйте её осознанно: если в цепочке есть «необязательный» шаг, разрешите продолжить, чтобы не ломать весь процесс.
Зачем: иногда полезно продолжить обработку, даже если один внешний сервис временно недоступен.
Настройте health check (пинг-эндпоинт), базовую метрику CPU/memory и алерт в случае падения контейнера.
Включите QUEUE_HEALTH_CHECK_ACTIVE если используете очередь, и мониторьте Redis/DB.
Зачем: знать о проблеме раньше, чем начнут писать пользователи.
Держите копию production-DB/compose для тестирования новых версий n8n. Это достаточно молодой инструмент и новые изменения могут сломать все ваши текущие наработки.
Зачем: новая версия может неожиданно изменить поведение работы нод и сломать ваши workflow.
Неважно, где вы развернули n8n – на VPS, NAS или локалке. Важно, чтобы система была прозрачна, предсказуема и безопасна.
Для меня n8n давно уже не просто no-code. Это личная инфраструктура автоматизации. И как любая инфраструктура, она требует чуть-чуть инженерной заботы.
Может быть вы всегда хотели своё собственное "облако", легко ставить на нём разное ПО и использовать Open и не очень Open Source?
Что, если оно ближе к вам чем вы думаете. Хотя и некоторые хостинг-провайдеры предоставляют возможность установить Minecraft или Valheim сервер, а так-же ряд других инструментов, чтобы весело проводить время, но откровенно говоря - этого будет мало:
А ещё эти предустановленные образы не будут работать на одном сервере одновременно - им будут нужны отдельные VPS для каждой программы.
Для того, чтобы ставить разное ПО на один сервер - нужен либо Docker, либо делать это всё вручную на своей Linux и уметь настраивать всё самим, погружаясь во все нюансы работы веб-сервера, языков программирования и нюансов конфигурации той или иной программы. При этом вы даже можете ещё не знать хотите ли вы эту программу или какую-нибудь другую.
Если вы уже использовали Docker, то возможно слышали о Kubernetes - серьезное ПО для серьезных дядь, умеющих его настраивать. Но нам нужны программы, а не настройка сложной архаичной корпоративной инфраструктуры.
А если вы слышали о "кубах", то вероятно и краем уха видели что-то про Docker Swarm. Это концептуально немного другая технология, не совместимая с docker-compose и kubernetes и о том, как работать с контейнерам под docker-swarm (включать, выключать, выводить список, смотреть логи) можно глянуть на этой странице: https://caprover.com/docs/troubleshooting.html
Работа docker swarm, да и самого CapRover подразумевает некоторое distributed-решение, при котором возможно запускать несколько инстансов выбранного ПО, работающих одновременно на одном или на разных caprover-серверах. Я этого никогда ещё не пробовал, потому что не понял как это мне поможет, к примеру в работе базы данных, ведь ей нужен исключительный доступ к файлам и своя настройка репликации. Но, а у CapRover и Docker Swarm, по крайне мере, это всё есть - cap его установить на разных машинах и связать их как главную и подчиненную.
Основной вопрос - насколько это сложно? Будет ли это дорого? Что надо знать и уметь уже, перед тем как это попробовать всё сделать?
- Сложно по шкале от 1 до 3: 2.
- Будет дорого да: от 300 рублей в месяц за VPS (почти как оплата за интернет).
- Надо уметь подключаться по SSH к Linux и пользоваться хостингом и DNS и купить домен.
А что если я видел Linux только на экране своей Windows, когда запускал её через WSL2 с кнопки "установить Ubuntu"?
А если хостинг и домен для меня одинаковые вещи и я не вижу между ними разницы?
Спокойно, всё придет. Вы можете не верить в себя или свои способности сейчас, но поверьте в то будущее, в котором вы оглядываясь назад сможете вспомнить это и сказать "Аха, нуда, теперь я чувствую разницу между DNS и роутером, и могу подключаться к Linux по SSH по ключам и настраивать фаервол".
Во всяком случае, вы не обязан понимать полностью как работает настройка фаерволов. Я тоже этого не знаю. Достаточно обычной логики и подумать. Как это делать? Расскажу вкратце на примере правил фаервола, которые вы встретите в руководстве "С чего начать" на официальном сайте CapRover - сперва вы должны понять, а включен ли на вашем Linux фаервол, если да и при выводе статуса фаервола там есть ряд правил, которые могут лимитировать сетевые соединения - то значит вам нужно применить дополнительные правила из руководства CapRover; Если фаервол на Linux не включен, правил в выводе статуса нет - значит применять правила фаервола из руководства CapRover - не нужно. Это всё. Вот как надо думать. Это просто - применяйте этот навык везде, где только можно 😉.
Так с чего же начать
Начните с инструкции "с чего начать" - https://caprover.com/docs/get-started.html
Пару комментариев о том что такое root-домен, cli, https и пароль, потому что Шаг 1 он более менее понятен, а вот Шаг 2 может вызвать вопросы.
Перед этим конечно купите себе VPS на 1 ядро и желательно с 2 Гб RAM. Этого будет достаточно, чтобы запустить CapRover и начать устанавливать приложения (на данный момент их 678) - вот полный список https://github.com/caprover/one-click-apps/tree/master/publi...
Что такое Шаг 2, root-домен и где надо менять пароль и что потом будет.
CapRover - это такой-же docker контейнер, как и ПО, которое будет работать в docker-контейнерах, которое вы установите потом в самом caprover. И сам caprover и его вспомогательные сервисы будут тоже работать в docker-контейнерах.
Поэтому, первое что вы должны сделать - установить этот CapRover. После установки он сразу запуститься. Однако при первом запуске нужно сделать следующее:
- прописать root-домен;
- установить пароль.
Есть два варианта того, как это сделать - 1️⃣ через cli и nodejs там-же в linux-терминале. Или через браузер.
К тому моменту, когда вы начнете устанавливать CapRover - у вас уже должен быть домен или поддомен, который вы полностью зарезервируете под вашу cap-инсталляцию. Концепция доменных имен в CapRover следующая: есть один главный домен (root-домен) для caprover. Например, возьмем ситуацию где вас уже есть домен и какие-то поддомены на нем, и вы не хотите резервировать этот домен полностью под caprover. Вы создаете поддомен: cap.yourdomain.ru и направляете его на IP-адрес вашего VPS. Таким образом, вам нужно назначить этот поддомен как главный (root-domain). Рабочий же интерфейс caprover, после завершения настройки, будет доступен по другому субдомену: captain.cap.yourdomain.ru. Таким образом cap.yourdomain.ru даже не будет использоваться напрямую. Всё устанавливаемое ПО, если для него подразумевается доступ из веб - будет так-же на субдоменах: *.cap.yourdomain.ru. Чтобы это работало, нужно так-же в DNS-записях прописать вот такой плейсхолдер *.cap.yourdaomain.ru и направить на IP-адрес вашего VPS или выделенного сервера.
2️⃣ Второй вариант - через браузер, зайти по IP-адресу вашего сервера и 3000-у порту (указан в инструкции get-started) , указать root-домен, включить HTTPS, и указать новый свой пароль, вместо пароля по-умолчанию.
После чего войти на https://captain.cap.yourdomain.ru и пользоваться своим персональным облачным сервисом.
Вы уже там сможете установить Seafile, о котором можно прочитать тут
Свой собственный почтовый сервер poste.io:
И таск-трекер для управления проектами:
Экран установки любого приложения выглядит примерно так:
здесь нужно ввести название приложения (оно же будет автоматическим субдоменом, например kb (адрес вашего приложения КБ затем будет такой kb.cap.yourdomain.ru)
PS: CapRover это не золотая котлета. Некоторое ПО в нем может быть устаревшим, так как конфиги (one-click-apps) нужно поддерживать - это делается сообществом. Если вам нужны новые версии программ, на которые вы положили глаз - вероятно нужно будет разбираться самим, как их устанавливать с нуля, без докер на нативном linux-окружении.
Рекомендуемые вычислительные ресурсы для нормальной работы CapRover и нескольких приложений внутри него: 6 Гб RAM, 2 ядра CPU и 50 Гб места на диске.
Для поддержки работы вашего сервера с CapRover вам следует озадачиться как минимум одной или даже двумя вещами: чисткой старых образов (в caprover есть такая функция) и кое-что понимать о downtime и постоянных хранилищах данных. Углубившись в детали вы начнете замечать эти нюансы, хотя с порога какие-то вещи будут совсем не очевидными и не привычными. Так или иначе разрабатывали это ПО для того, чтобы оно работало, оно не обязательно должно бы таким, к которому вы уже привыкли.
Зато, открывается возможность запускать в "один клик" большое количество разных программ, работающих на linux-сервере и вам не надо знать о том, как их устанавливать и настраивать:
За вас это сделают конфиги One Clik Apps. Для работы некоторых приложений - нужны базы данных (Postgres, Redis) - и это прописано в yaml-конфигурациях one-click-apps. Всё что требуется - установиться само. Вы, как пользователь - просто включайте нужное ПО и пользуйтесь им.
Приветствую! Кто-нибудь может порекомендовать какие-нибудь хорошие платные курсы по Java с изучением спринга, докера и тд?
❗️ Вашему вниманию, дамы и господа, Affine! ❗️
Долго искал аналог Notion, ибо они прикрыли доступ из РФ, а пользоваться обходом для доступа к "блокноту" нет желания. Аналог не нашел, но нашел замену.
Affine полноценно не заменяет Notion с его database, но, на мой взгляд, очень хорошая и красивая штука с перспективой на развитие, ибо довольно молода. И database тоже имеются, но пока не такие "развитые", как у Notion, пока только Table Veiw и Kanban View.
Я не рассказываю о его функционале, это можно легко найти на сайте или нагуглить, я рассказываю, как его установить в self hosted версии и не давать доступ к данным незнакомым людям.
🔗 Инструкция доступна по ссылке
🍑 И вот еще что, эта инструкция написана и расшарена в моем локальном Affine. Удобный функционал.
Это статья об установке, а не реклама Affine, я к ним никак не отношусь, я делюсь интересным, на мой взгляд, сервисом.
Пост из моего телеграм канала, за форматирование отвечает бот Pikabu, а не я ☺️
#️⃣#️⃣#️⃣
#блокнот #заметки #notion #красивое #selfhosted #docker #synology #ubuntu #linux