Halo, kalau kamu merasa tulisan saya ngebantu kamu, kamu bisa ucapkan terima kasih lewat saweria.

Hello, if you find this article helpful, you can express your gratitude through saweria.



Who Needs This

  1. People who want to track their URLs.

  2. Those who don’t want to pay for URL shortener plus features (such as geolocation, user-agent tracking, etc.).


  1. It’s simple.

  2. It has a Docker image.

  3. Shlink uses RoadRunner as the default runtime.

  4. Their documentation is well-documented.


  1. Docker

  2. Geolite license key. Just sign up, and you can get that for free.


How To

  1. Create a docker-compose.yml file:
version: "3.8"
name: shlink-stack
services:
    shlink-be:
        container_name: shlink-be-ctr
        ports:
            - 8080:8080
        environment:
            - DEFAULT_DOMAIN=${DEFAULT_DOMAIN}
            - IS_HTTPS_ENABLED=${IS_HTTPS_ENABLED}
            - GEOLITE_LICENSE_KEY=${GEOLITE_LICENSE_KEY}
            - DB_DRIVER=${DB_DRIVER}
            - DB_USER=${DB_USER}
            - DB_PASSWORD=${DB_PASSWORD}
            - DB_HOST=${DB_HOST}
            - DB_NAME=${DB_NAME}
            - PORT=${PORT}
            - DEFAULT_REGULAR_404_REDIRECT=${DEFAULT_REGULAR_404_REDIRECT}
            - DEFAULT_INVALID_SHORT_URL_REDIRECT=${DEFAULT_INVALID_SHORT_URL_REDIRECT}
            - DEFAULT_BASE_URL_REDIRECT=${DEFAULT_BASE_URL_REDIRECT}
            - TIMEZONE=${TIMEZONE}
        image: shlinkio/shlink:latest
        logging:
          driver: none
        env_file:
            - .env
        networks:
            - shlink-net

    shlink-fe:
        depends_on:
            - shlink-be
        container_name: shlink-fe-ctr
        ports:
            - 88:8080
        environment:
            - SHLINK_SERVER_URL=${SHLINK_SERVER_URL}
            - SHLINK_SERVER_API_KEY=${SHLINK_SERVER_API_KEY}
            - SHLINK_SERVER_NAME=${SHLINK_SERVER_NAME}
        image: shlinkio/shlink-web-client:latest
        logging:
          driver: none
        env_file:
            - .env
        networks:
            - shlink-net

networks:
    shlink-net:
  1. Then create .env file, fill with
GEOLITE_LICENSE_KEY=yourGEOLITEkey
DEFAULT_DOMAIN=yourshortener-url.com
IS_HTTPS_ENABLED="true"
DB_DRIVER=mysql
DB_USER=user_db
DB_NAME=db_name
DB_PASSWORD=db_password
DB_HOST=db_host
SHLINK_SERVER_URL=https://yourshortener-url.com
SHLINK_SERVER_API_KEY=fillThisAfterCreateNewKey
SHLINK_SERVER_NAME="Your URL Shortener"
DEFAULT_REGULAR_404_REDIRECT=https://ipang.my.id
DEFAULT_INVALID_SHORT_URL_REDIRECT=https://ipang.my.id
DEFAULT_BASE_URL_REDIRECT=https://ipang.my.id
PORT=8080
TIMEZONE=Asia/Jakarta
  1. After this, deploy “shlink-be” first using docker-compose up -d shlink-be

  2. Generate an API key with docker exec -it shlink-be-ctr shlink api-key:generate. Put that key in the variable SHLINK_SERVER_API_KEY= in your .env.

    Generate API Key. Put That Key On .env

    Generate API Key. Put That Key On .env

  3. Deploy “shlink-fe” docker-compose up -d shlink-fe

Your Shlink Server Name Will Listed Here

Your Shlink Server Name Will Listed Here

Shlink Feature

Shlink Feature

Shlink Analytics With Geolocation

Shlink Analytics With Geolocation

Notes:

  1. If you don’t want to deploy Shlink web client, Shlink provides their free web client. You just need to enter your URL and API key.