RedPlug's Tory

하고 있는 게임 중에 MHNow 라는 게임이 있고 컨텐츠 중에 하나가 무기별로 빌드를 짜는 컨텐츠가 있음

보통 국내 커뮤니티 사이트에서 보거나 mhn.quest에서 빌드를 짜고 저장을해두는 편인데 이걸 매번 스샷찍고 정리하고 하는게 귀찮은 상황 + 바이브 코딩에 대해서 여기저기 듣기는 했었는데 궁금해서 한번 시도를 해봄

처음에 원했던 기능은 mhn.quest 에서 특정 빌드에 대한 링크를 제공을 해줘서 해당 링크를 넣으면 스크린샷과 함께 간단하게 검색 혹은 모아서 볼 수 있는 페이지를 만들고자 함 물론 아는사람들과 공유하기 위한 목적도 있었음

처음에는 제미나이 한테 질문

이왕 하는김에 안써본 버셀을 써보자고해서 물어보니 답을 받고 기술스택하고 구현방식에 대해서 알려줬는데

잘 모르겠다고 다시 처음부터 하나 하나 천천히 알려달라고 물어보니 상세하게 가이드를 주기 시작

 - 우선 처음에 시도한 방식은 Next.js 프로젝트 생성 어느정도 구현 한 후에 github에 코드를 푸시하게 되면 연결된 vercel쪽으로 자동으로 deploy가 되면서 웹페이지를 띄워주는 구조로 생성 이후 업데이트를 까지 확인 다만 구현된 방식이 Local Storage 방식이었기 때문에 같이 하는 사람들과 공유가 불가능 한 상태여서 Vercel 에서 제공해 주는 Storage(redis)와 연결해서 사용하는 것으로 전환 해서 최초 구성을 완료.

다만 크롬을띄워서 빌드 스크린샷을 찍어야 하는 과정이 있었기 때문에 vercel 무료로 제공받는 툴에서는 메모리 부족으로 실패하는 케이스가 계속 발생 다른 공간에 구성하는걸로 변경을 진행

- Oracle Cloud에 구성되 있는 무료 VM + Docker 환경으로 전환 해서 구성하였으나 CPU 문제인건지 크롬 실행이 정상적으로 되지 않아서 포기

- 다음으로 집에 구성해둔 Proxmox 서버 내 올려둔 Docker VM으로 다시 전환해서 최종적으로 하기와 같은 구성으로 띄워놓은 상태

- 현재는 외부에서 접근은 NPM Proxy 통해서 https 통해서 들어올 수 있도록 구성해둠

- 시간은 토~일 해서 이틀정도 소요

- 사용 툴은 너무많이 물어봐서 토큰이 떨어져서 바꾸면서 진행 했는데 개인적으로는 CursorAI가 유용했던 느낌
  Gemini + VS Code -> CursorAI -> 다음날 VS Code + Gemini Code Assist(GeminiCLI)

복잡한 시스템 구현은 아무래도 힘들겠지만 개인적인 프로젝트나 필요에 의해서 구현하는 웹사이트는 혼자서 구현이 가능할 정도는 되는것 같음. 물어보면 자꾸 딴소리해서 고런 건아직 좀문제가 있으려나 라는 생각도 드는데  프롬프트를 얼마나 세세하게 그리고 명확하게 얘기를 해주는거에 따라 답변의 질이 차이가 많이 난다는 것도 좀 느끼게 된 계기

기능 : 빌드 링크 추가, 빌드명 검색, 몬스터, 무기별 필터링, 추가, 삭제, 빌드명 입력, 설명입력, 카드 생성한 날짜 

 

OPNsense에서 DDNS 적용 방법을 설명합니다.

환경

- OPNSense Ver : 24.7.12_2

- CloudFlare 연동하여 업데이트 

1. Cloudflare 로그인 > 우측 상단 사람모양 > 내 프로필 > API 토큰 > Global API Key 보기

2. 압호 입력

3. API 키 복사

