Linux初心者でエンジニアってありですか?

自宅にNAS(SAMBA)を立てられれば大体満足している。

個人WikiにとりあえずGROWI!

久しぶりにそこそこサーバイジリをしたのでちゃんと残しておこうかと
備忘録なので細かいところは抜きですが

GROWIとは

MarkDown形式で簡単に書けるWikiサービス

growi.org

HackMDと連携して色々書けるってことで便利そうだなと

構築の流れ

楽そうという理由でまだまだ詳しくもないDockerを使ってみる

  1. ESXi上にUbuntuServer(18.04)を適当に構築
  2. DockerCE/docker-composeインストール
  3. mydnsでドメインを取得
  4. GROWIを入れてみる
  5. HackMDを入れてみる
  6. https-portalHTTPS

1.2.は飛ばして
3.はゾーン設定について 4.5.6.メイン

mydnsの設定

Free Dynamic DNS (DDNS) for Home Server and VPS etc | MyDNS.JP

  • Domain
    • dev-hideaki.live-on.net
ラベル レコード リリースデータ
www A
wiki CNAME www
hackmd CNAME www

どちらかというとmydnsの場合はちゃんとレコード更新し続ける仕組みが重要ですね。 私の場合は自宅のQNAP NASにcronを仕込んでます。

*/5 * * * * /share/cron/mydns.sh > /share/cron/cron.log

cronの中身は公式の"LET'S TRY"にあるのでそこを参照

GROWI × HackMD × https-portal

急に現れたhttps-portal…元々組み込もうと思っていたんですがなんとGROWI側でテンプレートまで用意されていた!これはその通りやればいけるのでは?

と安易にやったらまる一日死んだ… その結果が以下のconfig

  • docker-compose.yml
    ports:
      - 3000:3000    # localhost only by default
    links:
~~~~~~~~~~~~~~~~~~
      - ELASTICSEARCH_URI=http://elasticsearch:9200/growi
      - PASSWORD_SEED=changeme
      # - FILE_UPLOAD=mongodb   # activate this line if you use MongoDB GridFS rather than AWS
      - FILE_UPLOAD=local     # activate this line if you use local storage of server rather than AWS
      # - MATHJAX=1             # activate this line if you want to use MathJax
      # - PLANTUML_URI=http://  # activate this line and specify if you use your own PlantUML server rather than public plantuml.com
      - HACKMD_URI=https://hackmd.dev-hideaki.live-on.net    # activate this line and specify HackMD server URI which can be accessed from GROWI client browsers
      - HACKMD_URI_FOR_SERVER=http://hackmd:3000  # activate this line and specify HackMD server URI which can be accessed from this server container
      # - can be accessed from this server container
  • docker-compose.override.yml
version: '3'

services:
  ##
  # HackMD(CodiMD) container
  # see https://github.com/hackmdio/codimd#configuration
  #
  hackmd:
    build:
      context: ./hackmd
    environment:
      - GROWI_URI=https://wiki.dev-hideaki.live-on.net
      - HMD_DB_URL=mysql://hackmd:hackmdpass@mariadb:3306/hackmd
      - HMD_CSP_ENABLE=false
    ports:
      - 3100:3000   # localhost only by default
    depends_on:
      - mariadb
    restart: unless-stopped

  ##
  # MariaDB
  # see https://hub.docker.com/_/mariadb/
  mariadb:
    image: mariadb:10.3
    command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
    environment:
      - MYSQL_USER=hackmd
      - MYSQL_PASSWORD=hackmdpass
      - MYSQL_DATABASE=hackmd
      - MYSQL_RANDOM_ROOT_PASSWORD=true
    restart: unless-stopped
    volumes:
      - mariadb_data:/var/lib/mysql

  # a fully automated HTTPS server powered by Nginx, Let's Encrypt
  # see https://github.com/SteveLTN/https-portal
  https-portal:
    image: steveltn/https-portal:1
    ports:
      - '80:80'
      - '443:443'
    links:
      - app:app
      # - hackmd:hackmd
    environment:
      DOMAINS: 'wiki.dev-hideaki.live-on.net -> http://app:3000,
                hackmd.dev-hideaki.live-on.net -> http://dockerhost:3100'
      # STAGE: 'local'
      # STAGE: 'staging'
      STAGE: 'production'
      FORCE_RENEW: 'true'
      WEBSOCKET: 'true'
      CLIENT_MAX_BODY_SIZE: 0
    restart: unless-stopped
    volumes:
      - https-portal_data:/var/lib/https-portal

volumes:
  mariadb_data:
  https-portal_data:

docker-compose.overirde.ymlはexample内のhttps-portalとintegrate-with-hackmdから拝借してひとまとめ

