가정용 태양광 발전 3KW 발전기 – 태양광 발전량 분석 (2023.10 ~ 2025.04)

 

태양광 발전량 분석 (2023.10 ~ 2025.04)

개요

약 1년 6개월 동안의 주간 태양광 발전량 데이터를 분석하여 계절적 패턴, 최대/최소 발전량, 연도별 변화를 분석했습니다. 이 분석은 태양광 발전 시스템의 성능을 이해하고 효율성을 평가하는 데 유용한 정보를 제공합니다.

주요 발전량 통계

전체 발전량 통계

  • 최대 발전량: 129.10 kWh (2024년 5월 3주차)
  • 최소 발전량: 28.45 kWh (2023년 12월 마지막주)
  • 전체 평균 발전량: 74 kWh/주

계절별 평균 발전량

계절 평균 발전량 (kWh)
봄 (3-5월) 99
여름 (6-8월) 91
가을 (9-11월) 62
겨울 (12-2월) 57

월별 평균 발전량

연도 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2023 58 58 38
2024 57 59 88 99 114 107 71 96 74 66 53 56
2025 54 77 94 102

 

연도별 발전량 비교 (2023-2024년 vs 2024-2025년)

2023-2024 (kWh) 2024-2025 (kWh) 증감 (kWh) 증감률 (%)
10월 58 66 +8 +13.8%
11월 58 53 -5 -8.6%
12월 38 56 +18 +47.4%
1월 57 54 -3 -5.3%
2월 59 77 +18 +30.5%
3월 88 94 +6 +6.8%
4월 99 102 +3 +3.0%

분석 결과 요약

계절별 패턴

  • 봄철(3-5월): 가장 높은 발전량을 보이며, 5월에 최대 발전량 기록
  • 여름철(6-8월): 두 번째로 높은 발전량을 보이지만, 7월은 장마 등의 영향으로 다소 감소하는 경향
  • 가을철(9-11월): 중간 수준의 발전량을 보이며, 10월부터 점차 감소
  • 겨울철(12-2월): 가장 낮은 발전량을 보이지만, 두 번째 해에는 개선됨

연도별 발전량 변화

  • 겨울철 성능 개선: 12월 발전량이 47.4% 증가하고, 2월도 30.5% 증가하는 등 겨울철 발전 효율이 크게 향상됨
  • 안정적인 봄철 성능: 3월과 4월은 두 번째 해에도 안정적으로 높은 성능 유지
  • 상반된 가을철 추세: 10월은 증가한 반면, 11월은 감소하는 상반된 추세

주목할 만한 발견

  1. 봄철과 여름철의 발전량이 가을과 겨울에 비해 약 1.6배 높게 나타나며, 이는 일조량과 일조 시간의 영향으로 분석됨
  2. 최대 발전량(129.10 kWh)과 최소 발전량(28.45 kWh) 사이에는 4.5배 이상 차이가 있어 계절에 따른 발전량 변동이 매우 큼
  3. 두 번째 해에는 대체로 발전량이 개선되었으며, 특히 겨울철 발전량이 크게 향상됨
  4. 5월은 두 해 모두 가장 높은 발전량을 기록하여 태양광 발전에 가장 적합한 시기로 확인됨

활용 방안

에너지 계획 수립

  • 계절별 발전량 예측을 통해 에너지 수급 계획 수립
  • 최소 발전량 시기(12월)에 대비한 에너지 저장 또는 대체 에너지 계획 마련

시스템 성능 평가

  • 연도별 발전량 비교를 통해 시스템 성능 개선 여부 평가
  • 특정 계절/월의 발전량 추세 분석을 통한 시스템 이상 감지

경제성 분석

  • 계절별 발전량 데이터를 활용한 태양광 설비 투자 회수 기간 예측에 참고
    (실제 태양광 설치 후 전기요금 최대 발생이 약 4~5천원 수준으로 2회 밖에 없었음. 그 외 모두 0원)
  • 실제 발전량을 기반으로 한 정확한 경제성 분석 가능

결론

1년 6개월 간의 데이터 분석 결과, 태양광 발전량은 계절과 월별로 큰 차이를 보이며, 연도별로 발전 효율이 개선되는 추세를 확인했습니다. 특히 봄철(3-5월)이 가장 높은 발전량을 보이고, 겨울철(12-2월)이 가장 낮은 발전량을 보이지만, 두 번째 해에는 겨울철 발전량도 상당히 개선되었습니다.

이러한 분석 결과는 태양광 발전 시스템의 효율적인 운영과 에너지 계획 수립에 유용한 기초자료로 활용될 수 있을 것입니다.

우분투(Ubuntu) 미러 서버 변경하기

🚀 우분투 미러 서버 변경 – 가장 빠르고 안정적인 국내 미러로 바꾸는 법 (2025년 기준)

우분투를 오랫동안 써오신 분들이라면, apt update 할 때 느려터진 속도에 한숨 쉬어본 경험 있으시죠?
해외 미러에 연결되면 다운로드 속도는커녕, 업데이트가 실패하는 경우도 왕왕 발생합니다.

이 글에서는 2025년 현재 기준으로 가장 빠르고 안정적인 국내 우분투 미러 서버를 소개하고,
실제로 여러분의 Ubuntu 시스템에 미러를 변경하는 방법까지 친절히 안내해 드립니다.


🥇 1순위 미러: Techlabs

“공식 인증 + HTTPS + 빠른 속도까지 완벽한 미러”

Techlabs미러는 Canonical이 공식으로 인증한 국내 미러 서버입니다.
서울에 위치한 고성능 서버로 운영되며, HTTPS 지원까지 모두 갖추고 있어 기업 환경이나 보안이 중요한 서버 환경에 최적화되어 있습니다.

✅ Techlabs 미러 주소

https://mirror.techlabs.co.kr/ubuntu/

🥈 2순위 미러: KRFOSS

“분산 미러 기능으로 성능과 관리 상태 모두 우수한 숨은 고수”

KRFOSS는 국내 여러 미러들의 분산 미러로, 실제로 매우 빠르고 잘 운영되고 있는 미러입니다.
HTTPS는 물론 rsync까지 제공하여 자체 미러 서버를 구축하거나 고속 다운로드를 원하는 사용자에게 적합합니다.

✅ KRFOSS 미러 주소

https://mirror.amuksa.com/ubuntu/


📦 미러 서버 변경 방법

1. 현재 sources.list 백업

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

2. sources.list 수정

아래 명령어로 편집기를 열어줍니다:

sudo nano /etc/apt/sources.list

내용을 모두 지우고, 아래와 같이 1순위: Techlabs2순위: KRFOSS 순서로 작성합니다:

# ✅ 1순위: Techlabs 미러

deb https://mirror.techlabs.co.kr/ubuntu jammy main restricted universe multiverse
deb https://mirror.techlabs.co.kr/ubuntu jammy-updates main restricted universe multiverse
deb https://mirror.techlabs.co.kr/ubuntu jammy-backports main restricted universe multiverse
deb https://mirror.techlabs.co.kr/ubuntu jammy-security main restricted universe multiverse

# ✅ 2순위: KRFOSS 미러 (Fallback)

deb https://ftp.krfoss.org/ubuntu jammy main restricted universe multiverse
deb https://ftp.krfoss.org/ubuntu jammy-updates main restricted universe multiverse
deb https://ftp.krfoss.org/ubuntu jammy-backports main restricted universe multiverse
deb https://ftp.krfoss.org/ubuntu jammy-security main restricted universe multiverse

💡 Techlabs 미러가 일시적으로 느리거나 다운된 경우, apt는 자동으로 KRFOSS 미러로 전환됩니다. 이중 미러 구성은 안정성 확보에 효과적입니다.


3. 패키지 인덱스 업데이트

sudo apt update

이제부터 모든 패키지는 Techlabs 미러에서 빠르게 다운로드됩니다. apt 사용 체감 속도가 확연히 다르게 느껴질 거예요.


🔥 왜 Techlabs 미러를 써야 하나요?

  • ✅ Canonical 공식 인증 미러입니다. → launchpad.net에서 공식 확인 가능

  • ✅ HTTPS 지원으로 보안에 강력

  • ✅ IPv6 지원, 클라우드 및 최신 네트워크 환경에 유리

  • ✅ 서울 데이터센터 기반, 국내에서 최상의 속도 보장

  • ✅ 서버 안정성과 동기화 상태 매우 우수 — 업데이트 누락 거의 없음

📌개발자, 서버 관리자, 기업 보안 환경에서는 Techlabs 미러가사실상 유일한 선택지입니다.

https://launchpad.net/ubuntu/+archivemirrors

<테크랩스가 가장 빠른 미러 서비스를 운영합니다>


✨ 마무리

우분투를 제대로 쓰고 싶다면, 미러 서버부터 바꾸는 것이 시작입니다.
특히 보안이 중요한 환경, 서버 운영, 클라우드 VM이라면 TLS 미러는 필수입니다.

👉 지금 바로 Techlabs + KRFOSS 이중 설정으로 빠르고 안전한 우분투 환경을 구성해보세요!

국내 우분투 미러 속도 비교 정리표 (2025년기준)

리눅스 사용자라면 누구나 한 번쯤 겪는 apt update 속도 지연 문제.
특히 한국에서 우분투(Ubuntu)를 사용할 경우, 기본 설정으로는 해외 서버를 사용하게 되어 패키지 업데이트가 느리거나 중단되는 경우가 많습니다.

이번 포스트에서는 2025년 4월 기준으로 속도, 보안, 안정성을 기준으로 평가한 국내 우분투 미러 서버 TOP 6를 비교 분석합니다.


📋 목차

  1. 국내 우분투 미러란?

  2. 국내 미러 속도 비교표 (2025년 4월 기준)

  3. 가장 빠른 미러는 어디인가?

  4. 추천 사용 환경

  5. 마무리 및 팁


1. 🇰🇷 국내 우분투 미러란?

우분투 패키지는 기본적으로 archive.ubuntu.com이라는 글로벌 서버에서 내려받게 됩니다.
하지만 이는 지리적 거리와 트래픽 문제로 속도가 느릴 수 있고, 심한 경우에는 apt update조차 실패하기도 합니다.

이 문제를 해결하기 위해 한국에도 여러 공식 또는 비공식 미러 서버가 존재합니다.
이들 미러는 Ubuntu 패키지를 한국 내에서 다운로드할 수 있도록 해주며, 다운로드 속도 개선과 안정성 향상에 매우 유리합니다.


2. 🚀 국내 우분투 미러 속도 비교 정리표 (2025년 4월 기준)

다음은 서울 기준 평균 다운로드 속도와 기능 지원 여부를 기준으로 정리한 국내 미러 비교표입니다.

순위 미러 이름 미러 주소 평균 속도 (서울 기준) HTTPS 지원 Canonical 공식 등록 IPv6 지원 비고
🥇 1위 Techlabs https://mirror.techlabs.co.kr/ubuntu/ 🚀 250~800 Mbps 빠르고 안정적, TLS 지원, 기업급 품질
🥈 2위 Kakao http://mirror.kakao.com/ubuntu/ ⚡ 300~600 Mbps 국내 인기 1위, HTTPS 미지원
🥉 3위 NAVER Cloud http://mirror.navercorp.com/ubuntu/ ⚡ 200~500 Mbps 대기업 인프라 기반 안정적
4위 KRFOSS https://ftp.krfoss.org/ubuntu/ 🚀 150~400 Mbps ❌ (비공식) HTTPS + rsync 지원, 커뮤니티 기반 운영
5위 KAIST http://ftp.kaist.ac.kr/ubuntu/ 🐢 80~250 Mbps 전통 미러, 간혹 속도 저하
6위 SNU (서울대) http://ftp.snu.ac.kr/ubuntu/ 🐢 60~200 Mbps 업데이트 속도 불규칙적

3. 🏁 가장 빠른 미러는?

  • Techlabs 미러는 속도, 보안(TLS), 공식성, IPv6 지원까지 모두 충족하며 2025년 기준 최강자입니다.

  • Kakao 미러는 HTTPS는 없지만 폭넓은 사용자층과 매우 빠른 반응 속도로 일반 사용자에게 매우 적합합니다.

  • KRFOSS는 비공식이지만 HTTPS와 rsync를 모두 제공하며 실제 사용자들 사이에서 호평을 받고 있습니다.


4. 🔧 추천 사용 환경


5. ✅ 마무리 팁

  • sources.list를 직접 수정해도 되지만, apt-smartnetselect-aptapt-mirror-updater 같은 도구를 활용하면 가장 빠른 미러를 자동 선택할 수 있습니다.

  • HTTPS를 지원하는 미러를 사용하는 것이 보안 면에서 유리하며, 특히 기업 서버나 클라우드 VM에서는 필수적으로 적용하는 것이 좋습니다.

proxmox 한국 미러 – 10g 초고속 미러

