[Настройка Linux, Open source, IT-инфраструктура, DevOps, Облачные сервисы] Ламповая self-hosted инфраструктура на Vultr
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
О чём, зачем и почему?
Эту небольшую заметку я решил написать после собственного опыта разворачивания личной "инфраструктуры", состоящей из нескольких приложений для повседневных дел.
Здесь я расскажу, как развернуть сервисы для контроля финансов (FireFly3), заметок и чего покрупнее (BookStack) и контроля времени, уходящего на задачи в opensource проектах или на работе (Titra) — всё это на Vultr с защитой с помощью firewall групп и доступа только с нужных ip, например, домашней статики или vpn (ещё развернём для этого Pritunl).
Vultr я выбрал, так как достаточно давно с ним работаю и уже знаю, что он может, а что нет — в моём случае он подошёл идеально.
Надеюсь, что это окажется для кого-то полезным.
Разворачиваем сервисы
Для сервисов (всех трёх) я выбрал простой инстанс на Vultr + автоматические бэкапы, так как все они не особо требовательны к ресурсам.
Прим.: Предполагается, что у вас есть свой домен с DNS, где вы можете настроить субдомены для всего ниже описанного и получения сертификатов (certbot), исходя из этого, для удобства, в статье я буду писать про personal.io, а вы представляйте личный :)
Прим. 2: Ещё небольшое предупреждение — я буду писать про сервисы в docker, однако, все они прекрасно разворачиваются и без контейнеров.
Финансы — FireFly3
Demo
Собственно я люблю вести фин. учёт по всем своим доходам и расходам: видеть на что вы тратите ваши деньги и как возможно, что-то оптимизировать, по-моему достаточно важно.
Для моих целей вполне подходит FireFly3 в нём вы можете отслеживать все свои счета, регулярные транзакции, долги и т.д. и т.п.
На наше счастье разработчики firefly3 сделали удобную документацию с описанием развёртывания приложения, как с помощью docker, так и без оного. Приведу свой docker-compose файл c firefly и БД для него:
version: '3.3'
services:
fireflyiii:
image: jc5x/firefly-iii:latest
volumes:
- firefly_iii_upload:/var/www/html/storage/upload
env_file:
- .env
restart: unless-stopped
ports:
- 127.0.0.1:34567:8080
depends_on:
- fireflyiiidb
fireflyiiidb:
image: yobasystems/alpine-mariadb:latest
restart: unless-stopped
env_file:
- .env.db
volumes:
- firefly_iii_db:/var/lib/mysql
volumes:
firefly_iii_upload:
driver: local
firefly_iii_db:
driver: local
Так же, весьма важен env-файл для самого сервиса, так как в нём настраиваются все базовые моменты для развёртываемого инстанса, как то: тип используемой БД, с помощью чего отправлять вам письма счастья (SMTP или MAILGUN), логи, аутентификация (если, вдруг, вам вместо стандартного eloquent понадобится LDAP), ну и доменное имя на котором будет сервис, в нашем случае настроим его на finance.personal.io. Оставляю пример этого самого env-файла (с комментами от разработчиков) на pastebin с выставленными значениями под нашу статью.
С firefly3 на этом всё, после того как мы сделаем nginx proxypass и получим сертификат вам нужно зарегистрироваться в сервисе, после чего вы сможете отключить эту возможность.
Заметки, документация и т.д. — BookStack
Demo
У меня часто возникает желание/необходимость, что-нибудь написать по работе или личное, поэтому для меня такой сервис, как BookStack показался крайне удобен — возможность создавать отдельные полки, регулировать права, наглядный markdown редактор (приложу скриншот, как пишу это именно в нём), понятная иерархия: полки-книги-листы.
Такой сервис может подойти как для личного пользования, так и для командного в небольших компаниях.
docker-compose.yml:
version: "3.1"
services:
bookstack:
image: linuxserver/bookstack
container_name: bookstack
volumes:
- bookstack-volume:/config
ports:
- 127.0.0.1:34568:80
env_file:
- .env.bookstack
restart: unless-stopped
depends_on:
- bookstack_db
bookstack_db:
image: linuxserver/mariadb
container_name: bookstack_db
volumes:
- bookstack-db:/config
env_file:
- .env.db
restart: unless-stopped
volumes:
bookstack-volume:
driver: local
bookstack-db:
driver: local
Тут с предварительной конфигурацией всё намного проще, чем у firefly, так как почти всё можно настроить через web интерфейс.
.env.bookstack:
DB_HOST=bookstack_db
DB_USER=bookstack
DB_PASS=bookstackpassword
DB_DATABASE=bookstackapp
APP_URL=https://notes.personal.io
При первом входе, вам также понадобиться зарегистрировать admin юзера, но это позже.
В bookstack так же доступна аутентификация по LDAP, а так же по SAML или через социальные сети — всё это настраиваемо. Так же есть экспорт опусов в pdf и html, публичный доступ к полкам или отдельным книгам, т.е. без пользователя.
Учёт потраченного времени — Titra
Demo
У меня есть как личные, так и рабочие проекты, поэтому мне важно знать, сколько времени я потратил на ту или иную задачу. В Titra вы можете разграничить всё на разные проекты, проектные задачи, назначить стоимость вашей работы (например, за час), указать со скольки вы работаете и во сколько у вас перерыв (оплачиваемый или нет), ну и статистические отчёты за разное время тоже присутствуют с фильтрацией по отдельным проектам и т.д.
docker-compose.yml:
version: "3.1"
services:
titra:
image: kromit/titra
container_name: titra
depends_on:
- mongodb
ports:
- "127.0.0.1:34569:3000"
env_file:
- .env.titra
restart: always
mongodb:
image: mongo:4.2
container_name: mongodb
restart: always
volumes:
- titra_db:/data/db
volumes:
titra_db:
driver: local
.env.titra:
ROOT_URL=https://titra.personal.io
MONGO_URL=mongodb://mongodb/titra
Бонус: страница со ссылками на ваши сервисы — Homer
Demo
Чтобы не потерять ссылки на все ваши сервисы особенно, если их станет больше, лучше всего иметь страницу, которая бы показывала, где и что у вас развёрнуто. Я когда задумался об этом, выбирал между heimdall и homer, остановился на последнем, так как его легче настроить и он вполне удовлетворяет условиям поставленной задачи.
На странице Homer вы сможете настроить ссылки на ваши сервисы, разнести их по разным группам, кастомизировать их отображение (например, присвоить каждому иконку).
docker-compose.yml:
version: "3.3"
services:
homer:
image: b4bz/homer:latest
volumes:
- ./assets:/www/assets
ports:
- "127.0.0.1:34570:8080"
restart: unless-stopped
Для работы homer вам придётся создать assets директорию с файлом config.yml, где вы и укажите, что и как отображать.
Давайте первоначально напишем его таким образом:
title: "Infrastructure"
subtitle: "Personal"
documentTitle: "Personal/Infrastructure"
icon: "fas fa-skull-crossbones"
header: true
columns: "3"
theme: default
colors:
dark:
highlight-primary: "#3367d6"
highlight-secondary: "#4285f4"
highlight-hover: "#5a95f5"
background: "#131313"
card-background: "#2b2b2b"
text: "#eaeaea"
text-header: "#ffffff"
text-title: "#fafafa"
text-subtitle: "#f5f5f5"
card-shadow: rgba(0, 0, 0, 0.4)
link-hover: "#ffdd57"
services:
- name: "Main"
icon: "fas fa-code-branch"
items:
- name: "Titra"
icon: "fas fa-clock"
subtitle: "time-tracking"
url: "https://titra.personal.io"
- name: "FireFly3"
icon: "fas fa-piggy-bank"
subtitle: "finance"
url: "https://finance.personal.io"
- name: "BookStack"
icon: "fas fa-book"
subtitle: "notes-articles-book"
url: "https://notes.personal.io"
Страница будет выглядеть так:
Разместим её на home.personal.io
Домены и сертификаты
После того, как мы всё написали и запустили нам нужно настроить nginx и попросить пару сертификатов у certbot. Я приведу пример общего для сервисов файла настройки, который можно и нужно разделить на несколько: apps.conf
Запустим nginx:
systemctl start nginx
Далее, предварительно создав необходимые A-записи в настройках DNS у вашего домена, чтобы поддомены home, notes, finance, titra ссылались на ip машины на Vultr, мы запросим с помощью certbot сертификаты Let's Encrypt, чтобы соединение было безопасным:
certbot run --nginx
После получения сертификатов, вы можете заходить на ваши сервисы и регистрироваться.
Защищаемся
Чтобы быть уверенным, что никто не зайдёт туда, куда не следует я сделал следующее:
- Развернул Prtinul сервер
- Создал firewall группу в панели управления Vultr
Собственно, как быстро (обещают за 60 секунд) pritunl на vultr уже написано.
Я расскажу лишь, как можно быстро настроить firewall правила для vultr машины (или нескольких)
- Заходим на страницу ваших огненных стен
- Жмём плюсик и в выпавшем меню "Add firewall group".
- Добавляем правила, например, я решил, что лучше всего оставить открытым 22 порт, а остальные сделать доступными только из-под VPN. Например, так:
- Ждём, так как правила накатятся не мгновенно, а примерно за две минуты.
- Наслаждаемся своей непохожестью безопасностью и контролем за важными для вас данными.
===========
Источник:
habr.com
===========
Похожие новости:
- [Разработка веб-сайтов, Python, Открытые данные, Визуализация данных, Финансы в IT] Визуализация данных по акциям дивидендных аристократов США в формате веб-приложения
- [Информационная безопасность, Open source, Совершенный код, Исследования и прогнозы в IT] Разработчики ПО с открытым исходным кодом уделяют вопросам безопасности менее 3% времени
- [Open source, IT-стандарты, Статистика в IT] Google предложил рейтинг критически важных Open-source проектов
- [Google Cloud Platform, Облачные сервисы] Как мы случайно сожгли $72 000 за два часа в Google Cloud Platform и чуть не обанкротились (перевод)
- [Серверная оптимизация, Облачные вычисления, Сетевые технологии, Облачные сервисы] Облачный десант: как мы интегрировали публичное облако с CDN и что из этого получилось
- [Open source, Разработка игр, Финансы в IT, IT-компании] Верховный суд отказал Wargaming в иске к своим бывшим сотрудникам
- [Open source, Разработка под Android] Делюсь небольшим, но полезным плагином: Deeplink Helper для Android Studio
- [IT-инфраструктура, Amazon Web Services, DevOps, Облачные сервисы] AWS re:Invent 2020, Keynotes — Analytics + Networking
- [Системное администрирование, Серверное администрирование, Хранилища данных, DevOps] Эксплуатация Ceph: флаги для управления естественными состояниями OSD
- [Open source, Git, Виртуализация, Openshift] Миграция приложений и аварийное восстановление с помощью Red Hat Advanced Cluster Management (ACM)
Теги для поиска: #_nastrojka_linux (Настройка Linux), #_open_source, #_itinfrastruktura (IT-инфраструктура), #_devops, #_oblachnye_servisy (Облачные сервисы), #_selfdevelopment, #_selfhosted, #_finance, #_notes, #_vultr, #_pritunl, #_vpn, #_infrastruktura (инфраструктура), #_nastrojka_linux (
Настройка Linux
), #_open_source, #_itinfrastruktura (
IT-инфраструктура
), #_devops, #_oblachnye_servisy (
Облачные сервисы
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 24-Ноя 18:16
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
О чём, зачем и почему? Эту небольшую заметку я решил написать после собственного опыта разворачивания личной "инфраструктуры", состоящей из нескольких приложений для повседневных дел. Здесь я расскажу, как развернуть сервисы для контроля финансов (FireFly3), заметок и чего покрупнее (BookStack) и контроля времени, уходящего на задачи в opensource проектах или на работе (Titra) — всё это на Vultr с защитой с помощью firewall групп и доступа только с нужных ip, например, домашней статики или vpn (ещё развернём для этого Pritunl). Vultr я выбрал, так как достаточно давно с ним работаю и уже знаю, что он может, а что нет — в моём случае он подошёл идеально. Надеюсь, что это окажется для кого-то полезным. Разворачиваем сервисы Для сервисов (всех трёх) я выбрал простой инстанс на Vultr + автоматические бэкапы, так как все они не особо требовательны к ресурсам. Прим.: Предполагается, что у вас есть свой домен с DNS, где вы можете настроить субдомены для всего ниже описанного и получения сертификатов (certbot), исходя из этого, для удобства, в статье я буду писать про personal.io, а вы представляйте личный :) Прим. 2: Ещё небольшое предупреждение — я буду писать про сервисы в docker, однако, все они прекрасно разворачиваются и без контейнеров. Финансы — FireFly3 Demo Собственно я люблю вести фин. учёт по всем своим доходам и расходам: видеть на что вы тратите ваши деньги и как возможно, что-то оптимизировать, по-моему достаточно важно. Для моих целей вполне подходит FireFly3 в нём вы можете отслеживать все свои счета, регулярные транзакции, долги и т.д. и т.п. На наше счастье разработчики firefly3 сделали удобную документацию с описанием развёртывания приложения, как с помощью docker, так и без оного. Приведу свой docker-compose файл c firefly и БД для него: version: '3.3'
services: fireflyiii: image: jc5x/firefly-iii:latest volumes: - firefly_iii_upload:/var/www/html/storage/upload env_file: - .env restart: unless-stopped ports: - 127.0.0.1:34567:8080 depends_on: - fireflyiiidb fireflyiiidb: image: yobasystems/alpine-mariadb:latest restart: unless-stopped env_file: - .env.db volumes: - firefly_iii_db:/var/lib/mysql volumes: firefly_iii_upload: driver: local firefly_iii_db: driver: local Так же, весьма важен env-файл для самого сервиса, так как в нём настраиваются все базовые моменты для развёртываемого инстанса, как то: тип используемой БД, с помощью чего отправлять вам письма счастья (SMTP или MAILGUN), логи, аутентификация (если, вдруг, вам вместо стандартного eloquent понадобится LDAP), ну и доменное имя на котором будет сервис, в нашем случае настроим его на finance.personal.io. Оставляю пример этого самого env-файла (с комментами от разработчиков) на pastebin с выставленными значениями под нашу статью. С firefly3 на этом всё, после того как мы сделаем nginx proxypass и получим сертификат вам нужно зарегистрироваться в сервисе, после чего вы сможете отключить эту возможность. Заметки, документация и т.д. — BookStack Demo У меня часто возникает желание/необходимость, что-нибудь написать по работе или личное, поэтому для меня такой сервис, как BookStack показался крайне удобен — возможность создавать отдельные полки, регулировать права, наглядный markdown редактор (приложу скриншот, как пишу это именно в нём), понятная иерархия: полки-книги-листы. Такой сервис может подойти как для личного пользования, так и для командного в небольших компаниях. docker-compose.yml: version: "3.1"
services: bookstack: image: linuxserver/bookstack container_name: bookstack volumes: - bookstack-volume:/config ports: - 127.0.0.1:34568:80 env_file: - .env.bookstack restart: unless-stopped depends_on: - bookstack_db bookstack_db: image: linuxserver/mariadb container_name: bookstack_db volumes: - bookstack-db:/config env_file: - .env.db restart: unless-stopped volumes: bookstack-volume: driver: local bookstack-db: driver: local Тут с предварительной конфигурацией всё намного проще, чем у firefly, так как почти всё можно настроить через web интерфейс. .env.bookstack: DB_HOST=bookstack_db
DB_USER=bookstack DB_PASS=bookstackpassword DB_DATABASE=bookstackapp APP_URL=https://notes.personal.io При первом входе, вам также понадобиться зарегистрировать admin юзера, но это позже. В bookstack так же доступна аутентификация по LDAP, а так же по SAML или через социальные сети — всё это настраиваемо. Так же есть экспорт опусов в pdf и html, публичный доступ к полкам или отдельным книгам, т.е. без пользователя. Учёт потраченного времени — Titra Demo У меня есть как личные, так и рабочие проекты, поэтому мне важно знать, сколько времени я потратил на ту или иную задачу. В Titra вы можете разграничить всё на разные проекты, проектные задачи, назначить стоимость вашей работы (например, за час), указать со скольки вы работаете и во сколько у вас перерыв (оплачиваемый или нет), ну и статистические отчёты за разное время тоже присутствуют с фильтрацией по отдельным проектам и т.д. docker-compose.yml: version: "3.1"
services: titra: image: kromit/titra container_name: titra depends_on: - mongodb ports: - "127.0.0.1:34569:3000" env_file: - .env.titra restart: always mongodb: image: mongo:4.2 container_name: mongodb restart: always volumes: - titra_db:/data/db volumes: titra_db: driver: local .env.titra: ROOT_URL=https://titra.personal.io
MONGO_URL=mongodb://mongodb/titra Бонус: страница со ссылками на ваши сервисы — Homer Demo Чтобы не потерять ссылки на все ваши сервисы особенно, если их станет больше, лучше всего иметь страницу, которая бы показывала, где и что у вас развёрнуто. Я когда задумался об этом, выбирал между heimdall и homer, остановился на последнем, так как его легче настроить и он вполне удовлетворяет условиям поставленной задачи. На странице Homer вы сможете настроить ссылки на ваши сервисы, разнести их по разным группам, кастомизировать их отображение (например, присвоить каждому иконку). docker-compose.yml: version: "3.3"
services: homer: image: b4bz/homer:latest volumes: - ./assets:/www/assets ports: - "127.0.0.1:34570:8080" restart: unless-stopped Для работы homer вам придётся создать assets директорию с файлом config.yml, где вы и укажите, что и как отображать. Давайте первоначально напишем его таким образом: title: "Infrastructure"
subtitle: "Personal" documentTitle: "Personal/Infrastructure" icon: "fas fa-skull-crossbones" header: true columns: "3" theme: default colors: dark: highlight-primary: "#3367d6" highlight-secondary: "#4285f4" highlight-hover: "#5a95f5" background: "#131313" card-background: "#2b2b2b" text: "#eaeaea" text-header: "#ffffff" text-title: "#fafafa" text-subtitle: "#f5f5f5" card-shadow: rgba(0, 0, 0, 0.4) link-hover: "#ffdd57" services: - name: "Main" icon: "fas fa-code-branch" items: - name: "Titra" icon: "fas fa-clock" subtitle: "time-tracking" url: "https://titra.personal.io" - name: "FireFly3" icon: "fas fa-piggy-bank" subtitle: "finance" url: "https://finance.personal.io" - name: "BookStack" icon: "fas fa-book" subtitle: "notes-articles-book" url: "https://notes.personal.io" Страница будет выглядеть так: Разместим её на home.personal.io Домены и сертификаты После того, как мы всё написали и запустили нам нужно настроить nginx и попросить пару сертификатов у certbot. Я приведу пример общего для сервисов файла настройки, который можно и нужно разделить на несколько: apps.conf Запустим nginx: systemctl start nginx
Далее, предварительно создав необходимые A-записи в настройках DNS у вашего домена, чтобы поддомены home, notes, finance, titra ссылались на ip машины на Vultr, мы запросим с помощью certbot сертификаты Let's Encrypt, чтобы соединение было безопасным: certbot run --nginx
После получения сертификатов, вы можете заходить на ваши сервисы и регистрироваться. Защищаемся Чтобы быть уверенным, что никто не зайдёт туда, куда не следует я сделал следующее:
Собственно, как быстро (обещают за 60 секунд) pritunl на vultr уже написано. Я расскажу лишь, как можно быстро настроить firewall правила для vultr машины (или нескольких)
=========== Источник: habr.com =========== Похожие новости:
Настройка Linux ), #_open_source, #_itinfrastruktura ( IT-инфраструктура ), #_devops, #_oblachnye_servisy ( Облачные сервисы ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 24-Ноя 18:16
Часовой пояс: UTC + 5