MCPSERV.CLUB
PictShare

PictShare

Self-Hosted

Self‑hosted image, GIF, MP4 and text hosting with URL manipulation

Stale(65)
890stars
0views
Updated May 6, 2025

Overview

Discover what makes PictShare powerful

PictShare is a lightweight, self‑hosted file transfer service focused on images, GIFs, MP4 videos and text snippets. From a developer’s standpoint it is essentially a **file‑centric microservice** that exposes a simple HTTP API, stores data in the filesystem (no database required), and can be run inside Docker or any LAMP‑style stack. The core idea is to give you full ownership of the uploaded assets while still offering a rich set of image manipulation and URL‑shortening features.

Zero‑DB Storage

API‑First Design

Image & Video Processing

External Storage & Encryption

Overview

PictShare is a lightweight, self‑hosted file transfer service focused on images, GIFs, MP4 videos and text snippets. From a developer’s standpoint it is essentially a file‑centric microservice that exposes a simple HTTP API, stores data in the filesystem (no database required), and can be run inside Docker or any LAMP‑style stack. The core idea is to give you full ownership of the uploaded assets while still offering a rich set of image manipulation and URL‑shortening features.

Key Features

  • Zero‑DB Storage – All metadata and files are kept in a structured directory hierarchy. This simplifies backups, replication, and makes the service trivially portable across environments.
  • API‑First Design – A RESTful endpoint accepts multipart/form-data, raw base64 blobs, or remote URLs. Each upload returns a JSON payload with public and delete tokens.
  • Image & Video Processing – Built‑in filters (resize, crop, rotate), format conversion (JPG/PNG → WebP, GIF → MP4), and EXIF stripping. These are powered by PHP’s GD or Imagick libraries.
  • External Storage & Encryption – Optional back‑ends (S3, MinIO, GCS) with optional AES‑256 encryption of the payload before transit to storage.
  • URL Shortening & Identicons – Handy vanity URLs for images and automatically generated placeholder/identicon services, useful for front‑end placeholders or user avatars.
  • Duplicate Detection – SHA‑256 hashing of the payload; identical files are deduplicated to save space.

Technical Stack

LayerTechnologyNotes
RuntimePHP 8.2+ (CLI + FPM)Leverages PHP’s native file handling and image libraries.
Web ServerNginx (or Apache)Configured to serve static assets and proxy API requests.
StorageLocal filesystem or S3‑compatible object storeTransparent to the application via a pluggable storage interface.
ContainerizationDocker (official image on GHCR)Minimal image (~30 MB) with all dependencies baked in.
CI/CDGitHub ActionsBuilds and pushes Docker images to GHCR on every push.
LicenseApache 2.0Fully open source with no copyleft restrictions.

Architecture

PictShare follows a single‑process, stateless design: every request is independent and can be served by any instance behind a load balancer. The application is split into three logical layers:

  1. HTTP Layer – Handles routing, authentication (via tokens), and request validation.
  2. Service Layer – Encapsulates business logic: file ingestion, duplicate checking, and storage delegation.
  3. Storage Layer – Abstracts the filesystem or external provider; responsible for generating unique keys, handling encryption, and ensuring atomic writes.

Because the service is stateless, horizontal scaling is trivial: just spin up more containers and point them at a shared storage backend. The file‑based nature also means you can use existing tools (rsync, tar, etc.) for backups.

Deployment & Infrastructure

  • Docker – The official image exposes port 80 and can be run with a single docker run command. Environment variables expose configuration (storage path, external bucket URL, encryption key, etc.).
  • Kubernetes – A Deployment with a PersistentVolumeClaim for local storage, or an S3‑compatible bucket mounted via CSI.
  • Bare Metal / VPS – Install PHP 8.2, Nginx/Apache, and place the repo in /var/www/pictshare. The config.php file exposes all options.
  • Scalability – Since there is no database, the bottleneck is the storage backend. Using a distributed object store (MinIO, Ceph) or a cloud provider’s S3 service removes this limitation.

Integration & Extensibility

  • Webhooks – After a successful upload, PictShare can POST to a configurable endpoint with the file metadata (URL, MIME type, size).
  • Plugins – The architecture allows for custom “filters” by extending the image‑processing pipeline. Developers can drop a PHP class into src/Filters and register it in the config.
  • SDKs – While no official SDK exists, the API is straightforward enough that any language with HTTP support (Python requests, Node.js axios) can be used.
  • CLI – A small command‑line tool (pictshare-cli) can be used to generate URLs, delete files, or pre‑populate the storage.

Developer Experience

  • Configuration – All options live in a single config.php file. No database migrations or schema changes are required.
  • Documentation – The repo contains concise Markdown docs for each feature (API.md, CONFIG.md). The API spec is documented inline and via example requests.
  • Community – Active GitHub issues, a Slack channel for contributors, and frequent releases (every few weeks) keep the project responsive.
  • Testing – Unit tests cover file ingestion, duplicate detection, and storage logic. CI runs tests on PHP 8.2.

Use Cases

ScenarioWhy PictShare fits
Internal asset sharingZero‑DB, full ownership; easy to host on a private network.
Developer toolingAPI for CI/CD pipelines to upload build artifacts or screenshots.
**Static site image

Open SourceReady to get started?

Join the community and start self-hosting PictShare 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
APACHE-2.0
Stars
890
Technical Specs
Pricing
Open Source
Database
None
Docker
Official
Supported OS
LinuxDocker
Author
HaschekSolutions
HaschekSolutions
Last Updated
May 6, 2025