Я перепробовал все дэшборды но остановился на Glance, мне он показался самым подходящим для меня. Мне особо функционал не нужен. самое главное собрать все ссылки для всех моих сервисов.
У вас VScode в докере? Как это работает?
да. так же как и на компе только открывается в браузере.
Ссылку вам уже скинули
Есть какие-то примеры конфигов для Glance? Как-то трудновато самому разобраться!
Ловите
конфигурация docker compose для запуска stack’a
services:
glances:
container_name: Glances
image: nicolargo/glances:latest-full
healthcheck:
test: curl -f http://localhost:61208/ || exit 1
mem_limit: 4g
cpu_shares: 768
security_opt:
- no-new-privileges:true
pid: host
privileged: true
# network_mode: host
restart: unless-stopped
ports:
- 61208:61208
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
GLANCES_OPT: -w
Что такое стек и как им пользоваться, можно посмотреть тут
или тут
Я поставил себе его в LXC контейнер и внимательно изучил. Хороший dashboard, мне понравился. Базовая конфигурация его, достаточно простая. Однако, есть возможность и более детально его настроить, используя HTML, JScript, CSS и сам Go-lang на котором он собственно и написан. Файл конфигурации /opt/glance/glance.yml, содержит разметку YAML. Основной корневой тег pages: (есть и другие тип server: , theme: и т. д.) далее описывается структура шаблона страниц(ы). Можно писать всё в одном файле glance.yml, а можно разбить на несколько шаблонов, и вставлять в основной файл конфигурации используя тег $include: glance-templates/template_page.yml Сами же шаблоны держать в отдельной папке /opt/glance/glance-templates/template_page.yml и т.д. Так же можно использовать переменные среды. В общем настройка достаточна богатая.
Я так понимаю вам нужен пример конфигурации внешнего вида и функционала Glance?
Ну как не банально звучит, всё есть в документации . Хотя сам порой предпочитаю хороший пример, потому как человек мыслит образами. Для наглядности набросал небольшой рабочий пример (упрощённые куски кода) для лучшего понимания.
структура папок (как пример):
Спойлер
/opt
/glance
/*glance.yml
/glance-templates
/*home.yml
/*news.yml
/home
/glance-assets
/*clock.js
/*clock.css
наполняем основной файл конфигурации: glance.yml
Спойлер
server:
# добавляем путь к своим файлам: img, css, js
assets-path: /home/glance-assets
theme:
# Tема по дефолту
background-color: 100 20 10
primary-color: 40 90 40
contrast-multiplier: 1.1
# false - разрешаем выбор темы
# true - отключаем выбор темы (справа вверху). тема будет по дефолту
disable-picker: false
# В данном случае, подключен файл стилей для часов
custom-css-file: /assets/clock.css
# Дополнительная тема для выбора
presets:
my-custom-dark-theme:
background-color: 229 19 23
contrast-multiplier: 1.2
primary-color: 222 74 74
positive-color: 96 44 68
negative-color: 359 68 71
document:
head: |
<script src="/assets/clock.js"></script>
branding:
custom-footer: |
<p>Glance Dshboard</p>
# Файлы наших страниц
pages:
- $include: glance-tpl/home.yml
- $include: glance-tpl/news.yml
формируем файл страницы “Главная”: home.yml
Спойлер
- name: Главная
columns:
# Колонка с лева
- size: small
# Контент и виджеты с лева
widgets:
- type: custom-api
title: Часики
template: |
<div id="clock"></div>
# Колонка по середине
- size: full
# Контент и виджеты по середине
widgets:
- type: bookmarks
title: Закладки
groups:
- links:
- title: Самохостинг
url: https://www.samohosting.ru/
- title: Место где можно пообщаться
url: https://forum.samohosting.ru/
- title: Скрипты для ProxmoxVE
url: https://github.com/community-scripts/ProxmoxVE
- type: custom-api
title: Новые сообщения на форуме
cache: 3h
url: 'https://forum.samohosting.ru/posts.json'
headers:
Accept: application/json
template: |
<ul class="list list-gap-10 collapsible-container" data-collapse-after="5">
{{range .JSON.Array "latest_posts" }}
<li>[ {{ .String "username" }} ] {{ formatTime "DateOnly" ( parseTime "RFC3339" (.String "created_at") ) }}</li>
<a class="size-title-dynamic color-primary-if-not-visited" href="https://forum.samohosting.ru{{ .String "post_url" }}" target="_blank"> {{ .String "topic_title" }} </a>
<hr/>
{{ end }}
</ul>
# Колонка с права
- size: small
# Контент и виджеты с права
widgets:
- type: custom-api
title: Колонка с права
template: |
<p style="color:#7F97FF">Виджет с права</p>
<p>Пользовательский API</p>
<p><i>- type: custom-api</i></p>
<p style="color:#7F97FF">HTML tag <b style="color:#FFD000"><p></b> с права</p>
<p>Таким образом можно внедрять свои скрипты на JScript, описывать структуру виджета на HTML и подмешивать CSS</p>
формируем файл страницы “Новости”: news.yml
Спойлер
- name: Новости
columns:
- size: full
widgets:
- type: rss
limit: 20
collapse-after: 3
cache: 12h
title: Та-а-а-к! Почитаем!
style: detailed-list
feeds:
- url: https://www.ferra.ru/exports/rss.xml
Важно! Хочу отметит тот факт, что если допущена ошибка синтаксиса (не важно какого языка HTML, JS, CSS, YAML или Go) в файлах конфигурации то Glance в лучшем случае промолчит, и сложится впечатление что он выводит кэшированные данные, в худшем сломается, и в редких случаях выведет ошибку в браузер.
Очень понравилось. Спасибо за примеры.
А откуда брали clock.js/css если не секрет?
Подумал, что часы на jscript тривиальная задача, хотя и в простых задачах могут быть свои нюансы.
Виноват, исправляюсь:
clock.js
function wait_element(selector, callback) {
const interval = setInterval(() => {
const element = document.querySelector(selector);
if (element) {
clearInterval(interval);
callback(element);
}
}, 100);
}
function update() {
const now = new Date();
const strtime = now.toLocaleTimeString();
document.getElementById('clock').textContent = strtime;
}
wait_element('#clock', (element) => {
update();
setInterval(update, 1000);
// console.log(element.textContent);
});
clock.css
#clock {
margin:0px auto;
height: 40px;
color: #9DB590;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size:28px;
text-align: center;
letter-spacing: 2px;
}