4. OPNsense > System > Firmware > Plugins > Plugins > os-ddclient 검색 > + 버튼 눌러서 설치
* 설치 과정 중에 필요한 사항은 진행(저 같은 경우는 업데이트 요구 사항이 있었음)  

5. Services > Dynamic DNS > Settings > 우측 상단에 서비스 시작 안되있을 경우 시작 > + 버튼 클릭

6. 필요한 값 입력

- Service : Cloudflare

- Username : 공란

- Password : 위에서 복사한 Global API Key

- Zone : 작업이 필요한 Zone 입력

- Hostname : DDNS 적용이 필요한 호스트네임, 해당 호스트네임은 Cloudflare에 사전에 입력되어 있어야 함

- Check ip method : cloudflare-ipv4

- Interface to monitor :  WAN

- 나머지는 기본 값 입력 후 Save 

정상적으로 적용됬을 경우 OPNsense Dynamic DNS Log File 에 로그가 나오며 실제 Cloudflare에도 업데이트가 되어있다.

 

참고 문서

https://docs.opnsense.org/manual/dynamic_dns.html

광고 차단 목적으로 집에서 Pi-hole을 사용 중입니다.

Proxmox로 테스트 + 사용 목적으로 구성해 놓은 서버들은 CNAME으로 NPM(Nginx Proxy Manager) A레코드로 등록 해두고 proxy로 접근해서 Let's Encrypt https로 접근 하도록 해놓은 구성인데요.

이게 매번 등록하는 작업하다보니 아래와 같이 계속 늘어나서 많아지고 있는데 실상 바라봐야 하는 주소는 대부분 NPM주소 하나라 내부에서 사용 하는 도메인에 대해서 와일드 카드를 적용 하고자 합니다.

와일드 카드 등록은 UI상에서 지원하지 않고 conf을 수정하여야 합니다. 

등록을 계속 하다보니 엄청 많아졌습니다

우선 Pi-hole 서버로 ssh 접근 후 02-my-wildcard-dns.conf 파일에 원하는 내용을 추가해줍니다. 위치와 방식은 아래와 같습니다.

# 원하는 내용 추가
echo "address=/{사용하고자하는도메인}/{넘길IP주소}" >> /etc/dnsmasq.d/02-my-wildcard-dns.conf

# 서비스 재시작
systemctl restart pihole-FTL

서비스 재시작 후 해당 서버를 DNS로 바라보는 장비에서는 무조건 NPM을 바라보도록 설정되게 됩니다.

ping aaa.redplug.com

ping ttteeesss.redplug.com

이후 등록되지 않은 레코드에 대해서만 해당 IP로 넘어가게되고 별도로 등록한 레코드등은 해당 설정을 따라가게되기 때문에 필요한 레코드만 등록해서 사용 하면 됩니다.

PS C:\Windows\system32> install-module PSWindowsupdate
경고: Unable to resolve package source 'https://www.powershellgallery.com/api/v2'.
PackageManagement\Install-Package : 지정된 검색 조건 및 패키지 이름 'PSWindowsupdate'에 대해 일치하는 항목을 찾을 수 없습니다. 사용 가능한 모든 등록된 패키지 원본을 확인하려면 Get-PSRepository를 사용하세요.
위치 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1772 문자:21
+ ...          $null = PackageManagement\Install-Package @PSBoundParameters
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], Exception
    + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage

TLS 1.2로 변경

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

후 설치진행

아두이노 키트

ETC2024. 7. 21. 11:04

키트를 구입해서 책보면서 공부중인데 재미있네요

mariadb 백업 복원

SQL2023. 12. 9. 11:04

전체 db 백업

mysqldump -uroot --all-databases > backup.sql

전체 나 특정 db 복원

mysql -uaccount -ppassword < backup.sql
mysql -uaccount -ppassword dbname < backup.sql

톰캣 -> bin폴더 -> setenv.bat 파일 생성 -> 하기 입력 -> startup.bat 파일 실행해서 프로파일 확인

