6/24/2018

MagicMirror and Smart Mirror 테스트

1. MagicMirror 

요즘 Raspberry Pi를 가지고 MagicMirror를 만들것이 유행이 되어서 그냥 따라해보기로 했다.
Magic Mirror는 LCD에  필름을 붙혀 거울처럼 사용하는데, 이 LCD에 각 기능을 넣어 Magic Mirror혹은 Smart Mirror라고 해서 사용하는데, 보기에도 편할 것 같다. 

  • 기본설정 
Raspberry Pi3 준비하고 Raspbian OS를 설치하고 기본설정을 해주자
  https://ahyuo.blogspot.com/2018/06/raspberry-pi3-raspbian-os.html

  • Magic Mirror 최종 결과물 및 설치방법 
  아래와 같이 자세히 설명해주는 Youtube
  https://www.youtube.com/watch?v=pcmjht0Hqvw

이미 소스는 존재하며,이를 이용하여 간단히 구현된 것을 보자

1.1 Node.js (NPM)

Web에 관련된 Node.js 관련사항을 잘 모르기때문에 간단히 아래와 같이 정리만 한다.
npm은 (Node Package Manager)라고 하면  아래 사이트에서 관리되는 것 같다.

NPM 사이트
  https://www.npmjs.com/

npm을 이용하여 Node.js를 관리하는 Package Manager라는데, 정확히 동작원리는 아직 모르겠다.

NPM관련내용
  https://ko.wikipedia.org/wiki/Npm_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4)


  • NPM 명령어 확인 
명령어가 많아서 사용을 해보면서 익혀야 할 것 같은데,  추후 Node.js에 관심을 가질때 그때 하도록하자.


$ npm help
Usage: npm 

where  is one of:
    access, adduser, bin, bugs, c, cache, completion, config,
    ddp, dedupe, deprecate, dist-tag, docs, doctor, edit,
    explore, get, help, help-search, i, init, install,
    install-test, it, link, list, ln, login, logout, ls,
    outdated, owner, pack, ping, prefix, profile, prune,
    publish, rb, rebuild, repo, restart, root, run, run-script,
    s, se, search, set, shrinkwrap, star, stars, start, stop, t,
    team, test, token, tst, un, uninstall, unpublish, unstar,
    up, update, v, version, view, whoami

npm  -h     quick help on 
npm -l           display full usage info
npm help   search for help on 
npm help npm     involved overview

Specify configs in the ini-formatted file:
    /home/pi/.npmrc
or on the command line via: npm  --key value
Config info can be viewed via: npm help config


아래와 같이 쉽게 download가 Node.js를 node_modules에서쉽게 관리되는 것 같다.

$ npm install upper-case  # upper-case를 download를 한다고 함 
$ cd node_modules
$ ls upper-case  

아래와 같이 실행을 하면 npm에 관련된 package가 동작이 되는 것 같다.

$ cd ~/project
$ npm start 

NPM은 상위 node_modules는 Project 별로 별도로도 관리가 가능하며, 상위에 등록하고 싶다면 아래와 같이 하면된다.

$ cd ./usr/lib/node_modules/     # Main에 node_modules이 존재한것을 확인 가능 
$ ls
npm  pm2
$ ls /usr/bin/pm2       # 실행 파일 확인 
/usr/bin/pm2
$ ls /usr/bin/npm       # 실행 파일 확인 
/usr/bin/npm

pm2는 Autostart를 위해서 NPM package과 함께 shell script을 만들어 사용하는 것 같다.

NPM
  https://www.w3schools.com/nodejs/nodejs_npm.asp

PM2
  http://pm2.keymetrics.io/docs/usage/startup/

이것을 자세히 알려면 천상 Node.js까지 알아야 할 것 같은데,  그냥 기본 사용법만 알고 추후 시간되면 알아보자.

1.2 Magic Mirror 설치 및 동작 

  • Magic Mirror 및 Smart Mirror Github
  https://github.com/evancohen/smart-mirror
  https://github.com/MichMich/MagicMirror


$ bash -c "$(curl -sL https://raw.githubusercontent.com/MichMich/MagicMirror/master/installers/raspberry.sh)"
or 
$ curl -sL https://raw.githubusercontent.com/MichMich/MagicMirror/master/installers/raspberry.sh | bash

$ cd ~/MagicMirror
$ npm start 

