Home

Welcome to the Web Portal Lite docs.

What Is Web Portal Lite?

Web Portal Lite is a web dashboard to manage a page of links. It offers a minimal feature set to the feature rich Web Portal. Designed for users who just want to create a fancy looking links page and not worry about the advanced features.

Features

  • Access a grid of beautiful links to your web services
  • Works without JavaScript, to provide a lightning fast experience
  • Customise dashboard through a basic yaml file (no database needed)
  • Wide range of link colors (or no color)
  • Provide your own app icons for links
  • Create groups of links
  • Optionally secure the portal with user accounts
  • Icon based theme
  • Dark/Light mode
  • Lightweight Docker image

If this feature set is too limited check out Web Portal.

Showcase

web-portal-lite showcase image, showing dark and light themes

Install

This section will demonstrate how Web Portal Lite can be installed and configured.

Important Notes

Please read these notes before continuing.

  • Docker is not required, although not currently documented
  • HTTPS is not currently supported, you will need to use a reverse proxy
  • App icons are not included, you will need to provide your own

Server Configuration

Before starting the server certain configs need to be set which are given as environment variables.

Prefix all environment variables with ROCKET_

All environment variables must be UPPER CASE

NameDescriptionDefaultDocker Default
CONFIG_PATHWhere the dashboard config lives./data/config.yml./app/config.yml
ICONS_PATHWhere icons will be stored./data/icons./app/icons
PUBLIC_DASH_USERNAMEThe public dashboard username, only used when public dashboard is enabledpublicpublic
SECRET_KEYSecure 256-bit base64 encoded string
ADDRESSWhat address to bind to0.0.0.00.0.0.0
PORTWhat port to use for bind80008000

Openssl can be used to generate a secret key: openssl rand -base64 32

Dashboard Configuration

Before starting the server a dashboard config will need to be created. This is supplied as a YAML file.

  • After modification the server will need to be restarted
  • Use the built-in CLI to produce a template config
  • Use the built-in CLI to produce a hashed password
  • The 'public' account password should be left blank, if public_dash is enabled

Docker

After configs have been created, you can create a Docker Compose file:

version: "3"

services:
  web-portal-lite:
    container_name: web-portal-lite
    image: ghcr.io/enchant97/web-portal-lite:1
    restart: unless-stopped
    volumes:
      - ./config.yml:/app/config.yml:ro
      - ./icons:/app/icons:ro
    ports:
      - 8000:8000
    environment:
      # THIS MUST BE CHANGED
      - "ROCKET_SECRET_KEY=pMZceGSN6w85+KEmpywAivvp9OYmul6XXnaQXVveVmE="

Then run:

docker compose up -d

Without Docker

git clone https://github.com/enchant97/web-portal-lite.git

cd web-portal-lite

cargo build --release

cp target/release/web-portal-lite /usr/local/bin/web-portal-lite

web-portal-lite <command>

CLI

This page shows how the built in CLI can be used.

Using The CLI From Docker

By default when running the container it will execute the "serve" command, you can override this to use the CLI. Here is a few ways this can be accomplished:

Spin up a temporary container overriding the command:

docker run --rm -it ghcr.io/enchant97/web-portal-lite:1 <command>

Exec into running container (will not work if no config has been set):

docker exec -it <container name> ./web-portal-lite <command>

Commands

Serve

To serve the actual web server this command can be used:

This will need a valid config before launching

web-portal-lite serve

Hash Passwords

To use the user accounts feature a hashed password is expected, use this command to hash a given password. Once the password has been hashed; simply copy it into the password field in your config.

web-portal-lite pw-hasher
enter password: <password>
hashed password: $argon2id$...

Generate Config

To gain a template config the following command can be run. This will output to stdout, you can then copy and paste this into a config.yml file.

web-portal-lite gen-config

Get Version

web-portal-lite version

Icons

The available icons depends on what icons you have installed. They will match the filename without extension, taken from both the svg and png folder.

A popular repository for getting these icons is at: https://github.com/walkxcode/Dashboard-Icons. You can also get my app icons at: https://github.com/enchant97/app-icons. These projects are both in the correct format.

Adding Icons

To set the icon name config you will need icons in the icon folder, these will need to be arranged in the format shown below:

icons/
    svg/
        some-app.svg
    png/
        some-app.png

Colors

This page documents all available color names that can be used in the user config file.

Can be customized by overriding the static/colors.css file.

  • no-color
  • white
  • grey
  • grey-black
  • black
  • red
  • red-alt
  • orange
  • orange-alt
  • yellow
  • yellow-alt
  • green
  • green-alt
  • green-blue
  • green-blue-alt
  • cyan
  • cyan-alt
  • blue
  • blue-alt
  • purple
  • purple-alt
  • pink
  • pink-alt
  • pink-red
  • pink-red-alt

Contributing

Contributions are welcome, but first please read the guidelines shown below:

  • Try to create performant code (both memory and cpu)
  • Ensure code uses Rust's recommendations
  • Run Rust's clippy before pushing
  • New features can be requested, but may not get implemented.
  • Doc contributions are accepted
  • Don't use GitHub's issues for reporting vulnerabilities
  • Make commit messages useful, commits with names like "Updated x.rs" will be rejected
  • Test your code before submitting to pull request
  • Contributions must be licensed under the same as the project
  • Do not use deprecated features
  • Project uses Rust stable, experimental features cannot be used
  • If your not sure on anything, just ask