DEV Community

Alex Spinov
Alex Spinov

Posted on

Pingvin Share Has a Free API — Heres How to Self-Host Secure File Sharing

Pingvin Share is a self-hosted file sharing platform — like WeTransfer but on your own server, with password protection, expiration, and no file size limits.

Why Pingvin Share?

  • Self-hosted: Your server, your data
  • No file size limits: Limited only by your storage
  • Password protection: Secure shared links
  • Auto-expiration: Files delete after set time
  • Reverse share: Let others upload to you
  • Email notifications: Get notified on downloads
  • OIDC/OAuth: SSO integration

Docker Setup

docker run -d \
  --name pingvin-share \
  -p 3000:3000 \
  -v pingvin-data:/opt/app/backend/data \
  stonith404/pingvin-share
Enter fullscreen mode Exit fullscreen mode

Or with Docker Compose:

services:
  pingvin-share:
    image: stonith404/pingvin-share
    ports:
      - '3000:3000'
    volumes:
      - ./data:/opt/app/backend/data
    restart: unless-stopped
Enter fullscreen mode Exit fullscreen mode

API: Create a Share

# 1. Create share
curl -X POST http://localhost:3000/api/shares \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "id": "my-share",
    "expiration": "24-hours",
    "security": {
      "password": "optional-password",
      "maxVisitors": 10
    }
  }'

# 2. Upload file to share
curl -X POST http://localhost:3000/api/shares/my-share/files \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -F 'file=@document.pdf'

# 3. Complete the share
curl -X POST http://localhost:3000/api/shares/my-share/complete \
  -H 'Authorization: Bearer YOUR_TOKEN'
Enter fullscreen mode Exit fullscreen mode

API: Get Share Info

curl http://localhost:3000/api/shares/my-share
Enter fullscreen mode Exit fullscreen mode

Response:

{
  "id": "my-share",
  "files": [{"name": "document.pdf", "size": 1048576}],
  "expiration": "2026-03-30T12:00:00Z",
  "visitors": 3
}
Enter fullscreen mode Exit fullscreen mode

API: Download File

curl -O http://localhost:3000/api/shares/my-share/files/FILE_ID
Enter fullscreen mode Exit fullscreen mode

Reverse Shares (Let Others Upload to You)

curl -X POST http://localhost:3000/api/reverse-shares \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "maxShareSize": "1073741824",
    "maxUseCount": 5,
    "expiration": "7-days"
  }'
Enter fullscreen mode Exit fullscreen mode

Share the returned link — anyone can upload files to your server.

Real-World Use Case

A design agency replaced WeTransfer Pro ($120/year) with self-hosted Pingvin Share. They send 50GB+ project files to clients with custom branding, password protection, and download tracking. Annual savings: $120 and full data sovereignty.


Need to automate data collection? Check out my Apify actors for ready-made scrapers, or email spinov001@gmail.com for custom solutions.

Top comments (0)