proxmox는 국내 미러가 몇개 없는데, 그 중에 10g망으로 빠르게 미러를 해 주는 서비스가 있습니다.

 

 

https://mirror.techlabs.co.kr/

 

이곳에서는 프록스 목스 뿐만 아니라 사람들이 많이 사용하는 우분투, 로키, 알파인 리눅스도 미러를 하고 있으며,

특이하게 칼리 리눅스도 미러 서비스를 하고 있습니다.

 

미러 서버 활용 가이드

패키지 관리자 미러 설정 방법

Ubuntu/Debian 사용자

APT 패키지 관리자의 소스 목록을 테크랩스 미러로 변경하여 더 빠른 패키지 다운로드 속도를 경험하세요.

방법 1:자동 설정 스크립트 사용 (권장)

curl -sSL https://mirror.techlabs.co.kr/resources/download-apt.php | sudo bash

방법 2:수동으로 sources.list 파일 편집

  • 텍스트 편집기로 sources.list 파일 열기:sudo nano /etc/apt/sources.list
  • 모든 ‘archive.ubuntu.com’ 또는 다른 미러 주소를 ‘mirror.techlabs.co.kr/ubuntu’로 변경
  • 저장 후sudo apt update를 실행하여 변경사항 적용

Kali Linux 사용자

보안 테스트 배포판인 Kali Linux도 테크랩스 미러를 통해 빠르게 업데이트할 수 있습니다.

curl -sSL https://mirror.techlabs.co.kr/resources/download-apt.php | sudo bash

Alpine Linux 사용자

경량 컨테이너 배포판인 Alpine Linux 패키지를 테크랩스 미러에서 다운로드하려면:

  • sudo nano /etc/apk/repositories명령으로 저장소 파일 열기
  • 기존 저장소 URL을https://mirror.techlabs.co.kr/alpine/v[버전]/main으로 변경
  • apk update명령으로 변경사항 적용

다양한 다운로드 방법

http. https. rsync 모두 지원하니까 편리하게 이용이 가능 하겠습니다.

메일 서버 구축후 점검해봐야 할 체크리스

메일 서버 프로덕션 레벨 체크리스트

1. 기본 구성 확인

서버 설정

  •  호스트명이 FQDN으로 올바르게 설정됨 (hostname -f)
  •  시스템 시간이 정확하고 NTP로 동기화됨 (timedatectl status)
  •  모든 필수 서비스가 실행 중 (systemctl status postfix dovecot rspamd redis-server apache2)
  •  필수 포트 개방 확인 (netstat -tulpn | grep -E ":(25|465|587|993|80|443)")

DNS 레코드

  •  MX 레코드가 올바르게 설정됨 (dig MX example.com)
  •  A/AAAA 레코드가 메일 서버를 가리킴 (dig A mail.example.com)
  •  PTR(역방향 DNS) 레코드가 메일 서버 IP에 대해 설정됨 (dig -x 서버IP)
  •  SPF 레코드가 올바르게 설정됨 (dig TXT example.com)
  •  DKIM 레코드가 올바르게 설정됨 (dig TXT [selector]._domainkey.example.com)
  •  DMARC 레코드가 올바르게 설정됨 (dig TXT _dmarc.example.com)

2. SMTP 구성 확인 (Postfix)

기본 설정

  •  SMTP 바인딩 주소 및 포트 확인 (postconf -n | grep inet_interfaces)
  •  허용된 네트워크 확인 (postconf -n | grep mynetworks)
  •  릴레이 도메인 설정 확인 (postconf -n | grep relay)
  •  메일박스 유형 및 위치 확인 (postconf -n | grep virtual_mailbox)

보안 설정

  •  SMTP 인증 활성화됨 (postconf -n | grep smtpd_sasl_auth)
  •  TLS 암호화 활성화됨 (postconf -n | grep tls)
  •  최소 TLS 프로토콜 버전 확인 (TLSv1.2 이상) (postconf -n | grep tls_protocols)
  •  안전한 암호화 스위트 사용 (postconf -n | grep tls_ciphers)
  •  SMTP 클라이언트 제한 설정 확인 (postconf -n | grep smtpd_client_restrictions)
  •  SMTP 발신자 제한 설정 확인 (postconf -n | grep smtpd_sender_restrictions)
  •  SMTP 수신자 제한 설정 확인 (postconf -n | grep smtpd_recipient_restrictions)
  •  속도 제한 설정 확인 (postconf -n | grep rate_limit)

실제 연결 테스트

  •  표준 SMTP 연결 테스트 (telnet mail.example.com 25)
  •  제출 포트(Submission) 연결 테스트 (openssl s_client -connect mail.example.com:587 -starttls smtp)
  •  SMTPS 연결 테스트 (openssl s_client -connect mail.example.com:465)
  •  인증 없이 릴레이 거부 테스트 (swaks --to external@gmail.com --server mail.example.com)
  •  인증 후 릴레이 허용 테스트 (swaks --to external@gmail.com --server mail.example.com --auth --auth-user=user@example.com --auth-password=password)

3. IMAP 구성 확인 (Dovecot)

기본 설정

  •  IMAP 바인딩 주소 및 포트 확인 (doveconf -n | grep 'imap.*listen')
  •  메일박스 형식 및 위치 확인 (doveconf -n | grep mail_location)
  •  인증 메커니즘 확인 (doveconf -n | grep auth_mechanisms)

보안 설정

  •  TLS 암호화 활성화됨 (doveconf -n | grep ssl)
  •  최소 TLS 프로토콜 버전 확인 (TLSv1.2 이상) (doveconf -n | grep ssl_min_protocol)
  •  안전한 암호화 스위트 사용 (doveconf -n | grep ssl_cipher_list)
  •  평문 인증 비활성화 확인 (SSL/TLS 필수) (doveconf -n | grep disable_plaintext_auth)
  •  권한 설정 확인 (uid/gid) (doveconf -n | grep -E 'mail_uid|mail_gid')

실제 연결 테스트

  •  IMAPS 연결 테스트 (openssl s_client -connect mail.example.com:993)
  •  인증 테스트 (curl -v 'imaps://mail.example.com' --user 'user@example.com:password')

4. 스팸 필터링 확인 (Rspamd)

기본 설정

  •  Rspamd 서비스 실행 중 (systemctl status rspamd)
  •  Rspamd-Postfix 연결 설정 확인 (postconf -n | grep milter)
  •  Redis 설정 확인 (cat /etc/rspamd/local.d/redis.conf)
  •  로깅 설정 확인 (cat /etc/rspamd/local.d/logging.inc)

모듈 확인

  •  DKIM 서명 모듈 활성화 및 설정 확인 (cat /etc/rspamd/local.d/dkim_signing.conf)
  •  SPF 확인 모듈 활성화 및 설정 확인 (cat /etc/rspamd/local.d/spf.conf)
  •  DMARC 확인 모듈 활성화 및 설정 확인 (cat /etc/rspamd/local.d/dmarc.conf)
  •  안티바이러스 모듈 활성화 및 설정 확인 (cat /etc/rspamd/local.d/antivirus.conf)
  •  그레이리스팅 설정 확인 (cat /etc/rspamd/local.d/greylist.conf)

