selfhosted-apps-docker/homer/readme.md

3.2 KiB

Homer in docker

guide by example

logo

Purpose

Homepage.

Files and directory structure

/home/
└── ~/
    └── docker/
        └── homer/
            ├── assets/
            ├── .env
            ├── docker-compose.yml
            └── config.yml

docker-compose

docker-compose.yml

version: "2"
services:

  homer:
    image: b4bz/homer:latest
    container_name: homer
    hostname: homer
    restart: unless-stopped
    volumes:
      - ./config.yml:/www/config.yml
      - ./assets/:/www/assets

networks:
  default:
    external:
      name: $DEFAULT_NETWORK

.env

# GENERAL
MY_DOMAIN=blabla.org
DEFAULT_NETWORK=caddy_net
TZ=Europe/Bratislava

Reverse proxy

Caddy v2 is used, details here.

Caddyfile

{$MY_DOMAIN} {
    reverse_proxy homer:8080
}

Config

Homepage is configured in config.yml file.

config.yml

title: "Homepage"
subtitle: "Homer"
logo: "assets/logo.png"
# icon: "fas fa-skull-crossbones"
footer: '<p>less boring look with a footer</p>'

# Optional navbar
links:
  - name: "Font Awesome Icons Galery"
    icon: "fab fa-fort-awesome"
    url: "https://fontawesome.com/icons?d=gallery"
  - name: "Reddit SelfHosted"
    icon: "fab fa-reddit"
    url: "https://www.reddit.com/r/selfhosted/"

# First level array represent a group
# Single service with an empty name if not using groups
services:
  - name: "Main"
    icon: "fab fa-docker"
    items:
      - name: "Bookstack"
        logo: "/assets/tools/bookstack.png"
        subtitle: "Notes and Documentation"
        url: "https://book.blabla.org"
      - name: "Bitwarden"
        logo: "/assets/tools/bitwarden.png"
        subtitle: "Password Manager"
        url: "https://passwd.blabla.org"
      - name: "Nextcloud"
        logo: "/assets/tools/nextcloud.png"
        subtitle: "File Sync & Share"
        url: "https://nextcloud.blabla.org"
  - name: "Monitoring"
    icon: "fas fa-heartbeat"
    items:
      - name: "Prometheus + Grafana"
        logo: "/assets/tools/grafana.png"
        subtitle: "Metric analytics & dashboards"
        url: "https://grafana.blabla.org"
      - name: "Portainer"
        logo: "/assets/tools/portainer.png"
        subtitle: "Docker Manager"
        url: "https://portainer.blabla.org"

look

Update

  • watchtower updates the image automaticly

  • manual image update
    docker-compose pull
    docker-compose up -d
    docker image prune

Backup and restore

  • backup using BorgBackup setup that makes daily snapshot of the entire directory

  • restore
    copy config.yml and assets directory from a borg repository to a freshly spin container