selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

web-portal logo

Self-host web-portal

v2.6.0

Personal web dashboard with widget plugins

ReleaseOpen SourceAGPL-3.0
Updated13 hours ago
LanguagePython
Setup difficultyModerate
ThemeDark mode
Stars
259
Port
8000 (HTTP web interface)
Docker
ghcr.io/enchant97/web-portal
Install with Docker Compose
Dashboard with background imageDark and light themes showcase

What is web-portal?

Web Portal is a self-hosted personal dashboard that lets users build a customizable homepage with widgets. It includes built-in widgets for digital clock, links with groups and icons, web search, HTML embeds, and website iframes. The plugin system allows extending functionality with third-party widgets. It supports both SQLite (default) and MySQL databases, offers adjustable themes with dark/light modes, configurable background images, and optional user authentication with password protection for admin functions. Installation is available via Docker (recommended) or direct Python 3.14 deployment. The project is feature-complete with ongoing bug fixes and security patches.

Should you self-host web-portal?

web-portal scores 48/100 on selfhost.directory (how scoring works) and ranks #23 of 44 in Dashboard. It has 259 GitHub stars.

It shipped 2 stable releases in the past year. The latest, v2.6.0, came out on 27 October 2026. New versions land roughly every 10 months.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is Homepage by gethomepage (84/100, 33 419 stars). It scores higher overall, so compare the two before you pick. See web-portal vs Homepage by gethomepage side by side.

Features

  • Admin password protection
  • Built-in widgets
  • Configurable background
  • Icon-based UI
  • Minimal JavaScript
  • Multiple database support
  • Plugin System
  • User Authentication
  • Widget-based dashboard

web-portal README

How to install web-portal

Install web-portal with Docker Compose

Docker and Docker Compose installed
Environment variables
SECRET_KEY, DB_URI, PLUGINS_PATH, DATA_PATH, SECURE_COOKIES, LOG_LEVEL, SHOW_VERSION_NUMBER, DISABLE_PLUGIN_LOADER, PLUGIN_SKIP_LIST, ALLOW_BACKGROUND_IMAGE_UPLOAD, WORKERS, CERT_FILE, KEY_FILE

services: web-portal: container_name: web-portal image: ghcr.io/enchant97/web-portal:2.5 restart: unless-stopped volumes: - ./data:/app/data # Uncomment if you want custom plugins # - ./plugins:/app/plugins ports: # Change only left side - 8000:8000 environment: # This must be secure, # could use openssl rand -base64 32 to generate one - "SECRET_KEY="

docker compose pull docker compose up -d

Recommended installation method

How to configure web-portal

  • ALLOW_BACKGROUND_IMAGE_UPLOADTrueWhether to allow image uploads

    Whether to allow image uploads

  • ALLOW_ICON_UPLOADSTrueWhether to allow icon uploads

    Whether to allow icon uploads

  • CERT_FILESSL certificate file path (public)

    SSL certificate file path (public)

  • DATA_PATHWhere app data will be stored

    Where app data will be stored

  • DB_URIURI of where db is stored

    URI of where db is stored

  • DISABLE_PLUGIN_LOADERFalseDisable the plugin loader

    Disable the plugin loader

  • KEY_FILESSL key file path (private)

    SSL key file path (private)

  • LOG_LEVEL"INFO"What log level to use

    What log level to use

  • OPEN_TO_NEW_TABTrueWhether to open the link widget links in a new tab

    Whether to open the link widget links in a new tab

  • PLUGIN_SKIP_LISTSkip loading specific plugins

    Skip loading specific plugins

  • PLUGINS_PATHWhere plugins are stored

    Where plugins are stored

  • SECRET_KEY(randomly generated)Your app secret (use something secure)

    Your app secret (use something secure)

  • SECURE_COOKIESFalseWhether to require https for cookies

    Whether to require https for cookies

  • SHOW_VERSION_NUMBERTrueWhether the app version number is displayed

    Whether the app version number is displayed

  • WORKERS1Number of separate processes to spawn

    Number of separate processes to spawn

web-portal releases & version history

More in Dashboard

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…