상위처럼 하면 실행이 되지만 MagicMirror를 보면 내부에 config/config.js를 이용하여 각 Website의 키 값을 설정하도록 되어 있다.

  • pm2의 기능 
pm2를 이용하여 Autostart를 하는데 나에게 있어서 보고 한번 테스트 정도이지 별로 다 이용하고 싶지가 않은기능이다.

6/22/2018

Raspberry-Pi3 RASPBIAN OS 설정 및 VNC 연결

1. Raspberry 기본사용법 

Raspberry를 소스를 보면 거의 Node.js 즉 Javascript 기준으로 된 Project가 많으며, 이를 이해하기 위해서 아래와 같이 기본적으로 알아두자

  • Raspberry Pi Image Download
  https://www.raspberrypi.org/downloads/

  • Image Write 방법 
  https://ahyuo.blogspot.com/2017/10/raspberry-pi.html
  https://ahyuo.blogspot.kr/2016/05/sd-card-writer-window.html

HDMI 모니터를 지속적으로 사용하면 좋겠지만, 여분의 모니터가 없을 경우 VNC와 SSH를 이용하여 원격접속하여 Raspberry를 이용해야 할 것이다.

  • 기본사용법 
  https://www.w3schools.com/nodejs/nodejs_raspberrypi.asp

  • GPIO 사용법 
  https://www.w3schools.com/nodejs/nodejs_raspberrypi_gpio_intro.asp
  https://wikidocs.net/3172
  https://wikidocs.net/20429

  • Raspberry Camera 연결 및 기본 사용법
Raspberry Pi용 Camera를 구입하여, CSI Interface로 연결하여 테스트 진행 
  https://wikidocs.net/3178
  https://wikidocs.net/3251
  https://www.raspberrypi.org/documentation/raspbian/applications/camera.md
  https://www.raspberrypi.org/documentation/configuration/camera.md


1.1. Raspberry HDMI 연결 

VNC와 SSH를 이용한다고 하더라도 처음 한번은 HDMI 모니터에 연결하여 아래와 같이 기본설정을 해줘야 한다.

  • Terminal 실행 (Mac 주소 파악)
우선 우측의 WIFI 접속하기전에 AP에 DHCP를 고정으로 할당하기 위해서 아래와 같이 Mac주소를 알아내자.
나의 경우는 Raspberry PI의 WIFI만 이용할 것이므로 wlan0의 Mac 주소로 할당을 할 것이다.


WLAN 과 ETH 상태확인 
$ ifconfig  //현재 wlan0 상태와 eth0 연결상태확인 
....
wlan0: flags=4163 up  mtu 1500
...
ether b8:27:eb:ba:e2:ad  
....

  1. 현재 사용중인 AP를 DHCP Server 상위 Mac Address에 맞게 고정 IP로 할당
  2. Raspberry의 상위 우측의 WIFI 연결 후  다시 설정된 IP확인 

WLAN 상태 및 기능확인 
$ iwconfig  // 현재 wlan0 의 ESSID 와 Mode 확인 (Managed)
wlan0     IEEE 802.11 ESSID:"JHLEE_AP"
          Mode:Managed   Frequecy:2.417 GHz .....
          ....
          
          
$ iw list // WIFI Phy 정보도 확인가능 (monitor 모드 미제공)
....
Supported interface mode:  //이부분 확인 후  다음 Supported TX/RX Frame Tyepe 확인 
    * IBSS
    * manged
    * AP
    * P2P-Client
    * P2P-GO
    * P2P-device 
    ....
    
    software interface modes (can always be added):  // 이 부분 확인     

WLAN0 monitor 모드 
Raspberry Pi에서 monitor 모드 사용하고자하면, USB Dongle을 이용하시길 

  • GUI 화면 SSH Server 및 VNC Server 설정 
GUI 화면에서 아래와 같이 상단 좌측의 위 버튼을 누르면 아래와 같이 설정 가능하다
쉽게

  Preferences->Raspberry Pi Configuration->Interfaces



Interfaces 에서 VNC와 SSH 및 Camera를 Enable 해주고, 아래와 같이 GUI 우측 상단에 WIFI 설정을 하여 AP에 연결하자


만약 Terminal에서 AP를 설정한다고 하면 아래와 같이 해주자.

$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf 
network={
        ssid="JHLEE_AP"
        psk=xxxxx"          # Password 
        key_mgmt=WPA-PSK
}

1.2 VNC Server 와 VNC Viewer 설치 

