This guide explains how to deploy Shlink, a self-hosted URL shortener, on a Dokku host. Dokku is a lightweight PaaS that simplifies deploying and managing applications using Docker.
Before proceeding, ensure you have the following:
- A working Dokku host.
- The PostgreSQL plugin installed on Dokku.
- (Optional) The Let's Encrypt plugin for SSL certificates.
Log into your Dokku host and create the shlink
app:
dokku apps:create shlink
-
Install the PostgreSQL plugin:
dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres
-
Create a PostgreSQL service:
dokku postgres:create shlink
-
Link the PostgreSQL service to the app:
dokku postgres:link shlink shlink
Set the default domain for your Shlink instance:
dokku config:set shlink DEFAULT_DOMAIN=shlink.example.com
Set the domain for your app to enable routing:
dokku domains:set shlink shlink.example.com
Map the internal port 8080
to the external port 80
:
dokku ports:set shlink http:80:8080
You can deploy the app to your Dokku server using one of the following methods:
If your repository is hosted on a remote Git server with an HTTPS URL, you can deploy the app directly to your Dokku server using dokku git:sync
. This method also triggers a build process automatically. Run the following command:
dokku git:sync --build shlink https://github.com/d1ceward-on-dokku/shlink_on_dokku.git
This will fetch the code from the specified repository, build the app, and deploy it to your Dokku server.
If you prefer to work with the repository locally, you can clone it to your machine and push it to your Dokku server manually:
-
Clone the repository:
# Via HTTPS git clone https://github.com/d1ceward-on-dokku/shlink_on_dokku.git
-
Add your Dokku server as a Git remote:
git remote add dokku dokku@example.com:shlink
-
Push the app to your Dokku server:
git push dokku master
Choose the method that best suits your workflow.
Secure your app with an SSL certificate from Let's Encrypt:
-
Add the HTTPS port:
dokku ports:add shlink https:443:8080
-
Install the Let's Encrypt plugin:
dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git
-
Set the contact email for Let's Encrypt:
dokku letsencrypt:set shlink email you@example.com
-
Enable Let's Encrypt for the app:
dokku letsencrypt:enable shlink
Congratulations! Your Shlink instance is now up and running. You can access it at https://shlink.example.com.
For more information about Shlink, visit the official documentation.