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
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.
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.
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.
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:
- Copy the uncompressed directory in the location of your choice, then
cd
into it. - Run migrations:
node --run migration:run
- 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 is provided via env vars. These are the ones currently supported:
- Database
SHLINK_DASHBOARD_DB_DRIVER
: The database driver to be used. Can bepostgres
,mysql
,mariadb
ormssql
.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
andmariadb
: 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 toshlink_dashboard
.
- 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.