기능 테스트

  •  DKIM 서명 테스트 (테스트 메일 발송 후 헤더 확인)
  •  스팸 메일 필터링 테스트 (GTUBE 테스트 패턴 사용)
  •  Rspamd 웹 인터페이스 접속 테스트 (https://mail.example.com/rspamd)
  •  Rspamd 통계 확인 (rspamdadm stat)

5. 웹메일 구성 확인 (Roundcube)

기본 설정

  •  웹서버 실행 중 (systemctl status apache2/nginx)
  •  Roundcube 웹 접속 가능 (https://mail.example.com/)
  •  데이터베이스 연결 확인 (cat /var/www/roundcube/config/config.inc.php | grep db_dsnw)
  •  IMAP/SMTP 설정 확인 (cat /var/www/roundcube/config/config.inc.php | grep -E 'default_host|smtp_server')

보안 설정

  •  HTTPS 활성화 및 리다이렉트 설정
  •  최소 TLS 버전 확인 (TLSv1.2 이상)
  •  안전한 암호화 스위트 사용
  •  HTTP 보안 헤더 설정 (X-XSS-Protection, X-Content-Type-Options, Content-Security-Policy)
  •  PHP 보안 설정 확인 (php -i | grep -E 'expose_php|display_errors|allow_url_fopen')

기능 테스트

  •  로그인 테스트
  •  메일 전송 테스트
  •  메일 수신 테스트
  •  첨부 파일 처리 테스트

6. TLS/SSL 보안 확인

인증서 설정

  •  유효한 SSL 인증서 설치됨 (certbot certificates)
  •  인증서 만료일 확인 (최소 30일 이상 남음)
  •  인증서 체인 완전성 확인 (openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt /etc/letsencrypt/live/mail.example.com/fullchain.pem)
  •  키 길이 확인 (RSA: 2048비트 이상, ECC: 256비트 이상) (openssl x509 -in /etc/letsencrypt/live/mail.example.com/cert.pem -text | grep "Public-Key")

TLS 구성 강도

  •  SMTP TLS 구성 강도 테스트 (testssl.sh --starttls smtp mail.example.com:25)
  •  IMAP TLS 구성 강도 테스트 (testssl.sh mail.example.com:993)
  •  웹 TLS 구성 강도 테스트 (testssl.sh mail.example.com:443)
  •  취약한 프로토콜 비활성화 (SSLv2/v3, TLSv1.0/1.1)
  •  취약한 암호화 스위트 비활성화 (RC4, DES, 3DES, MD5, SHA1)
  •  Perfect Forward Secrecy 지원

7. 인증 및 접근 제어

사용자 인증

  •  안전한 비밀번호 정책 적용
  •  평문 비밀번호 저장 없음 (해시 사용)
  •  인증 실패 제한 설정 (Fail2ban)
  •  IP 기반 접근 제한 설정 확인

권한 설정

  •  파일 및 디렉토리 권한 확인 (find /etc/postfix /etc/dovecot /var/mail -type f -perm /o=w)
  •  설정 파일 소유권 확인 (ls -la /etc/postfix/ /etc/dovecot/)
  •  메일박스 디렉토리 권한 확인 (ls -la /var/mail/vhosts/)
  •  로그 파일 권한 확인 (ls -la /var/log/mail*)

8. 네트워크 보안

방화벽 설정

  •  필수 포트만 개방되어 있음 (ufw status 또는 iptables -L)
  •  미사용 서비스 포트 차단됨
  •  관리 인터페이스(SSH 등)에 접근 제한 설정

네트워크 프로토콜

  •  IPv4 및 IPv6 설정 확인
  •  불필요한 프로토콜 비활성화
  •  TCP 래퍼 설정 확인 (cat /etc/hosts.allow /etc/hosts.deny)

9. 이메일 표준 준수 및 평판 확인

이메일 표준

  •  RFC 5321/5322 준수 (기본 SMTP 프로토콜)
  •  RFC 7208 준수 (SPF)
  •  RFC 6376 준수 (DKIM)
  •  RFC 7489 준수 (DMARC)

외부 테스트 및 평판

  •  Mail-tester.com 검사 결과 (최소 9/10 점수)
  •  Mxtoolbox.com 검사 결과 (경고 및 오류 없음)
  •  DKIM 검증기 테스트 (https://dkimvalidator.com/)
  •  스팸하우스 등 블랙리스트 등록 여부 확인 (dig +short example.com.dnsbl.sorbs.net)
  •  주요 메일 제공자(Gmail, Outlook 등)로 테스트 메일 전송 및 헤더 분석

10. 성능 및 모니터링

시스템 리소스

  •  CPU 사용량 확인 (top 또는 htop)
  •  메모리 사용량 확인 (free -m)
  •  디스크 사용량 확인 (df -h)
  •  디스크 I/O 상태 확인 (iostat)
  •  네트워크 트래픽 확인 (nethogs 또는 iftop)

큐 및 로그 확인

  •  메일 큐 크기 확인 (mailq | wc -l)
  •  오류 로그 확인 (grep -i "error\|warn\|fail" /var/log/mail.log | tail -50)
  •  지연된 메일 확인 (find /var/spool/postfix/deferred -type f | wc -l)
  •  Rspamd 로그 확인 (grep -i "error\|warn" /var/log/rspamd/rspamd.log | tail -50)

모니터링 설정

  •  로그 모니터링 및 알림 설정
  •  서비스 가용성 모니터링 설정 (Nagios, Zabbix, Prometheus 등)
  •  백업 설정 확인 및 테스트
  •  인증서 갱신 모니터링 설정

11. DKIM 세부 확인

DKIM 키 설정

  •  적절한 키 길이 사용 (2048비트 이상) (ls -la /var/lib/rspamd/dkim/)
  •  키 파일 권한 설정 확인 (ls -la /var/lib/rspamd/dkim/)
  •  DKIM 선택기(Selector) 설정 확인 (cat /etc/rspamd/local.d/dkim_signing.conf)

DKIM DNS 레코드

  •  TXT 레코드 형식 확인 (dig TXT [selector]._domainkey.example.com)
  •  TXT 레코드에 v=DKIM1 포함
  •  TXT 레코드에 올바른 p= (공개키) 포함
  •  추가 권장 태그 포함 (t=s, t=y 등)

DKIM 서명 검증

  •  실제 메일 발송 후 DKIM 서명 확인
  •  다양한 외부 서비스로 DKIM 검증 테스트
  •  DKIM 실패 시 로그 확인 (grep -i "dkim" /var/log/rspamd/rspamd.log)

12. SPF 세부 확인

SPF 레코드 설정

  •  SPF 레코드 구문 확인 (dig TXT example.com)
  •  레코드에 모든 송신 서버 포함 (IP, MX, A 등)
  •  적절한 제한 모드 설정 (-all, ~all)
  •  SPF 레코드 길이 제한 확인 (<= 255자, 10개 이하 룩업)

SPF 검증

  •  SPF 확인 메커니즘 작동 확인
  •  SPF 실패 테스트 (비승인 서버에서 발송)
  •  다양한 SPF 검증 도구 사용 테스트
  •  SPF 실패 시 로그 확인 (grep -i "spf" /var/log/rspamd/rspamd.log)

13. DMARC 세부 확인

DMARC 레코드 설정

  •  DMARC 레코드 구문 확인 (dig TXT _dmarc.example.com)
  •  정책 설정 확인 (p=none, p=quarantine, p=reject)
  •  하위 도메인 정책 설정 확인 (sp=)
  •  보고서 설정 확인 (rua=, ruf=)

DMARC 처리

  •  DMARC 정책 적용 확인
  •  DMARC 보고서 수신 및 분석 설정
  •  DMARC 실패 시 로그 확인 (grep -i "dmarc" /var/log/rspamd/rspamd.log)

14. 일일/주간 유지보수 체크리스트

일일 점검

  •  서비스 상태 확인
  •  로그 확인 (오류 및 경고)
  •  메일 큐 확인
  •  디스크 공간 확인
  •  백업 상태 확인

주간 점검

  •  보안 업데이트 설치
  •  SSL 인증서 만료일 확인
  •  스팸 필터 성능 검토
  •  DNS 레코드 확인
  •  방화벽 규칙 검토
  •  인증 실패 로그 검토
  •  DMARC 보고서 분석

15. 재해 복구 및 비상 대응

복구 절차

  •  메일 서버 복구 절차 문서화
  •  백업 복원 절차 테스트
  •  복구 시간 목표(RTO) 설정 및 검증
  •  비상 연락처 목록 작성 및 업데이트

비상 대응 계획

  •  보안 침해 대응 계획 수립
  •  서비스 중단 대응 절차 문서화
  •  스팸/피싱 공격 대응 절차 문서화

16. 규정 준수 확인

데이터 보호

  •  암호화 전송 강제 (TLS)
  •  저장 데이터 보호 (디스크 암호화 등)
  •  접근 제어 정책 구현

로깅 및 감사

  •  필수 로그 수집 및 보존
  •  로그 무결성 보호
  •  로그 분석 및 모니터링 설정

업계별 규정

  •  해당 산업 규정 준수 여부 확인 (GDPR, HIPAA, PCI DSS 등)
  •  개인정보 처리 정책 구현

정기 검사 일정

  1. 일일 검사: 서비스 상태, 로그, 메일 큐, 디스크 공간
  2. 주간 검사: 보안 업데이트, 스팸 필터, 인증 실패 로그
  3. 월간 검사: 전체 보안 설정, DNS 레코드, 방화벽 규칙
  4. 분기 검사: 외부 평판 및 블랙리스트 확인, 재해 복구 테스트
  5. 반기 검사: 전체 시스템 보안 감사, 규정 준수 확인

이 체크리스트를 통해 메일 서버가 프로덕션 환경에서 안정적이고 안전하게 운영될 수 있도록, 주요 구성 요소의 설정과 기능을 철저히 검증할 수 있습니다.

우분투에 직접 메일 서버를 구축하기

Postfix, Dovecot, Rspamd, Roundcube 메일 서버 구축 작업

 

1. 사전 준비

1.1 서버 요구사항

  • OS: Ubuntu 20.04 LTS 또는 22.04 LTS
  • 최소 사양: 2 CPU, 4GB RAM, 20GB 스토리지
  • 고정 IP 주소
  • 정방향/역방향 DNS 설정 (메일 서버 IP에 대한 PTR 레코드 필수)

1.2 도메인 준비

  • 메일 서버용 도메인 확보 (예: mail.example.com)
  • 다음 DNS 레코드 설정:
    • A 레코드: mail.example.com → 서버 IP 주소
    • MX 레코드: example.com → mail.example.com (우선순위 10)
    • SPF 레코드: example.com TXT “v=spf1 mx a ip4:서버IP -all”
    • DKIM/DMARC 레코드 (rspamd 설정 후 추가)

1.3 포트 오픈

  • 필수 포트: 25 (SMTP), 465 (SMTPS), 587 (Submission), 993 (IMAPS), 80/443 (HTTP/HTTPS)
  • 방화벽 설정:
    bash
    sudo ufw allow 22/tcp
    sudo ufw allow 25/tcp
    sudo ufw allow 465/tcp
    sudo ufw allow 587/tcp
    sudo ufw allow 993/tcp
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable

2. 시스템 기본 설정

2.1 시스템 업데이트

bash
sudo apt update
sudo apt upgrade -y
sudo apt install -y software-properties-common curl wget gnupg2 ca-certificates lsb-release apt-transport-https

2.2 호스트명 설정

bash
sudo hostnamectl set-hostname mail.example.com
echo "127.0.0.1 mail.example.com mail" | sudo tee -a /etc/hosts

2.3 시간 동기화 설정

bash
sudo apt install -y ntp
sudo systemctl enable ntp
sudo systemctl start ntp

3. SSL 인증서 설정

3.1 Certbot 설치

bash
sudo apt install -y certbot

3.2 인증서 발급

bash
sudo certbot certonly --standalone --preferred-challenges http -d mail.example.com

3.3 인증서 자동 갱신 설정

bash
sudo systemctl enable certbot.timer
sudo systemctl start certbot.timer

4. Postfix 설치 및 설정

4.1 Postfix 설치

bash
sudo apt install -y postfix postfix-mysql
  • 설치 중 “Internet Site” 선택
  • 시스템 메일 이름: mail.example.com 입력

4.2 Postfix 기본 설정

bash
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.bak

sudo bash -c 'cat > /etc/postfix/main.cf << EOF
# 기본 설정
smtpd_banner = $myhostname ESMTP $mail_name
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 2

# TLS 파라미터
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtp_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_ciphers = high
smtp_tls_ciphers = high

# 일반 설정
myhostname = mail.example.com
myorigin = example.com
mydomain = example.com
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

# SMTP 인증 및 릴레이
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

# 메일함 설정
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = example.com
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

# Rspamd 설정
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:127.0.0.1:11332
non_smtpd_milters = inet:127.0.0.1:11332
EOF'

4.3 Postfix 가상 메일박스 설정

bash
sudo mkdir -p /var/mail/vhosts/example.com
sudo groupadd -g 5000 vmail
sudo useradd -g vmail -u 5000 vmail -d /var/mail/vhosts -m
sudo chown -R vmail:vmail /var/mail/vhosts

sudo bash -c 'cat > /etc/postfix/vmailbox << EOF
user1@example.com example.com/user1/
user2@example.com example.com/user2/
EOF'

sudo postmap /etc/postfix/vmailbox

4.4 Postfix master.cf 설정

bash
sudo cp /etc/postfix/master.cf /etc/postfix/master.cf.bak

sudo bash -c 'cat > /etc/postfix/master.cf << EOF
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
smtp inet n - y - - smtpd
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
pickup unix n - y 60 1 pickup
cleanup unix n - y - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - y 1000? 1 tlsmgr
rewrite unix - - y - - trivial-rewrite
bounce unix - - y - 0 bounce
defer unix - - y - 0 bounce
trace unix - - y - 0 bounce
verify unix - - y - 1 verify
flush unix n - y 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - y - - smtp
relay unix - - y - - smtp
showq unix n - y - - showq
error unix - - y - - error
retry unix - - y - - error
discard unix - - y - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - y - - lmtp
anvil unix - - y - 1 anvil
scache unix - - y - 1 scache
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
EOF'

5. Dovecot 설치 및 설정

5.1 Dovecot 설치

bash
sudo apt install -y dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql

5.2 Dovecot 기본 설정

bash
sudo cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.bak

sudo bash -c 'cat > /etc/dovecot/dovecot.conf << EOF
# Dovecot 기본 설정
protocols = imap lmtp
listen = *
mail_privileged_group = mail
mail_location = maildir:/var/mail/vhosts/%d/%n

# 디렉토리 설정
mail_home = /var/mail/vhosts/%d/%n

# 사용자 설정
first_valid_uid = 5000
first_valid_gid = 5000

# SSL 설정
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
ssl_min_protocol = TLSv1.2
ssl_prefer_server_ciphers = yes

# 인증 설정
auth_mechanisms = plain login
disable_plaintext_auth = yes
auth_username_format = %n
EOF'

5.3 Dovecot 서비스 설정

bash
sudo cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.bak

sudo bash -c 'cat > /etc/dovecot/conf.d/10-master.conf << EOF
service imap-login {
inet_listener imap {
port = 0
}
inet_listener imaps {
port = 993
ssl = yes
}
}

service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}

service imap {
}

service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

unix_listener auth-userdb {
mode = 0600
user = vmail
group = vmail
}

user = dovecot
}

service auth-worker {
user = vmail
}
EOF'

5.4 Dovecot 메일 설정

bash
sudo cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.bak

sudo bash -c 'cat > /etc/dovecot/conf.d/10-mail.conf << EOF
mail_location = maildir:/var/mail/vhosts/%d/%n
namespace inbox {
inbox = yes
}

mail_privileged_group = mail
first_valid_uid = 5000
first_valid_gid = 5000

mail_home = /var/mail/vhosts/%d/%n
EOF'

5.5 Dovecot 인증 설정

bash
sudo cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.bak

sudo bash -c 'cat > /etc/dovecot/conf.d/10-auth.conf << EOF
auth_mechanisms = plain login
disable_plaintext_auth = yes
auth_username_format = %n

!include auth-passwdfile.conf.ext
EOF'

5.6 Dovecot 비밀번호 파일 설정

bash
sudo mkdir -p /etc/dovecot/private
sudo touch /etc/dovecot/private/passwd
sudo bash -c 'cat > /etc/dovecot/conf.d/auth-passwdfile.conf.ext << EOF
passdb {
driver = passwd-file
args = scheme=SHA512-CRYPT username_format=%u /etc/dovecot/private/passwd
}

userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}
EOF'

# 사용자 추가 (비밀번호는 적절히 변경)
sudo bash -c "echo 'user1@example.com:{SHA512-CRYPT}password_hash:5000:5000::/var/mail/vhosts/example.com/user1::' > /etc/dovecot/private/passwd"
sudo bash -c "echo 'user2@example.com:{SHA512-CRYPT}password_hash:5000:5000::/var/mail/vhosts/example.com/user2::' >> /etc/dovecot/private/passwd"

# passwd 파일 권한 설정
sudo chown dovecot:dovecot /etc/dovecot/private/passwd
sudo chmod 600 /etc/dovecot/private/passwd

6. Rspamd 설치 및 설정

6.1 Rspamd 저장소 추가 및 설치

bash
sudo apt install -y lsb-release wget gnupg2
CODENAME=`lsb_release -c -s`
wget -O- https://rspamd.com/apt-stable/gpg.key | sudo apt-key add -
echo "deb [arch=amd64] http://rspamd.com/apt-stable/ $CODENAME main" | sudo tee /etc/apt/sources.list.d/rspamd.list
sudo apt update
sudo apt install -y rspamd redis-server

6.2 Rspamd 기본 설정

bash
sudo mkdir -p /etc/rspamd/local.d/
sudo mkdir -p /etc/rspamd/override.d/

# 로컬 설정
sudo bash -c 'cat > /etc/rspamd/local.d/worker-proxy.inc << EOF
bind_socket = "127.0.0.1:11332";
EOF'

sudo bash -c 'cat > /etc/rspamd/local.d/redis.conf << EOF
servers = "127.0.0.1";
EOF'

sudo bash -c 'cat > /etc/rspamd/local.d/logging.inc << EOF
level = "info";
type = "file";
filename = "/var/log/rspamd/rspamd.log";
EOF'

# DKIM 설정
sudo mkdir -p /var/lib/rspamd/dkim
sudo bash -c 'cat > /etc/rspamd/local.d/dkim_signing.conf << EOF
domain {
example.com {
path = "/var/lib/rspamd/dkim/example.com.key";
selector = "dkim";
}
}
EOF'

