콘텐츠로 이동

설치~

AoT 를 Windows·Mac 컴퓨터에 Docker Desktop 으로 설치하고, 첫 관리자 계정을 만들고, 컴퓨터가 24시간 멈추지 않게 설정합니다. 명령창이 나오는 것은 이 장의 2~3단계뿐이고, 그마저 설치할 때 딱 한 번입니다. 그 뒤로는 Docker Desktop 화면에서 시작·정지·재시작을 버튼으로 합니다(Docker Desktop 자체에는 여러 컨테이너를 한 번에 버튼으로 불러오는 기능이 없어, 최초 설치만 명령으로 합니다). 명령은 복사해 붙여 넣기만 하면 됩니다. 명령이 부담스러우면 4단계처럼 코딩 AI 에게 맡길 수 있습니다. 막히면 AI 에게 묻는 방법은 가이드 사용하는 방법을 참고하세요.

먼저 알아 둘 것. 평소 쓰는 앱은 필요할 때 켜서 쓰고, 다 쓰면 꺼도 됩니다. 하지만 AoT 는 서버 프로그램이라 24시간 작동해야 합니다. 사람이 보지 않을 때도 값을 재고, 장치를 움직이고, 알림을 보내야 하기 때문에 24시간 켜져 있어야 하고, 설치하는 방법도 다릅니다. 그래서 설치할 곳은 늘 켜 둘 수 있는 컴퓨터입니다.

설치 방법은 두 가지입니다. 서버에 프로그램을 설치하는 방법은 보통 네이티브와 Docker 두 가지입니다.

  • 네이티브: 공장에서 만든 기계를 부품째 가져가 현장에서 하나하나 조립하는 방식
  • Docker: 기계를 컨테이너 안에 미리 조립해 두고 통째로 보내는 방식. 현장에서는 문만 열면 바로 쓸 수 있습니다

Docker 가 네이티브보다 설치나 관리가 편해서 요즘은 Docker 를 더 많이 씁니다. 이 가이드도 Docker 를 중심으로 설명합니다.

컨테이너 네 개. AoT 는 컨테이너 네 개가 함께 일합니다. 웹으로 접속하는 앱, 값을 처리하고 장치를 움직이는 데몬, 데이터 값을 보관하는 데이터베이스, 그리고 AI 를 연결하는 MCP 입니다.

받을 파일 두 개. 네 컨테이너를 어떻게 놓을지 적은 설계도(docker-compose.prod.yml)와, 우리 현장에 맞춘 설정표(.env)입니다. 설계도는 그대로 두고 설정표 네 줄만 고치면, 컨테이너는 Docker 가 알아서 받아 옵니다.

할 일. Docker Desktop 을 설치하고, 설계도와 설정표를 받고, 명령 한 줄로 켠 다음, 브라우저에서 관리자 계정을 만듭니다. 이제 하나씩 따라해 보겠습니다.

이 장을 마치면~

  • AoT 의 네 부분이 Docker 안에서 돌고, 브라우저로 로그인한다
  • 정전·재시작 뒤에도 AoT 가 스스로 다시 돈다

준비~

  • 24시간 켜 둘 Windows·Mac 컴퓨터, 인터넷
  • Docker Desktop(설치는 1단계)
  • 명령창: Mac 은 터미널, Windows 는 PowerShell
  • Mac: Spotlight(⌘ + 스페이스)에서 "터미널"을 찾아 엽니다
  • Windows: 시작 메뉴 검색에서 "PowerShell"을 찾아 엽니다(파란 창)
  • 명령은 한 줄씩 복사해 붙여 넣고 Enter 를 누릅니다

Linux 서버·라즈베리 파이는 뒤에서 따로 안내합니다.

절차~

1. Docker Desktop 설치하기~

Docker Desktop 은 컨테이너를 돌려 주는 도구입니다.

  1. Docker 공식 설치 문서에서 내 컴퓨터에 맞는 Docker Desktop 을 받아 설치합니다 (Mac 은 Apple 칩·Intel 칩 중 내 것).
  2. 설치가 끝나면 Docker Desktop 을 엽니다. 창이 열리고 엔진이 실행 중으로 나오면 준비가 끝났습니다.

Windows 는 기본 설치에서 WSL 2 를 함께 씁니다. Docker Desktop 은 직원 250명 초과 또는 연매출 1천만 달러 초과 회사가 쓰려면 유료 구독이 필요합니다(Docker 공식 문서).

2. 파일 두 개 받기~

설계도와 설정표는 명령창에서 받습니다. 명령창을 열고 아래를 복사해 붙여 넣으세요. 내 폴더 아래에 AoT/docker 폴더를 만들고, 설계도(docker-compose.prod.yml)와 설정표(.env) 두 개를 받습니다. <버전> 은 꺾쇠(< >)까지 지우고 번호만 넣습니다. <버전> 은 릴리스 페이지에서 Latest 표시가 붙은 맨 위 릴리스의 번호입니다(예: v26.09.08 이면 <버전> 은 26.09.08).

Mac(터미널)

mkdir -p ~/AoT/docker && cd ~/AoT/docker
curl -fsSLO https://raw.githubusercontent.com/AoT-inc/AoT/v<버전>/docker/docker-compose.prod.yml
curl -fsSL -o .env https://raw.githubusercontent.com/AoT-inc/AoT/v<버전>/docker/.env.prod.example

Windows(PowerShell)

mkdir $HOME\AoT\docker; cd $HOME\AoT\docker
curl.exe -fsSLO https://raw.githubusercontent.com/AoT-inc/AoT/v<버전>/docker/docker-compose.prod.yml
curl.exe -fsSL -o .env https://raw.githubusercontent.com/AoT-inc/AoT/v<버전>/docker/.env.prod.example

정상이면 아무 글도 나오지 않고 다음 줄로 넘어갑니다. 명령을 한 줄씩 붙여 넣은 뒤 ls -a(Windows 는 dir -Force)로 폴더에 두 파일이 모두 보이는지 확인하세요. curl: (22) … 404 가 나오면 버전 번호가 틀렸거나 <버전> 을 그대로 둔 것입니다. 하나만 보이면 빠진 쪽의 줄을 다시 붙여 넣으세요. .env 처럼 점으로 시작하는 파일은 Finder·탐색기에서 기본으로 숨겨져 보이지 않을 수 있습니다.

3. 설정 파일 확인하고 실행하기~

설정표를 열어 네 줄만 우리 것으로 고칩니다. 버전, 접속 번호, 시간대, 컴퓨터 사양입니다.

  • Mac: open -e .env
  • Windows: notepad .env

네 줄만 확인하고 저장합니다. 나머지는 그대로 둡니다. 설계도는 고치지 않습니다.

줄 넣을 값 뜻
AOT_IMAGE_TAG 받은 파일과 같은 버전 번호(예: 26.09.08, 앞의 v 없이) 설치할 AoT 버전. 설계도와 같은 번호로 맞춥니다. 둘이 같은 판이어야 네 컨테이너가 제대로 뜹니다. 예시 파일에 적힌 값은 옛 버전일 수 있으니 반드시 바꿉니다
AOT_PORT 8084 브라우저로 접속할 번호. 다른 프로그램이 이미 쓰고 있으면 바꿉니다
TZ 현장의 시간대(예: Asia/Seoul) 처음 설치할 때의 시스템 시간대. 그 뒤로는 화면의 설정을 따릅니다
HARDWARE_PROFILE 일반 PC HIGH, 작은 컴퓨터 LOW 컴퓨터 사양에 맞춥니다. LOW 는 일부 AI 부가 기능을 꺼서 작은 컴퓨터의 부담을 줄입니다. 센서 읽기·장치 제어는 같습니다(MEDIUM 도 있음)

이제 켜는 명령 한 줄을 같은 폴더에서 붙여 넣습니다. Docker 가 설계도를 읽고, 네 컨테이너를 받아 와 띄웁니다.

docker compose -f docker-compose.prod.yml up -d

처음에는 필요한 것을 받느라 몇 분 걸립니다. 정상이면 받는 진행 표시가 지나간 뒤 이런 줄로 끝납니다.

 ✔ Container aot-influxdb-1     Started
 ✔ Container aot-aot_daemon-1   Started
 ✔ Container aot-aot-app-1      Started
 ✔ Container aot-aot_mcp-1      Started

끝나면 확인합니다.

docker compose -f docker-compose.prod.yml ps

네 개가 모두 Up 이면 정상입니다.

NAME               ...   STATUS
aot-aot-app-1      ...   Up 1 minute
aot-aot_daemon-1   ...   Up 1 minute
aot-aot_mcp-1      ...   Up 1 minute
aot-influxdb-1     ...   Up 1 minute

