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
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
## 🎪 Showcase
2022-04-25 15:15:17 +02:00
2022-05-06 11:22:38 +02:00
Demo: https://pingvin-share.dev.eliasschneider.com
2022-04-25 15:15:17 +02:00
2022-05-06 11:22:38 +02:00
< img src = "https://user-images.githubusercontent.com/58886915/167101708-b85032ad-f5b1-480a-b8d7-ec0096ea2a43.png" width = "700" / >
2022-04-25 15:15:17 +02:00
2022-05-06 11:22:38 +02:00
## ✨ Features
- Create a simple share with a link
2022-10-09 22:30:32 +02:00
- No file size limit, only your disk will be your limit
- Optionally secure your share with a visitor limit and a password
2022-05-06 11:22:38 +02:00
- Dark mode
## ⌨️ Setup
2022-04-25 15:15:17 +02:00
2022-10-11 10:24:08 +02:00
> Pleas note that Pingvin Share is in early stage and could include some bugs
2022-10-09 22:30:32 +02:00
1. Download the `docker-compose.yml` and `.env.example` file.
2. Rename the `.env.example` file to `.env` and change the environment variables so that they fit to your environment. If you need help with the environment variables take a look [here ](#environment-variables )
2022-10-11 23:10:44 +02:00
3. Create a folder in the same folder as your `docker-compose.yml` file named `data` and create a file named `pingvin-share.db` in it.
4. Run `docker-compose up -d`
2022-04-25 15:15:17 +02:00
2022-10-11 09:17:25 +02:00
The website is now listening available on `http://localhost:3000` , have fun with Pingvin Share 🐧!
2022-04-25 15:15:17 +02:00
2022-10-09 22:30:32 +02:00
### Environment variables
2022-04-25 15:15:17 +02:00
2022-10-11 23:10:44 +02:00
| Variable | Description | Possible values |
| -------------------- | ------------------------------------------------------------------------------------------- | --------------- |
| `APP_URL` | On which URL Pingvin Share is available. E.g http://localhost or https://pingvin-share.com. | URL |
2022-10-11 23:13:59 +02:00
| `SHOW_HOME_PAGE` | Whether the Pingvin Share home page should be shown. | true/false |
| `ALLOW_REGISTRATION` | Whether a new user can create a new account. | true/false |
2022-10-11 23:10:44 +02:00
| `MAX_FILE_SIZE` | Maximum allowed size per file in bytes. | Number |
2022-10-11 23:13:59 +02:00
| `JWT_SECRET` | Long random string to sign the JWT's. | Random string |
2022-10-11 23:10:44 +02:00
### Upgrade to a new version
Just updated the docker container by running `docker-compose pull && docker-compose up -d`
>Note: If you installed Pingvin Share before it used Sqlite, you unfortunately have to set up the project from scratch again, sorry for that.
2022-04-30 23:30:23 +02:00
2022-10-09 22:30:32 +02:00
## 🖤 Contribute
2022-05-06 10:25:10 +02:00
2022-10-09 22:30:32 +02:00
You're very welcome to contribute to Pingvin Share!
Contact me, create an issue or directly create a pull request.
2022-05-01 12:12:00 +02:00
2022-10-09 22:30:32 +02:00
### Development setup
2022-05-01 12:12:00 +02:00
2022-10-10 18:05:54 +02:00
#### Database & Backend
2022-10-11 09:17:25 +02:00
1. Open the `backend` folder
2022-10-09 22:30:32 +02:00
2. Duplicate the `.env.example` file, rename the duplicate to `.env` and change the environment variables if needed
3. Install the dependencies with `npm install`
2022-10-11 23:10:44 +02:00
4. Push the database schema to the database by running `npx prisma db push`
5. Start the backend with `npm run dev`
2022-04-30 23:30:23 +02:00
2022-10-09 22:30:32 +02:00
#### Frontend
2022-10-10 18:05:54 +02:00
2022-10-09 22:30:32 +02:00
1. Open the `frontend` folder
2. Duplicate the `.env.example` file, rename the duplicate to `.env` and change the environment variables if needed
3. Install the dependencies with `npm install`
4. Start the frontend with `npm run dev`
2022-04-25 15:15:17 +02:00
2022-10-10 18:05:54 +02:00
You're all set!