Raspberry 안에 VNC Server를 설치 후 Window/Linux에서 VNC Viewer(Client)를 통해 Display 장치 없이 원격으로 이를 제어하자. 

  • VNC Server 와 VNC Viewer 확인 
기본적으로 Rasbperry Pi Image에  VNC Server 와 VNC View는 내부에 포함하고 있지만 없을 경우 아래와 같이 설치해주자.

$ sudo apt-get update
$ sudo apt-get install realvnc-vnc-server 
$ sudo apt-get install realvnc-vnc-viewer

현재 확인을 해보니, tightvnc는 지원을 안해주는 것 같다.

  • Terminal에서 VNC and SSH Server 설정 
$ sudo raspi-config 
 interfacing options 
     -> vnc-server enable


  • VNC 와 SSH Server의 기본 ID와 PW
기본 Raspberry Pi의 ID와 Password는 아래와 동일하다

ID: pi 
PW:raspberry 

만약 변경하고자 한다면
  Preferences->Raspberry Pi Configuration->System->Change Password



1.3. Window/Linux의 VNC Viewer 설치 및 연결 

RealVNC를 Window용으로 다운받아 설치를 하자

   VNC-Viewer-6.17.1113-Windows.exe

  • Window/Linux Download 
   https://www.realvnc.com/en/connect/download/viewer/

이제 Network가 정상적으로 연결이 되고, VNC Server가 동작이 되면 Window에서 Remote Control이 되므로, 이제 HDMI 모니터 대신 VNC Viewer를 사용하자

기타 VNC Viewer
  https://www.tightvnc.com/


2. 각 기타 설정 변경 

  • Display 화면의 Resolution 변경 
GUI에서 아래와 같이 본인이 원하는 Resolution으로 변경을 해주자.

  Preferences->Raspberry Pi Configuration->System->Set Resolution

  Default(720x480)
  1920x1080으로 변경


아래와 같이 Full HD로 변경 우측에 VNC 및 WIFI 부분을 확인 가능


아래와 같이 다양한 옵션이 있으니, 가급적 아래와 명령어로 수정을 하자.
상위 모든 수정은 아래의 raspi-config에서 가능하다.

  • 시간과 지역설정 
일단 아래와 같이 시간만 설정을 해보고, WIFI-Country도 기본설정을 하자.

TimeZone 
 - Area : Asia
 - Location: Seoul

  • GUI에서 지역 및 시간 설정 
   Preferences->Raspberry Pi Configuration->Localisation

  • Terminal에서 설정 
$ sudo raspi-config 
 Localisation Options
     -> I1 Change Locale             // Language 설정 , Korea , UTF8 설정  
     -> I2 Change Timezone           // Timezone       
     -> I3 Change Keyboard Layout    // Keyboard 설정 
     -> I3 Wi-fi Country             // WIFI Country 변경  


6/10/2018

IEEE 802.3 L2 관련사항

1. IEEE 802.x 관련 내용 

아래 Wiki 정보를 보면 IEEE802.x에 진행중인 그룹들을 쉽게 알수 있다. IEEE 802.1/3/11를 제외하면 더 이상 신기술이 없을 것 같다.
이외에 IEEE 802.x 그룹이 있지만, 나에게는 큰 관심거리가 아니라서 아래와 같이 정리한다.

현재관심은 IEEE 802.3/ 2 / 1 이며, IEEE 802.11 이 어떻게 IEEE 802.3과 호환이 되는지 그부분이 관심사 이다

NameDescriptionNote
IEEE 802.1Higher Layer LAN Protocols (Bridging)active
IEEE 802.2LLCdisbanded
IEEE 802.3Ethernetactive
IEEE 802.4Token busdisbanded
IEEE 802.5Token ring MAC layerdisbanded
IEEE 802.6MANs (DQDB)disbanded
IEEE 802.7Broadband LAN using Coaxial Cabledisbanded
IEEE 802.8Fiber Optic TAGdisbanded
IEEE 802.9Integrated Services LAN (ISLAN or isoEthernet)disbanded
IEEE 802.10Interoperable LAN Securitydisbanded
IEEE 802.11Wireless LAN (WLAN) & Mesh (Wi-Fi certification)active

그외의 자료는 아래의 Wiki 참고
  https://en.wikipedia.org/wiki/IEEE_802


1.1 IEEE 802.x 관련정보 

IEEE 802.3 관련세부정보
  https://en.wikipedia.org/wiki/IEEE_802.3

IEEE 802.3 (CSMA/CD)
  https://en.wikipedia.org/wiki/Carrier-sense_multiple_access_with_collision_detection

IEEE 802.11 (CSMA/CA)
  https://en.wikipedia.org/wiki/Carrier-sense_multiple_access_with_collision_avoidance


2. Ethernet Frame (Layer 2)

Ethernet은 OSI의 Layer 2에 해당하며, 기존에 가지고 있던 Ethernet 지식으로 Packet을 분석을 해보면 가끔 이해 안될 때 가 있어 이 부분을 좀 더 알아보려 한다.

정확히 궁금한 부분은 MAC 주소와 다양한 EtherType 부분이며, WLAN과 호환성일 것이다.

802.3 Ethernet packet and frame structure
LayerPreambleStart of frame delimiterMAC destinationMAC source802.1Q tag (optional)Ethertype (Ethernet II) or length (IEEE 802.3)PayloadFrame check sequence(32‑bit CRC)Interpacket gap
octets1 octet6 octets6 octets(4 octets)2 octets46‑1500 octets4 octets12 octets
Layer 2 Ethernet frame← 64–1522 octets →
Layer 1 Ethernet packet & IPG← 72–1530 octets →← 12 octets →
The optional 802.1Q tag consumes additional space in the frame. Field sizes for this option are indicated parenthetically in the table above. IEEE 802.1ad (Q-in-Q) allows for multiple tags in each frame. This option is not illustrated here.


  • VLAN(Virtual LAN, 802.1Q)
802.1Q은 옵션이기때문에, EtherType과 같은 위치에 존재하므로, 사용해야 한다면 EtherType: 0x8100 설정하고, Layer2 에 802.1Q의 TAG가 삽입되며서 EtherType은 TPID로변경이되어 Layer2가 확장된다.

802.1Q (Virtual LAN)는 아래 wiki보면 쉽게 이해간다.
  1. EtherType: 0x8100
  2. EtherType: 0x88A8
  https://en.wikipedia.org/wiki/IEEE_802.1Q



  • IEEE 802.2/3 EtherType or Length의 선택 
기존의 Ethernet은 EtherType을 Length로 사용하여, 46(0x002E) ~ 1500(0x05DC)를 했지만, 이 영역을 피하여,
Ethernet v2는 1536(0x0600)이상 설정하여 EtherType로 설정한다.


Ethernet frame differentiation
Frame typeEthertype or lengthPayload start two bytes
Ethernet II≥ 1536Any
Novell raw IEEE 802.3≤ 15000xFFFF
IEEE 802.2 LLC≤ 1500Other
IEEE 802.2 SNAP≤ 15000xAAAA


MTU 관련내용
  https://en.wikipedia.org/wiki/Maximum_transmission_unit


  • Ethernet Type 2 Frame 
EtherType : 0x0800  IPv4로 사용하면 Payload 역시 1500+14+4 = 1518이지만, 스니핑을 하게되면 CRC는 L2에서 제거되어 Max 1514로 표시




상세한 내용은 아래 WIKI 정보참고
  https://en.wikipedia.org/wiki/Ethernet_frame


2.1 MAC Address 

Layer2의 MAC Address는 기본구성은 6Bytes 이며 8x6=48bit이로 구성이 되었다.
이를 MAC-48 이라 불렀지만, 구식이되어 이를 EUI-48이라고 호칭하고 있다.
그리고 이에 나아가 2bytes를 추가한 EUI-64 사용을 장려한다고 한다.

  • MAC-48/EUI-48을 EUI-64 확장방법 
아래의 Wiki 사이트에 예제뿐만아니라 설명이 잘되어있다.


  • MAC-48 or EUI-48의 기본구조 파악 
이론상으로 2^48 즉 281,474,976,710,656 가진 경우의 수를 사용할 수 있지만, 다음과 같은 구조로 분리가 되어 제약이 있다.

우선 3Bytes 두개로 분리되어 다음과 같은 목적으로 사용이 된다.
  1. OUI(Organisationally Unique Identifier) : 기업/기관이 사용으로 번호를 구입
  2. NIC(Network Interface Controller): 구입한 기업/기관이 각각 사용할 있는 번호들 

