Post

๐Ÿš€ Raspberry Pi ์„œ๋ฒ„์— ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ

๐Ÿš€ Raspberry Pi ์„œ๋ฒ„์— ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ

์„œ๋ฒ„ ์›๊ฒฉ ์ ‘์†

  • IP๋ฅผ ๋ชจ๋ฅผ ๊ฒฝ์šฐ ๊ณต์œ ๊ธฐ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜์—ฌ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

Raspberry Pi ๋„์ž… ๊ทผ๊ฑฐ

  • On-premise ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•ด๋ณด๊ณ  ์‹ถ๊ธฐ๋„ ํ–ˆ๊ณ , ์‹ค์ œ๋กœ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ ๊ณผ์ •

  1. JDK ์„ค์น˜
  2. SSH Key ์ƒ์„ฑ
  3. Docker, Docker-compose ์„ค์น˜
  4. ๋ฐฉํ™”๋ฒฝ ์„ค์ •
  5. Docker ๋ฐ ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ํŒŒ์ผ ์›๊ฒฉ ์ „์†ก
  6. Docker-composeํŒŒ์ผ ๋ฐ JAR ํŒŒ์ผ ์‹คํ–‰

โœ… JDK ์„ค์น˜

1
2
3
4
5
6
7
8
9
10
11
12
13
# ํŒจํ‚ค์ง€ ๊ฐฑ์‹ 
sudo apt update
sudo apt install -y wget gnupg software-properties-common

# ์ตœ์‹  OpenJDK ๋ฒ„์ „ ๊ฐฑ์‹ 
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt update

# JDK ์„ค์น˜
sudo apt install -y openjdk-21-jdk

# ๋ฒ„์ „ ํ™•์ธ
java -version

โœ… SSH Key ์ƒ์„ฑ

1
2
3
4
5
6
7
8
9
# SSH Key ์ƒ์„ฑ
ssh-keygen -t rsa -b 4096 -f ~/.ssh/my_rpi_key

# SSH ์›๊ฒฉ ์ ‘์†
ssh ์‚ฌ์šฉ์ž๋ช…@๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด_IP

# ๊ณต๊ฐœํ‚ค ๋“ฑ๋ก
mkdir -p ~/.ssh
sudo vi ~/.ssh/authorized_keys
  • Raspberry Pi OS ์„ค์น˜ ์‹œ ์ ‘์†์„ ์œ„ํ•œ ๊ณต๊ฐœํ‚ค๋Š” ์ฃผ์ง€๋งŒ ๊ฐœ์ธํ‚ค๋Š” ์ฃผ์ง€ ์•Š์•˜๋‹ค.
  • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ŠคํŠธ PC์—์„œ ์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ SSH Key๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ณต๊ฐœํ‚ค๋ฅผ Raspberry Pi ์„œ๋ฒ„์— ๋“ฑ๋กํ•˜์ž.

โœ… Docker, Docker-compose ์„ค์น˜

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# HTTPS์šฉ ์ธ์ฆ์„œ, ๋‹ค์šด๋กœ๋“œ ๋„๊ตฌ, GPG ํ‚ค ์ฒ˜๋ฆฌ ๋„๊ตฌ ์„ค์น˜
sudo apt update
sudo apt install -y ca-certificates curl gnupg

# ๋„์ปค GPG ๊ณต๊ฐœํ‚ค ๋“ฑ๋ก
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# ์ €์žฅ์†Œ ๋“ฑ๋ก
echo \
ย ย "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
ย ย https://download.docker.com/linux/ubuntu jammy stable" | \
ย ย sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# ๋„์ปค ์„ค์น˜
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# ์„ค์น˜ ํ™•์ธ
docker --version
docker compose version
  • Docker์˜ GPG Key๋ฅผ ์„ค์ •ํ•˜์—ฌ APT๊ฐ€ ํ•ด๋‹น ํŒจํ‚ค์ง€๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ถœ์ฒ˜์—์„œ ์™”๋Š”์ง€ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.
1
2
sudo snap install dockerย ย ย ย ย ย ย ย ย ย # version 27.5.1
sudo aptย ย install docker-composeย ย # version 1.29.2-6
  • ํ•„์ž๋Š” docker-compose up -d ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์•„์„œ ์œ„ ๋ช…๋ น์–ด๋กœ ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•˜์˜€๋‹ค.

โœ… ๋ฐฉํ™”๋ฒฝ ์„ค์ •

1
2
3
4
5
6
7
8
9
sudo apt update
sudo apt install ufw -y

sudo ufw allow 8080
sudo ufw allow 8081
sudo ufw allow 8082
sudo ufw allow 22

sudo ufw enable

โœ… Docker ๋ฐ ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ํŒŒ์ผ ์›๊ฒฉ ์ „์†ก

  • FileZila๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์„ ์ „์†กํ–ˆ๋‹ค.

โœ… Docker-composeํŒŒ์ผ ๋ฐ JAR ํŒŒ์ผ ์‹คํ–‰

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# ๋„์ปค ์ปดํฌ์ฆˆ ํŒŒ์ผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰
docker-compose up -d

# Jar ํŒŒ์ผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰ ๋ฐ ๋กœ๊ทธ ํŒŒ์ผ ์ƒ์„ฑ
nohub java -jar samsami-hub-0.0.1-SNAPSHOT.jar > app.log 2>&1 &

# ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ PID ํ™•์ธ
ps aux | grep samsami-hub-0.0.1-SNAPSHOT.jar

# ํ”„๋กœ์ ํŠธ ๋กœ๊ทธ ํ™•์ธ
tail -f app.log

# ๋„์ปค ์ปดํฌ์ฆˆ ์‹คํ–‰ ํ”„๋กœ์„ธ์Šค ๋ฐ ๋ณผ๋ฅจ ๋‹ค์šด
docker-compose down -v

# ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ ๋‹ค์šด
kill -9 PID

ํšŒ๊ณ 

  • ์ด๋ฒˆ ์‹ค์Šต์—์„œ๋Š” On-premise ๋ฐฉ์‹๋„ Cloud ๋ฐฉ์‹๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅธ ๊ฑด ์—†์—ˆ๋‹ค.
  • ์ถ”ํ›„ Load Balancing์ด๋‚˜ ๋ณด์•ˆ ์„ค์ • ๋“ฑ ๋„คํŠธ์›Œํฌ ์ธก๋ฉด์—์„œ ์กฐ๊ธˆ ๋” ์‹ ๊ฒฝ ์จ๋ด์•ผ๊ฒ ๋‹ค๊ณ  ๋А๊ผˆ๋‹ค.
This post is licensed under CC BY 4.0 by the author.