반응형

Ubuntu 22.04에서 기본적으로 제공되는 방화벽 도구는 UFW(Uncomplicated Firewall) 임 UFW는 간단한 명령어로 방화벽을 설정하고 관리할 수 있도록 도와주며, 아래는 UFW를 사용해 방화벽을 설정하는 방법임.

참고
SSH 연결 상태에서 진행시 default incoming deny rule이 먼저 적용시에 연결이 끊길경우 서버에 물리적으로 모니터 연결해서 붙어야함.
혹시 불안한 경우에는 아래와 같이 진행함.

SSH 포트 허용:

sudo ufw allow ssh

기본 정책 설정 (모든 들어오는 트래픽 차단):

sudo ufw default deny incoming

마지막으로 방화벽을 활성화:

sudo ufw enable

아래는 일반적인 설정 방법

  1. UFW 설치 확인
    일반적으로 UFW는 Ubuntu에 기본 설치되어 있지만, 설치되지 않은 경우에는 다음 명령어로 설치할 수 있음:
sudo apt update  
sudo apt install ufw  
  1. 방화벽 상태 확인
    현재 UFW가 활성화되어 있는지 확인:
sudo ufw status  

이 명령어를 실행하면 방화벽이 활성화되어 있는지, 어떤 규칙이 설정되어 있는지 알 수 있음.

  1. 기본 정책 설정
    UFW의 기본 정책을 설정함. 일반적으로 모든 들어오는 트래픽은 차단하고 나가는 트래픽은 허용하는 방식으로 설정함.
sudo ufw default deny incoming  
sudo ufw default allow outgoing  
  1. 특정 포트 허용하기
    자주 사용하는 서비스의 포트를 허용하려면 다음과 같이 설정함.

SSH 포트 (기본 22번 포트)를 허용:

sudo ufw allow ssh  

HTTP(80번 포트)와 HTTPS(443번 포트)를 허용:

sudo ufw allow http  
sudo ufw allow https  

특정 포트를 허용(ex. 8080 포트):

sudo ufw allow 8080  
  1. IP 주소 또는 네트워크 대역 허용
    특정 IP 주소나 네트워크 대역만 허용하려면 다음과 같이 설정.

특정 IP 주소에서 SSH 접속을 허용:

sudo ufw allow from 192.168.1.100 to any port 22  

특정 대역 (예: 192.168.1.0/24)에서 특정 포트를 허용:


sudo ufw allow from 192.168.1.0/24 to any port 80  
  1. UFW 활성화 및 비활성화
    방화벽을 활성화:
sudo ufw enable  

비활성화하려면:

sudo ufw disable  
  1. 방화벽 규칙 삭제
    잘못 설정된 규칙을 삭제하고 싶을 때는 delete 옵션을 사용.

ex) 8080 포트를 허용하는 규칙을 삭제:

sudo ufw delete allow 8080  
  1. 방화벽 로그 설정
    방화벽의 로그를 활성화:
sudo ufw logging on  

로그를 비활성화:

sudo ufw logging off  
  1. 전체 상태 확인
    설정한 방화벽 규칙을 다시 확인하려면 다음 명령어를 사용함.
sudo ufw status verbose  

이렇게 하면 방화벽의 상태와 함께 설정된 규칙들을 자세히 볼 수 있음.

반응형
반응형

티스토리 스킨

티스토리는 다양한 스킨을 제공하지만, 처음에 티스토리 시작할때는 이쁜 스킨도 많았던거 같은데, Customize가 가능해서 그런지 이제 기본 스킨은 너무 투박하고 쓸만한게 없는거 같아서 새로운 것을 변경하고자 검색해봤는데, 실수로 "티스토리 스킨" 이라고 검색해야 하는데, "에드센스 스킨"이라고 검색하는 바람에 찾게된 중요한 내용이 있었다.

변경후 많은 사람들이 당황해 한게 제목부터 느껴진다.

티스토리 변경시 에드센스 스킨

티스토리 스킨을 변경할 경우 블로그(사이트)의 layout등 구조의 변경이 발생한다.
google에서는 그 layout의 변경이 새로운 사이트로 인식을 하게 될 수 있다고 하고, 검색을 해보니 고정적인 수익이 0이 된다는 내용의 글들이 많다.

수익이 없지만, 스킨을 변경 안하기로...