Docker Desktop 의 컨테이너 목록에서도 aot 묶음 아래 네 개가 실행 중으로 보이면, 준비가 끝난 것입니다. 하나라도 멈춰 있으면, 그 화면을 그대로 AI 에게 보여 주십시오.

이름(끝부분) 하는 일
aot-app 웹 화면
aot_daemon 센서 읽기·장치 제어(AoT 의 본체)
aot_mcp AI 연결
influxdb 측정값 저장소

Docker Desktop 에서 AoT 이미지를 하나만 실행하지 마세요

Docker Desktop 에서 이미지를 검색해 하나만 실행하면, 컨테이너 하나만 연 셈입니다. 화면은 열리지만, 값을 재고 장치를 움직이는 제어 본체(데몬)가 없어 일을 하지 못합니다. AoT 는 웹 화면·제어 본체(데몬)·AI 연결(MCP)·측정값 저장소(InfluxDB) 네 부분이 함께 돌아야 하니, 이 장의 설계도로 네 개를 함께 띄우세요.

볼륨(저장 공간)을 지우지 마세요

컨테이너에는 값과 설정을 넣어 두는 창고가 따로 딸려 있습니다. Docker 에서는 이것을 볼륨이라고 부릅니다. 컨테이너를 멈추거나 새 버전으로 바꿔도 창고는 그대로 남습니다. 하지만 볼륨을 지우면 창고째 버리는 것이라, 설정과 측정값이 모두 사라집니다. 멈출 때는 docker compose -f docker-compose.prod.yml down(또는 Docker Desktop 의 멈추기)만 씁니다. down -v 나 Docker Desktop 에서 볼륨 지우기는 누가 권해도(AI 가 권해도) 하지 않습니다.

4. 코딩 AI 에게 맡기기(선택)~

명령이 부담스러우면, 파일 받기부터 켜기까지(2~3단계)를 코딩 AI 에게 맡길 수도 있습니다. 코딩 AI 는 무엇을 하려는지 설명하고 명령마다 허락을 묻습니다. 설명을 읽고, 이해가 될 때만 허락하세요. 볼륨을 지우는 명령만은 허락하지 않습니다. 아래 지시문을 복사해 코딩 AI 에게 붙여 넣으세요. 코딩 AI 가 무엇인지, 승인 원칙은 가이드 사용하는 방법에 있습니다.

AoT 를 이 가이드대로 Docker compose 로 설치해 주세요.
- 가이드: <이 페이지 주소>
- 운영체제: <예: macOS 15 / Windows 11>
- Docker Desktop 은 설치되어 실행 중입니다.
지켜 주세요:
- 명령마다 무엇을 하는지 설명하고 내 허락을 받은 뒤 실행
- 설치 폴더는 내 홈 폴더 아래 AoT/docker
- 버전은 릴리스 페이지의 최신 번호로, 파일과 설정의 버전을 같게
- 8084 포트가 이미 쓰이고 있으면 다른 번호를 제안
- 볼륨을 지우는 명령(down -v 등)은 절대 쓰지 않기
- 관리자 계정과 비밀번호는 내가 브라우저에서 직접 만듦(묻지 말 것)
끝나면 설치한 버전, 포트, 시간대, 브라우저 접속 주소를 알려 주세요.

5. 첫 관리자 계정 만들기~

네 컨테이너가 모두 돌면, 브라우저로 앱을 엽니다.

  1. 브라우저로 http://localhost:8084 를 엽니다(포트를 바꿨으면 그 번호). https 가 아니라 http 입니다. 다른 컴퓨터에서 열 때는 http://<AoT 컴퓨터의 IP>:8084 입니다.
  2. 첫 화면에서 로그인을 누릅니다. 관리자가 아직 없으므로 AoT에 오신 것을 환영합니다 화면과 품질 보증 공지가 나옵니다. 처음 한 번은 안내문을 읽고 아래 버튼(인증 확인, 버전에 따라 확인했습니다)을 누릅니다.
  3. 사용자명, 이메일, 비밀번호, 비밀번호 확인을 넣고 관리자 계정 생성을 누릅니다. 관리자는 모든 것을 바꿀 수 있는 열쇠라서, 비밀번호는 직접 정하고 AI 에게도 알려 주지 않습니다.
  4. 로그인 화면에서 방금 만든 계정으로 AoT 계정 로그인을 누릅니다.
  5. 실시간 측정 화면이 나옵니다. 아직 아무것도 붙이지 않아 비어 있는 것이 정상입니다.

  6. 사용자명: 영문·숫자 3~64자

  7. 비밀번호: 8자 이상, 흔한 비밀번호는 거부됩니다(화면의 안내 문구와 다를 수 있습니다)

