Top Related Projects
HTPC/Homelab Services Organizer - Written in PHP
Flame is self-hosted startpage for your server. Easily manage your apps and bookmarks with built-in editors.
A very simple static homepage for your server.
A highly customizable homepage (or startpage / application dashboard) with Docker and service API integrations.
Quick Overview
Heimdall is an open-source application dashboard and launcher developed by LinuxServer.io. It provides a centralized interface for organizing and accessing various web applications and services, making it easier for users to manage their self-hosted or cloud-based tools and resources.
Pros
- User-friendly interface with a clean, modern design
- Customizable layout and theming options
- Supports a wide range of applications and services
- Easy to set up and maintain, especially with Docker
Cons
- Limited advanced features compared to some alternatives
- Requires manual configuration for adding new applications
- May have performance issues with a large number of applications
- Limited built-in authentication options
Getting Started
To get started with Heimdall using Docker, follow these steps:
- Install Docker on your system if you haven't already.
- Run the following command to pull and start the Heimdall container:
docker run -d \
--name=heimdall \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/London \
-p 80:80 \
-p 443:443 \
-v /path/to/appdata/config:/config \
--restart unless-stopped \
lscr.io/linuxserver/heimdall:latest
- Access Heimdall by navigating to
http://your-server-ip
in your web browser. - Begin adding your applications and customizing your dashboard.
For more detailed instructions and configuration options, refer to the official documentation on the GitHub repository.
Competitor Comparisons
HTPC/Homelab Services Organizer - Written in PHP
Pros of Organizr
- More customizable interface with themes and custom CSS support
- Built-in authentication system with user management
- Supports tab-based organization for better categorization of services
Cons of Organizr
- Steeper learning curve due to more complex setup and configuration
- Requires PHP, which may not be ideal for all server environments
- Less frequent updates compared to Heimdall
Code Comparison
Heimdall (Docker Compose):
version: "2.1"
services:
heimdall:
image: lscr.io/linuxserver/heimdall:latest
container_name: heimdall
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
Organizr (Docker Compose):
version: "2.1"
services:
organizr:
image: organizr/organizr
container_name: organizr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
Both projects use similar Docker Compose configurations, with minor differences in image names and available environment variables. Heimdall is generally simpler to set up and maintain, while Organizr offers more advanced features at the cost of complexity.
Flame is self-hosted startpage for your server. Easily manage your apps and bookmarks with built-in editors.
Pros of Flame
- More modern and visually appealing user interface
- Built-in bookmarks and application management system
- Supports custom CSS for advanced customization
Cons of Flame
- Less mature project with potentially fewer features
- Smaller community and less frequent updates
- May have more limited Docker support compared to Heimdall
Code Comparison
Flame (JavaScript):
const App = () => {
return (
<div className="app">
<Header />
<Sidebar />
<Main />
</div>
);
};
Heimdall (PHP):
<?php
class App extends Controller
{
public function index()
{
return view('dashboard');
}
}
Both projects use different technologies for their frontend implementations. Flame utilizes modern JavaScript frameworks, while Heimdall is built with PHP, reflecting their respective approaches to application architecture and user interface design.
A very simple static homepage for your server.
Pros of Homer
- Lightweight and static, requiring no database or server-side processing
- Highly customizable with YAML configuration and support for custom CSS
- Supports multiple icon formats and custom icons
Cons of Homer
- Less feature-rich compared to Heimdall's advanced functionality
- Limited built-in integrations and service-specific features
- Manual configuration may be more time-consuming for extensive setups
Code Comparison
Homer (YAML configuration):
services:
- name: "Example Service"
logo: "assets/tools/sample.png"
url: "https://example.com"
subtitle: "Example subtitle"
tag: "app"
Heimdall (PHP-based configuration):
$app = new \App\SupportedApps\ExampleApp();
$app->config = [
'enabled' => true,
'apiKey' => 'your-api-key',
'url' => 'https://example.com'
];
Both Homer and Heimdall serve as application dashboards, but they differ in their approach. Homer focuses on simplicity and static deployment, while Heimdall offers more advanced features and integrations. The choice between them depends on the user's specific needs and preferences for customization versus built-in functionality.
A highly customizable homepage (or startpage / application dashboard) with Docker and service API integrations.
Pros of Homepage
- More customizable and flexible layout options
- Supports a wider range of services and integrations
- Faster performance and lighter resource usage
Cons of Homepage
- Steeper learning curve due to YAML configuration
- Less user-friendly for non-technical users
- Fewer built-in themes and styling options
Code Comparison
Heimdall (PHP):
public function index()
{
$apps = App::orderBy('order', 'asc')->get();
return view('dash', compact('apps'));
}
Homepage (JavaScript):
export default function Dashboard({ config }) {
return (
<Layout>
{config.services.map((service) => (
<ServiceCard key={service.name} {...service} />
))}
</Layout>
);
}
Homepage uses a more modern JavaScript-based approach, allowing for easier customization and integration with other web technologies. Heimdall, being PHP-based, may be more familiar to some users but potentially less flexible for advanced customizations.
Both projects serve as application dashboards, but Homepage offers more granular control over the layout and appearance at the cost of a steeper learning curve. Heimdall provides a more straightforward setup process and user interface, making it more accessible to beginners or those preferring a simpler solution.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Heimdall
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.
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.
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 CAcert.pem
(or any number of self-signed certs) into oneheimdall.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:
- Clone the repository and host it yourself, look at the .github actions file to see how to generate the apps list.
- 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.
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.
Top Related Projects
HTPC/Homelab Services Organizer - Written in PHP
Flame is self-hosted startpage for your server. Easily manage your apps and bookmarks with built-in editors.
A very simple static homepage for your server.
A highly customizable homepage (or startpage / application dashboard) with Docker and service API integrations.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot