# Local Requirements ## setup.sh - ssh - rsync ## AWS - awscli # Remote Requirements ## Packages (APT) - vsftpd - python3 - pip ## Python Requirements - flask - flask-sqlalchemy - waitress ## Setup-Script ./setup.sh TARGET_IP_OR_DNS The start script (*setup.sh*) performs the following task in this order: - run apt update and install relevant packages (CMD\_APT) - install the python packages via the python package manager pip (CMD\_PIP) - add a user for flask to run as (CMD\_FLASK\_USER) - add sudoers lines to allow flask user to add and delete users (CMD\_SUDOERS\_ADD/DEL) - transfer the web-server files (rsync) - change FTP configuration to allow writes (CMD\_SET\_FTP\_WRITE\_YES) - restart the FTP to apply the new configuration server (CMD\_RESTART\_FTP) - lock out any ssh but root just to be safe (CMD\_LOCK\_SSH) # AWS - create a keypair called *"flask-ftp"* or change the value of *"KeyName"* in *aws/template.yml* to an existing key pair (see "AWS Network & Security -> Key Pairs" for details) - create a new stack (CloudFormation -> Stacks -> Create Stack) and upload the template (*aws/template.yml*) - goto Instances, select Security and click the security group, add inbound for the ports you want to use (e.g. 80, 443 or 5000)