Markdown 작성 문법(syntax)

Markdown 파일 작성 시 주로 사용하는 문법(syntax)은 다음과 같습니다.

1. 제목 (Heading)

# 기호를 사용해 제목 레벨을 지정합니다.

  • # 제목1
  • ## 제목2
  • ### 제목3
    최대 6단계 (######)까지 가능합니다.

예)

# 가장 큰 제목  
## 두 번째 제목  
### 세 번째 제목  

2. 문단과 줄바꿈

  • 한 줄 띄우면 문단 구분
  • 줄바꿈은 문장 끝에 스페이스 2개 또는 <br> 태그 사용

3. 목록 (List)

  • 순서 없는 목록: -, *, + 사용 가능
  • 순서 있는 목록: 숫자 + 점(1., 2.) 사용

예)

- 순서 없는 목록  
* 또 다른 항목  
1. 순서 있는 목록 첫번째  
2. 두번째  

4. 강조 (Emphasis)

  • 기울임: *텍스트* 또는 _텍스트_
  • 굵게: **텍스트** 또는 __텍스트__
  • 취소선: ~~텍스트~~

5. 링크와 이미지

  • 링크: [텍스트](URL)
  • 이미지: ![대체텍스트](이미지URL)

6. 코드

  • 인라인 코드: `코드`
  • 여러 줄 코드 블록: 백틱 3개 또는 물결 3개로 묶기
```언어
여러줄 코드 작성
---

### 7. 인용문(Blockquote)  
- `>` 기호 사용  

markdown

인용문 내용

---

### 8. 수평선 (Horizontal rule)  
- `---` 또는 `***`

---

### 9. 표 (Table)  
- `|` 와 `-` 로 표 작성 가능  

markdown

이름나이
김철수30
이영희25
“`

필요하면 추가 기능도 있습니다.

termux ubuntu sshd 멈춤 해결 방법

Termux Ubuntu(proot-distro)에서 sshd가 주기적으로 멈추는 이유와 해결법입니다. proot 환경의 PID 1 제한 + Android 배터리 최적화가 원인입니다.

주요 원인

  1. proot 종료 시 sshd도 종료 (부모 프로세스 kill)
  2. Android PPK (백그라운드 프로세스 kill)
  3. 포트 충돌 (Termux 기본 8022와 겹침)
  4. 로그아웃 타임아웃 (KeepAlive 없음)

완전 해결 단계

1단계: 올바른 sshd 설정

Ubuntu 내 (proot 로그인 후):

bash
# 패키지 설치
sudo apt install openssh-server -y

# 호스트키 생성
sudo ssh-keygen -A

# 포트 변경 (Termux 8022와 구분)
sudo sed -i 's/#Port 22/Port 10022/' /etc/ssh/sshd_config
sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# KeepAlive 활성화 (주요 해결!)
echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config
echo "ClientAliveCountMax 3" | sudo tee -a /etc/ssh/sshd_config

sudo systemctl restart ssh # 또는 수동 시작

2단계: tmux로 sshd 데몬화 (프로세스 생존)

Ubuntu 내 전용 tmux 세션:

bash
apt install tmux -y
tmux new-session -d -s sshd
tmux send-keys -t sshd "/usr/sbin/sshd -D -p 10022" Enter
tmux list-sessions # 확인

tmux 세션은 proot 종료해도 살아있음.

3단계: Termux/Android 최적화

Termux 앱:

text
termux-wake-lock # 배터리 최적화 무시

Android 설정:

  • 설정 > 앱 > Termux > 배터리 > 최적화 안함
  • 개발자 옵션 > 백그라운드 프로세스 제한 없음

4단계: 접속 테스트

text
# 외부에서 (포트 10022)
ssh -p 10022 root@[폰IP]

# 내부 Termux에서
ssh -p 10022 root@localhost

모니터링 & 유지

bash
# Ubuntu 내 상태 확인
ss -tlnp | grep 10022
ps aux | grep sshd

# tmux 재연결 (sshd 멈췄을 때)
tmux attach -t sshd

자동 시작 스크립트 (~/.profile)

bash
#!/bin/bash
# Ubuntu 로그인 시 자동 sshd 재시작
if ! pgrep -f "sshd.*10022" > /dev/null; then
tmux new-session -d -s sshd "/usr/sbin/sshd -D -p 10022"
echo "sshd restarted on port 10022"
fi

