Squishy is a lightweight link proxy/shortener, configured through a single yaml file.
It's intended for simple scenarios as it can (for now) only be configured by editing the config file directly on the server, and is not suited for multi-user setups.
You can obtain the standalone binary on the releases page.
Simply move this to the location of your choice and make sure it's executable:
curl -LO https://gitlab.com/smncd/squishy/-/releases/v0.4.0-dev.6/downloads/squishy-linux-arm64-0.4.0
chmod +x ./squishy-linux-arm64-0.4.0Binaries are available for:
Docker images are available on the Gitlab Container Registry.
You can get started with a simple docker compose file:
services:
squishy:
image: registry.gitlab.com/smncd/squishy:latest
ports:
- 1394:1394
volumes:
- ./squishy.yaml:/squishy.yamlNote: You need to set the config.host option to 0.0.0.0 when running Squishy in Docker.
Then, simply start the service:
docker compose up -dYou can build Squishy from this repo. You will need git and go 1.24 or higher.
git clone https://gitlab.com/smncd/squishy.git
cd squishy
go mod download
make build-allYou'll find the produced binaries in ./bin.
Squishy is configured with the squishy.yaml file. This file must be located in the same directory as the binary and readable by it. Squishy will not run without this file.
The file is split into two main sections config and routes.
config:
host: localhost # The server will listen on localhost
port: 1394 # The server will use port 1394
debug: false # Debugging is disabledroutes:
_index: https://example.com # Redirects the root path to https://example.com
hello:
_index: https://example2.com # Redirects /hello/ to https://example2.com
there: https://example3.com # Redirects /hello/there to https://example3.com# The config object contains your settings, such as host and port
config:
host: localhost # Host server listens on
port: 1394 # Port server listens on
debug: false # Enable or disable debugging
# The routes object contains the paths used to access the redirect URLs
routes:
_index: https://example.com # The root path redirects to https://example.com
hello:
_index: https://example2.com # /hello/ redirects to https://example2.com
there: https://example3.com # /hello/there redirects to https://example3.comRoute targets can contain a wildcard indicator: /*. By configuring routes like this:
# ...
routes:
example: https://example.com/* # <-- wildcard
Squishy will redirect like:
| Squishy path | Target |
|---|---|
/example |
https://example.com |
/example/sub-path |
https://example.com/sub-path |
/example/nested/sub-path |
https://example.com/nested/sub-path |
Note: Wildcard routes are currently not supported for _index routes.
Copyright © 2025 Simon Lagerlöf [email protected]
This project is licensed under the BSD-3-Clause License - see the LICENSE file for details.