LoginSignup
0
0

UbuntuでFTPサーバを用意してみる(Pure-ftpd, docker)

Last updated at Posted at 2023-12-30

記載日 : 2023/12/31

備忘録として、FTPサーバを用意する手順を記載します。
なお、FTPサーバは stilliard/docker-pure-ftpd のdocker imageを使って起動します。

環境

OS : Ubuntu 22.04
dockerインストール済
docker-composeインストール済
VSCodeインストール済(拡張機能からGit Graphをインストール済)

ファイル構成

project
 |
 |- docker-compose.yml
 |
 |- sample.txt

作業 (計8分)

0.FTPサーバへアップロードするファイルを作成する (2分)

sampple.txtをあらかじめ用意する。

test1
test2

FTPサーバの動作確認をするために、lftp(FTPクライアントツール)をインストールする。

sudo apt update
sudo apt install lftp

1.FTP用のdocker composeファイルを作成する (2分)

FTPサーバを用意するにあたり、stilliard/pure-ftpdのdocker imageを使ったdocker-compose.ymlファイルを作る。ファイルの記述は以下の通り。
なお、30000~30009のポートは、このDockerイメージのデフォルト・パッシブ・ポートがアサインされているために必要らしい。

version: '3'
services:
  ftp_server:
    image: stilliard/pure-ftpd
    container_name: ftp-server
    ports:
      - "21:21"
      - "30000-30009:30000-30009"

    environment:
      - PUBLICHOST=127.0.0.1
      - FTP_USER_NAME=uname
      - FTP_USER_PASS=uP@ssw0rd
      - FTP_USER_HOME=/home/ubuntu  # "/"だけだとFTPサーバへログインできない

    restart: always

docker-compose.ymlファイルが容易で来たら、以下コマンドでFTPサーバを起動する。

docker compose up -d

2.FTPサーバへのファイルアップロード (2分)

lftpを使ってFTPサーバへログインし、任意のディレクトリにsample.txtファイルをアップロードする。

lftp  # lftpのターミナルが開く
lftp:~>  open -u uname,uP@ssw0rd ftp://localhost/  # ログイン
lftp:~>  mkdir files  # FTPサーバにディレクトリ作成
lftp:~>  cd files  # 移動
lftp/files:~>  PUT ./sample.txt  # sample.txtをFTPサーバへアップロード
lftp/files:~>  exit

3.動作確(ファイルダウンロード)(2分)

それでは、FTPサーバのsample.txtをダウンロードしてみようと思う。
curl -u [username]:[password] -o [/path/to/download] [ftp://url/to/uploadedfile] のコマンドでファイルをダウンロードする。

curl -u uname:uP@ssw0rd -o ./sam.txt ftp://localhost/files/sample.txt

あるいは、lftpでダウンロードすることもできる。

mkdir download
cd download

lftp
lftp:~>  open -u uname,uP@ssw0rd ftp://localhost/
lftp:~>  get ./files/sample.txt
lftp:~>  exit

ls  # sample.txtが表示され、ダウンロードできているのを確認できる。

参考にさせて頂いたサイト

・Pure-ftpdとは
https://wiki.archlinux.jp/index.php/Pure-FTPd

・Pure-ftpd Serverのdocker image
https://github.com/stilliard/docker-pure-ftpd

・dockerインストール後に、docker composeコマンドでpermission denyエラーが出るのを解決する
https://qiita.com/Nw3965/items/8e75da0012cb7a451cc2

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0