Skip to content

shlinkio/shlink-dashboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shlink Dashboard

Build Status Code Coverage GitHub release Docker pulls GitHub license

Mastodon Bluesky Paypal Donate

Shlink Dashboard is the next generation web application for Shlink.

It allows you to configure your users and their permissions, and then define how those users can interact with every individual Shlink server.

shlink-dashboard.mp4

Capabilities

Shlink Dashboard provides all the capabilities from shlink-web-client, but with the next differences:

  • User authentication is supported, with three main roles:
    • Advanced users: they can set up and manage their own Shlink servers.
    • Managed users: they can log in and interact with a set pf pre-configured Shlink servers.
    • Admins: they can create other users of any role, manage their own Shlink servers, and configure servers for managed users.
  • All settings are saved on a per-user basis in the server. If they log in a different device, they will have access to the same settings.
  • Server info (including API keys) is saved server-side and never leaked to the browser, making it more secure. Interactions with the Shlink server are proxied through Shlink Dashboard's backend, so you can even hide all /rest endpoints from your server/s.
  • Storage of servers and settings is done in a database. Same database engines supported by Shlink can be used with Shlink Dashboard (except SQLite), so you can re-use the same database server if desired.
  • Since Shlink Dashboard requires a backend, no hosted version is provided. It needs to be self-hosted.

Note

After installing Shlink Dashboard, an initial user is created, with username admin and password admin. You'll have to change the password on first login.

Installation

The easiest way to use Shlink Dashboard is by using the official docker image, but it is also possible to download a dist file and place it in the server of your choice with Node.JS >=22.0.

Docker image

If you want to deploy shlink-web-client in a container-based cluster (kubernetes, docker swarm, etc), just pick the shlinkio/shlink-dashboard image and do it.

It runs Node.JS server in port 3000, but this can be configured.

Dist file

To self-host Shlink Dashboard in any kind of server running Node.JS, get the latest release and download the distributable zip file attached to it (shlink-dashboard_X.X.X_dist.zip).

Unzip that file wherever you want and then:

  1. Copy the uncompressed directory in the location of your choice, then cd into it.
  2. Run migrations: node --run migration:run
  3. Start the server: node ./server.js

Important

The commands above need to have access to the configuration env vars. See the section below to know what can be configured.

Configuration

Configuration is provided via env vars. These are the ones currently supported:

  1. Database
    • SHLINK_DASHBOARD_DB_DRIVER: The database driver to be used. Can be postgres, mysql, mariadb or mssql.
    • SHLINK_DASHBOARD_DB_HOST: The database server host name.
    • SHLINK_DASHBOARD_DB_PORT: The database server port. If not provided it defaults to the usual database engine default port:
      • mysql and mariadb: 3306,
      • postgres: 5432,
      • mssql: 1433,
    • SHLINK_DASHBOARD_DB_USER: Username credential for the database server connection.
    • SHLINK_DASHBOARD_DB_PASSWORD: Password credential for the database server connection.
    • SHLINK_DASHBOARD_DB_NAME: Database name. Defaults to shlink_dashboard.
  2. Other
    • SHLINK_DASHBOARD_SESSION_SECRETS: A comma separated list of secrets used to sign session tokens. Make sure to provide something as complex and hard to guess as possible. Ideally long auto-generated random strings.

About

Next generation web application for Shlink

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

 
 
 

Contributors 2

  •  
  •  

Languages