Coder Social home page Coder Social logo

c-band / immich Goto Github PK

View Code? Open in Web Editor NEW

This project forked from immich-app/immich

0.0 1.0 0.0 67.26 MB

Self-hosted photo and video backup solution directly from your mobile phone.

Home Page: https://immich.app

License: MIT License

Shell 0.30% JavaScript 0.41% Ruby 0.50% Objective-C 0.01% Kotlin 0.04% Dart 59.14% TypeScript 28.24% CSS 0.12% Swift 0.06% Makefile 0.16% HTML 0.04% Dockerfile 0.18% Svelte 10.82%

immich's Introduction

License: MIT Star on Github Android Build iOS Build Build Status



Immich

High performance self-hosted photo and video backup solution.

Loading ~4000 images/videos

Screenshots

Mobile

Web

Note

!! NOT READY FOR PRODUCTION! DO NOT USE TO STORE YOUR ASSETS !!

This project is under heavy development, there will be continuous functions, features and api changes.

Features

Mobile Web
Upload and view videos and photos Yes Yes
Auto backup when app is opened Yes N/A
Selective album(s) for backup Yes N/A
Download photos and videos to local device Yes Yes
Multi-user support Yes Yes
Shared Albums Yes No
Quick navigation with draggable scrollbar Yes Yes
Support RAW (HEIC, HEIF, DNG, Apple ProRaw) Yes Yes
Metadata view (EXIF, map) Yes Yes
Search by metadata, objects and image tags Yes No
Administrative functions (user management) No Yes

System Requirement

OS: Preferred unix-based operating system (Ubuntu, Debian, MacOS...etc).

I haven't tested with Docker for Windows as well as WSL on Windows

Raspberry Pi can be used but microservices container has to be comment out in docker-compose since TensorFlow has not been supported in Docker image on arm64v7 yet.

RAM: At least 2GB, preffered 4GB.

Core: At least 2 cores, preffered 4 cores.

Getting Started

You can use docker compose for development and testing out the application, there are several services that compose Immich:

  1. NestJs - Backend of the application
  2. SvelteKit - Web frontend of the application
  3. PostgreSQL - Main database of the application
  4. Redis - For sharing websocket instance between docker instances and background tasks message queue.
  5. Nginx - Load balancing and optimized file uploading.
  6. TensorFlow - Object Detection (COCO SSD) and Image Classification (ImageNet).

Step 1: Populate .env file

Navigate to docker directory and run

cp .env.example .env

Then populate the value in there.

Notice that if set ENABLE_MAPBOX to true, you will have to provide MAPBOX_KEY for the server to run.

Pay attention to the key UPLOAD_LOCATION, this directory must exist and is owned by the user that run the docker-compose command below.

Example

###################################################################################
# Database
###################################################################################
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE_NAME=immich

###################################################################################
# Upload File Config
###################################################################################
UPLOAD_LOCATION=<put-the-path-of-the-upload-folder-here>

###################################################################################
# JWT SECRET
###################################################################################
JWT_SECRET=randomstringthatissolongandpowerfulthatnoonecanguess

###################################################################################
# MAPBOX
####################################################################################
# ENABLE_MAPBOX is either true of false -> if true, you have to provide MAPBOX_KEY
ENABLE_MAPBOX=false
MAPBOX_KEY=

###################################################################################
# WEB
###################################################################################
# This is the URL of your vm/server where you host Immich, so that the web frontend
# know where can it make the request to.
# For example: If your server IP address is 10.1.11.50, the environment variable will
# be VITE_SERVER_ENDPOINT=http://10.1.11.50:2283/api
VITE_SERVER_ENDPOINT=http://192.168.1.216:2283/api

Step 2: Start the server

To start, run

docker-compose -f ./docker/docker-compose.yml up 

If you have a few thousand photos/videos, I suggest running docker-compose with scaling option for the immich_server container to handle high I/O load when using fast scrolling.

docker-compose -f ./docker/docker-compose.yml up --scale immich-server=5 

To update docker-compose with newest image (if you have started the docker-compose previously)

docker-compose -f ./docker/docker-compose.yml pull && docker-compose -f ./docker/docker-compose.yml up

The server will be running at http://your-ip:2283/api through Nginx

Step 3: Register User

Access the web interface at http://your-ip:2283 to register an admin account.

Additional accounts on the server can be created by the admin account.

Step 4: Run mobile app

Login the mobile app with your server address

F-Droid

You can get the app on F-droid by clicking the image below.

Get it on F-Droid

Android

Get the app on Google Play Store here

The App version might be lagging behind the latest release due to the review process.

iOS

Get the app on Apple AppStore here:

The App version might be lagging behind the latest release due to the review process.

Development

The development environment can be started from the root of the project after populating the .env file with the command:

make dev # required Makefile installed on the system.

All servers and web container are hot reload for quick feedback loop.

Support

If you like the app, find it helpful, and want to support me to offset the cost of publishing to AppStores, you can sponsor the project with Github Sponsor, or a one time donation with the Buy Me a coffee link below.

"Buy Me A Coffee"

This is also a meaningful way to give me motivation and encouragement to continue working on the app.

Cheers! ๐ŸŽ‰

Known Issue

TensorFlow Build Issue

This is a known issue on RaspberryPi 4 arm64-v7 and incorrect Promox setup

TensorFlow doesn't run with older CPU architecture, it requires a CPU with AVX and AVX2 instruction set. If you encounter the error illegal instruction core dump when running the docker-compose command above, check for your CPU flags with the command and make sure you see AVX and AVX2:

more /proc/cpuinfo | grep flags

If you are running virtualization in Promox, the VM doesn't have the flag enabled.

You need to change the CPU type from kvm64 to host under VMs hardware tab.

Hardware > Processors > Edit > Advanced > Type (dropdown menu) > host

Otherwise you can:

  • edit docker-compose.yml file and comment the whole immich-machine-learning service which will disable machine learning features like object detection and image classification
  • switch to a different VM/desktop with different architecture.

immich's People

Contributors

alextran1502 avatar dependabot[bot] avatar gruentee avatar jbaez avatar matthinc avatar migelo avatar schklom avatar shruuub avatar theedgeofrage avatar xpwmaosldk avatar zackpollard avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.