技術書典7で頒布した『curlコマンド完全に理解する』に対応したラボ環境です。
検証用の環境であるため、各コンテナイメージの設定は甘く、搭載しているプログラムには脆弱性があります。閉じられたネットワーク内で利用してください。
Ubuntu 19.04で確認していますが、下記の必要なソフトウェアをインストールしていれば、他のLinux環境でも動作すると思います。 実行するOSユーザはrootを想定しています。
- Docker
- Docker-Compose
- OpenSSH
インストール手順は次のとおりです。
setup.shでは、100MBのダミーファイルの生成、HTTPS用の証明書ファイルの生成、SSH用の鍵ファイルの生成を行います。
# git clone https://github.com/graneed/curl-command-lab.git
# cd ./curl-command-lab/server
# ./setup.sh
起動手順は次のとおりです。うまく動作しないときなど、必要に応じてログを確認してください。
# docker-compose -f ./docker-compose.yml up -d
# docker-compose logs -f
停止手順は次のとおりです。
# docker-compose -f ./docker-compose.yml down
setup.shで生成したファイル、書籍のコマンド例を実行してHTTP・FTPでアップロードしたファイル、送信したメールデータを削除してやり直したい場合は、cleanup.shを使用してください。
使用しているポートやサービスは書籍の「1.2 サーバ環境」にまとめていますが、補足を下記します。
htmlディレクトリ配下にApache httpdとnginxのイメージの構成ファイルがあります。 server/http/httpd/htmlとserver/http/nginx/htmlにコンテンツを配備可能です。
ftpディレクトリ配下にvsftpdとtftpとscp(openssh利用)のイメージの構成ファイルがあります。 FTPの公開ディレクトリは共通でserver/ftp/fileです。
PostfixとDovecotを包含したフルスタックのメールサーバ―のコンテナイメージであるdocker-mailserverを利用しています。
コンテナ起動時にopenssl dhparamコマンドを実行しているようで、時間がかかることがありますので気長に待ってください。
server/mail/setup.shで、メールアカウントの作成等ができます。
あらかじめreceiver@curl.test/passwordとsender@curl.test:passwordの2アカウントは作成済みです。
proxyディレクトリ配下にsquidとdanteのイメージの構成ファイルがあります。 squidはデフォルトで接続元IPアドレスの制限がありますが、localnet(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、fc00::/7、fe80::/10)からの接続を許可するように変更しています。
otherディレクトリにmysqlのイメージの構成ファイルがあります。 公式のMySQLのDockerイメージをベースに、起動時に接続確認用のDB、テーブルおよびレコードを作成するSQLを実行します。
curlコマンドのオプションで指定して参照するファイルをclientに格納しており、ダウンロードすればそのまま使用可能です。
書籍では、OSユーザのホームディレクトリ配下に~/curl-command-lab/clientディレクトリがあることを前提としたコマンドの実行例になっています。
コピー&ペーストして実行したい場合は、合わせた方がよいでしょう。
なお、SFTPで公開鍵認証方式を使用するコマンドの実行例を試したい場合は、サーバ環境のsetup.shで生成したserver/credential配下のファイルをclient/credentialディレクトリ配下にコピーして持ってきてください。