슬랙 앱 관련 설정이 여기저기 흩어져 있어서 찾기가 어렵다. 설치된 앱을 볼 때 다르고, OAuth 관련 토큰이나 재설치 할 때 다르고.
앱 관련 OAuth 권한 설정이 토큰이 필요할 때는 https://api.slack.com/apps
슬랙 앱 관련 설정이 여기저기 흩어져 있어서 찾기가 어렵다. 설치된 앱을 볼 때 다르고, OAuth 관련 토큰이나 재설치 할 때 다르고.
앱 관련 OAuth 권한 설정이 토큰이 필요할 때는 https://api.slack.com/apps
ipsec.secrets 와 당연히 동일(e.g. mySecretKey)해야 한다.ipsec.conf의 leftid와 동일(e.g. dasomoli.org)해야 한다.FortiGate CLI에서 확인
diagnose vpn ike gateway list
또는:
diagnose vpn tunnel list
strongswan 을 설치한다.
brew install strongswan
/opt/homebrew/etc/ipsec.conf 설정 파일을 작성한다.
config setup
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2"
conn fortigate
keyexchange=ikev1
aggressive=no
authby=psk
forceencaps=yes
installpolicy=yes
type=tunnel
left=%defaultroute
leftid=@dasomoli.org
right=11.13.3.1
rightid=11.13.3.1
leftsubnet=192.168.0.0/24
rightsubnet=192.168.64.0/19,10.30.0.0/16
leftupdown=/opt/homebrew/etc/ipsec-updown.sh
ike=aes256-sha256-modp2048!
esp=aes256-sha256-modp2048!
ikelifetime=86400s
lifetime=3600s
dpdaction=restart
auto=start
설정 파일에서 사용하는 /opt/homebrew/etc/ipsec-updown.sh 를 작성한다. 이는 strongSwan은 macOS에서 커널 라우팅 테이블에 자동으로 라우트를 추가하지 않기 때문이다. 이는 macOS 커널이 PF_ROUTE를 통해 정책 기반 라우팅을 제공하지 않기 때문이다. 따라서 updown 스크립트를 활용해 수동 라우팅을 추가한다.
#!/bin/sh
case "$PLUTO_VERB" in
up-client)
/sbin/route add -net 10.30.0.0/16 -interface $PLUTO_INTERFACE
/sbin/route add -net 192.168.64.0/19 -interface $PLUTO_INTERFACE
;;
down-client)
/sbin/route delete -net 10.30.0.0/16
/sbin/route delete -net 192.168.64.0/19
;;
esac
PSK를 /opt/homebrew/etc/ipsec.secrets 파일 안에 다음과 같이 넣는다.
@dasomoli.org @fortigate : PSK "mySecretKey"
macOS에서는 시스템 서비스로 실행되지 않기 때문에, 수동으로 아래와 같이 실행한다.
sudo ipsec start
또는
sudo ipsec down fortigate
sudo ipsec up fortigate
로그 확인:
log show --predicate 'process == "charon"' --info --last 5m
연결 확인:
ipsec statusall
종료:
sudo ipsec stop
라우팅 확인:
route -n get 10.30.0.1
혹은:
netstat -rn | grep 10.
~/.ssh/config 파일 안에 hostname을 지정한다면, 그 뒤에 IP 주소를 함께 지정하면 hostname이나 IP 둘 중 어느 하나로 접속해도 같은 설정이 적용된다. 항목을 여러개 만들 필요 없다. 공백으로 구분하면 다 같이 적용된다. 예를 들면 다음과 같다.
Host nas.dasomoli.org 112.145.250.152 192.168.0.204
HostName nas.dasomoli.org
User dasomoli
Port 2048
IdentityFile ~/.ssh/id_rsa_dasomoli_nas
AWS CLI를 이용해서 ALB 관련 설정을 백업하고 삭제하자.
Config
aws elbv2 describe-load-balancers [--region <Region>] --load-balancer-arns <ALB ARN>
Listener
aws elbv2 describe-listeners [--region <Region>] --load-balancer-arn <ALB ARN>
Listener Rules
위의 Listner를 얻은 정보에서 각 Lisner 별로 각각 실행한다.
aws elbv2 describe-rules [--region <Region>] --listener-arn <Listener ARN>
나중에 필요하면 위의 정보로 다시 ALB를 추가한다.
execution layer client로 geth를, consensus layer client로 Prysm을 사용한다.
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt update
sudo apt install -y geth
확인
geth version
sudo vi /etc/systemd/system/geth.service
[Unit]
Description=Ethereum Geth Node
After=network.target
[Service]
Type=simple
User=dasomoli
ExecStart=/usr/bin/geth --mainnet --syncmode "snap" --datadir "/home/dasomoli/geth/data" --http --http.api web3,eth,txpool --http.addr 0.0.0.0
Restart=always
RestartSec=5
LimitNOFILE=8192
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start geth
sudo systemctl enable geth
sudo systemctl status geth
위에서는 “snap” 방식을 사용했다. sync mode로 “full”도 가능.
도메인을 연결한다면 설정에 다음 설정을 포함해야 한다.
--http.corsdomain "*" \
--http.vhosts "*"
IPC로 geth console 연결
geth attach ipc:/home/dasomoli/geth/data/geth.ipc
로그 확인
journalctl -u geth -f
mkdir prysm
cd prysm/
sudo apt update
sudo apt install -y wget
wget <https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh>
chmod +x prysm.sh
sudo vi /etc/systemd/system/prysm-beacon.service
[Unit]
Description=Prysm Beacon Chain Client
After=network.target
[Service]
Type=simple
User=dasomoli
ExecStart=/home/dasomoli/prysm/prysm.sh beacon-chain \
--execution-endpoint=http://localhost:8551 \
--datadir=/home/dasomoli/prysm/data \
--jwt-secret=/home/dasomoli/geth/data/geth/jwtsecret \
--accept-terms-of-use \
--mainnet \
--checkpoint-sync-url=https://beaconstate.info --genesis-beacon-api-url=https://beaconstate.info
Restart=always
RestartSec=5
LimitNOFILE=8192
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start prysm-beacon
sudo systemctl enable prysm-beacon
sudo systemctl status prysm-beacon
로그 확인
journalctl -u prysm-beacon -f
Unattended Upgrade 설치
sudo apt update
sudo apt install unattended-upgrades
자동 업데이트 활성화
sudo dpkg-reconfigure --priority=low unattended-upgrades
설정 파일 편집: sudo vi /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
"Ubuntu stable";
"Ubuntu ${distro_codename}-security";
"Ubuntu ${distro_codename}-updates";
};
업데이트 주기 설정: sudo vi /etc/apt/apt.conf.d/20auto-upgrades
다음은 패키지 목록 업데이트 간격(1 = 매일), 자동 업데이트 실행 간격 (1 = 매일)
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
로그는 다음에서 확인 가능
less /var/log/unattended-upgrades/unattended-upgrades.log
자동 재부팅 설정: sudo vi /etc/apt/apt.conf.d/50unattended-upgrades
다음은 새벽 2시에 자동 리부팅.
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
apt-get install -y fonts-nanum
fc-cache -fv
rm ~/.cache/matplotlib -rf
혹은 Windows에서는
from matplotlib import font_manager, rc
font_path = 'C:/Windows/Fonts/NGULIM.TTF'
font = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font)
아래 플러그인을 설치하면 된다.
설치 후 “설정” 메뉴에 보면, “MIME 유형 설정”이 생긴다.

