Self-Hosting LittleLink Server with Docker

LittleLink Server is a self-hosted link-in-bio page — a single page that lists links to your social profiles, projects, and content. It’s a Linktree replacement built on the LittleLink template, wrapped in a Node.js server, and configured entirely through environment variables.

No database. No persistent volumes. No admin panel. You define your page in docker-compose.yml, run docker compose up -d, and you’re done. The 63 MB Docker image starts in seconds.

Official site: github.com/techno-tim/littlelink-server

Prerequisites

  • A Linux server (Ubuntu 22.04+ recommended)
  • Docker and Docker Compose installed (guide)
  • 100 MB of free disk space
  • 64 MB of RAM
  • A domain name (optional, for custom URL like links.yourdomain.com)

Docker Compose Configuration

Create a docker-compose.yml file:

services:
  littlelink:
    image: ghcr.io/techno-tim/littlelink-server:latest  # No versioned Docker tags published — :latest is the only option
    container_name: littlelink
    ports:
      - "8080:3000"
    environment:
      # Page metadata
      - META_TITLE=Your Name - Links
      - META_DESCRIPTION=All my links in one place
      - META_AUTHOR=Your Name
      - LANG=en

      # Profile
      - NAME=Your Name
      - BIO=Developer | Writer | Self-Hoster
      - AVATAR_URL=https://your-avatar-url.com/avatar.jpg
      - AVATAR_2X_URL=https://your-avatar-url.com/[email protected]
      - FAVICON_URL=https://your-avatar-url.com/favicon.png

      # Appearance
      - THEME=Dark
      - FOOTER=© 2026 Your Name

      # Social links — add your URLs, remove any you don't use
      - GITHUB=https://github.com/yourusername
      - TWITTER=https://twitter.com/yourusername
      - YOUTUBE=https://youtube.com/@yourchannel
      - MASTODON=https://mastodon.social/@you
      - BLUESKY=https://bsky.app/profile/you.bsky.social
      - LINKEDIN=https://linkedin.com/in/yourusername
      - DISCORD=https://discord.gg/yourinvite
      - EMAIL=mailto:[email protected]
      - WEBSITE=https://yourdomain.com

      # Button order — controls which buttons appear and in what order
      - BUTTON_ORDER=GITHUB,TWITTER,YOUTUBE,MASTODON,BLUESKY,LINKEDIN,DISCORD,EMAIL,WEBSITE
      - BUTTON_TARGET=_blank

      # Analytics (optional — uncomment one)
      # - GA_TRACKING_ID=G-XXXXXXXXXX
      # - UMAMI_WEBSITE_ID=your-umami-id
    restart: unless-stopped

Start the container:

docker compose up -d

Your link page is live at http://your-server-ip:8080.

Configuration

LittleLink Server has no config files or admin panel. Everything is an environment variable in your Compose file.

Supported Platforms

LittleLink Server includes button presets for 100+ platforms. Set the environment variable to your profile URL to enable a button:

VariablePlatformVariablePlatform
GITHUBGitHubMASTODONMastodon
TWITTERX/TwitterBLUESKYBluesky
YOUTUBEYouTubeTWITCHTwitch
DISCORDDiscordREDDITReddit
LINKEDINLinkedInINSTAGRAMInstagram
TIKTOKTikTokSPOTIFYSpotify
PATREONPatreonKO_FIKo-fi
PAYPALPayPalEMAILEmail
STEAMSteamWEBSITECustom website

For the full list, see the LittleLink Server README.

Custom Buttons

Add custom buttons with numbered variables:

environment:
  - CUSTOM_BUTTON_TEXT_ONE=My Blog
  - CUSTOM_BUTTON_URL_ONE=https://blog.example.com
  - CUSTOM_BUTTON_COLOR_ONE=#333333
  - CUSTOM_BUTTON_TEXT_COLOR_ONE=#ffffff
  - CUSTOM_BUTTON_ICON_ONE=fas fa-blog

You can add multiple custom buttons using _ONE, _TWO, _THREE, etc.

Analytics Integration

LittleLink Server supports three self-hosted analytics platforms. Uncomment the one you use:

environment:
  # Google Analytics
  - GA_TRACKING_ID=G-XXXXXXXXXX

  # Umami (self-hosted)
  - UMAMI_WEBSITE_ID=your-website-id

  # Matomo (self-hosted)
  - MATOMO_URL=https://matomo.example.com
  - MATOMO_SITE_ID=1

See our guides: Self-Host Umami | Self-Host Matomo

Themes

Two built-in themes:

environment:
  - THEME=Dark   # Dark background, light text (default)
  # - THEME=Light  # Light background, dark text

Reverse Proxy

To serve your link page on a custom domain (e.g., links.yourdomain.com), set up a reverse proxy pointing to port 8080.

With Nginx Proxy Manager, create a proxy host with:

  • Domain: links.yourdomain.com
  • Scheme: http
  • Forward IP: your server’s IP
  • Forward Port: 8080
  • SSL: Request a new Let’s Encrypt certificate

For other reverse proxy options: Reverse Proxy Setup

Backup

LittleLink Server is stateless — there’s nothing to back up. Your entire link page is defined in docker-compose.yml. If the container is destroyed, docker compose up -d recreates it identically.

Keep your docker-compose.yml in version control (Git) and you have automatic backup and history.

For your broader backup strategy: Backup Strategy

Troubleshooting

Buttons not appearing

Symptom: You set a platform URL but no button shows up.

Fix: The platform must be listed in BUTTON_ORDER. If BUTTON_ORDER is set, only platforms listed there will appear, regardless of whether their URL is set. Either add the platform to BUTTON_ORDER or remove the BUTTON_ORDER variable entirely to show all buttons with URLs.

Avatar not loading

Symptom: The page shows a broken image where the avatar should be.

Fix: AVATAR_URL must be an absolute URL accessible from the internet, not a local file path. If you don’t have a hosted image, remove the AVATAR_URL variable to use the default placeholder.

Container healthy but page blank

Symptom: Port 8080 responds but the page is empty.

Fix: Check that at least one platform URL is set and NAME is defined. The page needs a minimum of one button and a name to render.

Resource Requirements

  • RAM: ~50 MB
  • CPU: Negligible — serves static content
  • Disk: 63 MB (Docker image, amd64)
  • Network: Minimal bandwidth — single page with no media

This is one of the lightest Docker containers you can run.

Verdict

LittleLink Server is the simplest self-hosted link page. The “everything as environment variables” approach means zero maintenance — no database migrations, no updates to apply, no volumes to back up. For a personal profile page that changes a few times a year, this is exactly the right level of complexity.

If you need a web admin panel, multi-user support, or custom themes, use LinkStack instead. If you want stateless simplicity and are comfortable editing a Compose file, LittleLink Server is the better choice.

Comments