Git Product home page Git Product logo

heimdall's Introduction

Heimdall

Heimdall_Banner

Discord Docker Pulls firsttimersonly Paypal


Visit the website - https://heimdall.site


About

As the name suggests Heimdall Application Dashboard is a dashboard for all your web applications. It doesn't need to be limited to applications though, you can add links to anything you like.

Heimdall is an elegant solution to organise all your web applications. It’s dedicated to this purpose so you won’t lose your links in a sea of bookmarks.

Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.

Heimdall demo animation

Video

If you want to see a quick video of Heimdall in use, go to https://youtu.be/GXnnMAxPzMc

Supported applications

You can use the app to link to any site or application, but Foundation apps will auto fill in the icon for the app and supply a default color for the tile. In addition, Enhanced apps allow you provide details to an apps API, allowing you to view live stats directly on the dashboad. For example, the NZBGet and Sabnzbd Enhanced apps will display the queue size, and download speed while something is downloading.

Supported applications are recognized by the title of the application as entered in the title field when adding an application. For example, to add a link to pfSense, begin by typing "p" in the title field and then select "pfSense" from the list of supported applications.

enhancedapps

foundationapps

Installing

Apart from the Laravel 10 dependencies, namely PHP >= 8.1, Ctype PHP Extension, cURL PHP Extension, DOM PHP Extension, Fileinfo PHP Extension, Filter PHP Extension, Hash PHP Extension, Mbstring PHP Extension, OpenSSL PHP Extension, PCRE PHP Extension, PDO PHP Extension, Session PHP Extension, Tokenizer PHP Extension, XML PHP Extension, the only other thing Heimdall needs is sqlite support and zip support (php-zip).

If you find you can't change the background make sure php_fileinfo is enabled in your php.ini. I believe php_fileinfo should be enabled by default, but one user came across the issue on a windows system.

Installation is as simple as cloning the repository somewhere, or downloading and extracting the zip/tar and pointing your httpd document root to the /public folder then creating the .env file and generating an encryption key (this is all taken care of for you with the docker).

cd /path/to/heimdall
cp .env.example .env
php artisan key:generate

For simple testing you could just go to the folder and type php artisan serve

There is also a multi-arch Docker which supports x86-64, armhf and arm64, instructions on how to use them at

Updating

To update your instance, simply clone this repository or download the zip/tar file with the new version and copy it over the old installation.

Search Providers

v2.3.0 added the ability for users to customise the search options.

Options are stored in /storage/app/searchproviders.yaml (/config/www/searchproviders.yaml on docker installs), feel free to rearrange the options, add new ones, delete ones you don't use, etc.

Consider contributing to https://github.com/linuxserver/Heimdall/discussions/categories/search-providers to help others add new ones.

The item at the top of the list Tiles allows you to search for apps on your dashboard by name, this can be helpful when you have lots of icons.

New background image not being set

If you are using the docker image or a default php install you may find images over 2MB won't get set as the background image, you just need to change the upload_max_filesize in the php.ini.

If you are using the linuxserver.io docker image simply edit /path/to/config/php/php-local.ini and add upload_max_filesize = 30M to the end.

Docker and enhanced apps

If you are running the docker and the EnhancedApps you are using are also in dockers, you may need to use the docker networking addresses to communicate with them.

You can do this by using http(s)://docker_name:port in the config section. Instead of the name you can use the internal docker ip, this usually starts with 172.

Languages

The app has been translated into several languages; however, the quality of the translations could benefit from some work. If you would like to improve them, or help with other translations, they are stored in /resources/lang/.

To create a new language translation, make a new folder with the ISO 3166-1 alpha-2 code as the name, copy app.php from /resources/lang/en/app.php into your new folder and replace the English strings.

When you are finished, create a pull request.

Currently added languages are

  • Breton
  • Chinese
  • Danish
  • Dutch
  • English
  • Finnish
  • French
  • German
  • Greek
  • Hungarian
  • Italian
  • Japanese
  • Korean
  • Lombard
  • Norwegian
  • Polish
  • Portuguese
  • Russian
  • Slovenian
  • Spanish
  • Swedish
  • Turkish

Web Server Configuration

Apache

A .htaccess file ships with the app, however, a lot of apache installations disallow .htaccess files by default. You will notice this due to some links not working like /settings. In addition mod-rewrite needs to be enabled if it isn't already.

Fixes & work around options

- Apache global allow .htaccess

Find the AllowOverride None line in your apache configuration and change this to AllowOverride All

- Apache vhost configuration allow .htaccess

In the apache vhost configuration in the <Directory /> block add AllowOverride All

- Add .htaccess content in apache configuration

You can add the full .htaccess into your apache configuration, this way you do not need to allow .htaccess files. You can even shorten the content of the .htaccess when inserting it into the apache configuration to:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

More info

More info about AllowOverride can be found here: https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride

Nginx

If you are using Nginx, the following directive in your site configuration will direct all requests to the index.php front controller:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

Someone was using the same Nginx setup to both run this and reverse proxy Plex. Plex is served from /web so their location was interfering with the /webfonts.

Therefore, if your fonts aren't showing because you have a location for /web, add the following:

location /webfonts {
    try_files $uri $uri/;
}

If there are any other locations that might interfere with any of the folders in the /public folder, you might have to do the same for those as well, however it's a super fringe case.

Reverse proxy

If you'd like to reverse proxy this app, we recommend using our letsencrypt/nginx docker image: SWAG - Secure Web Application Gateway You can either reverse proxy from the root location, or from a subdomain (subfolder method is currently not supported). For HTTPS proxy, make sure you use the HTTPS port of Heimdall webserver, otherwise some links may break. You can add security through .htpasswd

location / {
    auth_basic "Restricted";
    auth_basic_user_file /config/nginx/.htpasswd;
    include /config/nginx/proxy.conf;
    proxy_set_header X-Forwarded-Proto https;
    proxy_pass http://heimdall;
}

Self-signed certificates and local CAs

Per default Heimdall uses the standard certificate bundle file (ca-certificates.crt) to verify HTTPS sites and will ignore additional certificates placed in /etc/ssl/certs. If you wish to use enhanced apps with HTTPS sites that use a self-signed certificate or certs signed with your own local CA, you can override the default bundle:

  • Create a unified certificate .pem file that contains all CAs and certificates that Heimdall has to verify. For example, if you use both LetsEncrypt and a local CA for your internal apps, concatenate the LetsEncrypt intermediate CA (export via browser) and your local CA cert.pem (or any number of self-signed certs) into one heimdall.pem file.
  • Place the heimdall.pem into the container (if you use Docker), for example by placing it in the path that you mapped to /config. Make sure that the Heimdall user has read access (chmod a+r).
  • Set the openssl.cafile setting in /config/php/php-local.ini to your cert bundle:
# /config/php/php-local.ini
openssl.cafile = /config/heimdall.pem

Restart the container and the Enhanced apps should now be able to access your local HTTP websites. This configuration will survive updating or recreating the Heimdall container.

Running offline

The apps list is hosted on github, you have a couple of options if you want to run without a connection to the outside world:

  1. Clone the repository and host it yourself, look at the .github actions file to see how to generate the apps list.
  2. Download the apps list and store it as a JSON accessible to Heimdall named list.json

With both options all you need to do is add the following to your .env APP_SOURCE=http://localhost/ Where http://localhost/ is the path to the apps list without the name of the file, so if your file is stored at https://heimdall.local/list.json you would put APP_SOURCE=https://heimdall.local/

Support

https://discord.gg/CCjHKn4 or through GitHub issues

Donate

If you would like to show your appreciation, feel free to use the link below.

PayPal

