IP 변경 시 도메인 자동 갱신 시스템 구축하기 (feat. Docker & DuckDNS)
·
Infra/Docker
IP 바뀌면 서비스 망해요?생각해보니 현 서버 구조에서는 문제가 하나 있다바로 IP가 바뀌면 서비스가 전부 종료된다는 것이다특히 그 서버의 물리적인 거리가 나와 멀수록 서비스 복구에 더 오랜 시간이 걸리겠지...이 무슨 크리티컬한 이슈여... 심지어 나는 아파트의 IP가 바뀜으로 인해 서버에 접속 못 해본 경험이 있다그런데? DuckDNS에서 IP가 바뀌더라도 알아서 IP를 갱신해서 DNS를 유지해준다면...?참 편리하겠죠? 지금부터 해보겠습니다.1. Docker Compose로 DuckDNS 갱신 컨테이너 띄우기우선 DuckDNS의 토큰을 이용해 주소를 자동으로 갱신해주는 컨테이너가 있다우리는 이번에 이것을 쓸 것이다 사용법은 친절히도 공홈에 다 적혀있다상세한 내용이 궁금하다면 아래 공식 홈페이지 링크..
Docker compose restart 할 때, depends_on으로 묶인 컨테이너도 같이 재시작이 되는가?
·
Infra/Docker
결론부터 말하면 '아니다'나와 같은 의문을 가진 사람이 이미 스택오버플로에 질문을 남겼고 이에 대한 답변이 있었다https://stackoverflow.com/questions/75906046/docker-compose-does-not-restart-dependable-containers 핵심은 'depends_on은 묶인 서비스들을 재시작하지 않는 않는 다는 것'이다즉, depends_on 옵션은 종속성을 위한 컨테이너를 띄우는 순서를 정해줄뿐, 묶인 다른 컨테이너의 재시작을 같이하지 않는다 또한, 이번에 알게된 것인데, depends_on을 한다고해도 서비스 상태, 컨테이너의 준비 완료를 보장해주지는 않는다즉, 컨테이너가 고장나 있으면 순서대로 실행시켜주지만, 그 컨테이너의 health check를 ..
라즈베리파이4 마이그레이션 하기 (feat. 다른 스토리지로 복사하기)
·
Infra/Rasberry Pi
32GB microSD 카드...? 너무 작다!기본적으로 외장하드를 물려뒀어도, 외장하드로 파일을 복사하려면 라즈베리파이로 임시로 복사하고 그 파일을 외장하드로 복사하는 순서로 이어진다근데 32GB니까 남는 용량이 3GB 남짓이었는데 3GB가 좀 넘어가면 매번 라즈베리파이에 용량이 없다며 못 옮긴단 소리만 해댔음 이 기회에 SSD를 달아줄까하다가 돈 아깝기도하고, 남아도는 SD카드가 워낙 많아서, 그냥 남는 256GB의 microSD카드를 쓰기로 했다(갤럭시에서 microSD카드 슬롯 퇴출당한게 천추의 한...) 어차피 5년 넘게 하나의 SD카드로 썼는데 뻗는 일 없이 잘 동작했다굉장히 간단해서 빠르게 가보겠다1. Accessories - SD Card Copier아주 간편하게도 그냥 라즈비안 OS 내..
홈서버에 Nextcloud 구축하기 (feat. Docker에 Nextcloud 띄우기)
·
Infra/Nextcloud
제가 직접 운영하는 클라우드 서비스 만들고 싶어요첫 NAS를 구축한지 벌써 대충 6년이 넘었다맨 처음 라즈베리파이 3B+로 만들었던 내 NAS가 벌써...?이제는 원격 접속해서 스트리밍하는 것 정도로는 만족이 안된다알아서 동기화하고, 전용 링크로 공유해주고, 뭣보다 웹, 앱 모두 접근성이 편한 전용툴이 있는...진짜 클라우드 서비스를 구축해보고 싶었다 그래서 찾다보니 Nextcloud라는게 있네요??바로 설치하고 간단하게 세팅하는 것까지 진행해보자!오늘의 진행순서는 아래와 같다1. 홈서버에 Nextcloud 설치하기2. Nextcloud 내부에서 접속하기3. Nextcloud 외부에서 접속하기 (feat. HTTPS)4. 간단한 기능 몇 개 살펴보기1. 홈서버에 Nextcloud 설치하기우선 나는 Doc..
docker 명령어에서 -u www-data의 의미는?
·
Infra/Docker
저 옵션은 아래 세가지를 위함이다1) 파일 권한 문제 방지 2) Nextcloud의 파일 액세스 정책 준수 3) 보안 즉, 안정적인 사용을 위해서 저런 옵션이 붙은 것임 그냥 일반 컨테이너 접속 명령어와는 아래와 같은 차이가 있다# root로 진입 (위험할 수도 있음)docker exec -it 컨테이너 /bin/bash# 웹서버와 같은 권한으로 진입 (안전, 추천)docker exec -u www-data -it 컨테이너 bashNextcloud 공부하다가 별걸 다 알게 됐다신기...
MySQL 컨테이너 내부에서 SQL 명령어 사용하기 (feat. Docker)
·
Infra/Docker
까먹는 것도 한두번이지오늘은 Docker 컨테이너 내부에 접속해서 확인할 수 있는 간단한 명령어 몇 개를 살펴볼 예정이다너무 자주 까먹어서 포스팅 해둬야겠음1. MySQL 컨테이너 내부 접속# 의미 - 도커 컨테이너 중에 mysql-container라는 이름을 가진, 컨테이너에 bash로 집속하겠다docker exec -it mysql-container bash# docker Docker CLI (명령어 도구) 실행# exec 이미 실행 중인 컨테이너 안에서 명령어를 실행함# -i interactive 모드. 입력을 받을 수 있도록 표준 입력(STDIN) 유지# -t pseudo-TTY 할당. 터미널 환경을 ..
n8n에서 GitHub API 사용시 유의사항 (feat. 어찌보면 너무 당연한..)
·
Infra/n8n
당연한건데 놓쳐서 에러터짐아래는 세줄 요약프로젝트 Repo Name과 SHA는 일치해야한다뭔말이냐면 Repo에 속해있는 SHA만 사용해야한다는 것일례로 댓글을 남기는 기능을 개발할 때, 프로젝트 Repo Name이 SHA의 Repo Name과 달라서 자꾸 못찾는 이슈가 있엇음좀더 명확히 설명하자면'프로젝트 A'의 SHA라면, 인자로 쥐여주는 프로젝트 명도 '프로젝트 A'여야 한다는 것 나는 n8n에서 다음 노드에 주는 프로젝트 명칭을 파라미터로 넘기고 있었음근데? 프로젝트 A의 SHA를 쓰면서? 프로젝트 B의 명칭으로 넘기고 있었던 것프로젝트 2개를 놓고 테스트한다고 다른 노드 연결해서 꼬인건데 너무 당연한거라 의심도 못했었음에러를 보면 HTTP 요청이 잘못되었거나 서버에 요청할 수 없단 소리더보기에러 ..
n8n으로 미세먼지 알림 받기 (feat. 미세먼지 API)
·
Infra/n8n
환기를 할 수가 업서!!봄이 되다 보니 미세먼지가 또 난리다환기를 하긴 해야 하는데...그렇다고 매일 어플을 들어가거나 검색해서 확인하기도 귀찮다알림봇을 만들기로 결심! 바로 진행해보자 오늘 우리가 만들 것은 다음과 같은데 지역은 각자 맞추면 된다일단 아래와 같은 순서로 동작한다1) 2시간 인터벌 노드 (2시간마다 알림을 보낼 것)2) if 노드로 주중 or 주말 체크 (주말엔 알림이 필요 없다)3) 오늘 날짜 확인 및 필요한 데이터로 변환4) 미세먼지 API에서 필요한 데이터 형태로 수정5) 미세먼지 API HTTP Request 발송6) Request 받고, 필요한 데이터 필터링7) 조건에 따라 미세먼지 상태 판단8) 전부 텍스트로 편하게 보낼 수 있도록 데이터 전처리9) 웹훅으로 알림 전송 노드 하..
n8n 특정 요일(Day)에만 동작하도록 조건 걸기 (feat. if & Date 노드)
·
Infra/n8n
시계 알림을 주중에만 동작시키고 싶어요!if문 노드를 쓰고 싶은데 일주일 중에 주말을 제외하고, 동작시키고 싶었다- 근데? contains가 있네? - 이거 잘만하면 문자열이나 배열처리로 되겠는걸?- 근데 어떻게 하는지 모르겠네?에 도달해버려서... 삽질 쪼꼼 하다가 글로 남긴다오늘 만들 친구는 아래와 같다동작 순서는 아래와 같음1) 요일을 랜덤으로 산출2) 요일이 주중일 경우 (if 노드 사용 - 오늘의 핵-심)3) 테스트 채널 웹훅으로 '요일' 텍스트 발송3) 주말인 경우 'False(요일)' 텍스트 발송그럼 시작해보자!1. 요일을 랜덤으로 산출사실 이 부분은 Date 노드 쓰면 된다근데 요일에 따라 동작하는지 안하는지 일주일을 다 기다려볼 순 없으니 이 글에선 JS 코드로 대체했다돌리면 days에 ..
Docker 컨테이너 & 볼륨 싹 다 날리기 (feat. 컨테이너, 볼륨 삭제)
·
Infra/Docker
뭔가 씨게 꼬인 것 같다면... 때론 이만한게 없을 수도 있습니다뭔가 씨게 꼬인 것 같다면 이만한게 없다.. 되던게 없어서 싹다 날리고 다시했더니 그제서야 잘 되었다… 아 필요하거나 중요한게 있다면 미리 백업해두시길!!오늘 작업 요약1. docker compose down으로 컨테이너 중지 및 제거. 2. docker volume rm [volume_name]으로 특정 볼륨 제거 or docker volume prune으로 모든 볼륨 제거. 3. docker rmi [image_name]으로 이미지 제거. 4. docker compose up -d로 새로 설정. 이 과정을 통해 Docker 환경을 완전히 새로 시작할 수 있습니다.1. 현재 실행 중인 컨테이너 중지 및 제거현재 실행 중인 Docker 컨테..