これで一通り動いた…と思ったんですが…
hackmdも動いている…様に見えてたんですが…
hackmdでの編集が反映されない…

誰か教えてーーーー

f:id:easyToGo:20190428182519p:plain
メモページ

こんな風になページをHackMDで開き直してみても

f:id:easyToGo:20190428182740p:plain
hackmd on growi

完全に初期状態… どう同期させるんだろう??

OSS-DB Exam Silver 技術解説無料セミナーに行ってきました。

前置き

昨日前置き書いたから今日も書くべきだろうか?一応書いておこう。
たぶんいらないけど思い込み。

というわけで行ってきましたセミナー!

oss-db.jp

非常に楽しかったのでそのご報告です。
ぇ?July Tech Festa2018じゃないのか?って
それは他の人が行ってるし、自分DB分からん初心者ですし…むしろちょうどいいよね( ̄▽ ̄)

OSS-DB Exam Silverとは?

OSS-DB Silver|DBスペシャリストを認定する資格 OSS-DB技術者認定試験

正直私はこのセミナーに申し込んでから内容を初めてしりました。
完全にPostgreSQLの話なんですね。

OSS-DBって最初聞いてMySQLかなと思いましたが、たぶんライセンスなんでしょうね。PostgreSQLBSDライセンスというものらしくて無保証、改変自由とのことです。MySQLGPLライセンスの他、商用ライセンスもあるのでそういうことかなぁと勝手に妄想してます。

セミナー内容

正直DBに関してSQL文が本当に少しだけ分かりますって程度の人間なのでレベル大丈夫かなと思っていましたが、むしろ対象はそんな人たちでした。
ですので自分としてはきれいにハマった感じです。

具体的には、

  1. データベースに必要な要素
  2. RDBMSとは
  3. PostgreSQLとは
  4. SQL文の書き方
  5. DB管理者に必要なこと(PostgreSQLでのやり方)

とまぁサイトからダウンロードできるPDFを見れば分かるのですが、非常に分かりやすくまとまっている上、講師の方は他のDBソフトとも比較しながら教えて頂けるので実際に扱ったことはなくても利用する場面は想像できました。
ぶっちゃけ資格受験まで考えてはいませんでしたが、こういうところは試験で出ますよって言われると色々考えちゃいますよねwww

まとめ

OSS-DB Exam Silver 技術解説無料セミナーは

DB完全初心者にこそおすすめ

喜田 紘介先生、本当にありがとうございました。

LinuxでIPアドレスを固定化したい(CentOS7.5、Ubuntu18.04)

前置き

クラウド系を勉強して高単価エンジニアを目指そう!とAWS頑張ってきましたが問題が…

圧倒的に純粋なOSやアプリ/ミドルウェア側の知識が足りてない!!

というわけで心機一転、一からLAMP/Mail/Proxyサーバーやネットワークについて勉強していこうと思っています。正直オンプレの知識がそれなりに深くないとクラウドどころじゃないです。

前置きが長くなりましたが、2つの巨大Linux distributionであるRedhat系(CentOS)とUbuntuで比較しながら色々やっていこうと思います。ちなみにあくまで備忘録です、あしからず

CentOS7.5でのIP固定

基本的にConfigファイルを直接設定はご法度!nmcli(CLI操作)やnmtui(GUI操作)コマンドで各パラメーターを設定していきます。
ちなみに参考にしたサイトの中でもおススメはこちら

CentOS 7 : 初期設定 : ネットワークの設定 : Server World

見ての通りですが、コマンド操作の場合は以下のように行います。

# nmcli connection modify <インターフェース名> <パラメーター>=<設定値>

ちなみに一つ一つ設定入れる前に管理しやすいように一行コマンドを書いてシェルにして保存しておくと楽です。 私の環境だと

#!/bin/bash

nmcli connection modify <インターフェース名> \        
    connection.autoconnect yes \        #インタフェースの自動起動
    ipv4.method manual \                #固定IPに設定
    ipv4.address 192.168.0.101/24 \     #IPアドレス
    ipv4.gateway 192.168.0.1 \          #デフォルトゲートウェイ
    ipv4.dns 192.168.0.1                #DNSサーバーアドレス

こんな感じ(コメント箇所無し)
あとはインタフェースを再起動するかOS再起動します。

# nmcli connection down <インターフェース名>; nmcli connection up <インターフェース名>

または

# reboot

最後にIPアドレスの設定状況を確認

$ ip addr
~~~~
    2: <インターフェース名>: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
~~~~
    inet 192.168.0.101/24 brd 192.168.0.255 scope global noprefixroute ens192

とちゃんと設定されていることが確認できました。また全パラメーター確認するのであれば以下

$ nmcli connection show <インターフェース名>