# DKIM 키 생성
sudo rspamadm dkim_keygen -s dkim -b 2048 -d example.com -k /var/lib/rspamd/dkim/example.com.key > /tmp/example.com.dkim.txt
sudo chown -R _rspamd:_rspamd /var/lib/rspamd/dkim
sudo chmod 440 /var/lib/rspamd/dkim/example.com.key

6.3 DKIM, DMARC DNS 설정 안내 생성

bash
echo "DNS 설정에 아래의 TXT 레코드를 추가하세요:"
echo "DKIM 레코드:"
cat /tmp/example.com.dkim.txt
echo ""
echo "DMARC 레코드:"
echo "_dmarc.example.com. IN TXT \"v=DMARC1; p=quarantine; rua=mailto:postmaster@example.com\""

7. Roundcube 설치 및 설정

7.1 필수 패키지 설치

bash
sudo apt install -y apache2 php php-fpm php-mysql php-mbstring php-xml php-curl php-zip php-gd php-intl php-imagick mariadb-server

7.2 MariaDB 설정

bash
sudo mysql_secure_installation
sudo mysql -e "CREATE DATABASE roundcube CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'StrongPassword';"
sudo mysql -e "GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcube'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"

7.3 Roundcube 다운로드 및 설치

bash
cd /tmp
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.0/roundcubemail-1.6.0-complete.tar.gz
tar -xvzf roundcubemail-1.6.0-complete.tar.gz
sudo mv roundcubemail-1.6.0 /var/www/roundcube
sudo chown -R www-data:www-data /var/www/roundcube

7.4 Roundcube 설정

bash
cd /var/www/roundcube/config
sudo cp config.inc.php.sample config.inc.php

# 설정 파일 편집
sudo sed -i "s|\$config\['db_dsnw'\] =.*|\$config\['db_dsnw'\] = 'mysql://roundcube:StrongPassword@localhost/roundcube';|" config.inc.php
sudo sed -i "s|\$config\['default_host'\] =.*|\$config\['default_host'\] = 'localhost';|" config.inc.php
sudo sed -i "s|\$config\['smtp_server'\] =.*|\$config\['smtp_server'\] = 'localhost';|" config.inc.php
sudo sed -i "s|\$config\['smtp_port'\] =.*|\$config\['smtp_port'\] = 587;|" config.inc.php
sudo sed -i "s|\$config\['smtp_user'\] =.*|\$config\['smtp_user'\] = '%u';|" config.inc.php
sudo sed -i "s|\$config\['smtp_pass'\] =.*|\$config\['smtp_pass'\] = '%p';|" config.inc.php
sudo sed -i "s|\$config\['des_key'\] =.*|\$config\['des_key'\] = '$(openssl rand -base64 24)';|" config.inc.php

7.5 Roundcube 데이터베이스 초기화

bash
cd /var/www/roundcube
sudo mysql roundcube < SQL/mysql.initial.sql

7.6 Apache 가상 호스트 설정

bash
sudo bash -c 'cat > /etc/apache2/sites-available/roundcube.conf << EOF
<VirtualHost *:80>
ServerName mail.example.com
DocumentRoot /var/www/roundcube
ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log
CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined

<Directory /var/www/roundcube>
Options -Indexes
AllowOverride All
Require all granted
</Directory>

Redirect permanent / https://mail.example.com/
</VirtualHost>

<VirtualHost *:443>
ServerName mail.example.com
DocumentRoot /var/www/roundcube
ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log
CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/mail.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mail.example.com/privkey.pem

<Directory /var/www/roundcube>
Options -Indexes
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
EOF'

sudo a2ensite roundcube.conf
sudo a2enmod ssl rewrite
sudo systemctl restart apache2

8. 서비스 활성화 및 시작

bash
sudo systemctl enable postfix dovecot rspamd redis-server apache2
sudo systemctl restart postfix dovecot rspamd redis-server apache2

9. 테스트 및 검증

9.1 서비스 상태 확인

bash
sudo systemctl status postfix
sudo systemctl status dovecot
sudo systemctl status rspamd
sudo systemctl status apache2

9.2 로그 확인

bash
sudo tail -f /var/log/mail.log
sudo tail -f /var/log/rspamd/rspamd.log
sudo tail -f /var/log/apache2/roundcube_error.log

9.3 SMTP 연결 테스트

bash
telnet localhost 25
openssl s_client -connect localhost:465
openssl s_client -connect localhost:587 -starttls smtp

9.4 IMAP 연결 테스트

bash
openssl s_client -connect localhost:993

9.5 메일 전송 테스트

10. 보안 강화 설정

10.1 Fail2ban 설치 및 설정

bash
sudo apt install -y fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

sudo bash -c 'cat > /etc/fail2ban/jail.d/mail-auth.conf << EOF
[postfix]
enabled = true
port = smtp,submission,smtps
filter = postfix
logpath = /var/log/mail.log
maxretry = 5
findtime = 600
bantime = 3600

[dovecot]
enabled = true
port = imap,imaps
filter = dovecot
logpath = /var/log/mail.log
maxretry = 5
findtime = 600
bantime = 3600
EOF'

sudo systemctl restart fail2ban

10.2 추가 보안 설정

  • 암호화 강화 및 불필요한 서비스 비활성화
bash
sudo apt purge -y xinetd telnet rsh-server
sudo apt autoremove -y

11. 관리 및 백업 설정

11.1 로그 로테이션 설정

