Homed - Light-weight, easily configurable, dockerized homepage

Related tags

Miscellaneoushomed
Overview

homed

homed is a light-weight customizable portal primarily intended for the "self-hosted" crowd with built-in support for local authentication services (e.g. Authelia). The user configures options and which links to display using a yaml file, and also has ability to include custom CSS and JavaScript. All resources are hosted locally. Access to links is controlled via groups passed in by the authentication service using the Remote-Groups request header (which Authelia supports).

Light Mode: homed

Dark Mode: homed

Weather:

  • Displays current local radar and refreshes every 15 minutes
  • 12-hour forecast
  • 5-day forecast

homed

Features

  • Auth integration (e.g. Authelia)
  • Ability to provide custom CSS and JavaScript
  • Simple yaml configuration file
  • FontAwesome icon support
  • Light/Dark mode

Documentation

Please visit the wiki

Versioning

Semver will be followed. For version x.y.z

  • x Major version release, breaking changes
  • y Minor version release, no breaking changes, added features
  • z Bug release, no breaking changes, no new features
Comments
  • Exception when no auth configured

    Exception when no auth configured

    There is an exception when you try to access the page without configuring auth/user

    Traceback (most recent call last):
      File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2073, in wsgi_app
        response = self.full_dispatch_request()
      File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1518, in full_dispatch_request
        rv = self.handle_user_exception(e)
      File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1516, in full_dispatch_request
        rv = self.dispatch_request()
      File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1502, in dispatch_request
        return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
      File "/app/homed.py", line 25, in display_home
        app.logger.info("user={user}, path=/".format(user=user["username"]))
    KeyError: 'username'
    

    Very cool project otherwise, keep up the good work!

    bug 
    opened by zawwz 1
  • Split up code user has access to and what they don't

    Split up code user has access to and what they don't

    In creation of Dark Mode (#2) I am realizing that the upgrade path will be pretty difficult because of how the image puts the used code into place. Users will need to delete their current code in order for the new code to be used.

    This has to do with the image copying the initial code into the user mounted volume and likely puts too much onus on the average user to have to delete it in order to pick up updates.

    Multiple things should likely be done:

    1. Stop copying all of the app files and assets over to the user volume.
    2. Offer a custom.css and custom.js for the user to make adjustments they'd like in. It should contain only their changes, never core-app items and be stored on the user volume (/config in the container).
    3. Look at Making the HTML utilize modules of some sort is likely going to be needed.

    Need to think some more on this one and how best to tackle it. Open to ideas ... it's a pickle if giving the user direct access to the HTML is going to be kept as a feature.

    enhancement 
    opened by mwalters 1
  • Bump certifi from 2021.10.8 to 2022.12.7

    Bump certifi from 2021.10.8 to 2022.12.7

    Bumps certifi from 2021.10.8 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • 1.3.0

    1.3.0

    • Add service status checks
      • Disabled by default, can be turned on per service
      • Dog-ear on each service indicates status (green = up / red = down / blue = check in progress)
    • Add support for user-defined drop-down menus in header
    • Add sunrise/sunset to weather widget
    • Periodically (every ~5m) update current weather info & radar without page refresh
    • Fixed bug in refreshing of radar loop
    enhancement 
    opened by mwalters 0
  • Customization improvements

    Customization improvements

    Re: #4

    For now at least, going to need to remove user access to the HTML. Custom JS and CSS files are placed in the user volume which the user can edit in order to provide customization of the UI.

    This decision wasn't taken super lightly, but basically the upgrade paths for users would be quite difficult without keeping them out of the necessary code for the HTML/CSS/JS.

    The way the application previously worked is it copied itself, in its entirety onto the user volume every time the container was started. Once the files were copied into place, it would not overwrite them. This meant that feature enhancements, etc. could not be easily introduced for users, and that in order to upgrade at all -- even if they had made no customizations -- the user would need to delete all the files in the user volume so that updated files could be copied into place.

    So for now, at least, the application files will not be copied into the user provided volume. Instead a custom CSS and custom JS file will be placed there that will only ever house the users edits, and thus homed no longer has to worry about overwriting them but can still easily deliver feature enhancements without the user having to delete files each time. This was the best happy medium that I could come up with.

    In the future, I'd like to look into modularizing things a bit more and perhaps allow for user provided modules or "widgets" that can be sections on the homepage. That's a big task though, so for now this was the overall best solution I could come up with.

    Still TBD(one) --

    • [x] Just realized in doing all this I pulled the configuration file out of being controllable by the user ... obviously that needs to be sorted out before merge.
    opened by mwalters 0
  • Dark mode

    Dark mode

    Re: #2

    • Stopped user-menu from being collapsed into mobile menu (now it's just a single user menu on all view ports)
    • Added toggle to turn dark mode on and off. Toggle is located under user menu.
    • Added config option in homed.yaml for enabling dark mode by default. This can be used to prevent it from loading in light mode first then having to switch to dark mode. The config option is dark_mode.
    • Added various CSS treatments to support dark mode (background colors, changing weather alert popover, etc)
    opened by mwalters 0
Releases(1.3.1)
A tool to improve Boolean satisfiability (SAT) solver user's life

SatHelper This is a tool to improve the Boolean satisfiability (SAT) and MaxSAT solver user's life. It helps you model various problems as SAT and Max

Tomas Balyo 1 Nov 16, 2021
Myrepo - A tool to create your own Arch Linux repository

myrepo A (experimental) tool to create your own Arch Linux repository Example We

Anton Hvornum 5 Feb 19, 2022
This is the improvised version of Dobot Magician which can be implemented for Dobot M1

pydobotM1 This is the edited driver for Dobot M1 version of the original pydobot library intended for use with the Dobot Magician. Here's what you nee

Shaik Abdullah 2 Jul 11, 2022
Resizing using nnedi3/znedi3/nnedi3cl with center alignment and correct chroma placement

nnedi3_resample A VapourSynth script for easy resizing using nnedi3/znedi3/nnedi3cl with center alignment and correct chroma placement. Requirements n

Home Of VapourSynth Evolution 12 Sep 08, 2022
Coffeematcher is a python library to randomly match participants for coffee meetings.

coffeematcher coffeematcher is a python library to randomly match participants for coffee meetings. Installation Clone the repository: git clone https

Thomas Wesselink 3 May 06, 2022
This repository contains various tools useful for offensive operations (reversing, etc) regarding the PE (Portable Executable) format

PE-Tools This repository contains various tools useful for offensive operations (reversing, etc) regarding the PE (Portable Executable) format Install

stark0de 4 Oct 13, 2022
Its a simple and fun to use application. You can make your own quizes and send the lik of the quiz to your friends.

Quiz Application Its a simple and fun to use application. You can make your own quizes and send the lik of the quiz to your friends. When they would a

Atharva Parkhe 1 Feb 23, 2022
An advanced NFT Generator

NFT Generator An advanced NFT Generator Free software: GNU General Public License v3 Documentation: https://nft-generator.readthedocs.io. Features TOD

NFT Generator 5 Apr 21, 2022
Gunakan Dengan Bijak!!

YMBF Made with ❤️ by ikiwzXD_ menu Results notice me: if you get cp results, save 3/7 days then log in. Install script on Termux $ pkg update && pkg u

Ikiwz 0 Jul 11, 2022
Import Apex legends mprt files exported from Legion

Apex-mprt-importer-for-Blender Import Apex legends mprt files exported from Legion. REQUIRES CAST IMPORTER Usage: Use a VPK extracter to extract the m

15 Dec 18, 2022
Fixed waypoint(pose) navigation for turtlebot simulation.

Turtlebot-NavigationStack-Fixed-Waypoints fixed waypoint(pose) navigation for turtlebot simulation. Task Details Task Permformed using Navigation Stac

Shanmukha Vishnu 1 Apr 08, 2022
A program to calculate the are of a triangle. made with Python.

Area-Calculator What is Area-Calculator? Area-Calculator is a program to find out the area of a triangle easily. fully made with Python. Needed a pyth

Chandula Janith 0 Nov 27, 2021
The Google Assistant on a rotary phone

Google Assistant Rotary Phone Shoutout to my dad who had this idea a year ago and I'm only now getting around to doing it. Notes This is the code used

rydercalmdown 10 Nov 04, 2022
A small scale relica of bank management system using the MySQL queries in the python language.

Bank_Management_system This is a Bank Management System Database Project. Abstract: The main aim of the Bank Management Mini project is to keep record

Arun Singh Babal 1 Jan 27, 2022
Double Pendulum implementation in Python, now with added pendulums and trails :D

Double Pendulum Using Curses in Python. A nice relaxing double pendulum simulation using ASCII, able to simulate multiple pendulums at once, and provi

Nekurone 62 Dec 14, 2022
ELF file deserializer and serializer library

elfo ELF file deserializer and serializer library. import elfo elf = elfo.ELF.from_path('main') elf ELF( header=ELFHeader( e_ident=e

Filipe Laíns 3 Aug 23, 2021
The presented desktop application was made to solve 1d schrodinger eqation

schrodinger_equation_1d_solver The presented desktop application was made to solve 1d schrodinger eqation. It implements Numerov's algorithm (step by

Artem Kashapov 2 Dec 29, 2021
py2dis - A disassembly engine & library for Python

py2dis - A disassembly engine & library for Python. py2dis is a disassembly library for Python that does not use any modules/libraries other than colo

3 Feb 04, 2022
Create Arrays (Working with For Loops)

DSA with Python Create Arrays (Working with For Loops) CREATING ARRAYS WITH USER INPUT Array is a collection of items stored at contiguous memory loca

1 Feb 08, 2022
Repo to store back end infrastructure for Message in a Bottle

Message in a Bottle Backend API RESTful API for Message in a Bottle frontend application consumption. About The Project • Tools Used • Local Set Up •

4 Dec 05, 2021