Add gethomepage as dashboard
This commit is contained in:
parent
2a86c1bd88
commit
ad52cec21e
4 changed files with 208 additions and 0 deletions
24
filter_plugins/tailscale_to_dashboard.py
Normal file
24
filter_plugins/tailscale_to_dashboard.py
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
class FilterModule(object):
|
||||||
|
def filters(self):
|
||||||
|
return {
|
||||||
|
'tailscale_to_dashboard': self.tailscale_to_dashboard,
|
||||||
|
}
|
||||||
|
|
||||||
|
def tailscale_to_dashboard(self, tailscale):
|
||||||
|
ts_key = tailscale["key"]
|
||||||
|
machines = tailscale["machines"]
|
||||||
|
|
||||||
|
result = []
|
||||||
|
for (key, props) in machines.items():
|
||||||
|
result.append({
|
||||||
|
key: {
|
||||||
|
"href": "https://login.tailscale.com/admin/machines/" + props["ip"],
|
||||||
|
"widget": {
|
||||||
|
"type": "tailscale",
|
||||||
|
"deviceid": props["id"],
|
||||||
|
"key": ts_key
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
return result
|
|
@ -29,6 +29,8 @@
|
||||||
tags: [forgejo, git, development]
|
tags: [forgejo, git, development]
|
||||||
- role: forgejo_runner
|
- role: forgejo_runner
|
||||||
tags: [forgejo-runner, ci, development]
|
tags: [forgejo-runner, ci, development]
|
||||||
|
- role: gethomepage
|
||||||
|
tags: [gethomepage, dashboard]
|
||||||
- role: harbor
|
- role: harbor
|
||||||
tags: [harbor, registry, development]
|
tags: [harbor, registry, development]
|
||||||
- role: healthcheck
|
- role: healthcheck
|
||||||
|
|
69
roles/gethomepage/tasks/main.yml
Normal file
69
roles/gethomepage/tasks/main.yml
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
---
|
||||||
|
- name: Set common facts
|
||||||
|
ansible.builtin.import_tasks: tasks/set-default-facts.yml
|
||||||
|
|
||||||
|
- name: Deploy {{ svc.name }}
|
||||||
|
vars:
|
||||||
|
svc: "{{ gethomepage_svc }}"
|
||||||
|
compose: "{{ gethomepage_compose }}"
|
||||||
|
block:
|
||||||
|
- name: Import prepare tasks for common service
|
||||||
|
ansible.builtin.import_tasks: tasks/prepare-common-service.yml
|
||||||
|
|
||||||
|
- name: Set config path
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
config_path: "{{ (service_path, 'config') | path_join }}"
|
||||||
|
|
||||||
|
- name: Create config directory
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ config_path }}"
|
||||||
|
state: directory
|
||||||
|
mode: "0755"
|
||||||
|
|
||||||
|
- name: Template settings
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: yml.j2
|
||||||
|
dest: "{{ (config_path, 'settings.yaml') | path_join }}"
|
||||||
|
mode: "0644"
|
||||||
|
vars:
|
||||||
|
yml: "{{ gethomepage_settings_yml }}"
|
||||||
|
register: cmd_result_settings
|
||||||
|
|
||||||
|
- name: Template services
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: yml.j2
|
||||||
|
dest: "{{ (config_path, 'services.yaml') | path_join }}"
|
||||||
|
mode: "0644"
|
||||||
|
vars:
|
||||||
|
yml: "{{ gethomepage_services_yml }}"
|
||||||
|
register: cmd_result_services
|
||||||
|
|
||||||
|
- name: Template booksmarks
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: yml.j2
|
||||||
|
dest: "{{ (config_path, 'booksmarks.yaml') | path_join }}"
|
||||||
|
mode: "0644"
|
||||||
|
vars:
|
||||||
|
yml: "{{ gethomepage_bookmarks_yml }}"
|
||||||
|
register: cmd_result_booksmarks
|
||||||
|
|
||||||
|
- name: Template widgets
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: yml.j2
|
||||||
|
dest: "{{ (config_path, 'widgets.yaml') | path_join }}"
|
||||||
|
mode: "0644"
|
||||||
|
vars:
|
||||||
|
yml: "{{ gethomepage_widgets_yml }}"
|
||||||
|
register: cmd_result_widgets
|
||||||
|
|
||||||
|
- name: Set the docker force-recreate flag
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
docker_force_recreate: --force-recreate
|
||||||
|
when: | # noqa: no-handler We need to handle the restart per service. Handlers don't support variables.
|
||||||
|
cmd_result_settings.changed
|
||||||
|
or cmd_result_services.changed
|
||||||
|
or cmd_result_booksmarks.changed
|
||||||
|
or cmd_result_widgets.changed
|
||||||
|
|
||||||
|
- name: Import start tasks for common service
|
||||||
|
ansible.builtin.import_tasks: tasks/start-common-service.yml
|
113
roles/gethomepage/vars/main.yml
Normal file
113
roles/gethomepage/vars/main.yml
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
---
|
||||||
|
gethomepage_svc:
|
||||||
|
domain: dashboard.serguzim.me
|
||||||
|
name: gethomepage
|
||||||
|
port: 3000
|
||||||
|
caddy_extra: import auth_serguzim_me
|
||||||
|
|
||||||
|
gethomepage_settings_yml:
|
||||||
|
title: serguzim.net Dashboard
|
||||||
|
startUrl: https://{{ gethomepage_svc.domain }}
|
||||||
|
|
||||||
|
useEqualHeights: true
|
||||||
|
|
||||||
|
layout:
|
||||||
|
- Infrastructure:
|
||||||
|
style: row
|
||||||
|
columns: 4
|
||||||
|
- Services:
|
||||||
|
style: row
|
||||||
|
columns: 4
|
||||||
|
- External:
|
||||||
|
style: row
|
||||||
|
columns: 4
|
||||||
|
- VPN:
|
||||||
|
style: row
|
||||||
|
columns: 4
|
||||||
|
|
||||||
|
gethomepage_services_yml:
|
||||||
|
- Infrastructure:
|
||||||
|
- reverse-proxy@node002.serguzim.net:
|
||||||
|
widget:
|
||||||
|
type: caddy
|
||||||
|
url: http://node002.vpn.serguzim.net:2019
|
||||||
|
- faas.serguzim.me:
|
||||||
|
href: https://faas.serguzim.me
|
||||||
|
- s3.serguzim.me:
|
||||||
|
href: https://s3.serguzim.me
|
||||||
|
- Services:
|
||||||
|
- analytics.serguzim.me:
|
||||||
|
href: https://analytics.serguzim.me
|
||||||
|
- auth.serguzim.me:
|
||||||
|
href: https://auth.serguzim.me
|
||||||
|
widget:
|
||||||
|
type: authentik
|
||||||
|
url: https://auth.serguzim.me
|
||||||
|
key: "{{ vault_gethomepage.authentik.key }}"
|
||||||
|
- coder.serguzim.me:
|
||||||
|
href: https://coder.serguzim.me
|
||||||
|
- git.serguzim.me:
|
||||||
|
href: https://git.serguzim.me
|
||||||
|
- inventory.serguzim.me:
|
||||||
|
href: https://inventory.serguzim.me
|
||||||
|
- mail.serguzim.me:
|
||||||
|
href: https://mail.serguzim.me
|
||||||
|
- media.serguzim.me:
|
||||||
|
href: https://media.serguzim.me
|
||||||
|
- push.serguzim.me:
|
||||||
|
href: https://push.serguzim.me
|
||||||
|
- recipes.serguzim.me:
|
||||||
|
href: https://recipes.serguzim.me
|
||||||
|
- registry.serguzim.me:
|
||||||
|
href: https://registry.serguzim.me
|
||||||
|
- rss.serguzim.me:
|
||||||
|
href: https://rss.serguzim.me
|
||||||
|
- status.serguzim.me:
|
||||||
|
href: https://status.serguzim.me
|
||||||
|
widget:
|
||||||
|
type: uptimekuma
|
||||||
|
url: https://status.serguzim.me
|
||||||
|
slug: serguzim-net
|
||||||
|
- tick.serguzim.me:
|
||||||
|
href: https://tick.serguzim.me
|
||||||
|
- wiki.serguzim.me:
|
||||||
|
href: https://wiki.serguzim.me
|
||||||
|
- External:
|
||||||
|
- Nextdns:
|
||||||
|
href: https://my.nextdns.io
|
||||||
|
widget:
|
||||||
|
type: nextdns
|
||||||
|
profile: "{{ vault_gethomepage.nextdns.profile }}"
|
||||||
|
key: "{{ vault_gethomepage.nextdns.key }}"
|
||||||
|
- VPN: "{{ vault_tailscale | tailscale_to_dashboard }}"
|
||||||
|
|
||||||
|
gethomepage_bookmarks_yml:
|
||||||
|
- Developer:
|
||||||
|
- Github:
|
||||||
|
- abbr: GH
|
||||||
|
href: https://github.com/
|
||||||
|
- Social:
|
||||||
|
- Reddit:
|
||||||
|
- abbr: RE
|
||||||
|
href: https://reddit.com/
|
||||||
|
- Entertainment:
|
||||||
|
- YouTube:
|
||||||
|
- abbr: YT
|
||||||
|
href: https://youtube.com/
|
||||||
|
|
||||||
|
gethomepage_widgets_yml:
|
||||||
|
- resources:
|
||||||
|
cpu: true
|
||||||
|
memory: true
|
||||||
|
disk: /
|
||||||
|
|
||||||
|
- search:
|
||||||
|
provider: duckduckgo
|
||||||
|
target: _blank
|
||||||
|
|
||||||
|
gethomepage_compose:
|
||||||
|
watchtower: true
|
||||||
|
image: ghcr.io/gethomepage/homepage
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- ./config:/app/config/
|
Reference in a new issue