samoylenkodmitry / shrtlin

shrtlin - is an all-in-one privacy-focused self-hosted open-source URL shortener for all platforms
https://shrtl.in
MIT License
8 stars 1 forks source link
compose-multiplatform docker-compose foss kotlin ktor open-source postgresql self-hosted url-shortener

Build and Create Release GitHub Release GitHub License GitHub top language Website

Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge
yes yes yes yes yes yes yes

shrtlin

shrtlin

shrtlin is a feature-rich, open-source URL shortening service. It provides a seamless experience across Android, iOS, Web, and Desktop Linux, Mac, Windows.

About

shrtlin leverages the power of Kotlin Multiplatform to deliver a unified codebase for multiple platforms. It offers a user-friendly interface for shortening URLs and managing your links, all while ensuring secure authentication using JWT tokens and Proof of Work. Powered by a Ktor backend and PostgreSQL database.

Features

Roadmap

Getting Started

Prerequisites:

Arch Linux Installation (Single Command):

sudo yay -S git jdk17-openjdk docker docker-compose postgresql wget unzip vim --noconfirm 

Arch Linux extra preparation:


yay linux-headers #must have linux-headers installed
sudo modprobe bridge br_netfilter overlay #must have bridge and br_netfilter modules loaded
sudo systemctl enable docker
sudo systemctl start docker
systemctl status docker #check docker status
sudo usermod -aG docker $USER #add user to docker group
docker swarm init #init docker swarm for storing secrets
sudo ufw status #check firewall status, ports 80, 443 must be open

Set JAVA_HOME for oh-my-zsh (Copy-paste this into your ~/.zshrc):

export JAVA_HOME="/usr/lib/jvm/java-17-openjdk"
export PATH="$JAVA_HOME/bin:$PATH"

Steps:

TLDR
git clone https://github.com/samoylenkodmitry/shrtlin.git && cd shrtlin && chmod +x ./deploy.sh && ./deploy.sh
  1. Clone the repository: git clone https://github.com/samoylenkodmitry/shrtlin.git
  2. Ensure the prerequisites are installed and configured as described above.
  3. Build and run the application: ./deploy.sh
  4. Check environment the created .env

License

This project is licensed under the LICENSE.

Contributing

We welcome contributions from the community! Please feel free to submit issues, feature requests, or pull requests to help us improve shrtlin.