TPU is the next generation image hosting server written in Vue and TypeScript.
TPU 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, TPU 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 TPU at https://privateuploader.com (also known as https://images.flowinity.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 PrivateUploader.
- Insights, see reports about how, and when you use PrivateUploader.
- 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 TPU 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 privateuploader
- Change directory into repo:
cd privateuploader
- Create the container (change the environment variables to your liking):
DB_DATABASE=privateuploader DB_USER=privateuploader 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 TPU user and group:
useradd -m tpu
- Install MariaDB and Redis (with the RedisJSON plugin) on your server.
- Login as the TPU user:
su tpu
- Change directory into TPU home directory:
cd
- Clone the repository:
git clone https://github.com/Troplo/PrivateUploader private-uploader
- Change directory into the repository:
cd private-uploader
- Install dependencies:
yarn install
- Create systemd service files for TPU with
cp tpu.service /etc/systemd/system/tpu.service
- Modify the systemd service file (use nano, vim, etc), replace all instances of
CHANGE_ME
with your own values. Do not run TPU as root user and use the user created earlier. - Start TPU and start on boot with
systemctl enable tpu --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/tpu.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:
systemctl restart nginx
yarn build
- Build TPU.yarn serve
- Start TPU in development mode.yarn serve-cluster
- Start TPU in development cluster mode.yarn start
- Start TPU 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 TPU 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 💻 🤔 🐛 ️️️️♿️ |