chmod +x ~/.profile

tmux + KeepAlive 조합으로 99% 안정화됩니다. proot 종료해도 SSH 연결 유지! 포트 ip a로 확인

Google Cloud Project and added credentials. GCP 자격증명 설정 방법

Google Cloud Project and credentials to backend/.env
Required .env Variables:
GOOGLE_CLIENT_ID=your_client_id
GOOGLE_CLIENT_SECRET=your_client_secret
GOOGLE_REDIRECT_URI=http://localhost:3100/api/auth/google/callback

Google Cloud Project를 설정하고 인증 정보를 backend/.env 파일에 추가하는 방법은 Google OAuth 2.0을 사용해서 사용자 인증을 할 때 주로 필요해요.

1. Google Cloud Project 설정하기

먼저 Google Cloud Platform(GCP) 콘솔에서 새로운 프로젝트를 만들고, 필요한 API를 활성화해야 해요.

  1. Google Cloud 콘솔 접속: 웹 브라우저에서 Google Cloud 콘솔에 접속하고 로그인해주세요.
  2. 새 프로젝트 생성:
    • 콘솔 상단 왼쪽에 있는 프로젝트 선택 드롭다운 메뉴를 클릭해주세요.
    • ‘새 프로젝트’를 클릭해서 프로젝트 이름을 지정하고 생성합니다. (예: My Awesome App 또는 Backend Auth Project)
  3. API 및 서비스 활성화:
    • 왼쪽 내비게이션 메뉴에서 ‘API 및 서비스’ > ‘라이브러리’로 이동해주세요.
    • 검색창에 “Google People API”를 검색해서 활성화해주세요. (다른 Google 서비스도 필요하다면 같이 활성화해주시면 됩니다.)

2. OAuth 2.0 클라이언트 ID 생성하기

이제 애플리케이션에서 Google 로그인을 사용할 수 있도록 인증 정보를 만들어야 해요.

  1. 사용자 인증 정보 생성:
    • 왼쪽 내비게이션 메뉴에서 ‘API 및 서비스’ > ‘사용자 인증 정보’로 이동해주세요.
    • 상단에 있는 ‘+ 사용자 인증 정보 만들기’ 버튼을 클릭하고 ‘OAuth 클라이언트 ID’를 선택합니다.
  2. 애플리케이션 유형 선택:
    • 애플리케이션 유형으로 ‘웹 애플리케이션’을 선택해주세요.
  3. 이름 지정:
    • OAuth 클라이언트 이름을 입력합니다. (예: Web Client 1)
  4. 리디렉션 URI 추가:
    • ‘승인된 리디렉션 URI’ 섹션에서 ‘+ URI 추가’ 버튼을 클릭하고 다음 URL을 추가해주세요: http://localhost:3100/api/auth/google/callback
    • 이는 Google이 인증이 완료된 후 사용자를 돌려보낼 주소예요. 로컬 환경에서 테스트할 때 주로 사용하죠. 나중에 실제 서버에 배포할 때는 서버의 도메인으로 변경해야 해요.
  5. 클라이언트 ID 및 시크릿 확인:
    • ‘만들기’ 버튼을 클릭하면 클라이언트 ID와 클라이언트 시크릿이 팝업으로 나타날 거예요. 이 값들을 잘 복사해두세요. 이 값들이 바로 .env 파일에 필요한 값들이에요.

3. .env 파일에 인증 정보 추가하기

마지막으로, 위에서 얻은 클라이언트 ID와 시크릿을 backend/.env 파일에 넣어주면 됩니다.

  1. backend/.env 파일 열기: backend 폴더 안에 있는 .env 파일을 텍스트 편집기로 열어주세요.
  2. 변수 추가: 아래와 같이 Google Cloud에서 복사한 값들을 입력하고 저장합니다.
    • GOOGLE_CLIENT_ID=여기_복사한_클라이언트_ID_붙여넣기
    • GOOGLE_CLIENT_SECRET=여기_복사한_클라이언트_시크릿_붙여넣기
    • GOOGLE_REDIRECT_URI=http://localhost:3100/api/auth/google/callback

이제 Google Cloud Project 설정과 .env 파일 구성이 완료되었어요! 이렇게 하면 백엔드 애플리케이션에서 Google OAuth를 통해 사용자 인증을 처리할 준비가 된답니다.

error: Content is protected !!