우분투리눅스 : podman + directus + supabase+ 네이버 SMTP
last update : 2024-12-31
- 여러 GPT들의 답변만으로 해결이 불가능 + 서칭
- admin 로그인 정보 + SMTP 정보 : 컨테이너 생성할때 같이 전달해야만 인식
- DIRECTUS : 사진, 영상, 파일 관리가 쉽고 셀프호스팅은 기능제한 없음
- SUPABASE : 로컬 DB관리 부담 제거
- 네이버 SMTP : 구글SMTP는 오류가 발생해서 대체
■ ( root ) 시스템 업데이트 및 필수 패키지 설치
apt update && apt upgrade -y
■ ( root ) podman 설치
sudo apt install podman -y
■ ( user ) podman 버전 확인 (user)
podman version
WARN[0000] Error validating CNI config file /etc/cni/net.d/cms-network.conflist:
[plugin firewall does not support config version "1.0.0"]
Version: 3.4.4
API Version: 3.4.4
Go Version: go1.18.1
Built: Thu Jan 1 00:00:00 1970
OS/Arch: linux/amd64
■ ( user ) podman 시스템 초기화
podman system reset
WARNING! This will remove:
- all containers
- all pods
- all images
- all build cache
Are you sure you want to continue? [y/N]
■ ( user ) directus용 볼륨 생성
- 디렉토리 공유가 아닌 볼륨을 사용하는 이유 : 권한 및 보안 관리가 편함 ( root 침범 차단 )
- host와 컨테이너 공유 디렉토리 ( 관리자가 SSH로 직접 올릴수 있는 공간 )
- 사용자가 올리는 컨테이너 안의 공간과 매핑이 됨
podman volume create directus-uploads
■ ( user ) 생성된 볼륨 확인
podman volume ls
■ ( user ) Directus 이미지 다운로드 수정된 명령어
podman pull docker.io/directus/directus:latest
■ ( user ) 다운로드된 이미지 확인
podman images
■ ( user ) 환경 변수 설정을 위한 디렉토리 생성
mkdir -p ~/directus-config
■ ( user ) 환경변수 파일 생성
편집중인 swap 파일이 존재한다는 오류 발생
E325: ATTENTION
Found a swap file by the name "~/directus-config/.env.swp"
owned by: knsesang2000 dated: Mon Dec 30 13:51:16 2024
file name: ~knsesang2000/directus-config/.env
modified: YES
user name: knsesang2000 host name: ubuntu2204
process ID: 8404 (STILL RUNNING)
While opening file "/home/knsesang2000/directus-config/.env"
dated: Mon Dec 30 13:51:45 2024
NEWER than swap file!
(1) Another program may be editing the same file. If this is the case,
be careful not to end up with two different instances of the same
file when making changes. Quit, or continue with caution.
(2) An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r /home/knsesang2000/directus-config/.env"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file "/home/knsesang2000/directus-config/.env.swp"
to avoid this message.
Swap file "~/directus-config/.env.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
그냥 swap 파일 지우고 다시 편집한다
rm ~/directus-config/.env.swp
vi ~/directus-config/.env
# 32자리 랜덤 문자열, openssl rand -hex 32로 생성
KEY="7a3a729ac6a458b29c5f9749b1e414821cf4aef8d77459fa31cebb318591d72c"
SECRET="4139a3691478cdc83e31651ab2e346d0defcc3b025313de4f80b14010b14b667"
# supabase PostgreSQL 연결 설정
DB_CLIENT="postgres" # 기본값
DB_HOST="db.프로젝트ID.supabase.co"
DB_PORT="5432" # 기본값
DB_DATABASE="postgres" # 기본값
DB_USER="postgres" # 기본값
DB_PASSWORD="DB비밀번호"
DB_SSL="require"
# 서버 설정
# 34751 : 외부에서 들어오는 port 임의지정
PORT="80" # 컨테이너의 CMS 가 받아들이는 PORT ( = 80 )
PUBLIC_URL="http://IP:34751" # 외부접속 URL
HOST="0.0.0.0"
■ ( root ) 방화벽 설정
# 외부 접속용
sudo ufw allow 34751/tcp
# SMTP용
sudo ufw allow 465/tcp
■ ( root ) 방화벽 상태 확인
sudo ufw status
■ ( user ) 컨테이너 중지
podman stop directus_cms
■ ( user ) 컨테이너 삭제
podman rm directus_cms
■ ( user ) Directus 컨테이너 생성 ( \ 뒤에 공백이 없어야 함 )
podman create \
--name directus_cms \
-p 34751:8055 \
-v ~/directus-config/.env:/.env \
-v directus-uploads:/directus/uploads \
-e ADMIN_EMAIL="CMS_관리자_이메일" \
-e ADMIN_PASSWORD=" CMS_관리자_비밀번호" \
-e PUBLIC_URL="http://IP:34751" \
-e EMAIL_TRANSPORT="smtp" \
-e EMAIL_FROM="네이버_이메일" \
-e EMAIL_SMTP_HOST="smtp.naver.com" \
-e EMAIL_SMTP_PORT=465 \
-e EMAIL_SMTP_USER="네이버_ID" \
-e EMAIL_SMTP_PASSWORD="네이버_비밀번호" \
-e EMAIL_SMTP_SECURE=true \
-e EMAIL_SMTP_IGNORE_TLS=false \
-e EMAIL_SMTP_TLS_REJECTUNAUTHORIZED=true \
docker.io/directus/directus:latest
■ ( user ) 생성한 컨테이너 시작
podman start directus_cms
■ ( user ) 실행 상태 확인
podman ps
■ ( user ) 로그 보기
podman logs directus_cms
- 현재까지 쌓인 로그를 한 번만 보여주고 종료
- 과거 로그만 확인하고 싶을 때 사용
■ ( user ) 실시간 로그 보기
podman logs -f directus_cms
- 실시간으로 발생하는 로그를 계속해서 보여줌
- 실시간 모니터링이 필요할 때 사용
- Ctrl+C를 누를 때까지 계속 실행됨
■ 모두 제거
# ( user ) 컨테이너 제거
podman stop directus_cms
podman rm directus_cms
# ( user ) 환경파일 삭제
rm -rf ~/directus-config
# 방화벽 규칙 제거
# IPv4 규칙 삭제
sudo ufw delete allow 34751/tcp
sudo ufw delete allow 5432
sudo ufw delete allow 587/tcp
# IPv6 규칙 삭제
sudo ufw delete allow 34751/tcp (v6)
sudo ufw delete allow 5432 (v6)
sudo ufw delete allow 587/tcp (v6)
# 변경사항 확인
sudo ufw status
# podman패키지 삭제
sudo apt remove podman -y
sudo apt autoremove -y
# 관련파일들 삭제
rm -rf ~/.config/containers
rm -rf ~/.local/share/containers
■ 인터넷 사이트 접속
http://공인IP:34751