이 블로그는 뭐 10년에 $5 벌릴까 말까하는 딱히 수익성이 있는 블로그가 아니다.
그러함에도 스킨을 변경하지 않기로 한 것은 상위 노출 이 현재 되어있는 글들 마저도 모두 신규 사이트로 인식되어, 모두 노출이 초기화 될 수 있다는 점이다. 굳이 돈은 안되지만 쓸데없는 욕심으로 상위 노출된 글들은 포기하기가 껄끄럽다. 그렇다고 엄청 블로그가 이뻐지는 것은 아니고...

자세한 구글의 설명

아래는 위에 설명한 내용들의 구글의 답변 링크이다.

https://support.google.com/adsense/thread/19440243/%EC%8A%A4%ED%82%A8-%EB%B3%80%EA%B2%BD-%ED%9B%84-%EC%95%A0%EB%93%9C%EC%84%BC%EC%8A%A4-%EC%88%98%EC%9D%B5%EC%9D%B4-%EC%95%88%EB%82%98%EC%9A%94?hl=ko

 

스킨 변경 후 애드센스 수익이 안나요 - Google AdSense 커뮤니티

 

support.google.com

 

반응형
반응형

포인트

  • 그냥 watch 사용시에는 어디가 바꼈는지 매번 눈으로 확인해야 하는데, 이것을 diff 명령어로 틀린 부분만 표시할 수 있음.
  • 색을 표시하는 부분은 색코드를 직접 이용할 수 있지만 watch 명령어와 사용시 색이 표시 되지 않고 색 코드가 그대로 노출되는 되기 때문에 일반적으로 output에 색코드를 직접 기입하는 대신에 tput을 이용하면 색을 표시할 수 있음

샘플 코드

#!/bin/bash

# temp file
LAST_OUTPUT="/tmp/last_df_output.txt"
NEW_OUTPUT="/tmp/new_df_output.txt"

# color supporting check
if [ -t 1 ]; then
    RED=$(tput setaf 1)
    RESET=$(tput sgr0)
else
    RED=""
    RESET=""
fi

# initial output 
df -h > "$LAST_OUTPUT"

while true; do
    # new output
    df -h > "$NEW_OUTPUT"

    if ! cmp -s "$NEW_OUTPUT" "$LAST_OUTPUT"; then
        clear
        # diff will be printed in red color
        diff --unchanged-line-format="%L" --old-line-format="" --new-line-format="${RED}%L${RESET}" "$LAST_OUTPUT" "$NEW_OUTPUT"
    fi

    # last output store
    mv "$NEW_OUTPUT" "$LAST_OUTPUT"

    # time interval
    sleep 1
done
반응형
반응형

llama-stack

llama3.2, llama3.1 등을 download 하려고 홈페이지에서 시도하였으나 llama-stack을 pip로 설치하라고 뜬다.
pip install llama-stack을 하였으나 설치에는 큰 문제가 없는 것 같은데 llama 명령어가 없어서 진행이 안된다.

원인

llama-stack github page에 찾아가보면 requirement.txt에 보면 llama-models 등 dependency packages가 보이는데 pip list로 확인을해봐도 설치가 되지 않았고, search를 해봐도 되지 않는다.
원인은 python3 버전에 원인이 있다. python version이 3.10이상이어야 하는데 python3.8로 시도하면 minimum python version 에 위배되는 패키지들은 설치가 되지 않는다.

해결방법

python3.10을 설치해서 python3.10을 설치하여 3.10으로 llama-stack을 설치해줄 경우 정상적으로 초반과는 다르게 많은 패키지들이 설치되고 llama명령어가 있는것이 확인된다.

참고

https://sonseungha.tistory.com/678

 

Ubuntu 20.04에 python 3.10 설치하기

Python 3.10은 Ubuntu의 기본 저장소에서 사용할 수 없습니다. 따라서 Python 3.10 설치를 위해 다른 저장소를 추가해야 합니다. deadsnake라는 이름의 launchpad 저장소에서는 Python 패키지에 사용할 수 있습

sonseungha.tistory.com

python3.10으로 재설치

$ apt install software-properties-common # 필요시
$ apt install python3.10-distutils
$ curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
$ python3.10 -m pip install llama-stack
반응형
반응형

Env

Install nvidia docker env toolkit

Run

$ docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

Execute

$ docker exec -it ollama ollama run llama3.1:8b

help

>>> /?

Exit

