02cd98fa9c
* feat(auth): add OAuth2 login with GitHub and Google * chore(translations): add files for Japanese * fix(auth): fix link function for GitHub * feat(oauth): basic oidc implementation * feat(oauth): oauth guard * fix: disable image optimizations for logo to prevent caching issues with custom logos * fix: memory leak while downloading large files * chore(translations): update translations via Crowdin (#278) * New translations en-us.ts (Japanese) * New translations en-us.ts (Japanese) * New translations en-us.ts (Japanese) * release: 0.18.2 * doc(translations): Add Japanese README (#279) * Added Japanese README. * Added JAPANESE README link to README.md. * Updated Japanese README. * Updated Environment Variable Table. * updated zh-cn README. * feat(oauth): unlink account * refactor(oauth): make providers extensible * fix(oauth): fix discoveryUri error when toggle google-enabled * feat(oauth): add microsoft and discord as oauth provider * docs(oauth): update README.md * docs(oauth): update oauth2-guide.md * set password to null for new oauth users * New translations en-us.ts (Japanese) (#281) * chore(translations): add Polish files * fix(oauth): fix random username and password * feat(oauth): add totp * fix(oauth): fix totp throttle * fix(oauth): fix qrcode and remove comment * feat(oauth): add error page * fix(oauth): i18n of error page * feat(auth): add OAuth2 login * fix(auth): fix link function for GitHub * feat(oauth): basic oidc implementation * feat(oauth): oauth guard * feat(oauth): unlink account * refactor(oauth): make providers extensible * fix(oauth): fix discoveryUri error when toggle google-enabled * feat(oauth): add microsoft and discord as oauth provider * docs(oauth): update README.md * docs(oauth): update oauth2-guide.md * set password to null for new oauth users * fix(oauth): fix random username and password * feat(oauth): add totp * fix(oauth): fix totp throttle * fix(oauth): fix qrcode and remove comment * feat(oauth): add error page * fix(oauth): i18n of error page * refactor: return null instead of `false` in `getIdOfCurrentUser` functiom * feat: show original oauth error if available * refactor: run formatter * refactor(oauth): error message i18n * refactor(oauth): make OAuth token available someone may use it (to revoke token or get other info etc.) also improved the i18n message * chore(oauth): remove unused import * chore: add database migration * fix: missing python installation for nanoid --------- Co-authored-by: Elias Schneider <login@eliasschneider.com> Co-authored-by: ふうせん <10260662+fusengum@users.noreply.github.com> |
||
---|---|---|
.github | ||
backend | ||
docs | ||
frontend | ||
nginx | ||
.dockerignore | ||
.gitignore | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
crowdin.yml | ||
docker-compose-dev.yml | ||
docker-compose.yml | ||
Dockerfile | ||
LICENSE | ||
package.json | ||
README.md | ||
SECURITY.md |
Pingvin Share
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)
- Download the
docker-compose.yml
file - Run
docker-compose up -d
The website is now listening on http://localhost:3000
, have fun with Pingvin Share 🐧!
Stand-alone Installation
Required tools:
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
Uploading Large Files: By default, Pingvin Share uses a built-in reverse proxy to reduce the installation steps. However, this reverse proxy is not optimized for uploading large files. If you wish to upload larger files, you can either use the Docker installation or set up your own reverse proxy. An example configuration for Nginx can be found in /nginx/nginx.conf
.
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.
- Add the ClamAV container to the Docker Compose stack (see
docker-compose.yml
) and start the container. - Docker will wait for ClamAV to start before starting Pingvin Share. This may take a minute or two.
- The Pingvin Share logs should now log "ClamAV is active"
Please note that ClamAV needs a lot of ressources.
OAuth 2 Login
View the OAuth 2 guide for more information.
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
-
Stop the running app
pm2 stop pingvin-share-backend pingvin-share-frontend
-
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.