Credits

  • PHP Framework - Laravel
  • Icons - FontAwesome 5
  • JavaScript - jQuery
  • Colour picker - Huebee
  • Background image - pexels
  • Trianglify library - Trianglify
  • Everyone at Linuxserver.io that has helped with the app and let's not forget IronicBadger for the following question that started it all:
You know, I would love something like this landing page for all my servers' apps
that gives me the ability to pin favourites
and / or search
@Stark @Kode do either of you think you'd be able to rustle something like this up?

License

This app is open-sourced software licensed under the MIT license.

heimdall's People

Contributors

abotlegacy avatar albertsj1 avatar angrystar170 avatar aptalca avatar auanasgheps avatar bb-benbridges avatar bence192 avatar biohzn avatar bsciretti avatar chbmb avatar dairidong avatar futos avatar headred-chris avatar jhavedk avatar keriati avatar kodestar avatar laravel-shift avatar liamakkerman avatar mindtooth avatar mrquatsch avatar ninthwalker avatar olliejc avatar rickygrassmuck avatar shuaiscott avatar sparklyballs avatar the-lazy-fox avatar tomyvi avatar ullbergm avatar xavier-github76 avatar xiazeyu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

heimdall's Issues

Multiuser support

It is understood that this is not a small request and will require considerable effort and discussion.

Currently I authenticate users with traditional HTTP auth (.htaccess etc) using the Letsencrypt container and subfolders of a single domain

e.g.

https://my.notreal.domain/nzbget
https://my.notreal.domain/nextcloud
...

A surprising amount of applications are happy to inherit these credentials if the app is in turn configured with identical users. The net result is if a user logs in once and they are then fed their own applications specifics without ever needing to log in again.

It would be ideal if Heimdall could

  • Support mutiuser
  • Support inherited HTTP auth
  • Allow the system admin account to control which app shortcuts each user can see to separate user links e.g. nextcloud from sysadmin links e.g. pihole

There is scope for unnecessary feature creep here but I cannot imagine a household application dashboard that is not multiuser capable.

related: #45

[Request] Show if service is online or not (eg via green/red light)

Hey, apart from this one feature, this is exactly, what I have been looking for! A dashboard for all your links!

BUT it would be great to have a smaller dot in the corner of each tile which could show the online status of each service.

The server polls the IP(&port) every 5 or so minutes. If he gets a response, the light will turn green, otherwise red. Future additions might include a yellow light and a number with how many minutes have passed since last seen online.

App request

Saw this on Reddit and it looks really slick. How hard would it be at add support for Sickrage and Piwigo? I haven't tried it yet but I am definitely in the market for a landing page for the various things I host. Would a "custom" app that just links to other sites be an option?

edit, nevermind, answered my own question!

Supported applications

A list of supported apps, when selected it should autofill in things like app icon, maybe hex colour? Everything should be editable after selecting. Where possible also have app extras, such as if an app has an API get the credentials, and allow them to select from a list of live items they would like to see on the dash, for example NZBGet might have queue count and current download speed.

Improve settings section

Allow different types, select, boolean, etc. Allow current values to be removed rather than just changed. If boolean have sliding button instead of edit button.

Rotating background images

Feature request:
Selecting a folder with pictures for background image rotation
Could be time based (server wide), or session based?!?

Default Close dialogue button

It is perhaps a bit unintuitive that the location typically occupied by the close X icon is often occupied by other functions

For example

Add not close

Consideration should be given to a more traditional layout allowing for users to back out all the way to the homescreen by pressing a similarly located close dialogue as many times as needed.

Add search bar on home

Allow user to select if they want a search bar on the home page, and which provider to use for the search bar.

Show uploaded icon before saving

Currently when selecting a custom icon the upload a file dialogue shows no progress notifications and the GUI does not show the uploaded image until after you have saved.

It would be better if the icon was shown after it was uploaded and prior to committing the save

Working upgrade routine

Check current app version against database version, if the don't match (because the app has been updated) run any migrations / seeds that need running.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.