Proxmox LXC로 트랜스코딩되는 Plex , Immich 구축하기
안녕하세요. 달소입니다.
이번글에서는 proxmox LXC를 활용해서 트랜스코딩이 되는 Plex와 Immich 환경을 구성해보도록하겠습니다.
Plex와 Immich에 대해서는 많이들 아실듯하니 생략합니다.
*Plex : 영상 관리
*Immich : 사진관리
tteck의 스크립트를 사용하면 내장그래픽(igpu)을 공유하는 Plex LXC를 손쉽게 만들수있고 여기에 Docker로 Immich를 올려서 사진관리까지 함께하고자 하는 용도입니다.
Plex LXC 생성하기
tteck의 스크립트를 사용해서 간단하게 Plex LXC를 생성합니다.
Proxmox VE Helper-Scriptstteck.github.ioScripts for Streamlining Your Homelab with Proxmox VE
bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/plex.sh)"
Ubuntu 22
여기서 NFS에 연결할것이라면 Privileged로 선택하셔야합니다.
저같은경우 Data는 헤놀에 연결할거라서 Privileged로 선택했습니다.
네트워크는 dhcp로 하고 다 나머지는 기본으로했습니다.
설치과정도 나오게해서 잘보입니다 ㅎㅎ
igpu도 잘 찾은걸로 보이네요
이제 해당 ip:32400/web으로 접속하시면 plex는 잘되실겁니다.
n100 igpu lxc + plex hw트랜스코딩 성공[서버 구축(Self-Hosted)] 달소 2024.06.30오랜만에 plex를 설치해서 테스트했는데 tteck님 스크립트로 잘되네요. bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/plex.sh)" 아래 명령어로 내장그래픽이 잘 활성화 됐는지 확인해볼 수 ...
Immich 설치
immich도 내장그래픽을 사용하기위해서 위 plex 스크립트를 사용했기때문에 ㅎㅎ
docker 설치 후 immich 설치도 진행해보겠습니다.
아래는 immich의 트랜스코딩에 대한 설명입니다.
도커는 아래 명령어로 설치합니다.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
그리고 immich의 데이터를 보관할 디렉터리와 환경설정파일 docker-compose.yml파일도 만듭니다.
mkdir -p /data/immich
vi .env
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
# The location where your uploaded files are stored
UPLOAD_LOCATION=./library
# The location where your database files are stored
DB_DATA_LOCATION=./postgres
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
# TZ=Etc/UTC
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release
# Connection secret for postgres. You should change it to a random password
DB_PASSWORD=postgres
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
전체 docker-compose.yml은 아래와같습니다.
#
# WARNING: Make sure to use the docker-compose.yml of the current release:
#
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
#
# The compose file on main may not be compatible with the latest release.
#
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
devices:
- /dev/dri:/dev/dri
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- 2283:3001
depends_on:
- redis
- database
restart: always
immich-machine-learning:
container_name: immich_machine_learning
# For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
# Example tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
# extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
# file: hwaccel.ml.yml
# service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
volumes:
- model-cache:/cache
env_file:
- .env
restart: always
redis:
container_name: immich_redis
image: docker.io/redis:6.2-alpine@sha256:328fe6a5822256d065debb36617a8169dbfbd77b797c525288e465f56c1d392b
healthcheck:
test: redis-cli ping || exit 1
restart: always
database:
container_name: immich_postgres
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
healthcheck:
test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
interval: 5m
start_interval: 30s
start_period: 5m
command: ["postgres", "-c" ,"shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"]
restart: always
volumes:
model-cache:
이다음 ip:2283으로 접속해보시면 끝입니다.
일단은 여기까지가 끝입니다~~