그 후 아래처럼 “json = application/json”을 추가한 후 “저장” 하면 된다. “보안 옵션”도 켰다.

로그 남길 때 그냥 주구장창 남기면 디스크가 꽉 찬다.
/var/log 아래 남는 log 들처럼 주기적으로 gzip으로 압축하고, 오래된 로그는 저절로 지워지도록 하고 싶을 때 logrotate를 쓴다.
logrotate를 설정해서 주기마다 압축해서 남기고, 때 되면 지우도록 만들자.
아래 명령은 도움말인 man page를 보여 준다.
# man logrotate
logrotate의 설정 파일들은 아래에서 찾을 수 있다.
/etc/logrotate.conf : logrotate의 기본 설정 파일. 여기서 /etc/logrotate.d/ 아래의 파일들을 include 하도록 되어 있다.
/etc/logrotate.d/ : logrotate를 사용해서 로그를 남기고 싶은 유틸리티들이 여기다 설정 파일을 둔다.
예제를 보자.
# vi /etc/logrotate.d/mysqlmon
/var/log/mysqlmon/mysqlmon.log /var/log/mysqlmon/mysqlmon.err {
daily
missingok
rotate 7
compress
notifempty
}
위의 예제의 각 옵션은 다음과 같다.
daily: 하루 주기
missingok: 로그 파일이 없어도 에러 메시지를 쓰지 않는다.
rotate 7: 오래된 로그를 7개 남긴다.
compress: gzip으로 압축한다.
notifempty: 로그 파일이 비어 있으면 rotate하지 않는다.
다른 자세한 옵션은 man page를 참고하자.