• Stars
    star
    2,251
  • Rank 20,461 (Top 0.5 %)
  • Language
    TypeScript
  • License
    BSD 2-Clause "Sim...
  • Created over 2 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A self-hosted file sharing platform that combines lightness and beauty, perfect for seamless and efficient file sharing.


Pingvin Share


Read this in another language: Spanish, English, Simplified Chinese


Pingvin Share is self-hosted file sharing platform and an alternative for WeTransfer.

✨ Features

  • Share files using a link
  • Unlimited file size (restricted only by disk space)
  • Set an expiration date for shares
  • Secure shares with visitor limits and passwords
  • Email recipients
  • Integration with ClamAV for security scans

🐧 Get to know Pingvin Share

⌨️ Setup

Note: Pingvin Share is in its early stages and may contain bugs.

Installation with Docker (recommended)

  1. Download the docker-compose.yml file
  2. Run docker-compose up -d

The website is now listening on http://localhost:3000, have fun with Pingvin Share 🐧!

Stand-alone Installation

Required tools:

  • Node.js >= 16
  • Git
  • pm2 for running Pingvin Share in the background
git clone https://github.com/stonith404/pingvin-share
cd pingvin-share

# Checkout the latest version
git fetch --tags && git checkout $(git describe --tags `git rev-list --tags --max-count=1`)

# Start the backend
cd backend
npm install
npm run build
pm2 start --name="pingvin-share-backend" npm -- run prod

# Start the frontend
cd ../frontend
npm install
npm run build
pm2 start --name="pingvin-share-frontend" npm -- run start

The website is now listening on http://localhost:3000, have fun with Pingvin Share 🐧!

Integrations

ClamAV (Docker only)

ClamAV is used to scan shares for malicious files and remove them if found.

  1. Add the ClamAV container to the Docker Compose stack (see docker-compose.yml) and start the container.
  2. Docker will wait for ClamAV to start before starting Pingvin Share. This may take a minute or two.
  3. The Pingvin Share logs should now log "ClamAV is active"

Please note that ClamAV needs a lot of ressources.

Additional resources

Upgrade to a new version

As Pingvin Share is in early stage, see the release notes for breaking changes before upgrading.

Docker

docker compose pull
docker compose up -d

Stand-alone

  1. Stop the running app

    pm2 stop pingvin-share-backend pingvin-share-frontend
  2. Repeat the steps from the installation guide except the git clone step.

    cd pingvin-share
    
    # Checkout the latest version
    git fetch --tags && git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
    
    # Start the backend
    cd backend
    npm run build
    pm2 restart pingvin-share-backend
    
    # Start the frontend
    cd ../frontend
    npm run build
    pm2 restart pingvin-share-frontend

Configuration

You can customize Pingvin Share by going to the configuration page in your admin dashboard.

Environment variables

For installation specific configuration, you can use environment variables. The following variables are available:

Backend
Variable Default Value Description
PORT 8080 The port on which the backend listens.
DATABASE_URL file:../data/pingvin-share.db?connection_limit=1 The URL of the SQLite database.
DATA_DIRECTORY ./data The directory where data is stored.
CLAMAV_HOST 127.0.0.1 The IP address of the ClamAV server.
CLAMAV_PORT 3310 The port number of the ClamAV server.
Frontend
Variable Default Value Description
PORT 3000 The port on which the frontend listens.
API_URL http://localhost:8080 The URL of the backend for the frontend.

🖤 Contribute

Translations

You can help to translate Pingvin Share into your language. On Crowdin you can easily translate Pingvin Share online.

Is your language not on Crowdin? Feel free to Request it.

Any issues while translating? Feel free to participate in the Localization discussion.

Project

You're very welcome to contribute to Pingvin Share! Please follow the contribution guide to get started.