]> git.immae.eu Git - github/bastienwirtz/homer.git/blame - README.md
Build multi-arch container with manifest
[github/bastienwirtz/homer.git] / README.md
CommitLineData
09763dbf 1# Homer
8aa8398f 2A dead simple static **HOM**epage for your serv**ER** to keep your services on hand, from a simple `yaml` configuration file.
09763dbf 3
5861f0f8 4**Check out the live demo [here](https://homer-demo.netlify.app).**
5fe53dce 5
a4de4a3a
JS
6It supports keyboard shortcuts:
7
8* `/` Start searching.
9* `Escape` Stop searching.
10* `Enter` Open the first matching result (respects the bookmark's `_target` property).
11* `Alt`/`Option` + `Enter` Open the first matching result in a new tab.
12
8aa8398f 13If you need authentication support, you're on your own (it can be secured using a web server auth module or exposing it only through a VPN network / SSH tunnel, ...)
09763dbf 14
22555b55 15![screenshot](https://raw.github.com/bastienwirtz/homer/master/screenshot.png)
09763dbf 16
22555b55
BW
17## Roadmap
18
19- [ ] Colors / theme customization
20- [ ] Enable PWA support (making possible to "install" - add to homescreen - it)
21- [ ] Improve maintenability (external library import & service workers cached file list.)
22
23## Installation
b79e6ed1
BW
24
25### Using docker
26
27```sh
46fd4f4d 28sudo docker run -p 8080:8080 -v /your/local/config.yml:/www/config.yml -v /your/local/assets/:/www/assets b4bz/homer:latest
b79e6ed1
BW
29```
30
31### Manually
32
22555b55 33**How to build / install it?** There is no build system (😱), use it like that! It's meant to be stupid simple & zero maintenance required. Just copy the static files somewhere, and visit the `index.html`.
e41196e7 34
09763dbf 35
22555b55 36## Configuration
09763dbf
BW
37
38Title, icons, links, colors, and services can be configured in the `config.yml` file, using [yaml](http://yaml.org/) format.
39
40
41```yaml
42---
43# Homepage configuration
e41196e7 44# See https://fontawesome.com/icons for icons options
09763dbf
BW
45
46title: "Simple homepage"
47subtitle: "Homer"
48logo: "assets/homer.png"
e41196e7 49# Alternatively a fa icon can be provided:
46fd4f4d
BW
50# icon: "fas fa-skull-crossbones"
51footer: '<p>Created with <span class="has-text-danger">❤️</span> with <a href="https://bulma.io/">bulma</a>, <a href="https://vuejs.org/">vuejs</a> & <a href="https://fontawesome.com/">font awesome</a> // Fork me on <a href="https://github.com/bastienwirtz/homer"><i class="fab fa-github-alt"></i></a></p>' # set false if you want to hide it.header:
09763dbf
BW
52
53# Optional message
54message:
7fd9dc6f 55 # url: "https://<my-api-endpoint>" # Can fetch information from an endpoint to override value below.
e3212743 56 style: "is-warning"
09763dbf
BW
57 title: "Optional message!"
58 content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. Vestibulum rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. Aenean ac eleifend lacus, in mollis lectus. Donec sodales, arcu et sollicitudin porttitor, tortor urna tempor ligula."
59
60# Optional navbar
5028088e 61# links: [] # Allows for navbar (dark mode, layout, and search) without any links
09763dbf
BW
62links:
63 - name: "ansible"
aabb7d53 64 icon: "fab fa-github"
09763dbf 65 url: "https://github.com/xxxxx/ansible/"
56c69e0d 66 target: '_blank' # optionnal html a tag target attribute
09763dbf 67 - name: "Wiki"
aabb7d53 68 icon: "fas fa-book"
09763dbf
BW
69 url: "https://wiki.xxxxxx.com/"
70
71# Services
72# First level array represent a group.
7312bdd6 73# Leave only a "items" key if not using group (group name, icon & tagstyle are optional, section separation will not be displayed).
09763dbf
BW
74services:
75 - name: "DevOps"
aabb7d53 76 icon: "fa fa-code-fork"
09763dbf
BW
77 items:
78 - name: "Jenkins"
79 logo: "/assets/tools/jenkins.png"
e41196e7
BW
80 # Alternatively a fa icon can be provided:
81 # icon: "fab fa-jenkins"
09763dbf
BW
82 subtitle: "Continuous integration server"
83 tag: "CI"
84 url: "#"
56c69e0d 85 target: '_blank' # optionnal html a tag target attribute
09763dbf
BW
86 - name: "RabbitMQ Management"
87 logo: "/assets/tools/rabbitmq.png"
88 subtitle: "Manage & monitor RabbitMQ server"
89 tag: "haproxy"
7312bdd6 90 # Optional tagstyle
a2fdb8a9 91 tagstyle: "is-success"
09763dbf
BW
92 url: "#"
93 - name: "Monitoring"
aabb7d53 94 icon: "fas fa-heartbeat"
09763dbf
BW
95 items:
96 - name: "M/Monit"
97 logo: "/assets/tools/monit.png"
98 subtitle: "Monitor & manage all monit enabled hosts"
99 tag: "monit"
100 url: "#"
101 - name: "Grafana"
102 logo: "/assets/tools/grafana.png"
103 subtitle: "Metric analytics & dashboards"
104 url: "#"
105 - name: "Kibana"
106 logo: "/assets/tools/elastic.png"
107 subtitle: "Explore & visualize logs"
108 tag: "elk"
109 url: "#"
110 - name: "Website monitoring"
111 logo: "/assets/tools/pingdom.png"
112 subtitle: "Pingdom public reports overview"
113 tag: "CI"
114 url: "#"
115
e41196e7 116```
7fd9dc6f
BW
117
118If you choose to fetch message information from an endpoint, the output format should be:
119
120```json
121{
122 "style": null,
123 "title": "Lorem ipsum 42",
124 "content": "LA LA LA Lorem ipsum dolor sit amet, ....."
125}
126```
127
128`null` value or missing keys will be ignored and value from the `config.yml` will be used if available.
22555b55 129Empty values (either in `config.yml` or the endpoint data) will hide the element (ex: set `"title": ""` to hide the title bar).