mirror of
https://github.com/immich-app/immich.git
synced 2025-06-02 13:18:19 -04:00
* 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>
107 lines
3.5 KiB
Markdown
107 lines
3.5 KiB
Markdown
---
|
|
sidebar_position: 2
|
|
---
|
|
|
|
# Setup
|
|
|
|
## Environment
|
|
|
|
### Server and web app
|
|
|
|
This environment includes the following services:
|
|
|
|
- Core server - `/server/apps/immich`
|
|
- Machine learning - `/machine-learning`
|
|
- Microservices - `/server/apps/microservicess`
|
|
- Web app - `/web`
|
|
- Redis
|
|
- PostgreSQL development database with exposed port `5432` so you can use any database client to acess it
|
|
- NGINX Proxy - `nginx/nginx.conf`
|
|
|
|
All the services are packaged to run as with single Docker Compose command.
|
|
|
|
### Instructions
|
|
|
|
1. Clone the project repo.
|
|
2. Run `cp docker/example.env docker/.env`.
|
|
3. Edit `docker/.env` to provide values for the required variable `UPLOAD_LOCATION`.
|
|
4. From the root directory, run:
|
|
|
|
```bash title="Start development server"
|
|
make dev # required Makefile installed on the system.
|
|
```
|
|
|
|
5. Access the dev instance in your browser at http://localhost:2283, or connect via the mobile app.
|
|
|
|
All the services will be started with hot-reloading enabled for a quick feedback loop.
|
|
|
|
You can access the web from `http://your-machine-ip:2283` or `http://localhost:2283` and access the server from the mobile app at `http://your-machine-ip:2283/api`
|
|
|
|
### Mobile app
|
|
|
|
The mobile app `(/mobile)` will required Flutter toolchain to be installed on your system.
|
|
|
|
Please refer to the [Flutter's official documentation](https://flutter.dev/docs/get-started/install) for more information on setting up the toolchain on your machine.
|
|
|
|
## IDE setup
|
|
|
|
### Lint / format extensions
|
|
|
|
Setting these in the IDE give a better developer experience, auto-formatting code on save, and providing instant feedback on lint issues.
|
|
|
|
### VSCode
|
|
|
|
Install `Flutter`, `Prettier`, `ESLint` and `Svelte` extensions.
|
|
|
|
in User `settings.json` (`cmd + shift + p` and search for `Open User Settings JSON`) add the following:
|
|
|
|
```json title="settings.json"
|
|
{
|
|
"editor.formatOnSave": true,
|
|
"[javascript][typescript][css]": {
|
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
"editor.tabSize": 2,
|
|
"editor.formatOnSave": true
|
|
},
|
|
"[svelte]": {
|
|
"editor.defaultFormatter": "svelte.svelte-vscode",
|
|
"editor.tabSize": 2
|
|
},
|
|
"svelte.enable-ts-plugin": true,
|
|
"eslint.validate": ["javascript", "svelte"],
|
|
"[dart]": {
|
|
"editor.formatOnSave": true,
|
|
"editor.selectionHighlight": false,
|
|
"editor.suggest.snippetsPreventQuickSuggestions": false,
|
|
"editor.suggestSelection": "first",
|
|
"editor.tabCompletion": "onlySnippets",
|
|
"editor.wordBasedSuggestions": false,
|
|
"editor.defaultFormatter": "Dart-Code.dart-code"
|
|
}
|
|
}
|
|
```
|
|
|
|
## OpenAPI generator
|
|
|
|
OpenAPI is used to generate the client (Typescript, Dart) SDK. `openapi-generator-cli` can be installed [here](https://openapi-generator.tech/docs/installation/). When you add a new or modify an existing endpoint, you must run the command below to update the client SDK.
|
|
|
|
```bash
|
|
npm run api:generate # Run from the `server` directory
|
|
```
|
|
|
|
You can find the generated client SDK in the `web/src/api` for Typescript SDK and `mobile/openapi` for Dart SDK.
|
|
|
|
## Database migrations
|
|
|
|
After making any changes in the `server/libs/database/src/entities`, a database migration need to run in order to register the changes in the database. Follow the steps below to create a new migration.
|
|
|
|
1. Attached to the server container shell.
|
|
2. Run
|
|
|
|
```bash
|
|
npm run typeorm -- migration:generate ./libs/infra/src/db/<migration-name> -d ./libs/infra/src/db/config/database.config.ts
|
|
```
|
|
|
|
3. Check if the migration file makes sense.
|
|
4. Move the migration file to folder `server/libs/database/src/migrations` in your code editor.
|