Try โ€‚โ€‰HackMD

Deploy Web Services(VPN, web-service, firewall) by Docker-compose

tags: web develope

Project Goal:
To move formal network function onto Docker Container and making an extensable Web-Service, take HTTP server, WAF, VPN, DB for example, user can conveniently use this framework to deply his own web application.

Progress and Code Review:

  • Unfinished
  • Vulnerablity Fixed
  • Stress/Stable Tested

Requirement :

  • docker
  • docker-compose
  • git

Git clone from remote:

$git clone https://github.com/song856854132/ContainerOf_Flask_Nginx_Ovpn.git

Setup steps :

  • For the first time running, setup openvpn ca & pki
$docker-compose run --rm openvpn ovpn_genconfig -u udp://IP address $docker-compose run --rm openvpn ovpn_initpki $sudo chown -R $(whoami): ./openvpn-data
  • Then compose up all container by "docker-compose" command
$sudo docker-compose up -d

For client certificate

  • with a passphrase (recommended)
$docker-compose run --rm openvpn easyrsa build-client-full $CLIENTNAME
  • without a passphrase (not recommended)
$docker-compose run --rm openvpn easyrsa build-client-full $CLIENTNAME nopass

Produce .ovpn file

$docker-compose run --rm openvpn ovpn_getclient $CLIENTNAME > $CLIENTNAME.ovpn

For Revoke a client certificate

  • Keep the corresponding crt, key and req files.
$docker-compose run --rm openvpn ovpn_revokeclient $CLIENTNAME
  • Remove the corresponding crt, key and req files.
$docker-compose run --rm openvpn ovpn_revokeclient $CLIENTNAME remove

Result

use docker ps to show the running container

