#

Pingvin Share
--- _Read this in another language: [Spanish](/docs/README.es.md), [English](/README.md), [Simplified Chinese](/docs/README.zh-cn.md)_ --- 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 - [Demo](https://pingvin-share.dev.eliasschneider.com) - [Review by DB Tech](https://www.youtube.com/watch?v=rWwNeZCOPJA) ## ⌨️ 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](https://nodejs.org/en/download/) >= 16 - [Git](https://git-scm.com/downloads) - [pm2](https://pm2.keymetrics.io/) for running Pingvin Share in the background ```bash 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](https://docs.clamav.net/manual/Installing/Docker.html#memory-ram-requirements). ### Additional resources - [Synology NAS installation](https://mariushosting.com/how-to-install-pingvin-share-on-your-synology-nas/) ### Upgrade to a new version As Pingvin Share is in early stage, see the release notes for breaking changes before upgrading. #### Docker ```bash docker compose pull docker compose up -d ``` #### Stand-alone 1. Stop the running app ```bash pm2 stop pingvin-share-backend pingvin-share-frontend ``` 2. Repeat the steps from the [installation guide](#stand-alone-installation) except the `git clone` step. ```bash 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](https://crowdin.com/project/pingvin-share) you can easily translate Pingvin Share online. Is your language not on Crowdin? Feel free to [Request it](https://github.com/stonith404/pingvin-share/issues/new?assignees=&labels=language-request&projects=&template=language-request.yml&title=%F0%9F%8C%90+Language+request%3A+%3Clanguage+name+in+english%3E). Any issues while translating? Feel free to participate in the [Localization discussion](https://github.com/stonith404/pingvin-share/discussions/198). ### Project You're very welcome to contribute to Pingvin Share! Please follow the [contribution guide](/CONTRIBUTING.md) to get started.