bash
sudo bash -c 'cat > /etc/logrotate.d/mail-logs << EOF
/var/log/mail.* {
daily
rotate 14
compress
delaycompress
notifempty
missingok
create 0640 syslog adm
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
EOF'

11.2 백업 스크립트 설정

bash
sudo bash -c 'cat > /usr/local/bin/mail-backup.sh << EOF
#!/bin/bash
# 날짜 포맷 설정
DATE=$(date +%Y-%m-%d)
BACKUP_DIR=/var/backups/mail
MAIL_DIR=/var/mail/vhosts
CONFIG_DIRS="/etc/postfix /etc/dovecot /etc/rspamd /etc/letsencrypt"

# 백업 디렉토리 생성
mkdir -p $BACKUP_DIR/$DATE

# 설정 파일 백업
for dir in $CONFIG_DIRS; do
tar -czf $BACKUP_DIR/$DATE/$(basename $dir)_conf.tar.gz $dir
done

# 메일 데이터 백업
tar -czf $BACKUP_DIR/$DATE/mailboxes.tar.gz $MAIL_DIR

# Roundcube 데이터베이스 백업
mysqldump --single-transaction roundcube | gzip > $BACKUP_DIR/$DATE/roundcube_db.sql.gz

# 오래된 백업 삭제 (14일 이상)
find $BACKUP_DIR -type d -mtime +14 -exec rm -rf {} \\;
EOF'

sudo chmod +x /usr/local/bin/mail-backup.sh

11.3 자동 백업 설정 (Cron)

bash
sudo bash -c 'echo "0 1 * * * root /usr/local/bin/mail-backup.sh" > /etc/cron.d/mail-backup'

12. 문제해결 가이드

12.1 일반적인 문제

Postfix 문제

  • 설정 확인: sudo postconf -n
  • 로그 확인: sudo tail -f /var/log/mail.log
  • 메일 큐 확인: sudo mailq
  • 메일 큐 비우기: sudo postsuper -d ALL

Dovecot 문제

  • 설정 확인: sudo doveconf -n
  • 로그 확인: sudo tail -f /var/log/mail.log | grep dovecot
  • 테스트: sudo doveadm user user1@example.com

Rspamd 문제

  • 설정 확인: sudo rspamd -t
  • 로그 확인: sudo tail -f /var/log/rspamd/rspamd.log
  • 통계 보기: sudo rspamdadm stat

Roundcube 문제

  • 로그 확인: sudo tail -f /var/log/apache2/roundcube_error.log
  • 권한 문제: sudo chown -R www-data:www-data /var/www/roundcube
  • PHP 버전 확인: php -v

13. 유지보수 및 관리

13.1 정기 유지보수 작업

  • 시스템 업데이트: sudo apt update && sudo apt upgrade -y
  • SSL 인증서 갱신: sudo certbot renew
  • 로그 검토: sudo journalctl -u postfix,dovecot,rspamd
  • 디스크 사용량 확인: sudo df -h
  • 메일 큐 상태 확인: sudo mailq

13.2 이메일 사용자 관리

사용자 추가

bash
# 메일박스 디렉토리 생성
sudo mkdir -p /var/mail/vhosts/example.com/newuser
sudo chown -R vmail:vmail /var/mail/vhosts/example.com/newuser

# Postfix 가상 메일박스 업데이트
echo "newuser@example.com example.com/newuser/" | sudo tee -a /etc/postfix/vmailbox
sudo postmap /etc/postfix/vmailbox

# Dovecot 사용자 추가 (비밀번호 해시는 doveadm pw 명령으로 생성)
sudo doveadm pw -s SHA512-CRYPT
# 출력된 해시를 사용하여 사용자 추가
echo "newuser@example.com:{SHA512-CRYPT}생성된_해시:5000:5000::/var/mail/vhosts/example.com/newuser::" | sudo tee -a /etc/dovecot/private/passwd

사용자 삭제

bash
# Dovecot 사용자 삭제
sudo sed -i '/newuser@example.com/d' /etc/dovecot/private/passwd

# Postfix 가상 메일박스에서 삭제
sudo sed -i '/newuser@example.com/d' /etc/postfix/vmailbox
sudo postmap /etc/postfix/vmailbox

# 메일박스 삭제 (선택 사항)
sudo rm -rf /var/mail/vhosts/example.com/newuser

14. 완료 및 확인

  1. 모든 서비스가 정상적으로 실행 중인지 확인
  2. Roundcube 웹 인터페이스에 접속하여 로그인 테스트
  3. 이메일 송수신 테스트
  4. DKIM 서명 확인 테스트
  5. 스팸 필터링 테스트

 

15. 참고 사항 (계속)

  • 모든 예제 코드에서 “example.com”을 실제 도메인으로 변경해야 합니다.
  • 비밀번호 해시는 실제 값으로 대체해야 합니다. Dovecot 비밀번호 해시는 doveadm pw -s SHA512-CRYPT 명령으로 생성할 수 있습니다.
  • 방화벽 설정은 네트워크 환경에 따라 조정이 필요할 수 있습니다.
  • 메일 서버 설정은 도메인 환경에 따라 세부 조정이 필요할 수 있습니다.
  • DNS 설정은 반드시 사전에 완료되어야 하며, 변경사항이 전파되는데 시간이 걸릴 수 있습니다.

16. 성능 최적화

16.1 Postfix 성능 최적화

bash
sudo bash -c 'cat >> /etc/postfix/main.cf << EOF
# 성능 관련 설정
default_process_limit = 100
smtp_destination_concurrency_limit = 20
local_destination_concurrency_limit = 2
minimal_backoff_time = 300s
maximal_backoff_time = 3000s
EOF'

sudo systemctl restart postfix

16.2 Dovecot 성능 최적화

bash
sudo bash -c 'cat > /etc/dovecot/conf.d/15-mailboxes.conf << EOF
namespace inbox {
mailbox Drafts {
special_use = \\Drafts
auto = subscribe
}
mailbox Junk {
special_use = \\Junk
auto = subscribe
}
mailbox Trash {
special_use = \\Trash
auto = subscribe
}
mailbox Sent {
special_use = \\Sent
auto = subscribe
}
mailbox "Sent Items" {
special_use = \\Sent
}
}
EOF'

sudo bash -c 'cat > /etc/dovecot/conf.d/20-imap.conf << EOF
protocol imap {
mail_plugins = $mail_plugins imap_quota
mail_max_userip_connections = 20
}
EOF'

sudo systemctl restart dovecot

16.3 Rspamd 성능 최적화

bash
sudo bash -c 'cat > /etc/rspamd/local.d/worker-normal.inc << EOF
# 일반 작업자 설정
workers = 2;
EOF'

sudo bash -c 'cat > /etc/rspamd/local.d/worker-proxy.inc << EOF
# 프록시 작업자 설정
clients_max = 1024;
EOF'

sudo systemctl restart rspamd

16.4 MySQL/MariaDB 성능 최적화 (Roundcube용)

bash
sudo bash -c 'cat > /etc/mysql/mariadb.conf.d/99-mail-optimizations.cnf << EOF
[mysqld]
innodb_buffer_pool_size = 256M
query_cache_size = 32M
query_cache_limit = 2M
key_buffer_size = 64M
max_connections = 100
EOF'

sudo systemctl restart mariadb

17. 모니터링 설정

17.1 기본 모니터링 스크립트

bash
sudo bash -c 'cat > /usr/local/bin/mail-monitor.sh << EOF
#!/bin/bash
# 메일 서버 상태 모니터링 스크립트

LOG_FILE="/var/log/mail-monitor.log"
ADMIN_EMAIL="admin@example.com"

echo "$(date): 메일 서버 상태 점검 시작" >> $LOG_FILE

# 서비스 상태 점검
services=("postfix" "dovecot" "rspamd" "apache2" "mariadb" "redis-server")
failed_services=()

for service in "${services[@]}"; do
if ! systemctl is-active --quiet $service; then
failed_services+=($service)
echo "$(date): 서비스 $service 중지됨" >> $LOG_FILE
fi
done

# 디스크 사용량 점검
DISK_USAGE=$(df -h / | awk '\''NR==2 {print $5}'\'' | sed '\''s/%//'\')
if [ $DISK_USAGE -gt 90 ]; then
echo "$(date): 디스크 공간 부족 ($DISK_USAGE%)" >> $LOG_FILE
echo "디스크 공간 부족 ($DISK_USAGE%)" | mail -s "메일 서버 경고: 디스크 공간 부족" $ADMIN_EMAIL
fi

# 메일 큐 점검
QUEUE_SIZE=$(mailq | grep -c "^[A-F0-9]")
if [ $QUEUE_SIZE -gt 100 ]; then
echo "$(date): 메일 큐 크기가 큼 ($QUEUE_SIZE)" >> $LOG_FILE
echo "메일 큐 크기: $QUEUE_SIZE" | mail -s "메일 서버 경고: 큰 메일 큐" $ADMIN_EMAIL
fi

# 실패한 서비스가 있으면 알림
if [ ${#failed_services[@]} -gt 0 ]; then
echo "실패한 서비스: ${failed_services[*]}" | mail -s "메일 서버 경고: 서비스 중지됨" $ADMIN_EMAIL
# 서비스 자동 재시작 시도
for service in "${failed_services[@]}"; do
echo "$(date): $service 재시작 시도" >> $LOG_FILE
systemctl restart $service
done
fi

echo "$(date): 메일 서버 상태 점검 완료" >> $LOG_FILE
EOF'

sudo chmod +x /usr/local/bin/mail-monitor.sh
sudo bash -c 'echo "*/15 * * * * root /usr/local/bin/mail-monitor.sh" > /etc/cron.d/mail-monitor'

18. 추가 기능 설정

18.1 메일 전달 설정

bash
# 사용자 이메일 전달 설정 (예: user1@example.com → external@gmail.com)
sudo bash -c 'cat > /etc/postfix/virtual << EOF
user1@example.com external@gmail.com
EOF'

sudo postmap /etc/postfix/virtual
sudo bash -c 'echo "virtual_alias_maps = hash:/etc/postfix/virtual" >> /etc/postfix/main.cf'
sudo systemctl restart postfix

18.2 SPF, DKIM, DMARC 확인 설정

bash
sudo bash -c 'cat > /etc/rspamd/local.d/spf.conf << EOF
spf_symbols {
symbol_allow = "R_SPF_ALLOW";
symbol_deny = "R_SPF_FAIL";
symbol_softfail = "R_SPF_SOFTFAIL";
symbol_neutral = "R_SPF_NEUTRAL";
symbol_none = "R_SPF_DNSFAIL";
symbol_temperror = "R_SPF_TEMPERROR";
symbol_permerror = "R_SPF_PERMERROR";
}
EOF'

sudo bash -c 'cat > /etc/rspamd/local.d/dkim_verification.conf << EOF
try_fallback = true;
use_domain = "header";
EOF'

sudo bash -c 'cat > /etc/rspamd/local.d/dmarc.conf << EOF
actions = {
quarantine = "add_header";
reject = "reject";
}
EOF'

sudo systemctl restart rspamd

19. 보안 감사 및 강화

19.1 TLS 설정 검증

bash
# Postfix TLS 검증
sudo postconf -d | grep -i tls

# Dovecot TLS 검증
sudo doveconf -n | grep -i ssl

# 실제 TLS 연결 테스트
openssl s_client -connect mail.example.com:465 -showcerts
openssl s_client -connect mail.example.com:993 -showcerts

19.2 추가 보안 설정

bash
# AppArmor 프로필 적용
sudo apt install -y apparmor-utils
sudo aa-enforce /etc/apparmor.d/usr.sbin.dovecot
sudo aa-enforce /etc/apparmor.d/usr.sbin.postfix

# SMTP 속도 제한 설정
sudo bash -c 'cat >> /etc/postfix/main.cf << EOF
# SMTP 속도 제한
smtpd_client_message_rate_limit = 50
anvil_rate_time_unit = 60s
smtpd_client_connection_rate_limit = 20
EOF'

sudo systemctl restart postfix

20. 문서화 및 관리 가이드

20.1 관리자 문서 작성

bash
sudo bash -c 'cat > /root/mail-server-docs.md << EOF
# 메일 서버 관리자 가이드

## 서버 정보
- 호스트명: mail.example.com
- IP 주소: [서버 IP]
- OS: Ubuntu 20.04/22.04 LTS

## 설치된 구성 요소
- Postfix (SMTP 서버)
- Dovecot (IMAP 서버)
- Rspamd (스팸 필터링)
- Roundcube (웹메일)
- MariaDB (데이터베이스)
- Let\'s Encrypt SSL 인증서

## 중요 파일 위치
- Postfix 설정: /etc/postfix/
- Dovecot 설정: /etc/dovecot/
- Rspamd 설정: /etc/rspamd/
- 메일박스: /var/mail/vhosts/
- SSL 인증서: /etc/letsencrypt/live/mail.example.com/

## 일반 관리 작업
1. 사용자 추가:
\`\`\`bash
# 메일박스 생성
sudo mkdir -p /var/mail/vhosts/example.com/newuser
sudo chown -R vmail:vmail /var/mail/vhosts/example.com/newuser

# 가상 메일박스 맵 업데이트
echo "newuser@example.com example.com/newuser/" | sudo tee -a /etc/postfix/vmailbox
sudo postmap /etc/postfix/vmailbox

# 비밀번호 해시 생성
sudo doveadm pw -s SHA512-CRYPT

# 사용자 추가
echo "newuser@example.com:{SHA512-CRYPT}생성된_해시:5000:5000::/var/mail/vhosts/example.com/newuser::" | sudo tee -a /etc/dovecot/private/passwd
\`\`\`

2. SSL 인증서 갱신:
\`\`\`bash
sudo certbot renew
\`\`\`

3. 로그 확인:
\`\`\`bash
sudo tail -f /var/log/mail.log
sudo tail -f /var/log/rspamd/rspamd.log
\`\`\`

4. 메일 큐 관리:
\`\`\`bash
# 큐 확인
sudo mailq

# 특정 메일 삭제
sudo postsuper -d QUEUE_ID

# 모든 메일 삭제
sudo postsuper -d ALL
\`\`\`

## 문제 해결
1. 서비스 상태 확인:
\`\`\`bash
sudo systemctl status postfix dovecot rspamd apache2
\`\`\`

2. 서비스 재시작:
\`\`\`bash
sudo systemctl restart postfix dovecot rspamd apache2
\`\`\`

3. 설정 테스트:
\`\`\`bash
sudo postfix check
sudo dovecot -n
sudo rspamd -t
\`\`\`

## 백업 및 복원
- 백업 스크립트: /usr/local/bin/mail-backup.sh
- 백업 위치: /var/backups/mail/
- 백업 내용: 설정 파일, 메일박스, 데이터베이스
- 복원 예제:
\`\`\`bash
# 설정 파일 복원
sudo tar -xzf /var/backups/mail/DATE/postfix_conf.tar.gz -C /

# 메일박스 복원
sudo tar -xzf /var/backups/mail/DATE/mailboxes.tar.gz -C /

# 데이터베이스 복원
gunzip -c /var/backups/mail/DATE/roundcube_db.sql.gz | sudo mysql roundcube
\`\`\`
EOF'

20.2 최종 확인 체크리스트

bash
# 최종 확인 스크립트
sudo bash -c 'cat > /root/final-check.sh << EOF
#!/bin/bash
echo "==== 메일 서버 설정 확인 ===="
echo ""

echo "1. 서비스 상태 확인"
systemctl status postfix dovecot rspamd apache2 mariadb redis-server | grep active

echo ""
echo "2. 포트 확인"
netstat -tulpn | grep -E ":(25|465|587|993|80|443)"

echo ""
echo "3. SSL 인증서 확인"
certbot certificates

echo ""
echo "4. DNS 레코드 확인"
dig MX example.com
dig TXT example.com
dig TXT dkim._domainkey.example.com

echo ""
echo "5. 로그 확인 (오류 메시지 검색)"
grep -i "error\|warn\|fail" /var/log/mail.log | tail -20

echo ""
echo "6. 스팜 필터 상태 확인"
rspamdadm stat

echo ""
echo "==== 확인 완료 ===="
EOF'

sudo chmod +x /root/final-check.sh

Web-Check: 웹사이트 보안과 성능을 한눈에 분석하는 오픈소스 도구

Web-Check: 웹사이트 보안과 성능을 한눈에 분석하는 오픈소스 도구

1. Web-Check란?

Web-Check는 웹사이트의 보안, 성능, 서버 정보, 도메인 구성 등을 분석할 수 있는 오픈소스 OSINT(오픈 소스 인텔리전스) 도구입니다.
웹사이트 운영자, 개발자, 보안 연구원 등이 웹사이트의 취약점을 빠르게 파악하고 최적화하는 데 유용하게 활용할 수 있습니다.


2. Web-Check의 주요 기능

Web-Check는 다음과 같은 다양한 기능을 제공합니다.

🔹 1) 서버 및 도메인 정보 조회

  • IP 주소 및 서버 위치 확인
  • Whois 조회를 통한 도메인 등록 정보 확인
  • DNS 레코드(A, MX, TXT 등) 분석

🔹 2) 보안 및 네트워크 점검

  • SSL/TLS 구성 확인 (HTTPS 보안 검사)
  • 오픈 포트 스캔 (방화벽 및 보안 취약점 탐색)
  • HSTS 및 보안 헤더 분석
  • Traceroute 분석을 통한 네트워크 경로 추적

🔹 3) 웹사이트 성능 및 최적화 분석

  • 페이지 로딩 속도 및 성능 측정
  • HTTP 헤더 최적화 상태 점검
  • 쿠키 및 세션 관리 분석

🔹 4) 위협 감지 및 블랙리스트 검사

  • Google Safe Browsing, PhishTank 등의 보안 블랙리스트 점검
  • Web Application Firewall(WAF) 우회 테스트

3. Web-Check 설치 및 사용법

Web-Check는 온라인 도구로 사용할 수도 있고, 자체 서버에 설치해서 활용할 수도 있습니다.

(1) 온라인에서 Web-Check 사용하기

Web-Check 공식 사이트에서 URL을 입력하면 간편하게 웹사이트를 분석할 수 있습니다.
🔗 Web-Check 공식 사이트

(2) 로컬에서 Web-Check 설치하기

“`bash
git clone https://github.com/your-repo/web-check.git
cd web-check
npm install
npm start

도커로 찍먹해 보기

docker run –rm -it -p 3000:3000 lissy93/web-check

로컬에서 구동하는 “딥 리서치” browser use

📌 Browser-Use란?

browser-use의 Web UI는 자동화 및 원격 브라우저 제어를 위한 인터페이스입니다. 이는 다양한 환경에서 웹 스크래핑, UI 자동화, API 호출을 더 쉽게 수행할 수 있도록 돕는 도구입니다.


🔹 1. 주요 기능

✅ 웹 브라우저 원격 제어

  • browser-use는 Puppeteer 및 Playwright 같은 헤드리스 브라우저 엔진을 활용하여 UI 자동화 및 원격 브라우징을 지원합니다.
  • Web UI를 통해 브라우저 세션을 관리하고, 직접 조작하거나, 자동화 스크립트를 실행할 수 있습니다.

✅ 웹 자동화 및 데이터 스크래핑

  • 특정 웹사이트에서 데이터를 자동으로 가져올 수 있도록 설정할 수 있습니다.
  • browser-use Web UI를 통해 XPath 및 CSS Selector를 사용하여 데이터를 추출할 수 있습니다.

✅ 멀티 인스턴스 지원

  • 여러 개의 브라우저 세션을 실행할 수 있으며, 이를 Web UI에서 관리할 수 있습니다.
  • 각 인스턴스는 독립적인 쿠키 및 세션을 가질 수 있어, 여러 계정 로그인 또는 멀티탭 작업이 가능합니다.

✅ 스크립트 실행 기능

  • JavaScript 또는 Python 스크립트를 Web UI에서 실행하여 자동화된 작업을 설정할 수 있습니다.
  • API 호출을 통해 브라우저 제어가 가능하므로, 외부에서 특정 액션을 트리거할 수 있습니다.

✅ 프록시 및 사용자 지정 헤더 지원

  • browser-use는 다양한 프록시 설정을 지원하여 IP 우회가 가능합니다.
  • Web UI에서 User-Agent, Referer, Headers 등을 커스텀 설정하여 크롤링 탐지를 회피할 수 있습니다.

즉, 이걸로 무엇을 할 수 있냐면, 쿠팡에 접속해서 브라운 9시리즈 면도기중에 로켓배송으로 가장 저렴한걸 장바구니에 담아서 결제해! 라는 명령을 내리면, 수행한다는 거죠.
(물론 매번 모든걸 한번에 수행하진 못합니다, 이상한 에러가 날 수 있고, 로그인을 해줘야 할 수도 있고 해서, 조금의 코딩은 필요할 수 있습니다)

그리고 또 한가지, 딥 리서치를 시킬 수 있는 기능이 존재 합니다.

예를 들어 위와 같이 딥리서치를 해 보면

아래와 같은 로그를 볼 수 있습니다.

Extracted page content:
Title: – YouTube URL Source: https://www.youtube.com/watch?v=mudcagzsb9A
Markdown Content: – YouTube =============== Search Watch later Share Copy link
Info Shopping Tap to unmute 2x Image
3 If playback doesn’t begin
shortly, try restarting your device. Image
4 • Share Include playlist An
error occurred while retrieving sharing information. Please try again later.
Image 5 0:00 0:00 / 0:00•Live

  • • Scroll for details • NaN / NaN Back
    Search

INFO [src.agent.custom_agent] ✅ Task completed successfully
INFO [src.agent.custom_agent] Created GIF at agent_history.gif
INFO [controller] 🔗 Opened new tab with https://www.mdpi.com
INFO [controller] 🔄 Switched to tab 0
INFO [src.utils.deep_research] Extracted page content:
Title: https://www.google.com/search?q=LWIR%20vs%20ESWIR&udm=14 URL Source:
https://www.google.com/search?q=LWIR%20vs%20ESWIR&udm=14 Markdown Content:
https://www.google.com/search?q=LWIR%20vs%20ESWIR&udm=14 =============== * * *

  • * * About this page Our systems have detected unusual traffic from your
    computer network. This page checks to see if it’s really you sending the
    requests, and not a robot. Why did this happen? This page
    appears when Google automatically detects requests coming from your computer
    network which appear to be in violation of the Terms of Service. The block will expire
    shortly after those requests stop. In the meantime, solving the above CAPTCHA
    will let you continue to use our services. This traffic may have been sent by
    malicious software, a browser plug-in, or a script that sends automated
    requests. If you share your network connection, ask your administrator for
    help — a different computer using the same IP address may be responsible.
    Learn more Sometimes you
    may be asked to solve the CAPTCHA if you are using advanced terms that robots
    are known to use, or sending requests very quickly. IP address:
    2600:1900:0:2d04::2100 Time: 2025-02-25T08:24:04Z URL:
    https://www.google.com/search?q=LWIR%20vs%20ESWIR&udm=14

INFO [src.agent.custom_agent] ❌ Failed to complete task in maximum steps
INFO [src.agent.custom_agent] Created GIF at agent_history.gif
INFO [src.utils.deep_research] save query: MWIR camera specifications and uses at ./tmp/deep_research/ad7a689d-1305-4b5a-93b1-7c6b0d4cbac9\query_results\1-1.md
INFO [src.utils.deep_research] 🤯 Start Record Deep Thinking:
INFO [src.utils.deep_research]
Okay, so I need to figure out how to process the user’s query about SWIR, MWIR, LWIR, and ESWIR cameras. The user wants a detailed comparison between these types of cameras. Let me start by understanding each acronym.

First, SWIR stands for Short-Wave Infrared. These cameras operate in the 0.9 to 1.7 micrometer range. They’re often used in applications where some NIR wavelengths are blocked, like in glass or certain materials. I remember reading that SWIR is good for things like thermal imaging and can sometimes see through fog.

Next up is MWIR, which stands for Mid-Wave Infrared. This operates from 1.7 to 5 micrometers. MWIR cameras are typically used in military and surveillance because they work well in both day and night conditions. They can detect a wide range of thermal emissions, making them versatile.

Then there’s LWIR, or Long-Wave Infrared, covering 5 to 8 micrometers. These are often used for high-temperature objects like industrial furnaces or metal processing. They have better resolution at longer distances but might not be as effective in detecting cooler objects.

ESWIR is Extended Short-Wave Infrared, operating from 0.9 to 1.7 micrometers, similar to SWIR but maybe optimized differently. I’m a bit fuzzy on the exact differences here; perhaps ESWIR offers better sensitivity or specific spectral bands?

Looking at the current search results provided, it’s mostly about the FLIR A6780 MWIR camera. The specs mention 1.0 to 5.0 micrometers, which fits the MWIR range. It uses InSb detectors and has features like motorized focus and Gigabit Ethernet connectivity. This suggests that MWIR cameras are designed for high thermal sensitivity and flexibility in various applications.

I should structure the response by defining each camera type, their spectral ranges, key features, typical use cases, advantages, and limitations. Including technical specs like detector types (like InSb for MWIR) adds depth. I also need to ensure that each section is concise but informative, avoiding redundancy since the user emphasized minimizing information loss.

I should make sure to highlight how each camera type differs in terms of resolution, temperature range, and application suitability. For example, SWIR might be better for certain industrial inspections where LWIR isn’t as effective due to shorter wavelengths capturing different thermal signatures.

Finally, I’ll organize all this into a JSON list with summaries and reasoning on how each piece fits into the overall report. This way, the user gets a clear comparison that can be easily referenced or used in further analysis.

INFO [src.utils.deep_research] 🤯 End Record Deep Thinking
INFO [src.utils.deep_research] 🤯 Start Record Deep Thinking:
INFO [src.utils.deep_research]
Okay, so I need to figure out the differences between SWIR, MWIR, LWIR, and ESWIR cameras. The user provided some previous information which includes details on each type except for MWIR, which they just searched about. Let me start by recalling what I know.

From the Previous Recorded Information, I remember that SWIR (Short-Wave Infrared) operates in 0.9 to 1.7 µm and is good for detecting thermal emissions through glass. It’s used in industrial inspections and surveillance. LWIR (Long-Wave Infrared) covers 5 to 8 µm, ideal for high-temperature applications like furnaces but struggles with cooler objects. ESWIR extends SWIR into NIR, making it better for advanced surveillance.

Now, the current search was about MWIR cameras. The previous info had a FLIR A6780 MWIR camera which operates from 1.0 to 5.0 µm. It uses a cooled InSb detector and has high frame rates. This suggests MWIR is used in industrial and military settings, good for detailed thermal analysis.

I need to structure the JSON output with each camera type as separate entries. Each should have their spectral range, key features, applications, advantages, and disadvantages. The thinking field should explain where this info fits in a report—like introduction or analysis sections.

Wait, I should make sure not to repeat information already present. For example, SWIR’s ability to penetrate glass was mentioned before, so I don’t need to include that again for MWIR unless it adds new context.

I also need to ensure each entry has the correct URL and title if available. Since the current search result didn’t yield useful info beyond the YouTube video (which seems unhelpful), most entries will have “unknown” as source.

Let me outline each camera type:

  1. SWIR: 0.9-1.7 µm, glass penetration, industrial/surveillance.
  2. MWIR: 1.0-5.0 µm, cooled detectors, high frame rates, industrial/military.
  3. LWIR: 5-8 µm, high temp apps, poor for cool objects.
  4. ESWIR: Extends SWIR to NIR, advanced surveillance.

Each should have a summary with key points and thinking on placement in the report.

I think I’ve covered all necessary details without redundancy. Now, structuring each as JSON entries with appropriate titles and URLs where possible.

INFO [src.utils.deep_research] 🤯 End Record Deep Thinking
INFO [src.utils.deep_research] save query: LWIR camera technology and applications at ./tmp/deep_research/ad7a689d-1305-4b5a-93b1-7c6b0d4cbac9\query_results\1-2.md
INFO [src.utils.deep_research] 🤯 Start Record Deep Thinking:
INFO [src.utils.deep_research]
Okay, so I need to figure out the differences between SWIR, MWIR, LWIR, and ESWIR cameras. The user provided some previous information and a new search result about LWIR cameras. Let me start by recalling what I know from the previous data.

From before, I remember that SWIR (Short-Wave Infrared) operates in 0.9 to 1.7 µm. They can detect thermal emissions through glass and are used in industrial inspections and surveillance. MWIR (Mid-Wave Infrared) is from 1.0 to 5.0 µm, uses cooled detectors like InSb, and is good for high frame rates. It’s used in military and manufacturing. LWIR (Long-Wave Infrared) covers 5 to 8 µm, ideal for high-temperature objects and longer distances but struggles with cooler ones. ESWIR extends SWIR into NIR, up to 2.6 µm, making them better for advanced surveillance.

Now, looking at the new search result about LWIR cameras from IDTechEx. It mentions that LWIR is used in automotive for ADAS and autonomous driving because they can detect pedestrians and objects in low-light conditions. They’re passive systems using microbolometers, which are reliable but expensive. The report also talks about their future growth due to regulations like NHTSA’s requirements.

I need to extract the key points from this new result without duplicating previous info. The summary should include spectral range, technology used (microbolometers), applications in automotive for safety, and market trends regarding cost and adoption.

Thinking about how this fits into a report: it would go under the analysis section, comparing LWIR with other types. It highlights their niche but growing role in ADAS and autonomous vehicles, which ties into real-world applications and technological advancements.

INFO [src.utils.deep_research] 🤯 End Record Deep Thinking
INFO [src.utils.deep_research] 🤯 Start Record Deep Thinking:
INFO [src.utils.deep_research]
Okay, so I need to figure out the differences between SWIR, MWIR, LWIR, and ESWIR cameras. The user provided some previous information and a new search result about LWIR cameras. Let me start by recalling what I know from the previous data.

From before, I remember that SWIR (Short-Wave Infrared) operates in 0.9 to 1.7 µm. They can detect thermal emissions through glass, which is useful for surveillance and industrial inspections. ESWIR extends this range into NIR, making them better for detecting a wider range of thermal emissions.

MWIR (Mid-Wave Infrared) covers 1.0 to 5.0 µm. The FLIR A6780 example had a cooled InSb detector and high frame rates, used in industrial and military settings. LWIR (Long-Wave Infrared) operates from 5 to 8 µm, ideal for high-temperature objects like furnaces. They have better resolution at longer distances but struggle with cooler objects.

Now, looking at the new search result about LWIR cameras: it’s part of a report by IDTechEx discussing their use in automotive applications. LWIR is used for detecting pedestrians and other road users in low-light conditions because they can pick up heat signatures effectively. The market is growing due to regulations like NHTSA’s mandates for advanced AEB systems.

I need to extract the key points from this new information without duplicating what’s already known. The previous data didn’t cover automotive applications, so that’s a new angle. Also, the report mentions how LWIR will be crucial for autonomous vehicles and robotaxis because of their reliability in low-visibility conditions.

So, I should summarize the new info about LWIR’s role in ADAS, autonomous driving, and regulatory compliance. This adds context to their application beyond industrial uses. It also touches on market growth projections, which is valuable for understanding their future significance.

I need to make sure the summary includes technical specs like spectral range, applications (especially automotive), and how they compare to other camera types in terms of use cases and effectiveness. The thinking part should link this info to sections like analysis or application-specific uses in a report.

INFO [src.utils.deep_research] 🤯 End Record Deep Thinking
INFO [src.utils.deep_research] 🤯 Start Record Deep Thinking:
INFO [src.utils.deep_research]
Okay, so I need to figure out the differences between SWIR, MWIR, LWIR, and ESWIR cameras. The user provided some previous information and a new search result about LWIR cameras. Let me start by recalling what I know from the previous data.

From before, I remember that SWIR (Short-Wave Infrared) operates in 0.9 to 1.7 µm. They can see through glass, which is useful for industrial inspections and surveillance. MWIR (Mid-Wave Infrared) covers 1.0 to 5.0 µm, used in military and manufacturing with cooled detectors. LWIR (Long-Wave Infrared) works from 5 to 8 µm, ideal for high-temperature objects and automotive applications like ADAS. ESWIR extends SWIR into NIR, up to 2.6 µm, for advanced surveillance.

Now, looking at the new search result about LWIR technology and applications. It’s a detailed report from IDTechEx. The content mentions that LWIR cameras operate in 5 to 8 µm, suitable for detecting high-temperature objects and performing well in low-light conditions. They’re increasingly used in automotive for ADAS and autonomous driving because they can detect pedestrians effectively.

The report also talks about market growth driven by regulations like NHTSA’s mandates for advanced AEB. It expects significant adoption in higher SAE level vehicles. Technologically, LWIR uses microbolometers and has potential for sensor fusion with other systems like LiDAR and radar. However, it’s currently limited to high-end vehicles but is expected to become more mainstream as costs come down.

So, how does this new info fit into what I already have? Previously, I noted that LWIR was used in industrial furnaces and had limitations with cooler objects. Now, the IDTechEx report adds automotive applications, regulatory influences, and technological advancements like sensor fusion. This provides a more comprehensive understanding of LWIR’s role beyond just industrial uses.

I should make sure not to repeat information already captured. The new data emphasizes automotive applications, which wasn’t as detailed before. It also introduces market forecasts and regulatory impacts, which are important for a thorough comparison.

In terms of structure, the summary should highlight the spectral range, key features (like microbolometers), applications (especially in ADAS and autonomous driving), and mention the influence of regulations. The thinking part should note that this info is crucial for understanding automotive uses and how LWIR compares to other camera types in safety technologies.

I need to ensure that the summary includes key data points like spectral range, detector type, frame rates if available, and applications. Also, since the source URL and title are provided, I’ll include those accurately.

INFO [src.utils.deep_research] 🤯 End Record Deep Thinking
INFO [src.utils.deep_research] 🤯 Start Record Deep Thinking:
INFO [src.utils.deep_research]
Okay, so I need to figure out the differences between SWIR, MWIR, LWIR, and ESWIR cameras. The user provided some previous information and current search results, so I should use those to create a JSON list with summaries and thinking.

First, looking at the Previous Recorded Information, there are entries about each camera type. For example, SWIR operates in 0.9-1.7 µm, good for detecting through glass. MWIR is from 1.0-5.0 µm, used in industrial and military settings with high frame rates. LWIR covers 5-8 µm, ideal for high-temperature objects and automotive uses like ADAS. ESWIR extends SWIR into NIR, useful for advanced surveillance.

The current search results focus on LWIR technology and applications. It mentions that LWIR cameras are used in automotive for AEB and autonomous driving because they can detect pedestrians well in low-light conditions. They’re passive systems relying on heat signatures, which makes them reliable but limited to higher-end vehicles currently due to cost.

I need to extract the key points from these sources without redundancy. Each entry should have a URL, title, summary, and thinking about where it fits in a report.

For LWIR cameras, the IDTechEx report provides detailed info on their use in ADAS, autonomous driving, and regulatory compliance. It also talks about cost reductions making them more accessible. This is important for understanding their role compared to other camera types.

I should structure each JSON entry with these details, ensuring that key data like spectral ranges and applications are included. The thinking part should explain how each piece can be used in the report—like introduction, background, analysis sections.

So, I’ll create entries for each camera type based on the provided info, making sure to include URLs where available and “unknown” where sources aren’t specified. Each summary will capture essential details without losing important figures.

INFO [src.utils.deep_research] 🤯 End Record Deep Thinking
INFO [src.utils.deep_research] save query: Difference between SWIR and MWIR cameras at ./tmp/deep_research/ad7a689d-1305-4b5a-93b1-7c6b0d4cbac9\query_results\1-4.md
INFO [src.utils.deep_research] 🤯 Start Record Deep Thinking:
INFO [src.utils.deep_research]
Okay, so I need to figure out the differences between SWIR, MWIR, LWIR, and ESWIR cameras. The user provided some previous information, but the current search results are just a Google error message about too many requests. Let me start by recalling what I know from the Previous Recorded Information.

From there, I remember that SWIR (Short-Wave Infrared) operates in 0.9 to 1.7 µm and is good for detecting thermal emissions through glass. It’s used in industrial inspections and surveillance. MWIR (Mid-Wave Infrared) covers 1.0 to 5.0 µm, uses cooled detectors like InSb, and is used in industrial, military, and R&D applications with high frame rates.

LWIR (Long-Wave Infrared) works from 5 to 8 µm, ideal for high-temperature objects and automotive ADAS. ESWIR extends SWIR into NIR up to 2.6 µm, enhancing detection capabilities for surveillance and research.

Since the current search didn’t yield new results due to the error, I can only rely on existing data. I should structure the JSON output with each camera type’s specs, applications, pros, cons, and where they fit in a report. Make sure not to repeat information already recorded and include key details like spectral ranges and detector types.

INFO [src.utils.deep_research] 🤯 End Record Deep Thinking
INFO [src.utils.deep_research] save query: Comparison of LWIR vs ESWIR cameras at ./tmp/deep_research/ad7a689d-1305-4b5a-93b1-7c6b0d4cbac9\query_results\1-5.md
INFO [src.utils.deep_research] 🤯 Start Record Deep Thinking:
INFO [src.utils.deep_research]
Okay, so I need to figure out the differences between SWIR, MWIR, LWIR, and ESWIR cameras. The user provided a detailed search result from Axiom Optics about these types of infrared cameras. Let me start by understanding each camera type based on the information given.

First, SWIR (Short-Wave Infrared) cameras operate in the range of 0.9 to 1.7 micrometers. They detect reflected light rather than emitted heat. This makes them useful for applications like detecting defects in fruits or electronics, counterfeit detection, and art restoration. The article mentions that Sony’s SenSWIR technology extends this range up to 2.2 micrometers, which is considered ESWIR (Extended SWIR). These cameras use materials like InGaAs, Ge, or InGaAsP for detection.

Next, MWIR (Middle-Wave Infrared) cameras work in the 3 to 5 micrometer range and detect emitted heat. They are effective in industrial settings for gas leak detection and in security for long-range surveillance. The article highlights that MWIR cameras have better penetration through atmospheric conditions compared to LWIR, making them suitable for outdoor use. They often require cooling to reduce noise and use detectors like InSb or HgCdTe.

Then there’s LWIR (Long-Wave Infrared) cameras, which operate from 8 to 14 micrometers. These are typically used in military applications because they can detect heat emitted by people and vehicles. They often use microbolometers and don’t require cooling as frequently as MWIR cameras. However, cooled versions offer higher resolution for specific needs.

ESWIR (Extended SWIR) extends the SWIR range beyond 1.7 micrometers up to around 2.2 micrometers. This allows them to detect a wider range of thermal emissions, useful in advanced surveillance and scientific research where longer wavelengths are necessary.

I should summarize each type’s key features, applications, and technologies used. It’s important to note the differences in their spectral ranges, whether they detect reflected light or emitted heat, and their typical use cases. Also, mentioning the materials and cooling requirements will help differentiate them further.

INFO [src.utils.deep_research] 🤯 End Record Deep Thinking
INFO [src.utils.deep_research] 🤯 Start Record Deep Thinking:
INFO [src.utils.deep_research]
Okay, so I need to figure out the differences between SWIR, MWIR, LWIR, and ESWIR cameras. The user has already provided some previous information, but now they want a comparison specifically between LWIR and ESWIR cameras.

Looking at the current search results, it seems like there was an error because Google returned a 429 Too Many Requests when trying to access the comparison. That means I can’t get direct information from that source. So, I have to rely on the previously recorded information and any other available data.

From the previous records, I know:

  • SWIR (Short-Wave Infrared) operates in the range of 0.9 to 1.7 µm. It’s good for detecting thermal emissions through materials like glass and is used in industrial inspections and surveillance.
  • MWIR (Mid-Wave Infrared) operates from 1.0 to 5.0 µm. The FLIR A6780 MWIR camera, for example, uses a cooled InSb detector and has high frame rates up to 4,130 Hz. It’s used in industrial, military, and manufacturing R&D.
  • LWIR (Long-Wave Infrared) operates from 5 to 8 µm. It’s ideal for high-temperature applications like industrial furnaces and is used in automotive ADAS and autonomous driving because it works well in low-light conditions.
  • ESWIR (Extended Short-Wave Infrared) extends the SWIR range into NIR, up to 2.6 µm. This allows better detection of a wider range of thermal emissions, making it suitable for advanced surveillance and scientific research.

Since I can’t access new information on LWIR vs ESWIR, I’ll have to compare them based on what’s already known.

LWIR operates at longer wavelengths (5-8 µm) and is better for high-temperature objects and low-light conditions. It’s used in automotive applications because it can detect pedestrians effectively.

ESWIR extends SWIR into NIR, offering a broader spectrum (0.9 to 2.6 µm). This makes it more versatile for detecting various thermal emissions, useful in surveillance and scientific research.

So, the key differences would be their spectral ranges, typical use cases, and applications. LWIR is better for high-temperature and automotive needs, while ESWIR offers extended capabilities for broader detection.

INFO [src.utils.deep_research] 🤯 End Record Deep Thinking
INFO [src.utils.deep_research] 🤯 Start Record Deep Thinking:
INFO [src.utils.deep_research]
Okay, so I need to figure out the differences between SWIR, MWIR, LWIR, and ESWIR cameras. The user provided some previous information, but it seems like the current search didn’t yield any useful results because Google blocked it with a CAPTCHA message. That’s not helpful.

Looking at the Previous Recorded Information, I see that there are summaries about each camera type. For example, SWIR operates in 0.9 to 1.7 µm and is good for detecting thermal emissions through glass. MWIR goes from 1.0 to 5.0 µm and is used in industrial and military settings. LWIR covers 5 to 8 µm and is ideal for high-temperature objects, while ESWIR extends SWIR into the NIR spectrum up to 2.6 µm.

Since the current search didn’t give any new data, I can only rely on what’s already been recorded. So, I should structure the JSON output based on that information without adding anything new from the blocked search results.

I need to make sure each entry is concise but includes key details like spectral ranges and applications. Also, I must avoid redundancy by checking if the same info is already present. For example, there are multiple entries about LWIR in automotive applications, so I should include that once.

The thinking field should explain how each piece of information can be used in a report, maybe in sections like introduction or analysis. Since all the data is from previous searches, the URLs and titles will either be known sources or marked as unknown if not attributed.

I’ll go through each entry in Previous Recorded Information, extract the necessary details, ensure they’re unique, and format them into JSON with appropriate thinking on their placement in a report.

INFO [src.utils.deep_research] 🤯 End Record Deep Thinking
<마치 추론 모델인양..열심히 추론하는 모습 ㄷㄷㄷㄷㄷㄷㄷ>

이런 식으로 결과물을 마크다운으로 생성합니다.

내용물을 보면 마크다운 문법으로 엄청난 양을 리서치를 해 놨네요;;
(참고로 3090 24g모델 한장으로 돌린거라 거진 30분 넘게 돌아간거 같습니다;;;;)
(1번 문서에는 출처가 정리되고 2~3번 문서에는 내용이 정리되어 있네요)

이렇게 딥리서치를 구동할 수 있는 장점이 있어서 퍼플렉시티나 챗gpt의 딥리서치 보다 조금 더 풍부한 리서치를 시킬 수 있는 장점이 있습니다.

이외 다양한 활용법으로는

🎯 1. 데이터 크롤링 (Web Scraping)

✔️ 예제: 뉴스 사이트에서 최신 기사 수집

  • 특정 뉴스 사이트에 접속하여 제목, 링크, 요약 등을 자동으로 가져올 수 있음.
  • CSS Selector 또는 XPath를 활용하여 원하는 요소를 추출 가능.

✅ 사용 예제

javascript복사편집const browser = await browserUse.launch();
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com/');
const articles = await page.$$eval('.titleline a', links => links.map(link => link.innerText));
console.log(articles);
await browser.close();

📝 활용 예시

  • 특정 키워드가 포함된 뉴스만 자동으로 수집 후 Telegram 알림 전송
  • E-Commerce 사이트에서 특정 상품 가격 변동 감지

🎯 2. 자동 로그인 및 웹사이트 조작

✔️ 예제: Gmail 자동 로그인 및 메일 검색

  • ID/PW 입력 후 로그인하여 자동으로 특정 메일을 검색할 수 있음.
  • CAPTCHA가 있다면 AI Solver와 결합하여 자동 해결 가능.

✅ 사용 예제

javascript복사편집await page.type('#identifierId', 'your-email@gmail.com');
await page.click('#identifierNext');
await page.waitForSelector('input[type="password"]');
await page.type('input[type="password"]', 'your-password');
await page.click('#passwordNext');
await page.waitForNavigation();
console.log('로그인 완료');

📝 활용 예시

  • 특정 웹사이트 로그인 후 데이터 다운로드
  • 자동 로그인을 이용한 매크로 작업 (예: 온라인 강의 자동 출석)

🎯 3. 다중 계정 관리

✔️ 예제: 여러 계정으로 SNS 자동화

  • Twitter, Instagram, Facebook 등의 계정 여러 개를 유지하면서 자동화 가능.
  • 각 브라우저 세션이 독립적이므로 쿠키와 세션 충돌 없이 실행 가능.

✅ 사용 예제

javascript복사편집const browser1 = await browserUse.launch({ userDataDir: './user1' });
const page1 = await browser1.newPage();
await page1.goto('https://twitter.com/login');

const browser2 = await browserUse.launch({ userDataDir: './user2' });
const page2 = await browser2.newPage();
await page2.goto('https://twitter.com/login');

📝 활용 예시

  • 여러 개의 SNS 계정으로 자동 포스팅
  • E-commerce 다중 계정 운영 (예: 쿠팡, G마켓 자동 로그인 및 재고 확인)

🎯 4. UI 테스트 자동화

✔️ 예제: 웹사이트 UI 자동 테스트

  • 개발자가 만든 웹 애플리케이션이 정상적으로 동작하는지 확인할 수 있음.
  • 버튼 클릭, 입력, 페이지 이동 등 UI 테스트 시나리오를 작성하여 자동화 가능.

✅ 사용 예제

javascript복사편집await page.goto('https://your-website.com');
await page.click('#login-button');
await page.type('#username', 'testuser');
await page.type('#password', 'password123');
await page.click('#submit');
await page.waitForNavigation();
console.log('로그인 테스트 성공');

📝 활용 예시

  • 프론트엔드 개발자가 배포 전에 UI 자동 테스트 실행
  • 쇼핑몰 결제 프로세스 테스트 자동화

🎯 5. 특정 사이트 자동화 (예: 예약, 티켓팅)

✔️ 예제: 영화 예매 자동화

  • 특정 사이트에서 예매가 열리면 자동으로 좌석을 선택하고 결제 가능.

✅ 사용 예제

javascript복사편집await page.goto('https://cinema-site.com');
await page.click('#movie-select');
await page.select('#time-slot', '19:00');
await page.click('#seat-selection');
await page.click('#confirm-payment');
console.log('영화 예매 완료');

📝 활용 예시

  • 콘서트 티켓팅 자동화
  • 병원 예약 자동화

🎯 6. API 트래픽 분석 및 보안 테스트

✔️ 예제: 특정 사이트의 API 요청 자동 수집

  • 웹사이트에서 실행되는 모든 네트워크 요청을 기록하여 API 트래픽을 분석 가능.
  • 이를 활용하면 웹 보안 및 취약점 테스트(예: CSRF, XSS) 수행 가능.

✅ 사용 예제

javascript복사편집page.on('request', request => console.log('Request:', request.url()));
page.on('response', response => console.log('Response:', response.url()));
await page.goto('https://target-site.com');

📝 활용 예시

  • 특정 API가 요청하는 데이터 구조 분석 (예: 로그인 API, 결제 API)
  • 보안 테스터가 웹사이트의 취약점 점검

🎯 7. VPN 및 프록시 우회

✔️ 예제: 프록시 서버를 사용한 익명 브라우징

  • 특정 국가에서만 접속 가능한 사이트에 접근할 때 유용함.
  • 프록시를 설정하여 IP 차단 우회 가능.

✅ 사용 예제

javascript복사편집const browser = await browserUse.launch({
  args: ['--proxy-server=http://proxy-ip:port']
});

📝 활용 예시

  • 지역 제한이 걸린 사이트에 접속 (예: 해외 한정 스트리밍 서비스)
  • 크롤링 탐지를 우회하여 데이터를 수집

🎯 8. 채팅봇 및 고객 응대 자동화

✔️ 예제: 웹사이트 챗봇 자동 응답

  • 고객 문의를 자동 응답하는 챗봇을 구현할 수 있음.
  • Telegram, Discord 등의 API와 연동하여 자동 채팅 가능.

✅ 사용 예제

javascript복사편집await page.type('#chat-input', '안녕하세요! 무엇을 도와드릴까요?');
await page.click('#send-button');

📝 활용 예시

  • 웹사이트에 AI 챗봇 자동 응답 구현
  • Telegram과 연동하여 실시간 채팅 자동화

🎯 9. 광고 및 마케팅 자동화

✔️ 예제: 자동 댓글 및 좋아요

  • 특정 SNS 플랫폼에서 자동으로 댓글을 달거나 좋아요를 누를 수 있음.
  • 이를 활용하여 마케팅 자동화를 구축 가능.

✅ 사용 예제

javascript복사편집await page.goto('https://instagram.com/someprofile');
await page.click('.like-button');
await page.type('.comment-box', '좋은 게시물이네요!');
await page.click('.submit-comment');

📝 활용 예시

  • 인스타그램, 트위터 자동 댓글 및 좋아요
  • 상품 리뷰 자동화

위와 같은 것들을 할 수 있지요.

자 그럼 설치방법을 안내해 보겠습니다.

📌 Windows에서 browser-use 설치 방법 (단계별 가이드)

Windows 환경에서 browser-use를 설치하고 실행하는 방법을 단계별로 안내합니다.


🚀 1. 필수 요구 사항 확인

설치를 진행하기 전에 필요한 도구가 설치되어 있는지 확인하세요.

🔹 ✅ Node.js 설치

browser-use는 Node.js 기반으로 실행되므로, 먼저 Node.js를 설치해야 합니다.

  1. Node.js 공식 웹사이트에 접속합니다.
  2. LTS (Long-Term Support) 버전을 다운로드합니다.
  3. 설치 파일을 실행하고 기본 설정으로 설치를 완료합니다.
  4. 설치 후, 명령 프롬프트(CMD) 또는 PowerShell을 열어 다음 명령어를 입력하여 정상 설치 여부를 확인합니다.powershell복사편집node -v npm -v 예시 출력:scss복사편집v18.16.0 (Node.js 버전) 9.5.1 (npm 버전)

🔹 ✅ Git 설치 (필요한 경우)

browser-use 저장소를 클론(clone)하려면 Git이 필요합니다.

  1. Git 공식 웹사이트에서 최신 버전을 다운로드합니다.
  2. 설치 파일을 실행하고 기본 설정으로 설치합니다.
  3. 설치 후, 명령 프롬프트(CMD) 또는 PowerShell을 열어 다음 명령어를 입력하여 정상 설치 여부를 확인합니다.powershell복사편집git --version 예시 출력:nginx복사편집git version 2.41.0.windows.1

🚀 2. browser-use 다운로드 및 설치

이제 browser-use를 다운로드하고 실행할 준비를 합니다.

🔹 ✅ browser-use 클론 (Git 사용)

PowerShell 또는 CMD에서 실행

powershell복사편집git clone https://github.com/browser-use/browser-use.git
cd browser-use

위 과정이 끝나면 browser-use 폴더로 이동합니다.

🔹 ✅ 의존성 패키지 설치

powershell복사편집npm install
  • 이 명령어는 package.json에 정의된 모든 필수 모듈을 설치합니다.
  • 정상적으로 설치되면 node_modules 폴더가 생성됩니다.

🚀 3. browser-use 실행

이제 browser-use를 실행할 차례입니다.

🔹 ✅ 실행 명령어

powershell복사편집npm start
  • 실행이 성공하면 콘솔에 서버 실행 메시지가 출력됩니다.

✅ 기본 포트: http://localhost:3000
✅ Web UI 접속: 브라우저를 열고 http://localhost:3000으로 접속


🚀 4. 추가 설정 및 구성

🔹 ✅ 포트 변경

기본 포트(3000)을 변경하려면 .env 파일을 수정하거나 실행할 때 환경 변수를 설정할 수 있습니다.

1) .env 파일 수정

ini복사편집PORT=8080

2) 실행할 때 직접 포트 설정

powershell복사편집set PORT=8080 && npm start

🚀 5. browser-use를 백그라운드에서 실행

🔹 ✅ pm2를 사용하여 실행 (권장)

pm2는 Node.js 애플리케이션을 백그라운드에서 실행하는 도구입니다.

  1. pm2 설치powershell복사편집npm install -g pm2
  2. browser-use 실행powershell복사편집pm2 start npm --name "browser-use" -- start
  3. 실행 확인powershell복사편집pm2 list
  4. 시스템 시작 시 자동 실행 설정powershell복사편집pm2 startup pm2 save

🚀 6. 방화벽 및 네트워크 설정 (선택 사항)

만약 원격에서 browser-use에 접속하려면 Windows 방화벽에서 포트를 열어야 합니다.

🔹 ✅ Windows 방화벽에서 포트 열기

powershell복사편집netsh advfirewall firewall add rule name="browser-use" dir=in action=allow protocol=TCP localport=3000

✅ 사용자 컴퓨터에서 http://<IP>:3000 으로 접속 가능


🚀 7. 실행 및 테스트

설치가 끝났다면, 웹 브라우저에서 http://localhost:3000을 입력하여 browser-use Web UI가 정상적으로 작동하는지 확인하세요.

✅ 실행 후 정상적으로 로딩되면, browser-use를 활용하여 웹 자동화 및 크롤링을 진행할 수 있습니다.


🎯 정리

단계설명
1. 필수 요구 사항 확인Node.js 및 Git 설치
2. browser-use 다운로드Git으로 소스 코드 클론
3. 의존성 설치npm install 실행
4. 실행npm start 또는 pm2 사용
5. 포트 변경 (선택 사항).env 파일 수정 또는 실행 시 환경 변수 설정
6. 방화벽 설정 (선택 사항)Windows 방화벽에서 포트 열기
7. 테스트http://localhost:3000 접속


옵시디언(Obsidian) 이제 업무용으로도 무료 사용 가능!

그동안 개인 사용자는 무료였던 옵시디언, 그러나 업무용으로 사용하려면 라이선스 문제가 있었습니다.
그러나 20일 부터는 상업적 사용도 무료로 라이선스가 변경되었습니다.

자세한 내용은 아래 원문과 번역본을 참고해 주세요.

번역본

Obsidian 상업 라이선스가 선택 사항으로 변경되었습니다.

오늘부터 Obsidian의 상업 라이선스(Commercial License)가 선택 사항이 됩니다. 이제 누구나 업무용으로 무료로 Obsidian을 사용할 수 있습니다.
Obsidian이 귀하의 조직에 도움이 된다면, 여전히 상업 라이선스를 구매하여 개발을 지원할 수 있습니다.

변경되는 사항

✔ 아무것도 달라지지 않습니다.
✔ 계정이 필요하지 않습니다.
✔ 광고 없음, 추적 없음, 숨겨진 조건 없음.
✔ 데이터는 사용자의 완전한 통제 하에 있으며, 로컬에 Markdown 파일로 저장됩니다.
✔ 모든 기능을 제한 없이 무료로 사용할 수 있습니다.

왜 이러한 변화를 선택했을까요?

단순함(Simplicity) 때문입니다. 기존의 상업 라이선스 정책은 혼란을 초래하고 가격 구조를 불필요하게 복잡하게 만들었습니다. 또한, **Obsidian Manifesto(Obsidian 선언문)**에서 밝힌 바와 같이,

“우리는 모든 사람들이 명확하게 사고하고 효과적으로 아이디어를 정리할 수 있는 도구를 가져야 한다고 믿습니다.”
이러한 원칙을 더욱 충실히 따르기 위한 결정입니다.

10,000개 이상의 조직에서 Obsidian을 사용하고 있습니다.

Obsidian은 정부, 사이버 보안, 의료, 금융과 같은 보안이 중요한 환경에서 널리 사용됩니다.
Amazon과 Google을 포함한 세계 최대 규모의 조직에서도 수천 명의 직원이 매일 Obsidian을 사용하고 있습니다.
이 팀들은 보다 효과적으로 사고하고, 데이터의 완전한 소유권을 유지하기 위해 Obsidian을 신뢰합니다.

상업 라이선스가 선택 사항으로 변경됩니다.

기존에는 직원이 2명 이상인 기업이 Obsidian을 업무용으로 사용하려면 상업 라이선스를 구매해야 했습니다.
하지만 이제는 필수가 아니라 선택 사항입니다. 다만, 조직이 Obsidian을 지원하고 싶다면 여전히 라이선스를 구매할 수 있습니다.
이는 개인 사용자용 Catalyst 라이선스와 유사한 방식입니다.

또한, Obsidian을 지원하는 조직은 ‘Obsidian Enterprise’ 페이지에서 소개됩니다.
귀사의 로고를 여기에 표시하려면 25개 이상의 라이선스를 구매하면 됩니다.

Obsidian은 100% 사용자 지원으로 운영됩니다.

Obsidian은 여전히 Sync, Publish와 같은 추가 서비스를 통해 운영됩니다.
미래에는 팀을 위한 추가 서비스를 제공할 계획이지만, 이 역시 선택 사항으로 남을 것입니다.

💜 Obsidian을 사랑해 주셔서 감사합니다!

Suno의 경쟁자 음악 생성 AI 리퓨전(riffusion) – 현재 무료

suno ai는 음악 생성 AI로 너무나도 유명하죠. 버전 업데이트를 할 수록 막강해지는 음악 생성으로, 이제는 어느정도 궤도에 올라온것 같습니다. (무료 티어와 유료 티어의 차이도 있고 ㅠㅠ)

이러한 음악 생성 AI시장에 혜성처럼 등장한 리퓨전은 현재 베타 버전이지만 무료로 충분히 경쟁력있는 고음질 음악을 생성할 수 있습니다.

아직까지 음질은 suno가 좀 더 낫다는 평가를 받고 있지만, 무료/유료 티어 차이가 없는 리퓨전도 한번 사용해 보시는게 어떨까 싶습니다.