2022-05-02 09:19:33 +02:00
# <div align="center"><img src="https://user-images.githubusercontent.com/58886915/166198400-c2134044-1198-4647-a8b6-da9c4a204c68.svg" width="40"/> </br>Pingvin Share</div>
2022-04-25 15:15:17 +02:00
2023-04-01 20:15:47 +02:00
---
2023-04-02 18:55:41 +02:00
_Read this in another language: [Spanish ](/docs/README.es.md ), [English ](/README.md ), [Simplified Chinese ](/docs/README.zh-cn.md )_
2023-04-01 20:15:47 +02:00
---
2022-10-09 22:30:32 +02:00
Pingvin Share is self-hosted file sharing platform and an alternative for WeTransfer.
2022-04-25 15:15:17 +02:00
2022-05-06 11:22:38 +02:00
## ✨ Features
2023-02-10 14:59:19 +01:00
- 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
2022-05-06 11:22:38 +02:00
2022-12-08 17:30:12 +01:00
## 🐧 Get to know Pingvin Share
- [Demo ](https://pingvin-share.dev.eliasschneider.com )
- [Review by DB Tech ](https://www.youtube.com/watch?v=rWwNeZCOPJA )
2023-03-14 15:47:42 +01:00
< img src = "https://user-images.githubusercontent.com/58886915/225038319-b2ef742c-3a74-4eb6-9689-4207a36842a4.png" width = "700" / >
2022-12-08 17:30:12 +01:00
2022-05-06 11:22:38 +02:00
## ⌨️ Setup
2022-04-25 15:15:17 +02:00
2023-02-10 14:59:19 +01:00
> Note: Pingvin Share is in its early stages and may contain bugs.
2022-10-11 10:24:08 +02:00
2023-02-10 14:59:19 +01:00
### Installation with Docker (recommended)
2022-12-11 12:38:58 +01:00
2022-12-02 20:33:17 +01:00
1. Download the `docker-compose.yml` file
2. Run `docker-compose up -d`
2022-04-25 15:15:17 +02:00
2023-03-04 23:29:00 +01:00
The website is now listening on `http://localhost:3000` , have fun with Pingvin Share 🐧!
2022-04-25 15:15:17 +02:00
2023-02-10 14:59:19 +01:00
### Stand-alone Installation
Required tools:
2023-03-14 15:36:35 +01:00
- [Node.js ](https://nodejs.org/en/download/ ) >= 16
2023-02-10 14:59:19 +01:00
- [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
2023-02-13 10:09:53 +01:00
cd backend
2023-02-10 14:59:19 +01:00
npm install
npm run build
pm2 start --name="pingvin-share-backend" npm -- run prod
2023-02-12 19:04:12 +01:00
# Start the frontend
2023-02-13 10:09:53 +01:00
cd ../frontend
2023-02-12 19:04:12 +01:00
npm install
npm run build
pm2 start --name="pingvin-share-frontend" npm -- run start
2023-02-10 14:59:19 +01:00
```
2023-03-04 23:29:00 +01:00
The website is now listening on `http://localhost:3000` , have fun with Pingvin Share 🐧!
2023-02-10 14:59:19 +01:00
2023-01-13 10:16:35 +01:00
### Integrations
2023-02-10 14:59:19 +01:00
#### ClamAV (Docker only)
2023-01-13 10:16:35 +01:00
2023-02-10 14:59:19 +01:00
ClamAV is used to scan shares for malicious files and remove them if found.
2023-01-13 10:16:35 +01:00
1. Add the ClamAV container to the Docker Compose stack (see `docker-compose.yml` ) and start the container.
2023-01-13 14:11:33 +01:00
2. Docker will wait for ClamAV to start before starting Pingvin Share. This may take a minute or two.
2023-01-13 10:16:35 +01:00
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 ).
2022-12-11 12:38:58 +01:00
### Additional resources
- [Synology NAS installation ](https://mariushosting.com/how-to-install-pingvin-share-on-your-synology-nas/ )
2022-10-11 23:10:44 +02:00
### Upgrade to a new version
2023-02-10 14:59:19 +01:00
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
2023-03-16 09:21:53 +01:00
1. Stop the running app
2023-04-02 18:53:54 +02:00
```bash
pm2 stop pingvin-share-backend pingvin-share-frontend
```
2023-02-13 10:09:53 +01:00
2. Repeat the steps from the [installation guide ](#stand-alone-installation ) except the `git clone` step.
2023-04-02 18:53:54 +02:00
2023-03-16 09:21:53 +01:00
```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
```
2022-04-30 23:30:23 +02:00
2023-05-09 09:18:02 +02:00
### Configuration
2023-03-04 23:29:00 +01:00
2023-05-09 09:18:02 +02:00
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. |
2023-03-04 23:29:00 +01:00
2022-10-09 22:30:32 +02:00
## 🖤 Contribute
2022-05-06 10:25:10 +02:00
2023-07-20 15:57:36 +02:00
### 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.