• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글

Odroid-H3 도커 설정 공유

칼퇴하는남자 칼퇴하는남자 676

3

6

안녕하세요.

칼퇴하는남자입니다.

 

Odroid-H3 구입 후 이런저런 삽질 끝에 이제 어느 정도 정리가 되었기에 정리해 놓은 설치 과정을 공유합니다.

다른분께도 도움이 되셨으면 좋겠습니다.

최대한 간략히 코드 위주로 작성하였으므로 서버포럼 또는 구글에서 해당 컨테이너에 대해 검색해 보신 후 진행하시는 것이 좋겠습니다.

(예를 들면 컨테이너 생성 후 설정 방법 등)

20221227_1672114124_img 001.png.jpg

 

「환경」

하드웨어: Odroid-H3

가상화: ESXi 6.7

OS: Rocky linux 9.1

 

 

「OS 설치」

1. Rocky linux 9.1 minimal ISO를 다운로드 받은 후 최소 설치로 OS 설치

2. SSH 활성화
sudo vim /etc/ssh/sshd_config    # sshd 설정에서 Port 번호 변경
  Port 20480(또는 자신이 원하는 SSH 포트)    # sshd 포트 변경
sudo semanage port -a -t ssh_port_t -p tcp 20480(자신이 설정한 포트 입력)    # SELinux에 SSH 포트 추가
sudo semanage port -l | grep ssh    # 포트 추가 확인
sudo firewall-cmd --permanent --add-port=20480/tcp    # Firewalld에 SSH 포트 추가
sudo firewall-cmd --reload    # 룰 적용

3. 기타 설정(하지 않아도 상관 없음)

vim .bashrc    # .bashrc에 아래 내용 추가

  if [ -x /usr/bin/dircolors ]; then
          test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
          alias ls='ls --color=auto'
          alias grep='grep --color=auto'
          alias fgrep='fgrep --color=auto'
          alias egrep='egrep --color=auto'
  fi

  alias ll='ls -alvh --group-directories-first'
  alias la='ls -Av --group-directories-first'
  alias l='ls -CFv --group-directories-first'
  alias lz='ls -alZh --group-directories-first'

  export EDITOR="vim"
  export TIME_STYLE=long-iso

  HISTSIZE=1000
  HISTFILESIZE=2000

 

 

「Docker 설치」

1. Docker repo 등록

sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

sudo dnf update    # 에러는 무시해도 됨

2. Docker 패키지 설치
sudo dnf install -y docker-ce --allowerasing
docker --version
    # Docker 버전 확인

3. Docker 활성화
sudo systemctl enable docker    #Docker 활성화
sudo systemctl start docker    # Docker 실행
sudo systemctl status docker    # Docker 상태 확인
sudo usermod -aG docker $USER    # 사용자 계정을 docker 그룹에 추가
sudo dnf install docker-compose-plugin    # Docker-compose 설치

 

 

「Docker에 사용자 정의 네트워크 설정」

docker network create --driver bridge --subnet 10.10.10.0/24 --gateway 10.10.10.1 uDN

 

 

「Docker용 디렉토리 생성」

mkdir $HOME/docker    # 자신의 홈디렉토리에 Docker용 디렉토리 생성

 

 

「Portainer 컨테이너 생성」

1. Portainer용 디렉토리 생성

mkdir $HOME/docker/portainer
mkdir $HOME/docker/portainer/data

2. docker-compose 작성
vim docker-compose.yml    # 아래 내용 입력

version: '3.8'

 

services:
  portainer:
    container_name: portainer
    image: portainer/portainer-ce:latest
    command: -H unix:///var/run/docker.sock
    restart: always
    privileged: true
    networks:
      default:
        ipv4_address: 10.10.10.5
    ports:
      - 9000:9000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - $HOME/docker/portainer/data:/data

 

networks:
  default:
    name: uDN
    external: true

3. Portainer 실행

docker compose up -d portainer

# 이후 모든 Docker 컨테이너는 Portainer에서 생성

 

 

「GoDaddy DDNS 컨테이너 생성」

1. 개인도메인 사용을 위해 GoDaddy에서 개인도메인 구입

2. DDNS 설정을 위해 Portainer 로그인

3. Portainer에 Stack 생성(필자는 private_mgt로 Stack 생성)

4. 생성한 Stack의 Editor에 아래 내용 입력 후 Update the stack 버튼 클릭

# 자신이 필요로 하는 만큼 생성

version: '3.8'

 

