Skip to content

staceyw/golinx

Repository files navigation

GoLinx

URL shortener, people directory, and document host in a single Go binary. Type go/jira instead of hunting for a bookmark — short links redirect instantly, people linx get automatic profile pages, and documents render in a themed reader. Everything runs from one embedded SPA with SQLite storage. Supports HTTP, HTTPS, and Tailscale listeners.

screenshot

Install

Linux / macOS:

curl -fsSL https://raw.githubusercontent.com/staceyw/GoLinx/main/scripts/install.sh | bash

Windows (PowerShell):

iex (irm https://raw.githubusercontent.com/staceyw/GoLinx/main/scripts/install.ps1)

Linux systemd service:

curl -fsSL https://raw.githubusercontent.com/staceyw/GoLinx/main/scripts/install-service.sh | sudo bash

Proxmox LXC:

curl -fsSL https://raw.githubusercontent.com/staceyw/GoLinx/main/scripts/install-lxc.sh | bash

The script installers download the binary into the current directory. The service and LXC scripts create a systemd service that starts automatically.

Quick Start

./golinx --listen "http://:80"

Or build from source:

go build -o golinx . && ./golinx --listen "http://:80"

Open http://localhost — done. For persistent configuration, copy golinx.example.toml to golinx.toml and run ./golinx with no flags.

Port 80 is required for go/link to work in the browser. On Linux, use sudo if port 80 is restricted. For Tailscale, add both listeners so the FQDN works too: --listen "ts+https://:443" --listen "ts+http://:80". See Making go/link Work for the full explanation of HTTP vs HTTPS and bare hostnames vs FQDNs.

Highlights

  • Links + People + Documents — short links, people profiles, and hosted documents in one unified grid
  • Click analytics — charts dashboard with top links, daily click histogram, and summary stats
  • Short code generator — one-click random short codes for bit.ly-style links
  • Browser autocomplete — OpenSearch integration suggests short links as you type in the address bar
  • Fuzzy search with type prefix filters (:e, :c, :v, :l) and tag search (:t)
  • 12 themes — Catppuccin Mocha, Dracula, Nord, Solarized, Gruvbox, and more
  • Profile pages with avatar, contact info, and social links
  • Document hosting — publish Markdown, HTML, or plain text at go/doc-name with a themed reader
  • Path passthrough/github/org/repo resolves through /github to the full URL
  • Go template URLs{{.Path}}, {{.User}}, {{.Query}} for dynamic routing
  • Soft delete — deleted items are retained for 30 days with one-click restore at /.deleted
  • Tailscale integration — runs on your tailnet via tsnet with automatic HTTPS and user identification
  • Single binary — all HTML/CSS/JS/help embedded, no external assets or build tools

Linx Types

Type Badge /{name} behavior
Link (default) 302 redirect to destination URL
Employee Emp Profile page
Customer Cus Profile page
Vendor Ven Profile page
Document Doc Themed reader (Markdown, HTML, or plain text)

Documentation

Guide Description
Admin Guide Configuration, listener URIs, HTTP vs HTTPS, permissions, API reference, development setup
In-App Help Quick reference for using the UI — search, shortcuts, themes, sorting, views, tags
Tailscale Grants Step-by-step setup for admin access via Tailscale ACL groups, node tagging, and grants
Destination URL Templates Go template syntax for dynamic URLs — path passthrough, query parameters, built-in functions

In-app help is also available at /.help or by pressing F1.

License

BSD 3-Clause. See LICENSE.

About

URL shortener, people directory, and document host in a single Go binary.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages