시놀로지 docker 수동 설치 - sinolloji docker sudong seolchi

(본 글에서는 SSH, Docker 사용법등은 기본적으로 이해한다고 생각하고 글을 적습니다.)

시놀로지 docker 수동 설치 - sinolloji docker sudong seolchi

안녕하세요. 오늘은 6.x에서 7.0으로 업그레이드한 경험담을 적어볼까 합니다. 

모델은 416Play로 메모리를 업그레이드 하여 8기가로 사용중입니다. 

기본적으로 설치되지 않은 Docker를 수동으로 설치하여 사용했었습니다.

Gitlab과 Dokuwiki는 패키지에서 설치해서 사용중에 있었습니다. 

Gitlab은 Docker가 있어야 설치가 됐던 것으로 기억합니다. 

그런데.. 7.0에서 Gitlab과 Dokuwiki를 지원하지 않는다는 청천벽력같은 소리로 주저했었는데

오늘 Dokuwiki와 Gitlab 둘다 수동으로 Docker-Compose를 이용해 새로 설치하고 마이그레이션을 했죠. 

먼저 제어판에서 터미널을 열수 있어야 합니다. SSH서비스 활성화를 체크하고, 보안을 위해 22포트를 2200포트로 설정하고 저장합니다. 

시놀로지 docker 수동 설치 - sinolloji docker sudong seolchi

Putty등을 이용하여 터미널에 시놀로지 NAS의 아이피와 계정ID/비번로 로그인합니다. 변경한 포트를 22에서 2200으로 설정하는 것 잊지 마세요.

시놀로지에서 관리를 편하게 하기 위해 저는 Docker라는 폴더를 하나 생성했습니다. 

Dokuwiki를 Docker로 수동설치 

docker-compose.yml

version: '2'
services:
  dokuwiki:
    image: docker.io/bitnami/dokuwiki:20200729
    ports:
      - '20080:8080'
      - '20443:8443'
    volumes:
      - '/volume1/docker/dokuwiki/data:/bitnami/dokuwiki'
    networks:
      - 'dokuwiki-network'
networks:
  dokuwiki-network:
    driver: bridge

아래 명령을 이용해 위 내용을 복사/붙여넣기 합니다. 

mkdir -f /volume1/Docker/Dokuwiki/data
chown -R 1001:1001 /volume1/Docker/Dokuwiki/data
cd /volume1/Docker/Dokuwiki
vi docker-compose.yml

그리고 저장합니다. 

docker-compose up -d

이러면 설치 끝.

웹 브라우저에서 시놀로지 NAS의 아이피와 20080포트를 이용해 접속하면 Dokuwiki의 페이지가 표시됩니다. 

Dokuwiki 마이그레이션

Dokuwiki는 파일DB를 사용하기 때문에 그냥 폴더를 우선 압축해서 백업합니다. 

그리고 Docker의 볼륨으로 설정한 "/volume1/Docker/Dokuwiki/data"경로에 과거 파일들을 복사합니다. 

data/attic

data/media

data/meida_attic

data/media_meta

data/meta

data/pages

저는 이렇게 복사/붙여넣기 하니 데이터가 제대로 보이더군요.

Gitlab 14.x Docker로 수동설치

똑같은 방법으로 저장합니다. 중요한 점은 Volumes에 있는 경로를 미리 생성해야 합니다. 

docker-compose.yml

version: '2.3'