services:
  ddns_portainer:
    container_name: ddns_portainer
    image: linuxshots/godaddy-ddns:latest
    restart: always
    networks:
      default:
        ipv4_address: 10.10.10.222
    environment:
      - GD_NAME=portainer
      - GD_DOMAIN=your domain
      - GD_TTL=1200
      - GD_KEY=your GoDaddy API key
      - GD_SECRET=your GoDaddy API secret

 

  ddns_pma:
    container_name: ddns_pma
    image: linuxshots/godaddy-ddns:latest
    restart: always
    networks:
      default:
        ipv4_address: 10.10.10.223
    environment:
      - GD_NAME=pma

     - GD_DOMAIN=your domain
      - GD_TTL=1200
      - GD_KEY=your GoDaddy API key
      - GD_SECRET=your GoDaddy API secret

 

  ddns_cloud:
    container_name: ddns_cloud
    image: linuxshots/godaddy-ddns:latest
    restart: always
    networks:
      default:
        ipv4_address: 10.10.10.224
    environment:
      - GD_NAME=cloud

      - GD_DOMAIN=your domain
      - GD_TTL=1200
      - GD_KEY=your GoDaddy API key
      - GD_SECRET=your GoDaddy API secret

 

networks:
  default:
    name: uDN
    external: true

20221227_1672115684_img 002.png.jpg

 

 

「Maria DB 컨테이너 생성」

1. MariaDB용 디렉토리 생성

mkdir $HOME/docker/mariadb
mkdir $HOME/docker/mariadb/config

2. MariaDB ROOT PASSWORD 설정
vim $HOME/docker/mariadb/config/env    # 아래 내용 입력

MYSQL_ROOT_PASSWORD="자신이 원하는 password"

3. Portainer에 Stack 생성(필자는 private_backend로 생성함)

4. 생성한 Stack의 Editor에 아래 내용 입력 후 Update the stack 버튼 클릭

version: '3.8'

 

services:
  mariadb:
    container_name: mariadb
    image: lscr.io/linuxserver/mariadb:latest
    restart: always
    networks:
      default:
        ipv4_address: 10.10.10.100
    ports:
      - 30960:3306/tcp
    volumes:
      - /home/자신의 계정/docker/mariadb/config:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul

 

networks:
  default:
    name: uDN
    external: true

 

 

「phpMyAdmin 컨테이너 생성」

1. phpMyAdmin용 디렉토리 생성

mkdir $HOME/docker/phpmyadmin
mkdir $HOME/docker/phpmyadmin/config

2. Portainer에 Stack 생성(필자는 private_frontend로 생성함)

3. 생성한 Stack의 Editor에 아래 내용 입력 후 Update the stack 버튼 클릭

version: '3.8'

 

services:
  phpmyadmin:
    container_name: phpmyadmin
    image: lscr.io/linuxserver/phpmyadmin:latest
    restart: always
    networks:
      default:
        ipv4_address: 10.10.10.11
    ports:
      - 10280:80/tcp
    volumes:
      - /home/자신의 계정/docker/phpmyadmin/config:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
      - PMA_HOST=mariadb #(Docker의 mariadb 컨테이너 Name)

 

networks:
  default:
    name: uDN
    external: true

 

 

「Nginx Proxy Manager(npm) 컨테이너 생성」

1. npm용 디렉토리 생성

mkdir $HOME/docker/npm
mkdir $HOME/docker/npm/config

2. 기존에 생성한 Stack(private_frontend)의 Editor에 아래 내용 입력 후 Update the stack 버튼 클릭

  npm:
    container_name: npm
    image: jlesage/nginx-proxy-manager:latest
    restart: always
    networks:
      default:
        ipv4_address: 10.10.10.10
    ports:
      - 8080:8080/tcp
      - 8181:8181/tcp
      - 4443:4443/tcp
    volumes:
      - /home/자신의 계정/docker/npm/config:/config:rw
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
      - DISABLE_IPV6=1

20221227_1672115725_img 003.png.jpg

 

 

「Flame 컨테이너 생성」

1. Flame용 디렉토리 생성

mkdir $HOME/docker/flame
mkdir $HOME/docker/flame/data

2. 기존에 생성한 Stack(private_frontend)의 Editor에 아래 내용 입력 후 Update the stack 버튼 클릭

  flame:
    container_name: flame
    image: pawelmalak/flame:latest
    restart: always
    networks:
      default:
        ipv4_address: 10.10.10.12
    ports:
      - 5005:5005/tcp
    volumes:
      - /home/자신의 계정/docker/flame/data:/app/data
    environment:
      - PASSWORD=NhcsdgsFhDf2z2uS    # Flame에 사용할 비밀번호

3. Flame에 로그인 후 Custom CSS 설정(필요할 경우에만)

/* Font change */
body {
    font-family: D2Coding, monospace, Roboto, sans-serif !important;
    font-size: 16px !important;
}

/* Hide Application URLs */
.AppCard_AppCardDetails__tbAhY {
    height: 50%;
}

.AppCard_AppCardDetails__tbAhY span {
    display: none !important;
}


/* Settings button style */
.Home_SettingsButton__Qvn8C {
    border-radius: 0.5rem !important;
    background-color: #DFD9D6 !important;
}


/* Wide Application tiles */
.AppCard_AppCard__1V2_0 {
    padding: 15px !important;
    margin-bottom: 0 !important;
    border-radius: 0.7rem !important;
}


/* Application tile hover color */
.AppCard_AppCard__1V2_0:hover {
    background-color: rgba(0, 0, 0, 0.3) !important;
}

