설치~
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 은 컨테이너를 돌려 주는 도구입니다.
- Docker 공식 설치 문서에서 내 컴퓨터에 맞는 Docker Desktop 을 받아 설치합니다 (Mac 은 Apple 칩·Intel 칩 중 내 것).
- 설치가 끝나면 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 가 설계도를 읽고, 네 컨테이너를 받아 와 띄웁니다.
처음에는 필요한 것을 받느라 몇 분 걸립니다. 정상이면 받는 진행 표시가 지나간 뒤 이런 줄로 끝납니다.
✔ Container aot-influxdb-1 Started
✔ Container aot-aot_daemon-1 Started
✔ Container aot-aot-app-1 Started
✔ Container aot-aot_mcp-1 Started
끝나면 확인합니다.
네 개가 모두 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. 첫 관리자 계정 만들기~
네 컨테이너가 모두 돌면, 브라우저로 앱을 엽니다.
- 브라우저로
http://localhost:8084를 엽니다(포트를 바꿨으면 그 번호).https가 아니라http입니다. 다른 컴퓨터에서 열 때는http://<AoT 컴퓨터의 IP>:8084입니다. - 첫 화면에서 로그인을 누릅니다. 관리자가 아직 없으므로 AoT에 오신 것을 환영합니다 화면과 품질 보증 공지가 나옵니다. 처음 한 번은 안내문을 읽고 아래 버튼(인증 확인, 버전에 따라 확인했습니다)을 누릅니다.
- 사용자명, 이메일, 비밀번호, 비밀번호 확인을 넣고 관리자 계정 생성을 누릅니다. 관리자는 모든 것을 바꿀 수 있는 열쇠라서, 비밀번호는 직접 정하고 AI 에게도 알려 주지 않습니다.
- 로그인 화면에서 방금 만든 계정으로 AoT 계정 로그인을 누릅니다.
-
실시간 측정 화면이 나옵니다. 아직 아무것도 붙이지 않아 비어 있는 것이 정상입니다.
-
사용자명: 영문·숫자 3~64자
- 비밀번호: 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는 받은 파일의 버전과 같아야 합니다. - 관리자 비밀번호를 묻지 마세요.