리눅스/UBUNTU 리눅스

우분투리눅스 : podman + directus + supabase+ 네이버 SMTP

큰세상2000 2024. 12. 31. 11:07
반응형

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

 

반응형