Introducing Render Sandboxes: a computer for every agent.

Learn more

Slink

Self-hosted image hosting and sharing with short links, collections, and ShareX uploads.

Slink is a self-hosted image hosting and sharing application that lets you upload images, share them via private or short links, and organize them into collections. It solves the problem of relying on third-party image hosts by giving you full control over your images on your own infrastructure, with support for ShareX uploads and built-in image processing.

This template wires up Slink's entire stack—web app, API, image processing, and built-in Redis queue—into a single Render Web Service backed by a pre-mounted 5 GB persistent disk at /app, so SQLite databases, signing keys, and uploads all survive restarts without you configuring volumes by hand. It solves the non-obvious gotchas for you: the start command patches the frankenphp file-capability issue that otherwise breaks the API on Render, PORT is mapped correctly, and ADMIN_PASSWORD is auto-generated while a health check on /api/health keeps the instance honest. One click copies the repo, applies render.yaml, provisions the disk, and boots a pinned Slink version—so upgrading later is just a tag bump and a push instead of a manual server migration.

Architecture

What you can build

You'll have your own private image host running at a public URL, with an admin account ready to sign into on first boot. Upload images through the web UI or ShareX, then share them via public, private, or short links and organize them into collections. Uploads, databases, and signing keys persist on a 5 GB disk, so your images and accounts survive restarts and deploys, and you can lock down sign-ups or public browsing whenever you want.

Key features

  • Persistent disk storage: A 5 GB disk mounted at /app persists SQLite databases, signing keys, and uploaded images across deploys.
  • Pinned Docker image: Runs the official anirdev/slink:v1.14.6 image from Docker Hub, with upgrades handled by changing the tag in render.yaml.
  • Automated admin bootstrap: On first boot it generates signing keys, creates databases, and provisions the admin account using ADMIN_EMAIL and a generated ADMIN_PASSWORD.
  • S3 storage support: Optional STORAGE_PROVIDER=s3 configuration lets you offload image storage to S3 instead of the local disk.
  • OIDC SSO and registration controls: Optional environment variables enable OIDC single sign-on, upload limits, and toggles for public registration and unauthenticated access.

Use cases

  • Developer uploads ShareX screenshots to a self-hosted private image host
  • Designer shares client mockups via short links instead of email
  • Open-source maintainer organizes documentation screenshots into private collections
  • Team replaces Imgur with a controlled, admin-approved internal image host

What's included

Service
Type
Purpose
slink
Web Service
Web app, API, image processing, and a built-in queue
slink-data
Persistent Disk
SQLite databases, signing keys, and uploaded images under /app

Prerequisites

  • Admin Email: The email address used to create the administrator account on the app's first boot and to sign in.

Next steps

  1. Open your service's Environment page, copy the generated ADMIN_PASSWORD, then sign in at your onrender.com URL with your ADMIN_EMAIL — The admin dashboard loads and you land in the authenticated Slink interface instead of the public sign-in page
  2. Upload a test image and generate a share link, then open that link in a private browser window — The image loads correctly from the ORIGIN URL with no cross-site or forbidden error, confirming ORIGIN matches your public URL and the disk at /app is storing files
  3. Configure ShareX (or any client) with your URL and test the API by running curl -fsS "https://.onrender.com/api/health" — You get a healthy response, confirming the frankenphp start command worked and the API on port 8080 is reachable through PORT 3000

Resources

For AI agents

Drop into your coding agent to explore and deploy this template.