Home
Softono
s

shlinkio

Professional software vendor delivering innovative solutions on the Softono platform. Specialized in both open-source and proprietary software development.

Total Products
2

Software by shlinkio

Shlink
Open Source

Shlink

![Shlink](https://raw.githubusercontent.com/shlinkio/shlink.io/main/public/images/shlink-hero.png) [![Build Status](https://img.shields.io/github/actions/workflow/status/shlinkio/shlink/ci.yml?branch=develop&logo=github&style=flat-square)](https://github.com/shlinkio/shlink/actions/workflows/ci.yml?query=workflow%3A%22Continuous+integration%22) [![Code Coverage](https://img.shields.io/codecov/c/gh/shlinkio/shlink/develop?style=flat-square)](https://app.codecov.io/gh/shlinkio/shlink) [![Latest Stable Version](https://img.shields.io/github/release/shlinkio/shlink.svg?style=flat-square)](https://packagist.org/packages/shlinkio/shlink) [![Docker pulls](https://img.shields.io/docker/pulls/shlinkio/shlink.svg?logo=docker&style=flat-square)](https://hub.docker.com/r/shlinkio/shlink/) [![License](https://img.shields.io/github/license/shlinkio/shlink.svg?style=flat-square)](https://github.com/shlinkio/shlink/blob/main/LICENSE) [![Mastodon](https://img.shields.io/mastodon/follow/109329425426175098?color=%236364ff&domain=https%3A%2F%2Ffosstodon.org&label=follow&logo=mastodon&logoColor=white&style=flat-square)](https://fosstodon.org/@shlinkio) [![Bluesky](https://img.shields.io/badge/follow-shlinkio-0285FF.svg?style=flat-square&logo=bluesky&logoColor=white)](https://bsky.app/profile/shlink.io) [![Paypal donate](https://img.shields.io/badge/Donate-paypal-blue.svg?style=flat-square&logo=paypal&colorA=aaaaaa)](https://slnk.to/donate) A PHP-based self-hosted URL shortener that can be used to serve shortened URLs under your own domain. ## Table of Contents - [Full documentation](#full-documentation) - [Docker image](#docker-image) - [Self-hosted](#self-hosted) - [Download](#download) - [Configure](#configure) - [Using shlink](#using-shlink) - [Contributing](#contributing) ## Full documentation This document contains the very basics to get started with Shlink. If you want to learn everything you can do with it, visit the [full searchable documentation](https://shlink.io/documentation/). ## Docker image You can learn how to use the official docker image by reading [the docs](https://shlink.io/documentation/install-docker-image/). The idea is that you can just generate a container using the image and provide the custom config via env vars. ## Self-hosted First, make sure the host where you are going to run shlink fulfills these requirements: * PHP 8.4 or 8.5 * The next PHP extensions: json, curl, pdo, intl, gd and gmp/bcmath. * apcu extension is recommended if you don't plan to use RoadRunner. * sockets and bcmath extensions are required if you want to integrate with a RabbitMQ instance. * MySQL, MariaDB, PostgreSQL, MicrosoftSQL or SQLite. * You will also need the corresponding pdo variation for the database you are planning to use: `pdo_mysql`, `pdo_pgsql`, `pdo_sqlsrv` or `pdo_sqlite`. ### Download In order to run Shlink, you will need a built version of the project. There are two ways to get it. * **Using a dist file** The easiest way to install shlink is by using one of the pre-bundled distributable packages. Go to the [latest version](https://github.com/shlinkio/shlink/releases/latest) and download the `shlink*_dist.zip` file that suits your needs. You will find one for every supported PHP version. Finally, decompress the file in the location of your choice. * **Building from sources** If for any reason you want to build the project yourself, follow these steps: * Clone the project with git (`git clone https://github.com/shlinkio/shlink.git`), or download it by clicking the **Clone or download** green button. * Download the [Composer](https://getcomposer.org/download/) PHP package manager inside the project folder. * Run `./build.sh 3.0.0`, replacing the version with the version number you are going to build (the version number is used as part of the generated dist file name, and to set the value returned when running `shlink -V` from the command line). After that, you will have a dist file inside the `build` directory, that you need to decompress in the location of your choice. > **Note** > > This is the process used when releasing new Shlink versions. After tagging the new version with git, the GitHub release is automatically created by a [GitHub workflow](https://github.com/shlinkio/shlink/actions?query=workflow%3A%22Publish+release%22), attaching the generated dist file to it. ### Configure Despite how you built the project, you now need to configure it, by following these steps: * If you are going to use MySQL, MariaDB, PostgreSQL or Microsoft SQL Server, create an empty database with the name of your choice. * Recursively grant write permissions to the `data` directory. Shlink uses it to cache some information. * Set up the application by running the `vendor/bin/shlink-installer install` script. It is a command line tool that will guide you through the installation process. **Take into account that this tool has to be run directly on the server where you plan to host Shlink. Do not run it before uploading/moving it there.** * Generate your first API key by running `bin/cli api-key:generate`. You will need the key in order to interact with Shlink's API. ## Using shlink Once shlink is installed, there are two main ways to interact with it: * **The command line**: Try running `bin/cli` to see all the available commands. All of them can be run with the `--help`/`-h` flag in order to see how to use them and all the available options. It is probably a good idea to symlink the CLI entry point (`bin/cli`) to somewhere in your path, so that you can run shlink from any directory. * **The REST API**: The complete docs on how to use the API can be found [here](https://shlink.io/documentation/api-docs), and a sandbox which also documents every endpoint can be found in the [API Spec](https://api-spec.shlink.io/) portal. However, you probably don't want to consume the raw API yourself. That's why a nice [web client](https://github.com/shlinkio/shlink-web-client) is provided that can be directly used from [https://app.shlink.io](https://app.shlink.io), or hosted by yourself. Both the API and CLI allow you to do mostly the same operations, except for API key management, which can be done from the command line interface only. ## Contributing If you are trying to find out how to run the project in development mode or how to provide contributions, read the [CONTRIBUTING](CONTRIBUTING.md) doc. ## Powered by Thanks to [JetBrains](https://www.jetbrains.com/) for their continuous support to this project in the form of IDE licenses. ![JetBrains logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg) --- > This product includes GeoLite2 data created by MaxMind, available from [https://www.maxmind.com](https://www.maxmind.com)

Link Shortening & Tracking
5.1K Github Stars
shlink-web-client
Open Source

shlink-web-client

# shlink-web-client [![Build Status](https://img.shields.io/github/actions/workflow/status/shlinkio/shlink-web-client/ci.yml?branch=develop&logo=github&style=flat-square)](https://github.com/shlinkio/shlink-web-client/actions/workflows/ci.yml?query=workflow%3A%22Continuous+integration%22) [![Code Coverage](https://img.shields.io/codecov/c/gh/shlinkio/shlink-web-client/develop?style=flat-square)](https://app.codecov.io/gh/shlinkio/shlink-web-client) [![GitHub release](https://img.shields.io/github/release/shlinkio/shlink-web-client.svg?style=flat-square)](https://github.com/shlinkio/shlink-web-client/releases/latest) [![Docker pulls](https://img.shields.io/docker/pulls/shlinkio/shlink-web-client.svg?logo=docker&style=flat-square)](https://hub.docker.com/r/shlinkio/shlink-web-client/) [![GitHub license](https://img.shields.io/github/license/shlinkio/shlink-web-client.svg?style=flat-square)](https://github.com/shlinkio/shlink-web-client/blob/main/LICENSE) [![Mastodon](https://img.shields.io/mastodon/follow/109329425426175098?color=%236364ff&domain=https%3A%2F%2Ffosstodon.org&label=follow&logo=mastodon&logoColor=white&style=flat-square)](https://fosstodon.org/@shlinkio) [![Bluesky](https://img.shields.io/badge/follow-shlinkio-0285FF.svg?style=flat-square&logo=bluesky&logoColor=white)](https://bsky.app/profile/shlink.io) [![Paypal Donate](https://img.shields.io/badge/Donate-paypal-blue.svg?style=flat-square&logo=paypal&colorA=cccccc)](https://slnk.to/donate) A ReactJS-based progressive web application for [Shlink](https://shlink.io). ![shlink-web-client](shlink-web-client.gif) > If you are trying to find out how to run the project in development mode or how to provide contributions, read the [CONTRIBUTING](CONTRIBUTING.md) doc. ## Installation There are three ways in which you can use this application. ### From app.shlink.io The easiest way to use shlink-web-client is by just going to <https://app.shlink.io>. The application runs 100% in the browser, so you can safely access any shlink instance from there. ### Docker image If you want to deploy shlink-web-client in a container-based cluster (kubernetes, docker swarm, etc), just pick the [shlinkio/shlink-web-client](https://hub.docker.com/r/shlinkio/shlink-web-client/) image and do it. It's a lightweight [nginx:alpine](https://hub.docker.com/r/library/nginx/) image serving the static app on port 8080. ### Self-hosted If you want to self-host it yourself, get the [latest release](https://github.com/shlinkio/shlink-web-client/releases/latest) and download the distributable zip file attached to it (`shlink-web-client_X.X.X_dist.zip`). The package contains static files only, so just put it in a folder and serve it with the web server of your choice. **Considerations**: * Provided dist files are configured to be served from the root of your domain. If you need to serve shlink-web-client from a subpath, you will have to build it yourself following [these steps](#serve-shlink-in-subpath). * The app has a client-side router that handles dynamic paths. Because of that, you need to configure your web server to fall-back to the `index.html` file when requested files do not exist. * If you use Apache, you are covered, since the project includes an `.htaccess` file which already does this. * If you use nginx, you can [see how it's done](config/docker/nginx.conf) for the docker image and do the same. ## Pre-configuring servers The first time you access shlink-web-client from a browser, you will have to configure the list of shlink servers you want to manage, and they will be saved in the local storage. Those servers can be exported and imported in other browsers, but if for some reason you need some servers to be there from the beginning, starting with shlink-web-client 2.1.0, you can provide a `servers.json` file in the project root folder (the same containing the `index.html`, `favicon.ico`, etc) with a structure like this: ```json [ { "name": "Main server", "url": "https://s.test", "apiKey": "09c972b7-506b-49f1-a19a-d729e22e599c" }, { "name": "Local", "url": "http://localhost:8080", "apiKey": "580d0b42-4dea-419a-96bf-6c876b901451" } ] ``` > The list can contain as many servers as you need. If you are using the shlink-web-client docker image, you can mount the `servers.json` file in a volume inside `/usr/share/nginx/html`, which is the app's document root inside the container. docker run --name shlink-web-client -p 8000:8080 -v ${PWD}/servers.json:/usr/share/nginx/html/servers.json shlinkio/shlink-web-client Alternatively, you can mount a `conf.d` directory, which in turn contains the `servers.json` file, in a volume inside `/usr/share/nginx/html`. *(since shlink-web-client 3.2.0)*. docker run --name shlink-web-client -p 8000:8080 -v ${PWD}/my-config/:/usr/share/nginx/html/conf.d/ shlinkio/shlink-web-client If you want to pre-configure a single server, you can provide its config via env vars. When the container starts up, it will build the `servers.json` file dynamically based on them. *(since shlink-web-client 3.2.0)*. * `SHLINK_SERVER_URL`: The fully qualified URL for the Shlink server. * `SHLINK_SERVER_API_KEY`: The API key. * `SHLINK_SERVER_NAME`: The name to be displayed. Defaults to **Shlink** if not provided. ```shell docker run \ --name shlink-web-client \ -p 8000:8080 \ -e SHLINK_SERVER_URL=https://s.test \ -e SHLINK_SERVER_API_KEY=6aeb82c6-e275-4538-a747-31f9abfba63c \ shlinkio/shlink-web-client ``` > **Be extremely careful when using this feature.** > > Due to shlink-web-client's client-side nature, the file needs to be accessible from the browser. > > Because of that, make sure you use this only when you self-host shlink-web-client, and you know only trusted people will have access to it. > > Failing to do this could cause your API keys to end up being exposed. ## Serve project in subpath Official distributable files have been built so that they are served from the root of a domain. If you need to host shlink-web-client yourself and serve it from a subpath, follow these steps: * Download shlink-web-client source code for the version you want to build. * For example, if you want to build `v1.0.1`, use this link https://github.com/shlinkio/shlink-web-client/archive/v1.0.1.zip * Replace the `v1.0.1` part in the link with the one of the version you want to build. * Decompress the file and `cd` into the resulting folder. * Open the `package.json` file in the root of the project, locate the `homepage` property and replace the value (which should be an empty string) by the path from which you want to serve shlink-web-client. * For example: `"homepage": "/my-projects/shlink-web-client",`. * Build the project: * For classic hosting: * Download [node](https://nodejs.org/en/download/package-manager/) 10.15 or later. * Install project dependencies by running `npm install`. * Build the project by running `npm run build`. * Once the command finishes, you will have a `build` folder with all the static assets you need to run shlink-web-client. Just place them wherever you want them to be served from. * For docker image: * Download [docker](https://docs.docker.com/install/). * Build the docker image by running `docker build . -t shlink-web-client`. * Once the command finishes, you will have an image with the name `shlink-web-client`.

JavaScript Libraries & Components Link Shortening & Tracking
387 Github Stars