개요
이번 업데이트의 가장 큰 특이점은 Apps 기반이 쿠버네티스(k3s)로부터 Docker체제로 변경되었다는 것입니다. 이로 인해 개인이 직접 NAS를 구축할 때 제일 크게 느낄 수 있던 진입장벽이 사라졌고 docker-compose기반으로 앱을 설치할 수 있게 됨으로써 Custom App을 수월하게 설치할 수 있게 되었습니다.
업데이트 진행
10월 29일 날짜로 업데이트가 배포되었고, 이미 TrueNAS를 사용 중이던 분은 WEB UI에서 바로 업데이트를 진행할 수 있습니다.
24.10 업데이트!
업데이트를 진행하고 나면 아래처럼 GRUB부팅에서 24.10 버전을 확인할 수 있습니다.
부팅이 완료되면, 기존 k3s기반으로 작동되던 앱을 docker로 migrate하는 작업이 자동으로 수행됩니다. 대부분의 앱은 사용자의 개입 없이 자동적으로 마이그레이션이 완료될 것이며, 일부 앱만 문제가 조금 있을 것이라고 합니다.
Custom App Deploy
GUI 설치(기존 Custom App과 동일)
베타 버전에선 없었던 우측 상단의 Custom App 버튼을 클릭하면, 기존 k3s기반과 비슷하게 YAML파일에 사용할 항목들을 직접 GUI에서 입력받아 App을 설치할 수 있도록 되어 있습니다.
예시를 위해, slskd를 설치해보겠습니다.
slskd의 공식 docker-compose 구문은 아래와 같습니다.
services:
slskd:
image: slskd/slskd
container_name: slskd
ports:
- "5030:5030"
- "5031:5031"
- "50300:50300"
environment:
- SLSKD_REMOTE_CONFIGURATION=true
volumes:
- <path/to/application/data>:/app
restart: always
해당 값에 해당하는 부분을 넣어주면 됩니다.
먼저, Application Name과 Docker image repository를 기입합니다.
Application Name은 입맛대로
Container Configuration 하위 항목의 Entrypoint와 Command는 넘어가 줍니다. 둘 모두 특정 도커 이미지를 실행할 때, 제일 먼저 실행할 명령을 내리는 것과 관련이 있는데, 현재 예시로 설치하는 이미지는 필요없는 부분입니다.
이후, TimeZone과 Environment, Restart Policy를 입력합니다.
WEB UI버튼으로 사용할 Portal 정보와 데이터가 저장될 Volume을 구성합니다.
WEB UI 버튼을 활성화하기 위한 설정으로 필수는 아닙니다
그리고 Install을 클릭하면 아래처럼 앱이 설치되는 과정을 보실 수 있고,
ix로고가 달린 Custom App을 확인할 수 있습니다. 당연하지만 WEB UI버튼도 작동합니다.
Docker compose 활용
Custom App버튼 옆의 점 3개 버튼을 눌러보면 Install via YAML 버튼이 나타납니다.
해당 버튼을 클릭하면 아래처럼 단순한 창을 만날 수 있는데,
이 부분에 docker compose를 입력하면 됩니다.
위에서 설치했던 slskd를 예시로 설치해보겠습니다.
TrueNAS의 dataset은 모두 /mnt 하위 경로에 <Storage Pool>/<dataset>으로 마운트됩니다.
제가 테스트 환경으로 만든 Storage Pool 이름은 dockertest이고, Dataset 이름은 docker이므로 volumes로 사용할 경로는 /mnt/dockertest/docker입니다.
고로, 아래의 내용을 그대로 복사 붙여넣고 Save를 클릭하면...
services:
slskd:
image: slskd/slskd
container_name: slskd
ports:
- "5030:5030"
- "5031:5031"
- "50300:50300"
environment:
- SLSKD_REMOTE_CONFIGURATION=true
volumes:
- /mnt/dockertest/docker/slskd:/app
restart: always
바로 한 방에 slskd가 설치된 것을 확인할 수 있고,
5030포트로 접속해보면 slskd가 제대로 실행되고 있는 것을 확인할 수 있습니다.
그런데, 보통 하나의 docker compose안에 여러 개의 컨테이너를 넣어서 사용하잖아요? 아래처럼요.
이 경우, 아래처럼 하나의 App으로 표시되고 내부에 다수의 컨테이너가 배치되는 것을 확인할 수 있습니다. 기존 쿠버네티스의 pod안에 컨테이너가 다수 보이는 것과 동일한 구조입니다.
테스트 삼아 9696포트로 접속해보면 prowlarr가 잘 작동중인 걸 볼 수 있습니다.
추후, compose를 수정해야 할 일이 있을 경우 Details - Application Info - Edit버튼을 클릭하면 간단하게 접근할 수 있습니다.
.env파일 활용하기
현재 버전(24.10)에서는 .env파일을 활용하지 못합니다. 따라서, include를 사용해서 Custom App을 실행해야 합니다.
먼저, 쉘에서 compose파일과 env파일을 저장할 경로로 이동합니다. 예시에서는 immich를 설치할 예정이고, compose와 env파일은 /mnt/dockertest/docker/compose/immich/ 경로에 저장됩니다.
먼저 공식 docker compose를 다운받습니다.
truenas_admin@truenas[/mnt/dockertest/docker/compose/immich]$ wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
그리고 .env파일을 작성합니다.
truenas_admin@truenas[/mnt/dockertest/docker/compose/immich]$ sudo nano .env
UPLOAD_LOCATION=/mnt/tank1/photos
DB_DATA_LOCATION=/mnt/tank2/db
IMMICH_VERSION=release
DB_PASSWORD=immich
DB_USERNAME=immich
DB_DATABASE_NAME=immich
Custom App에서 Install via YAML을 클릭한 뒤 Custom config에 방금 다운받은 docker-compose.yml의 절대경로를 기입하고 Save를 클릭합니다.
include:
- /mnt/dockertest/docker/compose/immich/docker-compose.yml
정상적으로 Immich가 설치된 것을 확인할 수 있습니다.
이 방법을 통해 TrueNAS Custom App 기능에서 .env파일을 활용할 수 있습니다.
이렇게 Custom App을 실행시킬 경우 docker compose구문을 별도의 파일로 보관할 수 있어 스냅샷, 백업 등의 방법을 통해 보존할 수 있다는 장점도 있습니다.
또한, compose파일을 모아놓은 dataset을 smb공유해주면, 윈도우에서 VSCode 등으로 편리하고 가독성 좋게 편집할 수 있다는 장점도 있습니다.
Portainer 설치
Portainer를 통해 도커 이미지를 구동할 경우 TrueNAS상에선 제대로 확인되지 않기 때문에, 권장하지 않습니다. 실제로 설치하려고 할 경우 아래와 같은 경고도 만나게 됩니다.
그래도, 공식 Catalog에 있기 때문에 설치해보겠습니다.
Storage Configuration만 설정해주고 나머지는 기본값 그대로 설치해도 무관합니다.
WEB UI버튼을 클릭해 Portainer에 접근할 수 있고,
위에서 제가 설치했던 컨테이너들이 보이는 것을 알 수 있습니다.
TrueNAS가 자체적으로 제공하는 docker compose기능에 문제가 있거나, 불편한 것이 있는 것은 아니기 때문에, 자체기능을 통해 deploy하는 것이 조금 더 추천되긴 합니다.
출처
1. https://www.truenas.com/docs/scale/24.10/gettingstarted/scalereleasenotes/
24.10 (Electric Eel) Version Notes
Highlights, change log, and known issues for TrueNAS 24.10 release versions.
www.truenas.com
2. https://forums.truenas.com/t/electric-eel-how-i-am-using-dockerfile-env-files-compose-files/15252
Electric Eel - How I am using Dockerfile, .env files, compose files
So, an earlier discussion noted the limitations of Eel regarding not being able to edit after uploading them via create custom app, inability to use .env files, and, needing to keep Dockerfiles elsewhere via a full path build context. I have solved all tha
forums.truenas.com