set SPRING_PROFILES_ACTIVE=local

 

PS C:\Windows\system32> Install-Module PSSlack -Force
WARNING: Unable to download from URI 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409' to ''.
WARNING: Unable to download the list of available providers. Check your internet connection.
PackageManagement\Install-PackageProvider : No match was found for the specified search criteria for the provider 'NuGet'. The package provider requires 
'PackageManagement' and 'Provider' tags. Please check if the specified package has the tags.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7405 char:21
+ ...     $null = PackageManagement\Install-PackageProvider -Name $script:N ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (Microsoft.Power...PackageProvider:InstallPackageProvider) [Install-PackageProvider], Exception
    + FullyQualifiedErrorId : NoMatchFoundForProvider,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackageProvider
 
PackageManagement\Import-PackageProvider : No match was found for the specified search criteria and provider name 'NuGet'. Try 'Get-PackageProvider -ListAvailable' to 
see if the provider exists on the system.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7411 char:21
+ ...     $null = PackageManagement\Import-PackageProvider -Name $script:Nu ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (NuGet:String) [Import-PackageProvider], Exception
    + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.ImportPackageProvider
 
WARNING: Unable to download from URI 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409' to ''.
WARNING: Unable to download the list of available providers. Check your internet connection.
PackageManagement\Get-PackageProvider : Unable to find package provider 'NuGet'. It may not be imported yet. Try 'Get-PackageProvider -ListAvailable'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7415 char:30
+ ... tProvider = PackageManagement\Get-PackageProvider -Name $script:NuGet ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...PackageProvider:GetPackageProvider) [Get-PackageProvider], Exception
    + FullyQualifiedErrorId : UnknownProviderFromActivatedList,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackageProvider
 
Install-Module : NuGet provider is required to interact with NuGet-based repositories. Please ensure that '2.8.5.201' or newer version of NuGet provider is installed.
At line:1 char:1
+ Install-Module PSSlack -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Install-Module], InvalidOperationException
    + FullyQualifiedErrorId : CouldNotInstallNuGetProvider,Install-Module
    