앞의 3byte인 OUI를 보면 앞의 1 Byte의 7bit 정보로 UNICAST/MULTICAST이 알수있다.
  1. UNICAST(0)    : 일반적인 통신 
  2. MULTICAST(1) : Multicast 할때 사용 
  3. BROADCAST:  Destination MAC을 전부 (FF:FF:FF:FF:FF:FF)로 설정 
앞의 3byte인 OUI를 보면 앞의 1 Byte의 6bit 정보로 글로벌/개인용 분리
  1. Globally Unique Address (0)
  2. Locally administered Address(1) 






OUI
  https://en.wikipedia.org/wiki/Organizationally_unique_identifier

MAC
  https://en.wikipedia.org/wiki/MAC_address
  https://en.wikipedia.org/wiki/Medium_access_control


2.2 EtherType

다양한 EtherType을 정리하는 것이지만, 일반적으로 많이 사용되는 EtherType부터 알아보자.
  • 일반 LAN 관련사항 
  1. 0x0800   : IPv4
  2. 0x86DD  : IPv6
  3. 0x0806   : ARP

  • WLAN 관련사항 
  1. 0x888E  :  EAP over LAN (IEEE 802.1X)
  2. 0x88C7  :  Pre-Authentication

EtherType values for some notable protocols[8]
EtherTypeProtocol
0x0800Internet Protocol version 4 (IPv4)
0x0806Address Resolution Protocol (ARP)
0x0842Wake-on-LAN
0x22F3IETF TRILL Protocol
0x22EAStream Reservation Protocol
0x6003DECnet Phase IV
0x8035Reverse Address Resolution Protocol
0x809BAppleTalk (Ethertalk)
0x80F3AppleTalk Address Resolution Protocol (AARP)
0x8100VLAN-tagged frame (IEEE 802.1Q) and Shortest Path Bridging IEEE 802.1aq with NNI compatibility
0x8137IPX
0x8204QNX Qnet
0x86DDInternet Protocol Version 6 (IPv6)
0x8808Ethernet flow control
0x8809Ethernet Slow Protocols
0x8819CobraNet
0x8847MPLS unicast
0x8848MPLS multicast
0x8863PPPoE Discovery Stage
0x8864PPPoE Session Stage
0x886DIntel Advanced Networking Services 
0x8870Jumbo Frames (Obsoleted draft-ietf-isis-ext-eth-01)
0x887BHomePlug 1.0 MME
0x888EEAP over LAN (IEEE 802.1X)
0x8892PROFINET Protocol
0x889AHyperSCSI (SCSI over Ethernet)
0x88A2ATA over Ethernet
0x88A4EtherCAT Protocol
0x88A8Provider Bridging (IEEE 802.1ad) & Shortest Path Bridging IEEE 802.1aq
0x88ABEthernet Powerlink
0x88B8GOOSE (Generic Object Oriented Substation event)
0x88B9GSE (Generic Substation Events) Management Services
0x88BASV (Sampled Value Transmission)
0x88CCLink Layer Discovery Protocol (LLDP)
0x88CDSERCOS III
0x88DCWSMP, WAVE Short Message Protocol
0x88E1HomePlug AV MME
0x88E3Media Redundancy Protocol (IEC62439-2)
0x88E5MAC security (IEEE 802.1AE)
0x88E7Provider Backbone Bridges (PBB) (IEEE 802.1ah)
0x88F7Precision Time Protocol (PTP) over Ethernet (IEEE 1588)
0x88F8NC-SI
0x88FBParallel Redundancy Protocol (PRP)
0x8902IEEE 802.1ag Connectivity Fault Management (CFM) Protocol / ITU-T Recommendation Y.1731 (OAM)
0x8906Fibre Channel over Ethernet (FCoE)
0x8914FCoE Initialization Protocol
0x8915RDMA over Converged Ethernet (RoCE)
0x891DTTEthernet Protocol Control Frame (TTE)
0x892FHigh-availability Seamless Redundancy (HSR)
0x9000Ethernet Configuration Testing Protocol
0x9100VLAN-tagged (IEEE 802.1Q) frame with double tagging

다양한 EtherType 관련자료
  http://en.wikipedia.org/wiki/EtherType
  http://standards-oui.ieee.org/ethertype/eth.txt
  https://nmap.org/book/nping-man-ethernet-options.html
  https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml

2.3 Multicast 사용시 MAC Address 범위와 EtherType

MAC주소의 OUI에서 Multicast Bit정보를 알았으니, 그 기반으로 사용되어지는 Multicast MAC주소 범위를 알려준다. 

