Post

Homer

Recently I have decided to get my home network in order, One of the things I realized was that I spend a lot of time trying to remember the IP addresses or URLs for services within my home, especially ones that I access infrequently.

After searching for some open source projects i came across the homer. A simple to use Docker container that stores all my service url which can be accessible easily. Homer is a full static html/js dashboard, based on a simple yaml configuration file

Prerequisites

  1. Docker Engine and Docker Compose packages are installed and running
  2. A non-root user with Docker privileges

Setting up the homer

Create the directory structure

To keep the docker directory clean i have created a homer directory to store the configuration file and any other assets such as images. My file structure is as follows:

1
2
mkdir ~/docker/homer/assets
touch ~/docker/homer/assets/config.yml ~/docker/homer/docker-compose.yml
1
2
3
4
📂homer
|-- 📂assets
|   |-- 📑config.yml
|-- 📑docker-compose.yml  

Docker Configuration

As we have created the docker compose file lets edit the files with your favorite editors of choice

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
---
version: "3"
services:
  homer:
    image: b4bz/homer
    container_name: homer
    volumes:
      - ./assets/:/www/assets
    ports:
      - 8080:8080
    #networks:
    #  - proxy
    restart: unless-stopped
    user: 1000:1000 # default
    environment:
      - INIT_ASSETS=1 # default

#networks:
#  proxy:
#    external: true

As you notice am using the port 8080 if the port 8080 is already used feel free to use the free port. if you want to create a separate network for the homer (eg:- proxy) don’t forget to create the docker network manually docker network create proxy

Verify and launch the container

to verify the docker compose files has no issues use docker compose config Once you have the docker-compose.yml file you can run docker-compose up -d which will create the volume, download the image and start the container in the background

To verify the status of all running containers, run the docker-compose command:

1
docker-compose ps (OR) docker ps -a

If something goes wrong, you can check the logs for each container using the docker logs command and specify the service name. For example, to check the log of the Nginx Proxy Manager container, run the following command:

1
docker logs $container (OR) docker compose logs -f

Accessing the Homer dashboard

Now that the container is up and running you can access it via:

http://<docker-host-ip-address>:<port>

If everything has worked as expected you should see the following demo dashboard:

dashboard

You can use the Nginx proxy manager to create the reverse proxy and configure the lets-encrypt SSL certificate to remove the SSL warnings

Sample config.yml file

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# Homelab Dashboard Main Page Configuration
# See https://fontawesome.com/v5/search for icons options

title: "Dashboard"
subtitle: "Homelab"
#logo: "logo.png"
icon: "fas fa-house-laptop" # Optional icon

header: true
footer: '<p> Home lab Dashboard </p>'
columns: "4" # Options "auto" or must be a factor of 12: 1,2,3,4,6,12
connectivityCheck: true

#proxy:
#  useCredentials: true

defaults:
  layout: list
  colorTheme: dark

stylesheet:
- "assets/custom.css"

# Optional theme customization
theme: default # 'default' or one of the themes available in 'src/assets/themes'
colors:
  light:
    highlight-primary: "#fff5f2"
    highlight-secondary: "#fff5f2"
    highlight-hover: "#bebebe"
    background: "#12152B"
    card-background: "rgba(255, 245, 242, 0.8)"
    text: "#ffffff"
    text-header: "#fafafa"
    text-title: "#000000"
    text-subtitle: "#111111"
    card-shadow: rgba(0, 0, 0, 0.5)
    link: "#3273dc"
    link-hover: "#2e4053"
    background-image: "../assets/wallpaper-light.jpeg" # Change wallpaper.jpeg to the name of your own custom wallpaper!
  dark:
    highlight-primary: "#181C3A"
    highlight-secondary: "#181C3A"
    highlight-hover: "#1F2347"
    background: "#12152B"
    card-background: "rgba(24, 28, 58, 0.8)"
    text: "#eaeaea"
    text-header: "#7C71DD"
    text-title: "#fafafa"
    text-subtitle: "#8B8D9C"
    card-shadow: rgba(0, 0, 0, 0.5)
    link: "#c1c1c1"
    link-hover: "#fafafa"
    background-image: "../assets/wallpaper.jpeg"

# Optional navbar
links:
  - name: "Wordpress"
    icon: "fab fa-wordpress"
    url: "https://www.myblog.io/"
    target: "_blank"    
  - name: "Linkedin"
    icon: "fab fa-linkedin"
    url: "https://www.linkedin.com/feed/"
    target: "_blank"
  - name: "Github"
    icon: "fab fa-github"
    url: "https://github.com/"
    target: "_blank" # optional html a tag target attribute
  - name: "Reddit"
    icon: "fab fa-reddit"
    url: "https://www.reddit.com/user/"
    target: "_blank"
  - name: "Twitter"
    icon: "fab fa-twitter"
    url: "https://twitter.com/home"
    target: "_blank"
  - name: "Facebook"
    icon: "fab fa-facebook"
    url: "https://www.facebook.com"
    target: "_blank"
  - name: "Work Dashboard (local)"
    icon: "fas fa-tools"
    url: "https://wordpress.com"
    target: "_blank"

# Services
services:
  
  # Section 1
  - name: "Hardware"
    icon: "fas fa-server"
    items:
      - name: "Proxmox"
        logo: "https://raw.githubusercontent.com/walkxcode/dashboard-icons/master/png/proxmox.png"
        subtitle: "Virtual Environment"
        tag: "server"
        tagstyle: "is-link" # options is-primary,is-link,is-info,is-success,is-warning,is-danger,is-small,is-medium,is-large,is-outlined,is-loading,[disabled]
        url: "https://proxmox.com"
        target: "_blank"

      - name: "servers"
        subtitle: "Power edge Dell R720"
        logo: "https://www.freepnglogos.com/uploads/server-png/home-server-icon-icons-and-png-backgrounds-30.png"
        tag: "Server"
        tagstyle: "is-link"
        url: "https://www.dell.com/"
        target: "_blank"

  # Section 2
  - name: "Container Management ARM"
    icon: "fab fa-docker"
    items:
      - name: "Portainer"
        logo: "https://raw.githubusercontent.com/walkxcode/dashboard-icons/master/png/portainer.png"
        url: "https://www.portainer.io/"
        type: "Portainer"
        target: "_blank"

  # Section 3
  - name: "Applications"
    icon: "fas fa-gears"
    items:      
      - name: "Nginx Proxy Manager"
        subtitle: "Reverse Proxy Service"
        logo: "https://raw.githubusercontent.com/walkxcode/dashboard-icons/master/png/nginx-proxy-manager.png"
        tag: "proxy"
        tagstyle: "is-link"
        url: "https://nginxproxymanager.com/"
        target: "_blank"

      - name: "Bitwarden"
        subtitle: "Password Management"
        logo: "https://raw.githubusercontent.com/walkxcode/dashboard-icons/master/png/bitwarden.png"
        tag: "app"
        tagstyle: "is-link"
        url: "https://bitwarden.com/"
        target: "_blank"

Custom Themes

You can add custom CSS to homer in order to have a personal look similar to the one I have used from Walkxcode called homer-theme

dashboard

For More details please check the manual

This post is licensed under CC BY 4.0 by the author.