PS C:\Windows\system32>  [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12


PS C:\Windows\system32>  Install-PackageProvider -Name NuGet

 

하기명령어 실행 후 설치 진행

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Install-PackageProvider -Name NuGet

다른 DB연결을 위한 디비링크 플러그인 Connect Storage Engine

MariaDB에서는 10.2 버젼 이후부터 정식적으로 지원 하기 때문에 10.2 버젼 이상 설치를 권장,

https://mariadb.com/kb/en/connect/

Connect VersionIntroducedMaturity

Connect 1.07.0002 MariaDB 10.5.9, MariaDB 10.4.18, MariaDB 10.3.28, MariaDB 10.2.36 Stable
Connect 1.07.0001 MariaDB 10.4.12, MariaDB 10.3.22, MariaDB 10.2.31, MariaDB 10.1.44 Stable
Connect 1.06.0010 MariaDB 10.4.8, MariaDB 10.3.18, MariaDB 10.2.27 Stable
Connect 1.06.0007 MariaDB 10.3.6, MariaDB 10.2.14, MariaDB 10.1.33 Stable
Connect 1.06.0005 MariaDB 10.3.3, MariaDB 10.2.10, MariaDB 10.1.29 Stable
Connect 1.06.0004 MariaDB 10.3.2, MariaDB 10.2.9, MariaDB 10.1.28 Stable
Connect 1.06.0001 MariaDB 10.3.1, MariaDB 10.2.8, MariaDB 10.1.24 Beta
Connect 1.05.0003 MariaDB 10.3.0, MariaDB 10.2.5, MariaDB 10.1.22 Stable
Connect 1.05.0001 MariaDB 10.2.4, MariaDB 10.1.21 Stable
Connect 1.04.0008 MariaDB 10.2.2, MariaDB 10.1.17 Stable
Connect 1.04.0006 MariaDB 10.2.0, MariaDB 10.1.13, Stable
Connect 1.04.0005 MariaDB 10.1.10 Beta
Connect 1.04.0003 MariaDB 10.1.9 Beta

 

윈도우에서는 별도의 과정없이 플러그인만 설치 하면 설정이 가능하나

리눅스에서는 별도 설치 작업 후 플러그인 인스톨이 필요 함.

https://mariadb.com/kb/en/installing-the-connect-storage-engine/

 

Installing the CONNECT Storage Engine

Installing the CONNECT storage engine.

mariadb.com

 

# CentOS. RHEL
sudo yum install MariaDB-connect-engine

# Debian, Ubuntu
sudo apt-get install mariadb-plugin-connect

# SLES, OpenSUSE
sudo zypper install MariaDB-connect-engine

 

상기과정을 거친 후 DB에 접속하여 플러그인을 설치 진행하면 완료

# DB로그인
mysql -uroot -p

# 플러그인 설치
INSTALL SONAME 'ha_connect';

# 설치 플러그인 확인
SHOW PLUGINS;

 

 

Esxi 상에서 테스트 목적으로 기존에 만들어져 있던 윈도우 VM을 켜서 테스트를 진행하는 도중 일정시간이 지나면 VM이 shutdown 되는 증상이 발견되었으며, 해당 증상에 대해서 확인을 해보니 한가지 특이점이 있었습니다.

한시간 마다 서버가 shutdown 되는 증상이었습니다.(...처음에 시간도 생각못해서 꺼지면 켜고 꺼지면 켜고 몇번 반복 했네요..)

확인 해본 사항으로는

esxi쪽 CPU/메모리 부족 : 특이사항 없음

누군가가 끈 흔적(로그 등) : 특이사항 없음

서버 내 스케쥴 : 특이사항 없음

그러던 와중 shutdown 시점에 eventlog에 뭔가 남아있는게 있나 싶어서 찾아봤는데

The process C:\Windows\system32\wlms\wlms.exe (XXXXX) has initiated the shutdown of computer XXXXX on behalf of user NT AUTHORITY\SYSTEM for the following reason: Other (Planned) Reason Code: 0x80000000

계획된 시스템 OFF...?

관련 해서 구글링을 진행하니 하기와 같은 내용을 찾을 수 있었습니다. (라이선스 만료되면 1시간 마다 꺼짐)

After Windows license expires, you will see a similar message as shown below and then VM will auto shutdown every hour.

...테스트 하고 있던 서버도 license Expired 문구가 떠있던 서버었던 터라 라이선스를 넣거나 막을 방법을 찾아야 했고

WLMS(Windows Licensing Monitoring Service)를 OFF시키면 된다는 내용을 확인 했고

하기와 같이 가이드 대로 진행하였습니다.

1. psExec Tools 다운로드 및 압축 해제 : https://learn.microsoft.com/en-us/sysinternals/downloads/psexec

2. 관리자 모드로 cmd 창오픈

3. psexec폴더로 이동 후 psexec -i -s cmd.exe

4. 새로 뜬 커맨드 창에 whoami로 system 계정 확인( WLSM off권한)

5. services.msc로 서비스 창 띄운 후  WLMS 서비스 disabled

6. 실행된 서비스를 멈출 수 없기 때문에 재부팅을 진행후에 실제로 서비스가 stop 되었는지 확인

7. 정상 작동 확인

실제로 상기 작업 진행 후 서버가 재부팅 되지 않음을 확인하였습니다.

새벽에 일어나서 한 시간마다 서버켜는 요상한 짓은 하지 않아도 되게 되었습니다.

다만 상기 방법은 정상인 방법은 아니기 때문에 실 환경에서는 사용하지 않고 테스트 환경에서 급하게 사용이 필요한 경우에 사용하시면 될 것 같습니다.

 

참고 링크

https://digitalitskills.com/how-to-stop-windows-server-auto-shutdown-every-hour-after-license-expire/