Flowinity / Flowinity

Flowinity (formerly PrivateUploader) is the ultimate open source image uploader and file storage solution.

Home Page:https://flowinity.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PrivateUploader Banner

Flowinity (formerly PrivateUploader) codecov

Flowinity is the next generation image hosting server written in Vue and TypeScript.

Flowinity is intended to be an out of the way image hosting server for everyone else, thus it doesn't have features you'd regularly find in other ShareX servers, such as rich OpenGraph embeds. But instead has unique features like Insights, and Collections.

Additionally, Flowinity has only recently become an open source project, so documentation and resources are lacking initially, but will improve over time.

PrivateUploader Features

Don't want to host your own server?

You can use the official public instance of Flowinity at https://flowinity.com (previously https://privateuploader.com).

Screenshots (Click to expand)

View the full collection on Flowinity.

Gallery Collection Page User Profile Insights

Features

  • Gallery, where all your uploaded files live.
  • Collections, which can be shared with multiple users.
  • AutoCollects, create custom rules to automatically add items into collections.
  • Workspaces, create quick notes/documents inside Flowinity.
  • Insights, see reports about how, and when you use Flowinity.
  • Communications, the built-in messaging platform to communicate with other users.
  • Scoped API keys for additional security.
  • Scoped passwords, set custom passwords with different API permissions.
  • ShareX, and Sharenix support (built-in client export).

System Requirements

  • Node.js 18.0.0 or newer (NodeJS 18 is necessary for structuredClone, no polyfills are built-in)
  • 2GB of RAM or more (RAM usage is dependent on the number of threads Flowinity uses)
  • 4GB of disk space or more (for core server, database, and frontend files)
  • 64-bit x86 or ARM processor, 1 CPU core or more (4 recommended)
  • MariaDB server (MySQL won't work, Sequelize dialect "mysql" does not support JSON)
  • Redis server with RedisJSON plugin (only works with UNIX-like systems)
  • Linux, other UNIX-based like macOS (Microsoft Windows is not officially supported)
  • Tesseract OCR (with English language support) for OCR features

Setting Up

These instructions assume you're using a standard Linux system with systemd, these instructions will differ depending on what init system you use.

Docker w/ docker-compose (Quickest method)

  1. Clone the Docker-specific repo: git clone https://github.com/PrivateUploader/docker-compose flowinity
  2. Change directory into repo: cd flowinity
  3. Create the container (change the environment variables to your liking): DB_DATABASE=flowinity DB_USER=flowinity DB_PASSWORD=CHANGE_ME DB_ROOT_PASSWORD=CHANGE_ME docker-compose up -d
  4. Follow the setup wizard on http://localhost:34582
  5. You must change the MariaDB server hostname to mariadb and the redis hostname to redis in the setup wizard. (seen below): Setup Wizard Setup Wizard

Manual Setup

  1. Create Flowinity user and group: useradd -m flowinity
  2. Install MariaDB and Redis (with the RedisJSON plugin) on your server.
  3. Login as the Flowinity user: su flowinity
  4. Change directory into TPU home directory: cd
  5. Clone the repository: git clone https://github.com/PrivateUploader/Flowinity flowinity
  6. Change directory into the repository: cd flowinity
  7. Install dependencies: yarn install
  8. Create systemd service files for TPU with cp flowinity.service /etc/systemd/system/flowinity.service
  9. Modify the systemd service file (use nano, vim, etc), replace all instances of CHANGE_ME with your own values. Do not run Flowinity as root user and use the user created earlier.
  10. Start TPU and start on boot with systemctl enable flowinity --now
  11. Follow the setup wizard on http://localhost:34582 and configure NGINX web server.

NGINX Configuration

  1. TPU includes an example NGINX configuration file, you can find it at nginx.conf in either of the Docker or primary TPU repositories.
  2. Copy it to your NGINX configuration directory: cp nginx.conf /etc/nginx/conf.d/flowinity.conf (this folder can differ between distributions, it could be /etc/nginx/sites-available, if so, symlink it to /etc/nginx/sites-enabled).
  3. Modify the NGINX configuration file (use nano, vim, etc), replace all instances of CHANGE_ME with your own values.
  4. Test the NGINX configuration: nginx -t
  5. If the test is successful, reload NGINX: nginx -s reload

Scripts

  • yarn build - Build Flowinity.
  • yarn serve - Start Flowinity in development mode.
  • yarn serve-cluster - Start Flowinity in development cluster mode.
  • yarn start - Start Flowinity in production mode and build (cluster mode).

Even if you only have 1 CPU core/thread, you should still use start in production as it will support the TPU_RESTART process command and will automatically scale if you add more CPU cores/threads.

Do not restart Flowinity via pm2 or systemd if you are using the serve-cluster script in production.

This can be done in the admin panel or via a POST request to /api/v3/admin/restart (administrator account required, can be automated with "admin.ci" API scope).

Having a single CPU core will cause Flowinity to be temporarily unavailable when restarting.

Contributors

All Contributors

Troplo
Troplo

πŸ’» πŸ“– πŸ”£ πŸš‡ πŸ›‘οΈ
The Loose Goose
The Loose Goose

πŸ’» πŸš‡ 🌍
bytedefined
bytedefined

πŸ’» 🌍 πŸ€” πŸ›
ElectricS01
ElectricS01

πŸ’» πŸ€” πŸ›
Jolt707
Jolt707

πŸ’» πŸ€” πŸ› ️️️️♿️

About

Flowinity (formerly PrivateUploader) is the ultimate open source image uploader and file storage solution.

https://flowinity.com

License:GNU Affero General Public License v3.0


Languages

Language:TypeScript 59.7%Language:Vue 36.7%Language:CSS 1.6%Language:JavaScript 0.9%Language:HTML 0.6%Language:SCSS 0.5%Language:EJS 0.0%Language:Dockerfile 0.0%Language:Shell 0.0%