1
0
mirror of https://github.com/stonith404/pingvin-share.git synced 2024-07-04 00:10:17 +02:00
pingvin-share/README.md
2022-05-01 17:31:30 +02:00

2.5 KiB


Pingvin Share

Pingvin Share is a selfhosted file sharing plattform made for the Appwrite Hackathon.

Showcase

https://pingvin-share.dev.eliasschneider.com

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

  1. Install Appwrite
  2. Create an Account on your Appwrite instance
  3. 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.

  1. Clone the docker-compose.yml file and the .env.example file from this repository
  2. Rename the .env.example file to .env
  3. 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 start 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.

  1. Go to your Appwrite console, visit "API Keys" and copy the "Functions API Key" secret to your clipboard.
  2. Paste the key to the APPWRITE_FUNCTION_API_KEY variable in the .env file
  3. Change NEXT_PUBLIC_APPWRITE_HOST in the .env file to the host where your Appwrite instance runs
  4. Change NEXT_PUBLIC_MAX_FILE_SIZE in the .env file to the max file size limit you want

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.
  • Because NextJS injects environments variables at build time, the website must be rebuilt when an environment variable changes. At the moment the container rebuilts the website after every restart. This takes some time.

Contribute

You're very welcome to contribute to Pingvin Share! Contact me, create an issue or directly create a pull request.