services:
  redis:
    restart: always
    image: redis:6.2
    command:
    - --loglevel warning
    volumes:
    - /volume1/docker/redis-data:/data:Z
    networks:
    - gitlab-bridge
    ports:
    - "36379:6379"

  postgresql:
    restart: always
    image: sameersbn/postgresql:12-20200524
    volumes:
    - /volume1/docker/postgres-data:/var/lib/postgresql:Z
    environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm,btree_gist
    networks:
    - gitlab-bridge
    ports:
    - "35432:5432"

  gitlab:
    restart: always
    image: sameersbn/gitlab:14.1.1
    depends_on:
    - redis
    - postgresql
    ports:
    - "30080:80"
    - "30022:22"
    volumes:
    - /volume1/docker/gitlab-data:/home/git/data:Z
    healthcheck:
      test: ["CMD", "/usr/local/sbin/healthcheck"]
      interval: 5m
      timeout: 10s
      retries: 3
      start_period: 5m
    networks:
    - gitlab-bridge
    environment:
    - DEBUG=false

    - DB_ADAPTER=postgresql
    - DB_HOST=postgresql
    - DB_PORT=5432
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production

    - REDIS_HOST=redis
    - REDIS_PORT=6379

    - TZ=Asia/Seoul
    - GITLAB_TIMEZONE=Seoul

    - GITLAB_HTTPS=false
    - SSL_KEY_PATH=
    - SSL_DHPARAM_PATH=
    - SSL_CERTIFICATES_PATH=
    - SSL_SELF_SIGNED=true

    - GITLAB_HOST=<본인의 NAS아이피를 입력하세요>
    - GITLAB_PORT=30080
    - GITLAB_SSH_PORT=30022
    - GITLAB_RELATIVE_URL_ROOT=
    - GITLAB_SECRETS_DB_KEY_BASE=HtMHINC5EA0FfwrQvTczZUGgVepaGQWS
    - GITLAB_SECRETS_SECRET_KEY_BASE=HtMHINC5EA0FfwrQvTczZUGgVepaGQWS
    - GITLAB_SECRETS_OTP_KEY_BASE=HtMHINC5EA0FfwrQvTczZUGgVepaGQWS

    - GITLAB_ROOT_PASSWORD=
    - GITLAB_ROOT_EMAIL=

    - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
    - GITLAB_NOTIFY_PUSHER=false

    - GITLAB_EMAIL=
    - GITLAB_EMAIL_REPLY_TO=
    - GITLAB_INCOMING_EMAIL_ADDRESS=

    - GITLAB_BACKUP_SCHEDULE=daily
    - GITLAB_BACKUP_TIME=01:00

    - SMTP_ENABLED=false
    - SMTP_DOMAIN=www.example.com
    - SMTP_HOST=smtp.gmail.com
    - SMTP_PORT=587
    - SMTP_USER=
    - SMTP_PASS=password
    - SMTP_STARTTLS=true
    - SMTP_AUTHENTICATION=login

    - IMAP_ENABLED=false
    - IMAP_HOST=imap.gmail.com
    - IMAP_PORT=993
    - IMAP_USER=
    - IMAP_PASS=password
    - IMAP_SSL=true
    - IMAP_STARTTLS=false

    - OAUTH_ENABLED=false
    - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
    - OAUTH_ALLOW_SSO=
    - OAUTH_BLOCK_AUTO_CREATED_USERS=true
    - OAUTH_AUTO_LINK_LDAP_USER=false
    - OAUTH_AUTO_LINK_SAML_USER=false
    - OAUTH_EXTERNAL_PROVIDERS=

    - OAUTH_CAS3_LABEL=cas3
    - OAUTH_CAS3_SERVER=
    - OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
    - OAUTH_CAS3_LOGIN_URL=/cas/login
    - OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
    - OAUTH_CAS3_LOGOUT_URL=/cas/logout

    - OAUTH_GOOGLE_API_KEY=
    - OAUTH_GOOGLE_APP_SECRET=
    - OAUTH_GOOGLE_RESTRICT_DOMAIN=

    - OAUTH_FACEBOOK_API_KEY=
    - OAUTH_FACEBOOK_APP_SECRET=

    - OAUTH_TWITTER_API_KEY=
    - OAUTH_TWITTER_APP_SECRET=

    - OAUTH_GITHUB_API_KEY=
    - OAUTH_GITHUB_APP_SECRET=
    - OAUTH_GITHUB_URL=
    - OAUTH_GITHUB_VERIFY_SSL=

    - OAUTH_GITLAB_API_KEY=
    - OAUTH_GITLAB_APP_SECRET=

    - OAUTH_BITBUCKET_API_KEY=
    - OAUTH_BITBUCKET_APP_SECRET=
    - OAUTH_BITBUCKET_URL=

    - OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
    - OAUTH_SAML_IDP_CERT_FINGERPRINT=
    - OAUTH_SAML_IDP_SSO_TARGET_URL=
    - OAUTH_SAML_ISSUER=
    - OAUTH_SAML_LABEL="Our SAML Provider"
    - OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
    - OAUTH_SAML_GROUPS_ATTRIBUTE=
    - OAUTH_SAML_EXTERNAL_GROUPS=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=

    - OAUTH_CROWD_SERVER_URL=
    - OAUTH_CROWD_APP_NAME=
    - OAUTH_CROWD_APP_PASSWORD=

    - OAUTH_AUTH0_CLIENT_ID=
    - OAUTH_AUTH0_CLIENT_SECRET=
    - OAUTH_AUTH0_DOMAIN=
    - OAUTH_AUTH0_SCOPE=

    - OAUTH_AZURE_API_KEY=
    - OAUTH_AZURE_API_SECRET=
    - OAUTH_AZURE_TENANT_ID=

networks:
  gitlab-bridge:
    driver: bridge

Gitlab 마이그레이션 

Gitlab은 그냥 다 Pull받아서 수동으로 Push하는 방식으로 하고 있습니다. 개인적인 소스이기 때문에 그렇게 많이 히스토리를 갖고 있지는 않아서 이렇게 했지만 히스토리를 모두 마이그레이션 해야 하는 상황이라면 Gitlab의 Export해서 Import하는 방식을 사용하거나 Git Mirror명령을 이용해서 하는 방법을 권유드립니다. 

Gitlab과 Dokuwiki 잠시만 안녕하며 삭제

7.0 설치하기전에 미리 삭제했습니다. 

7.0 업그레이드

전 전에 수동설치를 위해 받아둔 파일로 설치했는데 6.x 최종버전 업데이트를 하셨다면 7.0 업그레이드 버튼이 활성화 되어 있을 겁니다. 

약 10~20분 정도 걸린다기에 샤워하고 오니 다 끝나있더군요.

미지원 패키지 제거

Node v4, Node v8, Python3 등이 미지원 된다는 표시가 되어 삭제했습니다. 6.x에서는 잘 삭제가 되지 않았던 버전인데 잘도 삭제되더군요. 

그런데 Docker가 미지원 버전이라는 청천벽력같은 메시지가 표시되어있었습니다. 

제거... (제거 시 이미지, 컨테이너, 데이터 제거는 절대 체크하지 마세요)

Docker 수동설치

https://archive.synology.com/download/Package/Docker

Synology Archive Download Site - Index of /download/Package/Docker

archive.synology.com

위 경로에서 최신버전의 Docker설치파일을 다운로드 받습니다. 

시놀로지 docker 수동 설치 - sinolloji docker sudong seolchi

그리고 패키지 센터 우측상단을 보시면 "수동설치"를 클릭해서 다운받은 파일을 이용해 설치합니다. 

만약 잘못된 파일이라고 표시되면 다운로드를 다시 해서 해보시기 바랍니다. 

Gitlab과 Dokuwiki 시작

우리는 수동으로 설치했기 때문에 터미널에서 docker-compose up -d 명령을 이용해 각각 다시 실행합니다. 

아... 끝났네요. 

시놀로지 docker 수동 설치 - sinolloji docker sudong seolchi