MCPSERV.CLUB
Slink

Slink

Self-Hosted

Self-hosted image sharing with privacy and control

Active(100)
1.1kstars
0views
Updated 19 hours ago
Slink screenshot 1
1 / 2

Overview

Discover what makes Slink powerful

Slink is a self‑hosted image sharing platform that lets developers deploy a fully functional, privacy‑first media server without relying on third‑party cloud services. Built with **Symfony** (PHP) for the backend and **SvelteKit** for a reactive, single‑page frontend, it exposes a rich set of APIs and hooks that enable programmatic access to uploads, tagging, analytics, and storage management. The architecture is deliberately modular: the core Symfony services handle authentication, file handling, and business logic while SvelteKit consumes a JSON‑only API, enabling easy replacement of the UI or integration into existing frontends.

Multi‑format image support

Concurrent multi‑file uploads

Hierarchical tag system

Flexible storage backends

Overview

Slink is a self‑hosted image sharing platform that lets developers deploy a fully functional, privacy‑first media server without relying on third‑party cloud services. Built with Symfony (PHP) for the backend and SvelteKit for a reactive, single‑page frontend, it exposes a rich set of APIs and hooks that enable programmatic access to uploads, tagging, analytics, and storage management. The architecture is deliberately modular: the core Symfony services handle authentication, file handling, and business logic while SvelteKit consumes a JSON‑only API, enabling easy replacement of the UI or integration into existing frontends.

Key Features

  • Multi‑format image support (PNG, JPG, WEBP, SVG, BMP, ICO, GIF, AVIF, HEIC, TIFF) with automatic transcoding and validation.
  • Concurrent multi‑file uploads with per‑file progress, retry logic, and server‑side deduplication based on hash comparison.
  • Hierarchical tag system that supports nested tags, full‑text search, and bulk operations via API.
  • Flexible storage backends: local disk, SMB/CIFS shares, and AWS S3 are all first‑class options; the storage layer is abstracted through Symfony’s Filesystem component.
  • Public and private galleries with customizable share links that can enforce size limits or expiration dates.
  • Role‑based access control and optional user approval workflows for moderated uploads.

Technical Stack

LayerTechnologyRationale
BackendSymfony 6 (PHP)Mature framework with dependency injection, event system, and robust security components.
APISymfony API Platform / FOSRestBundleGenerates RESTful endpoints, OpenAPI docs, and integrates with Symfony security.
FrontendSvelteKit (TypeScript)Lightweight, component‑based UI that consumes the API; supports SSR for SEO and fast initial load.
StorageSymfony Filesystem + Flysystem adapters (local, SMB, S3)Abstracts file operations; allows adding new providers with minimal code changes.
DatabasePostgreSQL / MySQL (via Doctrine ORM)Stores user accounts, image metadata, tags, and audit logs.
ContainerizationDocker + Compose (official images)Simplifies deployment; the repo includes ready‑to‑run containers for all services.

Core Capabilities

  • Programmatic Uploads: POST /api/images accepts multipart form data; returns image metadata and public URL.
  • Tag Management: CRUD endpoints for tags, including bulk association/dissociation.
  • Analytics API: Endpoints expose per‑user storage usage, upload counts, and access logs.
  • Webhooks: Configurable outbound events (e.g., image.uploaded, user.approved) that can trigger CI/CD pipelines or external services.
  • CLI Tools: Symfony console commands for user management, cleanup of orphaned files, and cache purging.

Deployment & Infrastructure

Slink ships with Docker images for both the web server and database, making it trivial to spin up a production instance:

  • Self‑hosting: Requires PHP 8.1+, Node.js (for SvelteKit build), and a relational database.
  • Scalability: The stateless API layer can be horizontally scaled behind a load balancer; file storage is externalized, so multiple instances can share the same backend.
  • High Availability: The storage layer’s abstraction allows swapping to a distributed file system (e.g., MinIO) without code changes.
  • CI/CD Friendly: The Dockerfile is minimal and supports multi‑stage builds; CI pipelines can publish new images to registries automatically.

Integration & Extensibility

  • Plugin System: Custom Symfony bundles can hook into events (e.g., image.preUpload, user.postLogin) to extend functionality.
  • API Hooks: Developers can consume the public API from any language; the OpenAPI spec is auto‑generated.
  • Custom Storage Providers: Adding a new provider involves implementing the FilesystemInterface; existing code remains untouched.
  • Theming: SvelteKit’s component architecture allows swapping themes or integrating with existing CSS frameworks.

Developer Experience

  • Configuration: All settings are exposed via environment variables; the docs provide a comprehensive reference for each variable.
  • Documentation: The official site hosts detailed guides, API references, and a “Getting Started” tutorial that covers both Docker and manual setups.
  • Community: Active issue tracker, pull‑request guidelines, and a Slack/Discord channel for quick support.
  • Licensing: MIT license encourages internal use and commercial deployment without licensing fees.

Use Cases

  • Team Collaboration: Internal design teams can host a shared gallery with role‑based permissions and audit logs.
  • Developer Portfolios: Embed Slink in personal blogs or GitHub READMEs to host screenshots and diagrams.
  • Educational Platforms: Institutions can provide a private image repository for student projects, leveraging the deduplication feature to save storage.
  • Automated CI Artifacts: Use webhooks to publish build screenshots or test coverage images directly to Slink for easy sharing with stakeholders.

Advantages

  • Performance: Symfony’s HTTP cache and SvelteKit’s SSR reduce latency; the storage abstraction allows using SSDs or high‑throughput object stores.
  • Flexibility: The modular

Open SourceReady to get started?

Join the community and start self-hosting Slink today

Weekly Views

Loading...
Support Us

Featured Project

$30/month

Get maximum visibility with featured placement and special badges

Repository Health

Loading health data...

Information

Category
other
License
AGPL-3.0
Stars
1.1k
Technical Specs
Pricing
Open Source
Docker
Official
Supported OS
LinuxDocker
Author
andrii-kryvoviaz
andrii-kryvoviaz
Last Updated
19 hours ago