WLAN(802.11) 도 EtherType: 0x0800 (IPv4) ,EtherType: 0x86DD (IPv6) 동일하게 사용한다고한다.

Some well known Ethernet multicast addresses
Ethernet multicast addressType FieldUsage
01-00-0C-CC-CC-CCCDP (Cisco Discovery Protocol), VTP (VLAN Trunking Protocol), UDLD (Unidirectional Link Detection)
01-00-0C-CC-CC-CDCisco Shared Spanning Tree Protocol Address
01-80-C2-00-00-00Spanning Tree Protocol (for bridges) IEEE 802.1D
01-80-C2-00-00-00, or
01-80-C2-00-00-03, or 01-80-C2-00-00-0E
0x88CCLink Layer Discovery Protocol
01-80-C2-00-00-080x0802Spanning Tree Protocol (for provider bridges) IEEE 802.1ad
01-80-C2-00-00-010x8808Ethernet flow control (Pause frame) IEEE 802.3x
01-80-C2-00-00-020x8809Ethernet OAM Protocol IEEE 802.3ah (A.K.A. "slow protocols")
01-80-C2-00-00-30 - 01-80-C2-00-00-3F0x8902Ethernet CFM Protocol IEEE 802.1ag
01-00-5E-00-00-00 - 01-00-5E-7F-FF-FF0x0800IPv4 Multicast (RFC 1112), insert the low 23 Bits of the multicast IPv4 Address into the Ethernet Address (RFC 7042 2.1.1.)
33-33-xx-xx-xx-xx0x86DDIPv6 Multicast (RFC 2464), insert the low 32 Bits of the multicast IPv6 Address into the Ethernet Address (RFC 7042 2.3.1.)
01-0C-CD-01-00-00 -
01-0C-CD-01-01-FF
0x88B8IEC 61850-8-1 GOOSE Type 1/1A
01-0C-CD-02-00-00 -
01-0C-CD-02-01-FF
0x88B9GSSE (IEC 61850 8-1)
01-0C-CD-04-00-00 -
01-0C-CD-04-01-FF
0x88BAMulticast sampled values (IEC 61850 8-1)
01-1B-19-00-00-00, or
01-80-C2-00-00-0E
0x88F7Precision Time Protocol (PTP) version 2 over Ethernet (layer-2)

이더넷 멀티캐스트
  https://en.wikipedia.org/wiki/Multicast_address


멀티캐스트
  http://karhem.tistory.com/36

6/07/2018

Git 사이트링크 및 관련링크 (Gitlab 사용 및 Docker 기능이용)

1. Git Site 가격 및 개별 정책 확인 

Github/Gitlab/Bitbucket 비교
  https://m.blog.naver.com/dlwhdgur20/221006619001

매번 가격과 기능정책이 변경되므로, 사실 주기적으로 가격과 지원사항을 직접 확인하자.

기업에서는 Bitbucket의 JIRA를 선호하는 것으로 보이면, 중/소기업은 Gitlab 선호하는 것으로 보인다. 
Github은 주로 Open Project용으로 많이 사용하는 것으로 보이는데, 가장크니, 많은 기능을 제공해주고 있다. 

Github 가격 및 정책확인

Gitlab 가격 및 정책확인

Bitbucket 가격 및 정책확인 

Gitlab 이외 GIT IO
  https://gogs.io/

Gitbook (Github와 연동가능)
현재 가입을 한 후 미사용했으며, 직접 사용해본 후 Link 
  https://legacy.gitbook.com/book/madnite1/git-gitlab-jenkins/details


1.1 Raspberry Pi 기반으로 Git 설치형서버 



1.2  Gitlab 관련사항

현재 가격적으로 Gitlab이 가장 좋고 괜찮으며, Community의 경우 무료로 설치가능하며,
Raspberry Pi 기반으로 Docker로 HDD는 RAID로 해서 만들어도 괜찮을 것 같다. 

물론 Build Server (CI)는 별도로 외부에 구성을 해야겠지만, 현재 Raspberry Pi 구성은 괜찮음

Gitlab CI ( Community Version 추후 사용)
  https://swalloow.github.io/gitlabci-docker

Gitlab 과 SLACK 연결   

Gitlab 기본 Manual 
Gitlab CE Docker 다른곳으로 이전방법 
Docker 기반의 Jenkins