6. 제대로 도는지 확인하기~

  • 화면 왼쪽 위 로고: 평소 색 그대로면 정상입니다. 빨간색이 덧씌워지면 제어 본체(데몬)가 멈춘 것이고, 회색이면 웹 화면과 연결이 끊긴 것입니다.
  • 관리 → 시스템 정보: 데몬 상태와 AoT 버전을 확인합니다.
  • 문제가 있으면 관리 → 시스템 로그에서 데몬 로그를 확인합니다(가이드 사용하는 방법).

7. 24시간 돌게 하기~

마지막으로, 처음에 말한 대로 24시간 켜져 있게 합니다. 정전이 되어도 다시 돌아야 합니다. 전기가 끊겼다 돌아왔을 때 다시 돌려면, 전기가 들어오면 → 컴퓨터가 켜지고 → 로그인이 되고 → Docker 가 켜지고 → 네 컨테이너가 다시 뜨는 사슬이 사람 손 없이 이어져야 합니다. 마지막 고리(Docker 가 켜지면 네 컨테이너가 다시 뜨는 것)는 설계도에 이미 들어 있습니다. 나머지 고리마다 설정이 하나씩 있으니, 컴퓨터와 Docker Desktop 이 스스로 다시 켜지게 하면 됩니다. Docker Desktop 은 설정에서 로그인할 때 시작하는 항목을 켜 두면 되고, 어느 컴퓨터든 같은 자리에 있습니다. 나머지 설정은 기종·운영체제 버전마다 메뉴 이름이 다르니, 찾기 어려우면 "○○ 기종에서 ~하는 법"처럼 기종 이름과 함께 AI 에게 물어보십시오.

고리 설정 왜 Windows Mac
전기 → 컴퓨터 ① 정전 뒤 자동 켜짐 전기가 다시 들어오면 컴퓨터가 스스로 켜지게 켤 때 들어가는 바이오스(BIOS·UEFI)의 전원 복구 설정(예: AC Power Recovery, Restore on AC Power Loss → Power On) 에너지 설정의 정전 뒤 자동 시작
컴퓨터 → 로그인 ② 자동 로그인(전용 컴퓨터에서만) 켜지면 로그인 화면에서 멈추지 않게. Docker Desktop 은 로그인해야 시작됨 자동 로그인 설정 사용자 및 그룹의 자동 로그인
로그인 → Docker ③ Docker Desktop 자동 시작 로그인하면 Docker 가 저절로 시작되어야 AoT 가 다시 돎 Docker Desktop 설정의 로그인 때 시작 같음
사슬 전체 ④ 절전 끄기 사슬이 도중에 잠들지 않게. 잠자기에 들면 자동 제어가 멈춤. 화면은 꺼져도 됨 전원 설정에서 절전 "안 함" 에너지(배터리) 설정에서 잠자기 방지

노트북에는 정전 뒤 자동 켜짐(① 항목)이 없는 경우가 많습니다(배터리가 있어서입니다). 노트북에 설치했다면 전원을 늘 꽂아 두고, 늘 켜 둘 컴퓨터로는 데스크톱이나 미니 PC 를 권합니다.

자동 로그인은 누구나 이 컴퓨터를 열 수 있게 하므로 AoT 전용 컴퓨터에서만 켜고, 컴퓨터를 두는 곳을 잠그세요. 또 운영체제의 자동 업데이트가 한밤에 다시 시작하도록 시간을 정해 두면 좋습니다.

다 했으면 플러그를 뽑았다가 다시 꽂아 보십시오. 몇 분 뒤 브라우저에서 AoT 가 다시 열리면, 사슬이 제대로 이어진 것입니다.

확인~

  • docker compose -f docker-compose.prod.yml ps 에 네 개가 Up(Docker Desktop 에서도 네 컨테이너가 모두 실행 중)
  • 브라우저로 로그인되고, 로고가 빨간색·회색이 아니며, 시스템 정보에 데몬이 실행 중
  • 플러그를 뽑았다 꽂은 뒤에도 AoT 가 다시 열림