$sudo docker ps [sudo] password for $(whoami): CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 924a05cc8d3b container_flasknginxovpn_nginx "/docker-entrypoint.โ€ฆ" 6 days ago Up 6 days 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp template_nginx aa123664803c container_flasknginxovpn_flask "uwsgi app.ini" 6 days ago Up 6 days 8080/tcp template_flask 77fe464fc4c5 kylemanna/openvpn "ovpn_run" 6 days ago Up 6 days 0.0.0.0:1194->1194/udp openvpn 7868b9fb5540 postgres "docker-entrypoint.sโ€ฆ" 6 days ago Up 6 days
$tree ./ โ”œโ”€โ”€ docker-compose.yml โ”œโ”€โ”€ flask โ”‚ โ”œโ”€โ”€ app โ”‚ โ”‚ โ”œโ”€โ”€ config โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ config.py โ”‚ โ”‚ โ”œโ”€โ”€ __init__.py โ”‚ โ”‚ โ””โ”€โ”€ models โ”‚ โ”‚ โ””โ”€โ”€ users.py โ”‚ โ”œโ”€โ”€ app.ini โ”‚ โ”œโ”€โ”€ Dockerfile โ”‚ โ”œโ”€โ”€ main.py โ”‚ โ””โ”€โ”€ requirements.txt โ”œโ”€โ”€ flask-template โ”‚ โ”œโ”€โ”€ img โ”‚ โ”‚ โ””โ”€โ”€ flask-developer-roadmap.png โ”‚ โ”œโ”€โ”€ README.md โ”‚ โ”œโ”€โ”€ template3-docker-compose-flask-nginx-postgres โ”‚ โ”œโ”€โ”€ template-flask-blueprint-with-factory โ”‚ โ”‚ โ””โ”€โ”€ flask โ”‚ โ”‚ โ”œโ”€โ”€ app โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ config โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ config.py โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ __init__.py โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ view โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ auth.py โ”‚ โ”‚ โ”œโ”€โ”€ main.py โ”‚ โ”‚ โ””โ”€โ”€ requirements.txt โ”‚ โ”œโ”€โ”€ template-flask-factory-Application โ”‚ โ”‚ โ””โ”€โ”€ flask โ”‚ โ”‚ โ”œโ”€โ”€ app โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ config โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ config.py โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ __init__.py โ”‚ โ”‚ โ”œโ”€โ”€ main.py โ”‚ โ”‚ โ””โ”€โ”€ requirements.txt โ”‚ โ”œโ”€โ”€ template-flask-i18n โ”‚ โ”‚ โ””โ”€โ”€ flask โ”‚ โ”‚ โ”œโ”€โ”€ app โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ babel.cfg โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ config โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ config.py โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ __init__.py โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ templates โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ index.html โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ translations โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ zh โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ LC_MESSAGES โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ messages.po โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ view โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ index.py โ”‚ โ”‚ โ”œโ”€โ”€ main.py โ”‚ โ”‚ โ””โ”€โ”€ requirements.txt โ”‚ โ”œโ”€โ”€ template-flask-jwt โ”‚ โ”‚ โ”œโ”€โ”€ app โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ config โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ config.py โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ __init__.py โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ model โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ users.py โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ templates โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ index.html โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ view โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ v1 โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ auth.py โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ __init__.py โ”‚ โ”‚ โ”œโ”€โ”€ main.py โ”‚ โ”‚ โ””โ”€โ”€ requirements.txt โ”‚ โ”œโ”€โ”€ template-flask-login โ”‚ โ”‚ โ”œโ”€โ”€ app โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ config โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ config.py โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ test.db โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ __init__.py โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ model โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ user.py โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ templates โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ login.html โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ signup.html โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ view โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ abort_msg.py โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ auth.py โ”‚ โ”‚ โ”œโ”€โ”€ main.py โ”‚ โ”‚ โ””โ”€โ”€ requirements.txt โ”‚ โ””โ”€โ”€ template-flask-sqlalchemy โ”‚ โ”œโ”€โ”€ hashtag.db โ”‚ โ”œโ”€โ”€ hash_tag.py โ”‚ โ”œโ”€โ”€ main.py โ”‚ โ”œโ”€โ”€ n1.db โ”‚ โ”œโ”€โ”€ n1_queries.py โ”‚ โ””โ”€โ”€ requirements.txt โ”œโ”€โ”€ nginx โ”‚ โ”œโ”€โ”€ Dockerfile โ”‚ โ”œโ”€โ”€ nginx.conf โ”‚ โ”œโ”€โ”€ ssl.csr โ”‚ โ””โ”€โ”€ ssl.key โ”œโ”€โ”€ openvpn-data โ”‚ โ””โ”€โ”€ conf โ”‚ โ”œโ”€โ”€ ccd โ”‚ โ”œโ”€โ”€ crl.pem โ”‚ โ”œโ”€โ”€ openvpn.conf โ”‚ โ”œโ”€โ”€ ovpn_env.sh โ”‚ โ””โ”€โ”€ pki โ”‚ โ”œโ”€โ”€ ca.crt โ”‚ โ”œโ”€โ”€ certs_by_serial โ”‚ โ”‚ โ”œโ”€โ”€ 4CBD20A1BE70AEDF675F3D1FC0AC2B72.pem โ”‚ โ”‚ โ””โ”€โ”€ 68FACA2C7F700A34649F562BFE52BB71.pem โ”‚ โ”œโ”€โ”€ crl.pem โ”‚ โ”œโ”€โ”€ dh.pem โ”‚ โ”œโ”€โ”€ index.txt โ”‚ โ”œโ”€โ”€ index.txt.attr โ”‚ โ”œโ”€โ”€ index.txt.attr.old โ”‚ โ”œโ”€โ”€ index.txt.old โ”‚ โ”œโ”€โ”€ issued โ”‚ โ”‚ โ”œโ”€โ”€ 140.117.12.84.crt โ”‚ โ”‚ โ””โ”€โ”€ user00.crt โ”‚ โ”œโ”€โ”€ openssl-easyrsa.cnf โ”‚ โ”œโ”€โ”€ private โ”‚ โ”‚ โ”œโ”€โ”€ 140.117.12.84.key โ”‚ โ”‚ โ”œโ”€โ”€ ca.key โ”‚ โ”‚ โ””โ”€โ”€ user00.key โ”‚ โ”œโ”€โ”€ renewed โ”‚ โ”‚ โ”œโ”€โ”€ certs_by_serial โ”‚ โ”‚ โ”œโ”€โ”€ private_by_serial โ”‚ โ”‚ โ””โ”€โ”€ reqs_by_serial โ”‚ โ”œโ”€โ”€ reqs โ”‚ โ”‚ โ”œโ”€โ”€ 140.117.12.84.req โ”‚ โ”‚ โ””โ”€โ”€ user00.req โ”‚ โ”œโ”€โ”€ revoked โ”‚ โ”‚ โ”œโ”€โ”€ certs_by_serial โ”‚ โ”‚ โ”œโ”€โ”€ private_by_serial โ”‚ โ”‚ โ””โ”€โ”€ reqs_by_serial โ”‚ โ”œโ”€โ”€ safessl-easyrsa.cnf โ”‚ โ”œโ”€โ”€ serial โ”‚ โ”œโ”€โ”€ serial.old โ”‚ โ”œโ”€โ”€ ta.key โ”‚ โ””โ”€โ”€ user00.ovpn โ”œโ”€โ”€ postgres-data [error opening dir] โ””โ”€โ”€ README_vpnsetup.md