パラメーターシートとか作成するときには使うかなと思います。

Ubuntu18.04でのIP固定

参考にさせていただいたサイトはこちら

【Ubuntu 18.04 LTS Server】ネットワーク設定を固定IPに変更 | The modern stone age.

正直これ以上言うことも書くことも無いし、非常に簡単
/etc/network/interfaceを使わなくなりましたよ!という話(Ubuntu17.10から)

書いてある通りではあるのですが、やっていきます。 まずはインタフェース名を確認

$ ip addr

または

$ ifconfig -a

50-cloud-init.yamlのファイルを開きインタフェースのIP設定を以下のようにします。

$ sudo vi /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        <インタフェース名>:
            dhcp4: no
            addresses:
            - 192.168.0.102/24
            gateway4: 192.168.0.1
            nameservers:
                addresses:
                - 192.168.0.1
                search: []
            optional: true
    version: 2

最後にIPアドレスの反映

$ sudo netplan apply

インタフェースにIPアドレスが反映されているか確認

$ ip addr
~~~~
2: <インタフェース名>: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
~~~~
    inet 192.168.0.102/24 brd 192.168.0.255 scope global ens160

と無事反映されていることが確認できました。しかも他の方のブログに書いてある通り再起動は不要!!!
いいですねぇ♪ちなみにnmcliをインストールしてCentOSと同じようにすることも可能です。
Networkmanager自体は同じってことですかね。

では

昨日「第14回ゼロから始めるセキュリティ入門 勉強会」に行ってきた

お久しぶりです。

なんかいいネタ欲しい!あった!!
ってなってもメモ忘れたり、なに書こうとしてたっけ??
となり備忘録にしたいのになってすらいない感じです。

さて、とりあえず昨日Connpassで見つけたイベントに行ってきました。

秋葉原]第14回ゼロから始めるセキュリティ入門 勉強会

weeyble-security.connpass.com

LT大会なんだけど、初めてなので雰囲気を楽しもうと何も持たずに参加!
PCぐらいはあってもよかったかな?と思いつつ…

そしてLT大会といいつつほとんど自分みたいな感覚の人で集まっていたみたいで発表者3人!!
1時間半の枠に3人だから一人30分!!
完全に一つの大き目なプレゼンですねw

そして一人目、幹事でもある

ytakahashi1228さん

CTFに関しては自分も興味があって全くどうしていいか分からないという状況だったので非常にありがたかった。

ksctf

https://ksnctf.sweetduet.info/

をやってみたということだが、実際やってみるとPC環境によって上手くいかなかったりとかもあるとか…
即興で解析プログラムを書いたり、WiresharkでPcapみたり、攻撃仕掛けてみたりと色々楽しそう!!

ということでksctfは忘れないようにしようと心に決めた!!

お二人目は

lmt_swallowさん

若干19歳東大生にしてセキュリティエンジニア!

CSP(Content Security Policy)

についての話
元々Web系には全く疎い私。
正直すごい!けどよく分からない!!って感じでしたorz
とりあえずまずJavaScriptとかHTMLとか勉強だな

三人目は

tokorotenさん

セキュリティエンジニアでペネトレーションテストとかやってらっしゃる模様!
最近CISPを取得されたとかスゴイですね…えぇ金額(受験料6万円強)も

CSRF(クロスサイトリクエストフォージェリ)

に関するお話
デモも交えて実演していただいたので非常に分かりやすくてありがたかったです。

個人的感想ですが、セキュリティという話を話題に上げた際に 脆弱性という言葉がまず思い浮かぶと思います。

脆弱性 = 悪意をある挙動が可能なバグ

なのでWeb系のプログラマーの方が多いなというイメージです。
逆にインフラ屋としての話は可能そうだと思ったので次回の機会にでもLT参加してみたいと思いました。

やっぱり何かしら発信してみないとね♪

ではでは

コマンドの投稿をプロンプト調に

何か自分にとって新しいことやったときの備忘録って重要だね。 後で同じ作業がすぐできる♪

コードハイライトっていうらしい

例えばこんなコマンド

>ping 192/168.0.1

さっきまでこのコマンドの背景が真っ白でしたorz

どうすればこんな風にプロンプト風になるのかとググって 以下内容のようにCSSを編集すればいいらしいと解決

参照元

orangain.hatenablog.com

www.notitle-weblog.com

ちょっとだけエンジニアっぽく慣れた気がしました。

crontabはこうすればよかったのか…

完全に個人的ベストプラクティスの備忘録

crontabはオプションを付けないと外部ファイルを読み込む!!

なので

crontab xxxx.txt

とかやると直接編集するより安全かつエビデンスが残るので運用には一番の方法になるかと!

参照元

d.hatena.ne.jp