>>> /bye
or
ctrl + d

llama3.1 taglist

https://ollama.com/library/llama3.1/tags

 

Tags · llama3.1

Llama 3.1 is a new state-of-the-art model from Meta available in 8B, 70B and 405B parameter sizes.

ollama.com

 

반응형
반응형

Bash 스크립트에서 매번 if [ $? -ne 0 ];을 써서 명령어의 실행 결과를 확인하는 건 번거롭고 코드가 지저분해 보일 수 있다. 이를 깔끔하게 처리할 수 있는 몇 가지 방법을 소개한다.

  1. set -e 사용
    스크립트에 set -e를 추가하면, 명령어가 실패할 때(exit code가 0이 아닐 때) 자동으로 스크립트 실행이 중지된다. 이렇게 하면 매번 $?를 체크할 필요가 없어진다.
#!/bin/bash
set -e

# 명령어 실행 (실패하면 스크립트가 중지됨)

command\_1  
command\_2

echo "이 메시지는 위 명령어들이 성공한 경우에만 출력됨"  

set -e는 스크립트 실행을 중단해야 할 때 유용하지만, 모든 경우에 적합하지 않을 수 있다. 실패해도 계속 실행해야 하는 상황이라면 다른 방법을 고려하는 게 좋다.

  1. 함수로 처리
    자주 사용하는 에러 확인을 함수로 만들어 놓으면 매번 $?를 확인하는 중복을 줄일 수 있다.
#!/bin/bash

check\_command() {  
"$@"  
if \[ $? -ne 0 \]; then  
echo "Error: '$\*' 명령어가 실패했습니다." >&2  
exit 1  
fi  
}

check\_command ls /path/to/dir  
check\_command another\_command  

check_command 함수는 전달받은 명령어를 실행하고, 실패하면 에러 메시지를 출력한 뒤 스크립트를 종료하는 방식이다.

  1. 명령어 체인 (&&와 || 사용)
    명령어가 성공하거나 실패할 때 각각 다른 동작을 하고 싶다면 &&와 ||를 사용하는 것도 깔끔하다.
command && echo "성공" || echo "실패"  
&&는 명령어가 성공했을 때 실행되고, ||는 명령어가 실패했을 때 실행된다. 단순한 에러 처리를 할 때 유용하다.
  1. 트랩(Trap) 사용
    스크립트 전체에서 에러가 발생할 경우에 대한 공통 처리가 필요하다면 trap을 사용할 수 있다. 특정 상황이나 에러 발생 시 자동으로 호출되는 함수를 정의할 수 있다.
#!/bin/bash

trap 'echo "Error occurred at line $LINENO"; exit 1' ERR

# 명령어 실행

command\_1  
command\_2  

이 코드는 ERR 신호가 발생할 때, 즉 명령어가 실패하면 해당 트랩이 실행돼 에러 메시지를 출력하고 스크립트를 종료한다.

반응형
반응형

필요 패키지 설치

$ sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

gpg key 추가

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Repository 추가

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

업데이트

$ sudo apt update

Docker 설치

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

필요시 Reboot 혹은 docker service restart

$ sudo reboot now

or 

$ sudo systemctl restart docker

Docker service 확인

$ systemctl status docker

User docker group 권한 추가

$ sudo gpasswd -a ${USER} docker

이후 shell 종료 및 재접속 필요

반응형
반응형

시작전

docker-ce는 설치되어 있어야 함

gpg 키와 저장소 추가

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

apt package repository update

$ sudo apt update

nvidia-docker2 설치

$ sudo apt install nvidia-docker2

필요시 테스트

$ docker run --rm --gpus all ubuntu:18.04 nvidia-smi
반응형
반응형

Client 에서 Key 생성

$ cd ${HOME}
$ ssh-keygen -t rsa -P ""

Key 등록

$ ssh-copy-id -i ${HOME}/.ssh/rd_rsa.pub <USER>@<IP>

Test

$ ssh <USER>@<IP>
반응형
반응형

docker-container-runtime의 설치가 되어 있는지 확인이 필요함

$ dpkg -l | grep docker-container-runtime

없을 경우 아래와 같이 패키지를 설치 가능한지 확인함

$ sudo apt search docker-container-runtime

설치 가능할 경우 설치

$ sudo apt install docker-container-runtime

docker restart

$ sudo systemctl restart docker
반응형

+ Recent posts