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.
You can use the official public instance of Flowinity at https://flowinity.com (previously https://privateuploader.com).
- 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).
- 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
These instructions assume you're using a standard Linux system with systemd, these instructions will differ depending on what init system you use.
- Clone the Docker-specific repo:
git clone https://github.com/PrivateUploader/docker-compose flowinity
- Change directory into repo:
cd flowinity
- 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
- Follow the setup wizard on http://localhost:34582
- You must change the MariaDB server hostname to
mariadb
and the redis hostname toredis
in the setup wizard. (seen below):
- Create Flowinity user and group:
useradd -m flowinity
- Install MariaDB and Redis (with the RedisJSON plugin) on your server.
- Login as the Flowinity user:
su flowinity
- Change directory into TPU home directory:
cd
- Clone the repository:
git clone https://github.com/PrivateUploader/Flowinity flowinity
- Change directory into the repository:
cd flowinity
- Install dependencies:
yarn install
- Create systemd service files for TPU with
cp flowinity.service /etc/systemd/system/flowinity.service
- 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. - Start TPU and start on boot with
systemctl enable flowinity --now
- Follow the setup wizard on http://localhost:34582 and configure NGINX web server.
- TPU includes an example NGINX configuration file, you can find it at
nginx.conf
in either of the Docker or primary TPU repositories. - 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
). - Modify the NGINX configuration file (use nano, vim, etc), replace all
instances of
CHANGE_ME
with your own values. - Test the NGINX configuration:
nginx -t
- If the test is successful, reload NGINX:
nginx -s reload
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).
Troplo 💻 📖 🔣 🚇 🛡️ |
The Loose Goose 💻 🚇 🌍 |
bytedefined 💻 🌍 🤔 🐛 |
ElectricS01 💻 🤔 🐛 |
Jolt707 💻 🤔 🐛 ️️️️♿️ |