Urocissa is a self-hosted gallery designed to serve massive collections, capable of handling millions of images and videos. It is built using Rust and Vue.
The goal of this project is to efficiently serve one million photos on a 4 GB RAM server, providing smooth scrubbable scrolling, infinite photo streams, and instant search and selection, without waiting for the entire database to load in the browser.
You can explore the features of Urocissa through the following demos:
https://demo.photoserver.tw
Password: password
This demo showcases the typical usage of Urocissa, allowing you to experience its core features and user interface.
https://demo-million.photoserver.tw
Password: password
This demo demonstrates Urocissa's ability to manage 1,000,000 photos, showcasing the power and scalability of Urocissa. Since I don't have access to a million unique images, the photos in this demo are replaced with placeholders.
Both demos are currently in read-only mode, and uploading files or editing tags is not permitted at this time.
-
Blazing Fast Performance: Index photos with a pure Rust crate. Instantly serve, search, and filter one million photos in under a second using an in-memory cached database.
-
Memory Efficient: Even with the entire database cached in memory, both the standard demo and the one-million-photo demo can run seamlessly on a single server with just 4 GB of RAM.
-
Infinite Photo Stream: Experience endless scrolling without pagination. No lazy loading needed. Urocissa uses advanced virtual scrolling to serve one million photos, overcoming the DOM height limit of 33,554,400px (see TanStack/virtual#616).
-
Instant Data Search: Use boolean operators such as 'and', 'or', or 'not' to search your data instantly. Find examples of search queries here.
Early Stage Development: The app is still in its very early development phase. Many features are incomplete, and there are no automated tests. Additionally, Urocissa is currently optimized for Chrome and Firefox on Windows and Android, but it may encounter issues for browsers on iOS or Linux. The detailed features can be seen in this table:
| Feature | Status |
|---|---|
| Upload Videos and Photos | ✅ |
| Auto Backup Folders | ✅ |
| Download Photos and Videos | ✅ |
| EXIF Data | ✅ |
| User-Defined Tags | ✅ |
| Duplicate Handling | ✅ |
| Instant Select All | ✅ |
| Find in Timeline | ✅ |
| Responsive Layout | ✅ |
| Docker Installation | ✅ |
| Shareable Albums | 🛠️ |
| Basic Editing | ⏳ |
| Multi-User Support | ⏳ |
| Discovery | ⏳ |
| Object/Face Recognition | ❌ |
| Geolocation/Map | ❌ |
| Android App | ❌ |
| External Libraries | ❌ |
| Existing Folders | ❌ |
To instantly set up and try Urocissa using Docker on Linux, follow these steps:
-
Clone the Repository
Start by cloning the Urocissa repository from GitHub:
git clone https://github.com/hsa00000/Urocissa.git
-
Navigate to the Project Directory
Enter the newly created
Urocissadirectory:cd Urocissa -
Run the Setup Script
Execute the
run_urocissa_docker.shscript to install and launch Urocissa:bash run_urocissa_docker.sh
This script will install all necessary components and launch Urocissa within five seconds. Once the installation is complete, you can access the app using the following link:
The default login password is password.
If you want to change the default port or password, refer to the Configuration Guide.
If you prefer to build and install Urocissa from source, follow the relevant guide for your operating system:
- Linux Users: Refer to the instructions in this guide.
- Windows Users: Check out the instructions in this guide.
Navigate to the project directory and pull the latest updates:
git pull
If using Docker, follow these steps:
-
Pull the latest Docker image:
docker pull hsa00000/urocissa:latest
-
Run the Docker script:
bash run_urocissa_docker.sh
This will update and start the updated app.
If you are not using Docker and prefer to build from source, follow these manual steps to update:
-
Navigate to the
gallery-frontenddirectory:cd ./Urocissa/gallery-frontend -
Build the frontend:
npm run build
-
Navigate to the
gallery-backenddirectory:cd ./Urocissa/gallery-backend -
Build and run the backend using Cargo:
cargo run --release
After following these steps, your Urocissa app will be updated to the latest version.