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)
An ultra fast cross-platform multiple screenshots module in pure Python using ctypes.

Python MSS from mss import mss # The simplest use, save a screen shot of the 1st monitor with mss() as sct: sct.shot() An ultra fast cross-platfo

Mickaël Schoentgen 799 Dec 30, 2022
Very Simple 2 Message Spammer!

Very Simple 2 Message Spammer!

Syntax. 4 Dec 06, 2022
Code and yara rules to detect and analyze Cobalt Strike

Cobalt Strike Resources This repository contains: analyze.py: a script to analyze a Cobalt Strike beacon (python analyze.py BEACON) extract.py; extrac

Tek 224 Jan 04, 2023
Demo of connecting Rasa with Zalo

Demo of connecting Rasa with Zalo

6 Jul 25, 2022
A free website that keeps the people informed about housing and evictions.

Eviction Tracker Currently helping verify detainer warrant data for middle Tennessee - via Middle TN DSA - Red Door Collective Features Presents data

Red Door Collective 7 Dec 14, 2022
A python package that computes an optimal motion plan for approaching a red light

redlight_approach redlight_approach is a Python package that computes an optimal motion plan during traffic light approach. RLA_demo.mov Given the par

Jonathan Roy 4 Oct 27, 2022
Minutaria is a basic educational Python timer used to learn python and software testing libraries.

minutaria minutaria is a basic educational Python timer. The project is educational, it aims to teach myself programming, python programming, python's

1 Jul 16, 2021
A Python script made for the Python Discord Pixels event.

Python Discord Pixels A Python script made for the Python Discord Pixels event. Usage Create an image.png RGBA image with your pattern. Transparent pi

Stanisław Jelnicki 4 Mar 23, 2022
Ontario-Covid-Screening - An automated Covid-19 School Screening Tool for Ontario

Ontario-Covid19-Screening An automated Covid-19 School Screening Tool for Ontari

Rayan K 0 Feb 20, 2022
Saturne best tools pour baiser tout le système de discord

Installation | Important | Discord 🌟 Comme Saturne est gratuit, les dons sont vraiment appréciables et maintiennent le développement! Caractéristique

GalackQSM 8 Oct 02, 2022
Introduction to Databases Coursework 2 (SQL) - dataset generator

Introduction to Databases Coursework 2 (SQL) - dataset generator This is python script generates a text file with insert queries for the schema.sql fi

Javier Bosch 1 Nov 08, 2021
Account Manager / Nuker with GUI.

Account Manager / Nuker Remove all friends Block all friends Leave all servers Mass create servers Close all dms Mass dm Exit Setup git clone https://

Lodi#0001 1 Oct 23, 2021
a simple thing that i made for fun :trollface:

we-do-a-little-trolling about a simple thing that i made for fun. requirements and instructions first you need to install obs , then start the virtual

ranon rat 6 Jul 15, 2022
BestBuy Script Designed to purchase any item when it becomes available.

prerequisites: Selnium; undetected-chromedriver. This Script is designed to order an Item provided a link from BestBuy.com only.

Bransen Smith 0 Jan 12, 2022
Sodium is a general purpose programming language which is instruction-oriented (a new programming concept that we are developing and devising) [Still developing...]

Sodium Programming Language Sodium is a general purpose programming language which is instruction-oriented (a new programming concept that we are deve

Instruction Oriented Programming 22 Jan 11, 2022
Small projects for python beginners.

Python Mini Projects For Beginners I recently started doing the #100DaysOfCode Challenge in Python. I've used Python before, but I had switched to JS

Sreekesh Iyer 10 Dec 12, 2022
🦕 Compile Deno executables and compress them for all platforms easily

Denoc Compile Deno executables and compress them for all platforms easily. Install You can install denoc from PyPI like any other package: pip install

Eliaz Bobadilla 8 Apr 04, 2022
MatroSka Mod Compiler for ts4scripts

MMC Current Version: 0.2 MatroSka Mod Compiler for .ts4script files Requirements Have Python 3.7 installed and set as default. Running from Source pip

MatroSka 1 Dec 13, 2021
Python 100daysofcode

#python #100daysofcode Python is a simple, general purpose ,high level & object-oriented programming language even it's is interpreted scripting langu

Tara 1 Feb 10, 2022
A modern python module including many useful features that make discord bot programming extremely easy.

discord-super-utils Documentation Secondary Documentation A modern python module including many useful features that make discord bot programming extr

106 Dec 19, 2022