SelfHost Hub SelfHost Hub
中文
← Back to all services

GitHub repository information

Fetched · June 5, 2026
★ 70 Latest: v1.3.4 Updated: May 19, 2026
README
<img src="wwwroot/img/jsi-logo.png" alt="" width="80" />

# Just Short It (damnit)!

The most KISS single user URL shortener there is.

![](https://img.shields.io/github/license/miawinter98/just-short-it?color=green&style=for-the-badge)
![](https://img.shields.io/github/forks/miawinter98/just-short-it?label=github%20forks&logo=github&style=for-the-badge)
![](https://img.shields.io/github/stars/miawinter98/just-short-it?label=github%20stars&color=yellow&logo=github&style=for-the-badge)

![](https://img.shields.io/docker/pulls/miawinter/just-short-it?color=informational&logo=docker&style=for-the-badge)
![](https://img.shields.io/docker/v/miawinter/just-short-it/latest?logo=docker&label=latest&style=for-the-badge)
![](https://img.shields.io/docker/v/miawinter/just-short-it/latest-alpine?logo=docker&label=latest%20alpine&style=for-the-badge)

## To simply run Just Short It in a container run:
```shell
docker run -e JSI_BaseUrl=<your-url> \
           -e JSI_Account__Username=<your-username> \
           -e JSI_Account__Password=<your-password> \
           -p 80:8080 \
           miawinter/just-short-it:latest
```


## In Docker Compose:
```yaml
services:
  just-short-it:
    container_name: JustShortIt
    image: miawinter/just-short-it:latest
    ports:
      - "80:8080"
    environment:
      - "JSI_BaseUrl=<your-url>"
      - "JSI_Account__Username=<your-username>"
      - "JSI_Account__Password=<your-password>"
      - "JSI_CUSTOMIZATION__GENERATEDIDLENGTH=6" # optional, range 2 to 16, default: 6
```

## Redis

By default Just Short It saves all the redirects in a in-memory distributed Cache, which get's lost 
whenever the container restarts, so if you want to keep your redirects you wanna use redis.

You can configure the connection to redis using the environment variables `JSI_Redis__ConnectionString` 
and optional `JSI_Redis__InstanceName` (default is "JustShortIt").

If you want to run both with compose, the most simple setup looks like this:

```yaml
services:
  just-short-it:
    container_name: JustShortIt
    image: miawinter/just-short-it:latest
    ports:
      - "80:8080"
    environment:
      - "JSI_BaseUrl=<your-url>"
      - "JSI_Account__Username=<your-username>"
      - "JSI_Account__Password=<your-password>"
      - "JSI_Redis__ConnectionString=redis,password=<your-redis-password>"
    depends_on:
      - redis
  redis:
    container_name: Redis
    image: redis:alpine
    environment:
      - "REDIS_PASSWORD=<your-redis-password>"
    volumes:
      - redis:/data

volumes:
  redis:
```

There you go, now your urls survive a restart!

# Https

Just Short It! is not supporting Https, I reconmend using a reverse Proxy for hosting
that handles SSL. I personally have experience with two types of reverse proxies here: caddy 
and nginx-proxy.

## Caddy

The easiest way to get https with a reverse proxy is [Caddy](https://hub.docker.com/_/caddy).

```yaml
services:
  # Just Short It 
  just-short-it:
    container_name: JustShortIt
    image: miawinter/just-short-it:latest
    environment:
      - "JSI_BaseUrl=<your-url>"
      - "JSI_Account__Username=<your-username>"
      - "JSI_Account__Password=<your-password>"
      - "JSI_Redis__ConnectionString=redis,password=<your-redis-password>"
    depends_on:
      - redis
  redis:
    container_name: Redis
    image: redis:alpine
    environment:
      - "REDIS_PASSWORD=<your-redis-password>"
    volumes:
      - redis:/data
  caddy:
    container_name: Caddy
    image: caddy:latest
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - caddy_sites: /sites
      - caddy_data: /data
      - caddy_config:/config
      - ./Caddyfile:/etc/caddy/Caddyfile

volumes:
  redis:
  caddy_sites:
  caddy_data:
  caddy_config:
```

Then you need a `Caddyfile`:

```
<your_domain> {
  tls <your-email>
  reverse_proxy JustShortIt:8080
}
```

The tls property is the email used for let's encrypt, there you would be notified if a 
certificate is about to expire (which won't happen as long as caddy is running, because 
it automatically requests new ones before they do).  
The domain should only be [subdomain?].[domain].[tls], if you prefix it with http or https
caddy will only support that, but without this caddy responds to both and will automatically 
redirect from http to https, as well as take care of the https certificates.

## nginx-prodxy

jwilders [nginx-proxy](https://github.com/nginx-proxy/nginx-proxy) togehter with 
[acme-companion](https://github.com/nginx-proxy/acme-companion).

Here is an Example of how to use Just Short It! togehter with nginx-proxy:

```yaml
services:
  # Just Short It
  just-short-it:
    container_name: JustShortIt
    image: miawinter/just-short-it:latest
    environment:
      - "JSI_BaseUrl=<your-url>"
      - "JSI_Account__Username=<your-username>"
      - "JSI_Account__Password=<your-password>"
      - "JSI_Redis__ConnectionString=redis,password=<your-redis-password>"
    environment:
      - "VIRTUAL_HOST=<your-url>"
      - "VIRTUAL_PORT=8080"
      - "LETSENCRYPT_HOST=<your-url>"
    depends_on:
      - redis
      - acme-companion
  redis:
    container_name: Redis
    image: redis:alpine
    environment:
      - "REDIS_PASSWORD=<your-redis-password>"
    volumes:
      - redis:/data

  # nginx-proxy with acme-companion
  nginx-proxy:
    container_name: nginx-proxy
    restart: unless-stopped
    image: jwilder/nginx-proxy:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - certs:/etc/nginx/certs:ro
      - conf:/etc/nginx/conf.d
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
    environment:
      - "DHPARAM_GENERATION=false" # Not sure you need this actually
      - "DISABLE_ACCESS_LOGS" # Always nice to comply with GDPR
  acme-companion:
    container_name: acme-companion
    restart: unless-stopped
    image: nginxproxy/acme-companion
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - certs:/etc/nginx/certs:rw
      - conf:/etc/nginx/conf.d
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
      - /etc/acme.sh:/etc/acme.sh
    environment:
      - "DEFAULT_EMAIL=<your-email>"
      - "NGINX_PROXY_CONTAINER=nginx-proxy"
    depends_on:
      - nginx

volumes:
  # Just Short It!
  redis:
  # Proxy
  certs:
  conf:
  vhost:
  html:
```

# License and Attribution

Just Short It by [Mia Winter](https://miawinter.de/) is licensed under the [MIT License](https://en.wikipedia.org/wiki/MIT_License).  

Just Short It uses [tailwindcss](https://tailwindcss.com/), licensed under the [MIT License](https://github.com/tailwindlabs/tailwindcss/blob/master/LICENSE)  
Just Short It uses [daisyUI](https://daisyui.com/), licensed under the [MIT License](https://github.com/saadeghi/daisyui/blob/master/LICENSE)  
Just Short It uses [PostCSS](https://postcss.org/), licensed under the [MIT License](https://github.com/postcss/postcss/blob/main/LICENSE)  
Just Short It uses [PostCSS CLI](https://github.com/postcss/postcss-cli/), licensed under the [MIT License](https://github.com/postcss/postcss-cli/blob/master/LICENSE)  
Just Short It uses [autoprefixer](https://github.com/postcss/autoprefixer/), licensed under the [MIT License](https://github.com/postcss/autoprefixer/blob/main/LICENSE)  
Just Short It uses [cssnano](https://cssnano.co/), licensed under the [MIT License](https://github.com/cssnano/cssnano/blob/master/LICENSE-MIT)  
Just Short It uses [heroicons](https://heroicons.com/), licensed under the [MIT License](https://github.com/tailwindlabs/heroicons/blob/master/LICENSE)

Copyright (c) 2024 Mia Winter

Discover more