설치가 끝났습니다. 다음 장(4장 첫 번째 데이터)에서는 이 빈 화면에 첫 번째 데이터를 띄웁니다.

현장 A~

현장 A 는 여러 구역과 시설을 컴퓨터 한 대로 관리하고 AI 연결도 쓰므로, 사무실의 PC 에 설치하고 HARDWARE_PROFILE=HIGH 로 둡니다.

현장 B~

현장 B 는 온실 옆 제어실의 작은 컴퓨터에 설치하고, 온실 하나만 관리해 부담이 적어 HARDWARE_PROFILE=LOW 로 둡니다.

안 될 때~

막혔을 때 흔한 것은 세 가지입니다. 접속 번호를 다른 프로그램이 이미 쓰고 있거나, Windows 의 가상화가 꺼져 있거나, 인터넷이 막힌 경우입니다. 그 밖의 것은 화면을 그대로 AI 에게 보여 주십시오.

증상 원인 해결
up -d 에서 포트가 이미 쓰인다는 오류(접속 번호가 이미 쓰임) 다른 프로그램이 8084 를 씀 .env 의 AOT_PORT 를 다른 번호로 바꾸고 다시 up -d
이미지를 받지 못한다(인터넷 막힘) 인터넷이 막혔거나 버전 번호가 틀림 인터넷 확인, AOT_IMAGE_TAG 가 릴리스 페이지의 번호와 같은지(앞의 v 없이)
Windows 에서 Docker Desktop 이 시작되지 않는다(Windows 가상화 꺼짐) 가상화나 WSL 2 가 꺼져 있거나 오래됨 ① PowerShell 을 관리자로 열어 wsl --update ② 작업 관리자 → 성능 → CPU 에서 "가상화: 사용"인지 확인, 꺼져 있으면 바이오스에서 가상화(Intel VT-x / AMD SVM)를 켬 ③ Docker 공식 문서의 Windows 요구 사항. 화면을 AI 에게 보여 주기
up -d 에서 Bind for 127.0.0.1:8087 failed: port is already allocated 이 컴퓨터에 다른 AoT 나 InfluxDB 가 이미 8087 을 씀(측정값 저장소 포트는 설정 파일이 아니라 실행 파일에 정해져 있음) 한 컴퓨터에는 AoT 를 하나만 설치하기를 권합니다. 꼭 둘을 두어야 하면 이 오류 문구와 함께 AI 에게 실행 파일의 포트를 바꿔 달라고 합니다
명령에서 Cannot connect to the Docker daemon / error during connect Docker Desktop 이 아직 다 켜지지 않았거나 멈춤 Docker Desktop 창에서 엔진이 실행 중이 될 때까지 기다린 뒤 다시. 계속 안 되면 Docker Desktop 을 끝내고 다시 열기, 그래도 안 되면 컴퓨터 다시 시작
https://localhost:8084 가 열리지 않는다 AoT 는 http 로 엽니다 주소를 http://localhost:8084 로
브라우저가 열리지 않는다 네 개가 다 뜨지 않았거나 주소·포트가 틀림 ps 로 aot-app 이 Up 인지, 주소의 포트 번호
로고가 빨갛다 데몬이 멈추었거나 시작하는 중 1~2분 기다린 뒤 시스템 로그의 데몬 기록
함수 목록에 통합 환경 제어가 없다 기준 릴리스보다 옛 버전 버전을 기준 릴리스 이상으로 올림
Docker Desktop 에서 이미지를 하나만 실행했더니 오류가 난다 네 부분 중 웹 화면만 뜸 그 컨테이너를 지우고 이 장의 2~3단계대로

더 알아보기~


도우미 AI 에게~

  • 사용자는 Windows·Mac 의 Docker Desktop 을 씁니다. 운영체제를 먼저 확인하고 그 운영체제의 명령만 주세요.
  • 설치는 이 장의 2~3단계(compose 파일과 설정 파일 두 개)입니다. Docker Desktop 에서 이미지 하나만 실행하는 방법을 권하지 마세요.
  • down -v·볼륨 지우기·docker system prune --volumes 처럼 저장 공간을 지우는 명령을 권하지 마세요.
  • 설정 파일의 AOT_IMAGE_TAG 는 받은 파일의 버전과 같아야 합니다.
  • 관리자 비밀번호를 묻지 마세요.