@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) {
    .AppCard_AppCard__1V2_0:hover {
        backdrop-filter: blur(15px);
        background-color: rgba(0, 0, 0, 0.3) !important;
    }
}

/* Background image */
body {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    height: 100%;
}

body:before {
    content: "";
    position: fixed;
    overflow: hidden;
    background-image: url("/upload/spacex-6SbFGnQTE8s-unsplash_resize");
    background-size: cover;
    z-index: -999;
    height: 100%;
    width: 100%;
    transform: scale(1.1);

    /* Change the following only: */
    /* filter: blur(0.2rem); */
    /* opacity: 0.6; */
}


/* Truncate Title and URL */
.AppCard_AppCardIcon__8ZZTq {
    min-width: 35px;
}

.AppCard_AppCard__1V2_0 {
    min-width: 0
}

.AppCard_AppCardDetails__tbAhY {
    text-overflow: ellipsis;
    overflow: hidden;
    white-space: nowrap;
}

 

 

「Vaultwarden 컨테이너 생성」

1. Vaultwarden용 디렉토리 생성

mkdir $HOME/docker/vaultwarden
mkdir $HOME/docker/vaultwarden/data

2. 기존에 생성한 Stack(private_backend)의 Editor에 아래 내용 입력 후 Update the stack 버튼 클릭

  vaultwarden:
    container_name: vaultwarden
    image: vaultwarden/server:latest
    restart: always
    networks:
      default:
        ipv4_address: 10.10.10.101
    ports:
      - 5080:80/tcp
      - 3012:3012/tcp    #웹소켓용 포트
    volumes:
      - /home/자신의 계정/docker/vaultwarden/data:/data
    environment:
      - TZ=Asia/Seoul
      - WEBSOCKET_ENABLED=true
      - SIGNUPS_ALLOWED=false    #계정 생성 금지, 설정 완료 후 추가로 등록해야 함
      - DOMAIN=https://your domain   #설정 완료 후 추가로 등록해야 함, npm에 등록한 url

 

 

「FileRun 컨테이너 생성」

1. FileRun용 디렉토리 생성

mkdir $HOME/docker/filerun
mkdir $HOME/docker/filerun/data
mkdir $HOME/storage/public    
# 추가로 사용할 데이터 저장 볼륨

2. phpMyAdmin에 접속하여 FileRun용 DB 생성

3. 기존에 생성한 Stack(private_frontend)의 Editor에 아래 내용 입력 후 Update the stack 버튼 클릭

  filerun:
    container_name: filerun
    image: filerun/filerun:latest
    restart: always
    networks:
      default:
        ipv4_address: 10.10.10.13
    ports:
      - 10180:80/tcp
    volumes:
      - /home/자신의 계정/docker/filerun/data:/var/www/html
      - /home/자신의 계정/storage/public:/user-files
    environment:
      - APACHE_RUN_USER=자신의 계정
      - APACHE_RUN_USER_ID=1000
      - APACHE_RUN_GROUP=자신의 그룹 계정(일반적으로 계정과 동일함)
      - APACHE_RUN_GROUP_ID=1000

4. FileRun에 접속하여 초기 설정 진행

데이터베이스 사용자: filerun    # phpMyAdmin에서 생성한 FileRun용 사용자
데이터베이스 암호: fD9f4wD~~~5KZ9Xb    # phpMyAdmin에서 생성한 사용자의 비밀번호
데이터베이스 이름: filerun
데이터베이스 호스트: mariadb    # MariaDB 컨테이너 이름
데이터베이스 포트: 3306

 

 

「Wireguard 컨테이너 생성」

1. Wireguard용 디렉토리 생성

mkdir $HOME/docker/wireguard
mkdir $HOME/docker/wireguard/data

2. 기존에 생성한 Stack(private_backend)의 Editor에 아래 내용 입력 후 Update the stack 버튼 클릭

  wireguard:
    container_name: wireguard
    image: weejewel/wg-easy:latest
    restart: always
    networks:
      default:
        ipv4_address: 10.10.10.102
    ports:
      - 51820:51820/udp
      - 51821:51821/tcp
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1
    volumes:
      - /home/자신의 계정/docker/wireguard/data:/etc/wireguard
    environment:
      - WG_HOST=your domain    #GoDaddy 및 npm에 등록한 url
      - PASSWORD=bNR6nv~~~~9sn3rba    # WebUI 접속용 비밀번호
      - WG_PERSISTENT_KEEPALIVE=25

 

신고공유스크랩
6
profile image 1등
달소 2022.12.27. 16:09

와.. 정말 정리를 엄청 잘해주셨네요 ㄷㄷ..

어마어마합니다 대부분의 필요한 컨테이너들도 다 올리셨군요.

좋은 정보공유 감사드립니다~

profile image
칼퇴하는남자 글쓴이 2022.12.28. 08:44
핀비

감사합니다.

본문의 첫 이미지는 로키 리눅스가 아닌... Docker에 올린 flame 컨테이너 화면입니다.

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story

등록된 글이 없습니다.