* fix: pgvecto.rs extension breaks typeorm schema:drop command
* fix: parse postgres bigints to javascript number types when selecting data
* feat: verify file size is the same as original asset after copying file for storage template job
* feat: allow disabling of storage template job, defaults to disabled for new instances
* fix: don't allow setting concurrency for storage template migration, can cause race conditions above 1
* feat: add checksum verification when file is copied for storage template job
* fix: extract metadata for assets that aren't visible on timeline
* Allow building and installing cli
* feat: add format fix
* docs: remove cli folder
* feat: use immich scoped package
* feat: rewrite cli readme
* docs: add info on running without building
* cleanup
* chore: remove import functionality from cli
* feat: add logout to cli
* docs: add todo for file format from server
* docs: add compilation step to cli
* fix: success message spacing
* feat: can create albums
* fix: add check step to cli
* fix: typos
* feat: pull file formats from server
* chore: use crawl service from server
* chore: fix lint
* docs: add cli documentation
* chore: rename ignore pattern
* chore: add version number to cli
* feat: use sdk
* fix: cleanup
* feat: album name on windows
* chore: remove skipped asset field
* feat: add more info to server-info command
* chore: cleanup
* wip
* chore: remove unneeded packages
* e2e test can start
* git ignore for geocode in cli
* add cli e2e to github actions
* can do e2e tests in the cli
* simplify e2e test
* cleanup
* set matrix strategy in workflow
* run npm ci in server
* choose different working directory
* check out submodules too
* increase test timeout
* set node version
* cli docker e2e tests
* fix cli docker file
* run cli e2e in correct folder
* set docker context
* correct docker build
* remove cli from dockerignore
* chore: fix docs links
* feat: add cli v2 milestone
* fix: set correct cli date
* remove submodule
* chore: add npmignore
* chore(cli): push to npm
* fix: server e2e
* run npm ci in server
* remove state from e2e
* run npm ci in server
* reshuffle docker compose files
* use new e2e composes in makefile
* increase test timeout to 10 minutes
* make github actions run makefile e2e tests
* cleanup github test names
* assert on server version
* chore: split cli e2e tests into one file per command
* chore: set cli release working dir
* chore: add repo url to npmjs
* chore: bump node setup to v4
* chore: normalize the github url
* check e2e code in lint
* fix lint
* test key login flow
* feat: allow configurable config dir
* fix session service tests
* create missing dir
* cleanup
* bump cli version to 2.0.4
* remove form-data
* feat: allow single files as argument
* add version option
* bump dependencies
* fix lint
* wip use axios as upload
* version bump
* cApiTALiZaTiON
* don't touch package lock
* wip: don't use job queues
* don't use make for cli e2e
* fix server e2e
* chore: remove old gha step
* add npm ci to server
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
1. In the `docker-compose.dev.yml` file, increased ulimits for the containers that use TS code. This was one of the reasons for failures in my Podman (on macOS/arm64) environment. It wasn't the only failure with Podman, and didn't investigate further (I switched to Docker on Linux/amd64 after), but it can still help others.
2. Added a `make dev-down` to perform a `docker-compose down` on the dev environment
Signed-off-by: ItalyPaleAle <43508+ItalyPaleAle@users.noreply.github.com>
* added transcode configs for nvenc,qsv and vaapi
* updated dev docker compose
* added software fallback
* working vaapi
* minor fixes and added tests
* updated api
* compile libvips
* move hwaccel settings to `hwaccel.yml`
* changed default dockerfile, moved `readdir` call
* removed unused import
* minor cleanup
* fix for arm build
* added documentation, minor fixes
* added intel driver
* updated docs
styling
* uppercase codec and api names
* formatting
* added tests
* updated docs
* removed semicolons
* added link to `hwaccel.yml`
* added newlines
* added `hwaccel` section to docker-compose.prod.yml
* ensure mesa drivers are installed
* switch to mimalloc for sharp
* moved build version and sha256 to json
* let libmfx set the render device
* possible fix for vp9 on qsv
* updated tests
* formatting
* review suggestions
* semicolon
* moved `LD_PRELOAD` to start script
* switched to jellyfin's ffmpeg package
* fixed dockerfile
* use cqp instead of icq for qsv vp9
* updated dockerfile
* added sha256sum for other platforms
* fixtures
* Remove unnecessary PG_DATA environement variable from docker-compose.yml
There is no need to set the PostgreSQL data directory to the default location, it just adds an additional unnecessary line to the docker-compose file.
In addition, the PG_DATA isn't even the correct environment variable name (it should be PGDATA, see: https://hub.docker.com/_/postgres/), so this environment variable was never doing anything to begin with.
* Update docker-compose.dev.yml
* Update docker-compose.prod.yml
* Update docker-compose.test.yml
Previously, if you'd shut down the `make-dev` command and restart
the docker daemon (say, on a system reboot), there would be 3 immich
containers already running.
* using pydantic BaseSetting
* ML API takes image file as input
* keeping image in memory
* reducing duplicate code
* using bytes instead of UploadFile & other small code improvements
* removed form-multipart, using HTTP body
* format code
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* updated dockerfile, added typing, packaging
apply env change
* added arm64 support
* added ml version pump, second try for arm64
* added linting config to pyproject.toml
* renamed ml input field
* fixed linter config
* fixed dev docker compose
A default entrypoint and command make it just a bit easier to use the images as
there is no longer a need for an explicit entrypoint. The exception is the
server image, which still requires the shell script to be specified.
* default NODE_ENV to production for server image
* update node image to use 3.17 alpine in server
* update web docker image to use alpine 3.17
* remove NODE_ENV from production docker-compose
* NODE_ENV is also needed default in machine-learning
* build: add typesense to docker
* feat(server): typesense search
* feat(web): search
* fix(web): show api error response message
* chore: search tests
* chore: regenerate open api
* fix: disable typesense on e2e
* fix: number properties for open api (dart)
* fix: e2e test
* fix: change lat/lng from floats to typesense geopoint
* dev: Add smartInfo relation to findAssetById to be able to query against it
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* fix(machine-learning): Add the command to execute at startup
Previously it wasn't set in the Docker container but it should be.
* fix(docker): remove machine-learning command arg
* fix(docker): machine-learning CMD argument
BREAKING CHANGES
* Users have to update the docker-compose file, machine-learning portion.
* Temporary dropping machine-learning support for Arm64 and Armv7
* chore: add typeorm commands to npm and set default database config values
* feat: move to server side authentication tokens
* fix: websocket should emit error and disconnect on error thrown by the server
* refactor: rename cookie-auth-strategy to user-auth-strategy
* feat: user tokens and API keys now use SHA256 hash for performance improvements
* test: album e2e test remove unneeded module import
* infra: truncate api key table as old keys will no longer work with new hash algorithm
* fix(server): e2e tests (#1435)
* fix: root module paths
* chore: linting
* chore: rename user-auth to strategy.ts and make validate return AuthUserDto
* fix: we should always send HttpOnly for our auth cookies
* chore: remove now unused crypto functions and jwt dependencies
* fix: return the extra fields for AuthUserDto in auth service validate
---------
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
* feat(.well-known): add .well-known/immich to reference API endpoint
* feat(.well-known): make schema optional (defaults to https)
* adjust method comment to be a little less confusing
* fix casting issue with resovled url
* include when checking Well-known, update server hint
* add validation for login form's server url
* consolidate common process into resolveAndSetEndpoint
* fix missed prettier formatting
* revert translation changes
* update environment variable description, hopefully a bit clearer
* rename environment variable to IMMICH_API_URL_EXTERNAL
* comment out optional env variables
* fix(web): browser-side api client to include authorization token
* Revert "fix(web): browser-side api client to include authorization token"
This reverts commit 60e338938f.
* remove multi-domain related changes
* Add proxy changes
* Add web changes
* Add microservices changes
* Add examples
* Add header comment to nginx config
* Use URLs instead of host and port
Implemented a mechanism to extract the correct time zone from the GPS coordinate if presented in the file's EXIF, and to convert the timestamp to the correct UTC time so that the time will show correctly based on the mobile/web local time zone.
* feat(nginx): use non-root container for immich-proxy
Signed-off-by: PixelJonas <5434875+PixelJonas@users.noreply.github.com>
* re-add test env
* feat(nginx): add correct port for staging
* add the new port to the default docker-compose.yml
Signed-off-by: PixelJonas <5434875+PixelJonas@users.noreply.github.com>
* Use runtime env var for loginPageMessage
* Rename VITE_LOGIN_PAGE_MESSAGE to PUBLIC_LOGIN_PAGE_MESSAGE in .env.example
* Move docker image `npm run build` step into Dockerfile
* Remove comment from web Dockerfile
* Move backend api to its own instance
* Remove external fetch hook
* Added endpoint for album
* Added endpoint for admin page
* Make request directly to immich-server
* Refactor unsued code
* Use cookie for frontend request
* Remove api helper to use SDK
* Added error handling to status box
* Remove additional places that check for session.user
* Refactor sending password
* prettier clean up
* remove deadcode
* Move all authentication requests to the client
* refactor upload panel to only fetch assets after the upload panel disappear
* Added keydown to remove focus on title change on album viewer
* Add message for demo instances to login screen
* Rename env variable
* Added key into
* Add styling to conform with Immich color scheme
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* feat: create immich-proxy container to remove default nginx config setup
* infra: make production docker-compose point at release builds for stability
* Fixed nginx config file was overriden by default.conf in nginx container; Fixed docker-compose.dev; Added additional tag 'release' for tagging after release build in Github Action
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* chore: remove UPLOAD_LOCATION as it isn't used in the server
* docker: remove network in docker compose as docker creates one by default
* nginx: update reverse proxy to put web at root and api at /api
* docker: remove unneeded exposed ports and docker network
Align dev setup with prod, but with ports exposed for direct connection
Most communication between services happens on the internal network, so we don't need to expose all these services.
With the nginx changes, the api and web panel are both server through the reverse proxy on / for web and /api for the API.
The only service that should expose ports is nginx as that is the entrypoint to the application.
* chore: remove CORS now we serve the api on /api in the default setup
* docs: update README.md to include /api
* Fixed docket-compose file for dev environment and websocket on web and mobile
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>