Preface
As more and more applications are deployed in my home data center, I have more and more bookmarks in my Chrome browser, and it is very unintuitive to choose every time (the key is that it lacks style). Therefore, I had to consider building a dedicated navigation page to organize the access links of these applications. After researching for a while, Heimdall seems to be quite good, clean and simple:

So I chose it.
Deployment
Create the folder on the host machine that needs to be mapped into the container
As usual, first create the folders required for the -v parameter mount:
mkdir -p /docker/heimdall/config
Deploy Heimdall
The command in docker run format is as follows:
docker run --name=heimdall -d --restart=always \
-e PUID=1000 \ #可选功能,PUID和PGID的具体数值由id命令决定,比如我的www账号,用"id www"输出为"uid=1000(www) gid=1000(www) groups=1000(www)",注:这里不能使用root账号
-e PGID=1000 \ #同上
-e TZ=Asia/Shanghai \ #设置容器时区
-p 9600:80 \ #映射宿主机端口到容器内部的80端口,请根据自己实际情况修改
-v /docker/heimdall/config:/config \ #映射宿主机指定文件夹到容器内部的/config目录
lscr.io/linuxserver/heimdall:latest
Note: Please delete the comments after the above # by yourself
Basic Settings
Log in to Heimdall
Use http://Host_IP:9600 to open Heimdall:

Set language to Chinese
Click the settings button in the red box at the bottom right of the image above:

Change English to Chinese and save:

Then the language can be changed to Chinese:

Set administrator password
Click the user button in the bottom right corner for user settings:


You can modify the username, password, email, and set whether to allow public access and allow entry from specific links:

Add application address

Fill in the content according to the red box in the image below, remember to select the pin switch in the upper red box so that the application icon will appear on the homepage, and finally click save:

The effect after adding is as follows:

Then add other application icons in sequence. If you want to rearrange the order of application icons, click the button in the red box in the image below:

Configure public network access
If you want to publish to the public network, you need to choose the most suitable publishing method based on your actual environment and the reverse proxy you use. You can refer to several of my previous articles:
1、Docker Series: Building Your Own Reverse Proxy Based on NPM Using Docker
2、Linux Panel Series: Configuring Reverse Proxy and Publishing Using Non-443 Ports
3、Home Data Center Series: Getting Cloudflare for Free via Domestic ICP-Filed Cloud Hosts to Achieve Fast Access to Domestic Sites from Abroad
4、Home Data Center Series: Getting Cloudflare for Free via Home Broadband Without Public IP to Achieve Fast Website Building (Universal)
Among them, the 1st and 2nd methods are suitable for environments with a public IP but without a legal 443 port (home broadband, non-filed cloud hosts), where non-standard ports need to be added after the URL (if using Cloudflare to build a website, no port needs to be added, but you need to customize the origin server port, which you can refer to:Home Data Center Series: Solving the Problem of Having a Public IP but No Legal 80 or 443 Ports for Website Building via Cloudflare's Origin Rules). The 3rd method is suitable for cloud hosts with ICP filing, and the 4th method is suitable for all environments (including environments without a public IP), which is also my recommended method (regardless of whether your environment has a public IP, because this method does not require running HTTPS traffic directly on the public network).