.setup | ||
functions | ||
public | ||
src | ||
styles | ||
.dockerignore | ||
.env.example | ||
.eslintrc.json | ||
.gitignore | ||
appwrite.json | ||
docker-compose.yml | ||
Dockerfile | ||
LICENSE | ||
next-env.d.ts | ||
next.config.js | ||
package-lock.json | ||
package.json | ||
README.md | ||
tsconfig.json |
Pingvin Share
Pingvin Share
Pingvin Share is a selfhosted file sharing plattform made for the Appwrite Hackathon.
🎪 Showcase
Demo: https://pingvin-share.dev.eliasschneider.com
✨ Features
- Create a simple share with a link
- Secure your share with a visitor limit and a password
- Share your files with specific emails and send an invitation email
- Dark mode
⌨️ Setup
At the moment, the setup is a bit time-consuming. I will improve the setup in the future.
1. Appwrite
Pingvin Share uses Appwrite as backend. You have to install and setup Appwrite first
- Install Appwrite
- Create an Account on your Appwrite instance
- Change the
_APP_STORAGE_LIMIT
variable in the.env
file of Appwrite to your prefered max size limit per share
2. Frontend
First of all you have to start the Docker container.
- Clone the
docker-compose.yml
file and the.env.example
file from this repository - Rename the
.env.example
file to.env
- Start the container with
docker-compose up -d
The container is now running. Now you have to setup the Appwrite structure, but no worries I made a setup script.
To run the script run docker-compose exec pingvin-share node scripts/setup.js
.
You're almost done, now you have to change your environment variables that they fit to your setup.
- Go to your Appwrite console, visit "API Keys" and copy the "Functions API Key" secret to your clipboard.
- Paste the key to the
APPWRITE_FUNCTION_API_KEY
variable in the.env
file - Change
PUBLIC_APPWRITE_HOST
in the.env
file to the host where your Appwrite instance runs - Change
PUBLIC_MAX_FILE_SIZE
in the.env
file to the max file size limit you want
⚙️ Additional configurations
SMTP
- Enable
PUBLIC_MAIL_SHARE_ENABLE
in the.env
file. - Visit your Appwrite console, click on functions and select the
Create Share
function. - At the settings tab change the empty variables to your SMTP setup.
💁♂️ Known issues / Limitations
Pingvin Share is currently in beta and there are issues and limitations that should be fixed in the future.
DownloadAll
generates the zip file on the client side. This takes alot of time. Because of that I temporarily limited this function to maximal 150 MB.- If a user knows the share id, he can list and download the files directly from the Appwrite API even if the share is secured by a password or a visitor limit.
🖤 Contribute
You're very welcome to contribute to Pingvin Share! Contact me, create an issue or directly create a pull request.