Skip to content

Commit 6ae7ef3

Browse files
committed
#1
0 parents  commit 6ae7ef3

File tree

3 files changed

+168
-0
lines changed

3 files changed

+168
-0
lines changed

.github/workflows/ubuntu.yaml

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
name: Immich Setup & Verification
2+
3+
on:
4+
push:
5+
workflow_dispatch:
6+
inputs:
7+
K_SECONDS:
8+
description: 'Duration in seconds to sleep before verification'
9+
required: true
10+
default: '90' # Immich can take a bit longer to fully initialize
11+
type: string
12+
13+
jobs:
14+
setup_and_verify_immich:
15+
runs-on: ubuntu-24.04 # Specifies the base Ubuntu 24.04 image
16+
17+
steps:
18+
- name: Checkout Repository
19+
uses: actions/checkout@v4
20+
21+
- name: Install Docker and Docker Compose
22+
uses: docker/setup-buildx-action@v3 # This action conveniently installs Docker and Docker Compose v2 (docker compose)
23+
24+
- name: Log in to GitHub Container Registry (GHCR)
25+
# Use the built-in GITHUB_TOKEN to authenticate with GHCR
26+
# This is essential for pulling images from ghcr.io if rate limited or private
27+
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
28+
29+
- name: Start Immich services
30+
# Change working-directory to where your docker-compose.yml and .env are located
31+
working-directory: docker-configs/immich
32+
run: |
33+
echo "Starting Immich services with docker compose from $(pwd)..."
34+
# Ensure volumes are created if not already
35+
docker compose pull # Pull images first to ensure they are the specified version
36+
docker compose up -d
37+
38+
- name: Wait for Immich to fully initialize
39+
run: |
40+
K_SECONDS="${{ github.event.inputs.K_SECONDS }}"
41+
echo "Sleeping for $K_SECONDS seconds before verification..."
42+
sleep "$K_SECONDS"
43+
echo "Sleep finished, proceeding to verification."
44+
45+
- name: Verify Immich API is up and running
46+
run: |
47+
echo "Verifying Immich API..."
48+
# The API server runs on IMMICH_SERVER_PORT (2283 by default) as defined in .env
49+
curl -f -s http://localhost:2283/api/server-info
50+
if [ $? -eq 0 ]; then
51+
echo "Immich API service is up and running!"
52+
else
53+
echo "Immich API service failed to respond!"
54+
exit 1
55+
fi
56+
57+
- name: Verify Immich Web UI is accessible
58+
run: |
59+
echo "Verifying Immich Web UI..."
60+
# The web UI runs on IMMICH_WEB_PORT (8080 by default) as defined in .env
61+
curl -f -s http://localhost:8080/
62+
if [ $? -eq 0 ]; then
63+
echo "Immich Web UI is accessible!"
64+
else
65+
echo "Immich Web UI failed to respond!"
66+
exit 1
67+
fi
68+
69+
- name: Display running Docker containers (for debugging)
70+
if: always() # Run even if previous steps fail
71+
run: docker ps -a
72+
73+
- name: Display Docker Compose logs (for debugging)
74+
if: always() # Run even if previous steps fail
75+
working-directory: docker-configs/immich
76+
run: docker compose logs

docker-configs/immich/.env

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
IMMICH_VERSION="v1.140.0"
2+
3+
# Database settings
4+
DB_HOSTNAME=postgres
5+
DB_USERNAME=immich
6+
DB_PASSWORD=immich_secure_password # IMPORTANT: Use a strong password in production
7+
DB_DATABASE=immich_db
8+
9+
# Redis settings
10+
# REDIS_HOSTNAME=redis
11+
#
12+
# # Immich ports (exposed on the host)
13+
IMMICH_WEB_PORT=8080 # For the web interface
14+
IMMICH_SERVER_PORT=2283 # For the API backend
15+
#
16+
# # Internal container path for uploads (mapped via volume)
17+
UPLOAD_LOCATION=/tmp/
18+
DB_DATA_LOCATION=/tmp/db
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# RNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose
2+
#
3+
# Make sure to use the docker-compose.yml of the current release:
4+
#
5+
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
6+
#
7+
# The compose file on main may not be compatible with the latest release.
8+
9+
name: immich
10+
11+
services:
12+
immich-server:
13+
container_name: immich_server
14+
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
15+
# extends:
16+
# file: hwaccel.transcoding.yml
17+
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
18+
volumes:
19+
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
20+
- ${UPLOAD_LOCATION}:/data
21+
- /etc/localtime:/etc/localtime:ro
22+
env_file:
23+
- .env
24+
ports:
25+
- '2283:2283'
26+
depends_on:
27+
- redis
28+
- database
29+
restart: always
30+
healthcheck:
31+
disable: false
32+
33+
immich-machine-learning:
34+
container_name: immich_machine_learning
35+
# For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag.
36+
# Example tag: ${IMMICH_VERSION:-release}-cuda
37+
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
38+
# extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
39+
# file: hwaccel.ml.yml
40+
# service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable
41+
volumes:
42+
- model-cache:/cache
43+
env_file:
44+
- .env
45+
restart: always
46+
healthcheck:
47+
disable: false
48+
49+
redis:
50+
container_name: immich_redis
51+
image: docker.io/valkey/valkey:8-bookworm@sha256:a137a2b60aca1a75130022d6bb96af423fefae4eb55faf395732db3544803280
52+
healthcheck:
53+
test: redis-cli ping || exit 1
54+
restart: always
55+
56+
database:
57+
container_name: immich_postgres
58+
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a
59+
environment:
60+
POSTGRES_PASSWORD: ${DB_PASSWORD}
61+
POSTGRES_USER: ${DB_USERNAME}
62+
POSTGRES_DB: ${DB_DATABASE_NAME}
63+
POSTGRES_INITDB_ARGS: '--data-checksums'
64+
# Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
65+
DB_STORAGE_TYPE: 'HDD'
66+
volumes:
67+
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
68+
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
69+
shm_size: 128mb
70+
restart: always
71+
72+
volumes:
73+
model-cache:
74+

0 commit comments

Comments
 (0)