diff --git a/README.md b/README.md index 9e7081a..edb38dd 100644 --- a/README.md +++ b/README.md @@ -155,6 +155,10 @@ command: `python -m pdb /usr/lib/ckan/venv/bin/ckan --config /srv/app/ckan.ini r * The base Docker Compose configuration uses an NGINX image as the front-end (ie: reverse proxy). It includes HTTPS running on port number 443. A "self-signed" SSL certificate is generated beforehand and the server certificate and key files are included. The NGINX `server_name` directive and the `CN` field in the SSL certificate have been both set to 'localhost'. This should obviously not be used for production. +Creating the SSL cert and key files as follows: +`openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=DE/ST=Berlin/L=Berlin/O=None/CN=localhostā€ -keyout ckan-local.key -out ckan-local.crt` +The `ckan-local.*` files will then need to be moved into the nginx/setup/ directory + ## Known Issues * Running the tests: Running the tests for CKAN or an extension inside the container will delete your current database. We need to patch CKAN core in our image to work around that. diff --git a/TODO's.txt b/TODO's.txt index a183464..5d492e0 100644 --- a/TODO's.txt +++ b/TODO's.txt @@ -34,17 +34,6 @@ NB: Had to update the prerun.py script as it was failing on check_solr_connecti - prod, from source: no change from source stage, but listed last so in case a stage isn't targeted, the builder will default to this stage Also check out https://github.com/ckan/ckan/pull/4635 for Francesco's test stuff 3. CKAN Worker (maybe) -4. Implement SSL for the nginx container or include a howto in the docs +4. Implement SSL for the nginx container or include a howto in the docs ### NB: This has been done! albeit with a self-signed cert -### Container Canary notes - -A list of what tests to run on the Docker containers to verify they have been built correctly - -- Check the user name and the uid/gid -- Check the ports the container is listening on -- Check an httpget on the URL -- any command can be executed in the running container and can be configured t run every x minutes -- check processes running as non root -- - diff --git a/nginx/setup/ckan-local.crt b/nginx/setup/ckan-local.crt index aa662a1..910bfcd 100644 --- a/nginx/setup/ckan-local.crt +++ b/nginx/setup/ckan-local.crt @@ -1,30 +1,30 @@ -----BEGIN CERTIFICATE----- -MIIFJDCCAwwCCQCIrp/bc6dLYjANBgkqhkiG9w0BAQsFADBUMQswCQYDVQQGEwJE -RTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xDzANBgNVBAoMBkJl -cmxpbjESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTIyMDgxNTEzMDA0NFoXDTIzMDgx -NTEzMDA0NFowVDELMAkGA1UEBhMCREUxDzANBgNVBAgMBkJlcmxpbjEPMA0GA1UE -BwwGQmVybGluMQ8wDQYDVQQKDAZCZXJsaW4xEjAQBgNVBAMMCWxvY2FsaG9zdDCC -AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK9VUkEY9A+aM9AXwWIS0MTQ -oiFS5p4rFlSH4UNuqRfWP7F4n+/QF/Zaky6lX7drkLGFWT7qde2ePum90YMhx/9V -WZK05PRkqER83Cv+v4YAsBmxvcvTISLczNv6yfsuQ5tggUC7dupl6Fn/yOyEuhkP -5Opon1H0SBJxALEvHnOALItdDNwqhnD+j5yCUIKG47LqKTgNp/XTTb3O8p3OSHGi -Td5DzNQQWJFNjdBfbI14+kcuHg9vrhTfaf3Wb2VMEXR3zIoZo6n7IV39rvFcnUeT -pQL9ogSLFkSbwUtCOuLhzTrm6HiHun69hBMxGli6w9AvEhEI0VvhxesNOjEbRzEh -f9ZRU3CtbAl+KC/+WHtTVG+Q6dd4CdGvIYc15SUKQw5EtbLo126oqQyumZYswMdo -KtkRPgjBXSfl01ORCIhpgqr3efxiL4mLw0sqlrixkd3GqpJ5a5+eAUYbfT4SnbB3 -4x0N1eVO0bnSSdR1AxNe5giuVCdOPNk65LIErT4ZzKGpyp+aCu1CoSgEcwzLmmbS -b8xoBViQWtow1ZZbssEAxsdN2tFbpSGhPcDgPae1qFM8lPX2wBAwD6zTSwqbhDHU -CaIMFMNX3xntzxzDmczpCuGXnY986HwLLHVOCjyxLfhAyCwSb0bP0wqVeeKoDZ4L -vFHZbFKLG99F/oq1+vQfAgMBAAEwDQYJKoZIhvcNAQELBQADggIBAEmfSUPfvlDy -Ts2yDVQTSpilXcCtM+KeidLil17DiKUyeyHgR6Bwtw88fIXanMjh0oniAvq3pd0m -KFHARp2Jdx0MBb9IsnG2aP60s41vxumpSq4TD0FLudIkdWXYQEDpe+nh8izxBeSE -gGjfC1y8fL9BxHYOGNj6ZnscaSsK+ncEafmd3Dc500mWbT/4Z6fpui586RhS3gkf -RVh1eiPY59M9UhpROLhPSddX6deKIVKhKDhX1ot/cEDDXJwjQa8wFmlKTj14Dd+9 -U5IGUZyhSywPgqy27IB0sCn6boU+MRZiQX2yBTMe6ZzbOfnDeXll+qLz4/657VBA -ka+FPuLdJ1UgEatfM2KcLPlz8WZ5W0NIeyaaRIDsoDy9I1iSEg165ujaY028jAY6 -q4kIM8Jncfwd/5owto9WS/9A1Zs6vyVekAO3gpzzw8TZcj5RcGc5qK/rg9Esz1Ye -MnVg1gykHJlhdG9EJHh3JbdfBDbSoW6f46UU1STD0x63Jp+r+xVmF/bRmvu07BBS -0KwdD7H6Qd2zJA3Cqn0oFqrkTdf1dxrOT80wiXOnlrb8eaUvldd/LtB1qY7WcqgN -/68p0t3upZJ0OsIjky8DxAzoDz/wNDle8qojsln9La1Ykyf2BtpLX5Qw1aP2eHgI -naZCOb+gpYVf3/0d/ohxYpn66iFX/lut +MIIFIDCCAwgCCQD1XH0mNLOTdDANBgkqhkiG9w0BAQsFADBSMQswCQYDVQQGEwJE +RTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xDTALBgNVBAoMBE5v +bmUxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0yMjA4MTYxMzA4MzhaFw0yMzA4MTYx +MzA4MzhaMFIxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCZXJsaW4xDzANBgNVBAcM +BkJlcmxpbjENMAsGA1UECgwETm9uZTESMBAGA1UEAwwJbG9jYWxob3N0MIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzH0e9GPsegl86S1W77BgmINEtzuY +zbJ94i2O4DJKAgaegdvrLTX1QUWOxd7R4De9PVybg800Ay6jkp5Oirc0BaWgIIAU +Wg44Wdd3GSvXCkixqmETkK5V/20vIdAWfkswmUttEJw+eCdElQ4ZIXKVbUVotbiJ ++9TcegmQxApnIiNfDcWlyWzCNprhV6YYUQaBQ9pJNZVovMP+LLX0LRL+bIr/zpeo +SHD5shEjHGWU0GwoJ3UI5vcwF/Xd2aE5t9n6FN4ion60pLMLA8B7PiVRJfIuIug1 +2N4ZB+MjdMWnqSu04N3Zc8DSZt1q5jpRJjXux1uaAXBnw/o4nYPfg25RMvoo20Iv +doiOpUYukYF09WnBLbTrrBOthw16PKU5KM8ltP21A4CR8SwUGN57GShFgnC7UtCV +t36KXD0Ia+tNQcGMso3TN2mXzwVPk4Po4TgaheuM3HxzTxfw5f8E9HC5CZYxObfS +Ux0Zg6vV6sbsF/GJyAmkTeqWPQMEc9e6pUG+vP2Ip5iuIrLbyC/YqMIN2JUebyaa +CW/oXoohB6io1mDvWtNcas7ygxMW3YXJd3DtRGIpwu7p4j56+sjFdihTm4P4aius +E5u1QQ0TvxdMI/SNxitnIIA00oCjJg5rA91xWV4UJqDKmk2/rfhfw37tcplsQ0JU +LckU7LYCKuTblWMCAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAV7r+p4Hl9EY0wKGr +RMTi2n586+zk0boAEy1ogacMUXYeLzMfilkvJIYBlyPZLtyTcy0UGIdMx62QMzaU +jmq2H5nOKpA6A8gzGUXNni+q5YCz41TipiJ4oEPkZyu/EauekqhaB7tKTeuyqJLN +NiJikj4/NMMOJ3bU+noMljLOmReBKLrH1uUtt8YCMPvitXU1mEBFIbe9JbKrqOQo +C0cNdJ+UUHaKYYe3rSG+GHG6xDLOK9bGno6/gCVmz8/ueJ/3ZknvjO7zKVGgyWB3 +/yTDqunO2gdVVgByhEz3Jp4kOwNplOLVTLzZDn5+4L9huyFr6HxdLJ9aQ73k/SqX +jE/AudPnU2/dWwQX/xXs2LQ/1p8pmMP9SZYsU+POItoAZFiQ8Sn/4YVD2s+waopl +noEX5oSFu/jgQGj7YDmywzdSy9QUqPatZKdGpnpaPGTfbAYdy9Gl2kI1hzioaosx +1kqWp+lZuG0oKn6Al9LMOtuqPbsPptfxDy81e6QPf3zm8sFkzXVOdP9gFRnOLgao +jAhDAJSG1cIg2JkR8qhb442+utDtOmSjWxEheCxrmm1NgfYZjmvKCgxvzLnw2o0k +SdI5wQ74rtEmy1uCSOIWmz1rPePN3a7aeF4+o1WmPin72qC6ofFSHhXrOVlEip6n +OnhViZcPai3wbJjT1SDY+h8qnq8= -----END CERTIFICATE----- diff --git a/nginx/setup/ckan-local.key b/nginx/setup/ckan-local.key index 54ee677..9bab89c 100644 --- a/nginx/setup/ckan-local.key +++ b/nginx/setup/ckan-local.key @@ -1,52 +1,52 @@ -----BEGIN PRIVATE KEY----- -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 -3NZYHoZNqp79Kl0T6Y0VWI/CpXCS7kgT9A== +MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDMfR70Y+x6CXzp +LVbvsGCYg0S3O5jNsn3iLY7gMkoCBp6B2+stNfVBRY7F3tHgN709XJuDzTQDLqOS +nk6KtzQFpaAggBRaDjhZ13cZK9cKSLGqYROQrlX/bS8h0BZ+SzCZS20QnD54J0SV +DhkhcpVtRWi1uIn71Nx6CZDECmciI18NxaXJbMI2muFXphhRBoFD2kk1lWi8w/4s +tfQtEv5siv/Ol6hIcPmyESMcZZTQbCgndQjm9zAX9d3ZoTm32foU3iKifrSkswsD +wHs+JVEl8i4i6DXY3hkH4yN0xaepK7Tg3dlzwNJm3WrmOlEmNe7HW5oBcGfD+jid +g9+DblEy+ijbQi92iI6lRi6RgXT1acEttOusE62HDXo8pTkozyW0/bUDgJHxLBQY +3nsZKEWCcLtS0JW3fopcPQhr601BwYyyjdM3aZfPBU+Tg+jhOBqF64zcfHNPF/Dl +/wT0cLkJljE5t9JTHRmDq9XqxuwX8YnICaRN6pY9AwRz17qlQb68/YinmK4istvI +L9iowg3YlR5vJpoJb+heiiEHqKjWYO9a01xqzvKDExbdhcl3cO1EYinC7uniPnr6 +yMV2KFObg/hqK6wTm7VBDRO/F0wj9I3GK2cggDTSgKMmDmsD3XFZXhQmoMqaTb+t ++F/Dfu1ymWxDQlQtyRTstgIq5NuVYwIDAQABAoICAEJirFXyyqajxeV9TqfpvrJE +i15g/q5or+1plOS77sLRm0vVNXgr+D8EceFTARelgM4W7nXPfH87+OZ0dlMaPs1G +g8GJUxIZY7nm9Uc6sEkqaGNDuLJTpp+RtqdngqXlixV5IyMtVipztRQey5HMPS6I +RgIYstMKu7jyugiqx+iRSx6Rd8z4feR0S4vE5EgJsJVynCnFI4eEqVOijm7Dp81d +IsbS/VLnOmjQn3FsmO9A7ZhBqm4w+XAN5cPtT2ucXE/B/cR7FfISHhVNu7TlMH79 +LHUwpaqOD9o7pxsVv+Rvx/zoiNvHUYcLgtTTQd0BzU7zMgAdmdJJvW+FjF6CxeEN +aBs17Hdz1az1d+pUyqfevFnSTuVvcwkcBrWUCKRuJSjJ63/4USzSSXmxQ854r3aH +Fur6bRED8HuHAvVAQA71rFkWW0mp6RhwcIZQh3r3D4XFm2G9PJzn874hxlJuGTyl +bE5Kh1nOWw1P9PAekLoTZuNo3KzwL43sMKLNqO4I/iiCPEhKQZy3MOZXn8uRTChF +QV1CZ2aNAAiFdFnzDZnfBtPCycs82E6s8HrVXD0gKzQkJ+N+OVVYWbuj11C20JyL +tKXiFLQmwDOGLcnGhkyE4LFArniLcJKD5ub5Z264m8MEJ2hrEzpz95z70p4o5RBl +Nglj2ba8ZmDwQ+2sFT5hAoIBAQD+cCU/vMKbVRmeIw6o8A9X53MOPcmdYLN6gTV0 +iI/YflBfpbJCUzQ2mXEydy6/ineUVY1vOG4ufsz8wvrEnsge9lqYwEpPS4rs0uiL +CX4qUCTp4EvUv6nkpeuP+Oh+xb12TdMpLNf/10zTrz3cZxOR+eynx5ZDqnhiYHFZ +P6/pO3AroztB+KJ1lL3MEdIh4RMutMIUItFH1R4b5PGyfW3QMnzKRNOOnDxrbZ9s +muOeu0VWmzyaqAXtEpjqpn69vt5TJNP9rqzM9PXJrewEhqynOwmHuibN2hRnY5s9 +PIeKY6eozlFbORfcWHdxCDfpNv1ktkki5UodQaaTGLUxjNHvAoIBAQDNvnqkQ0dk +L9yrHV6Yixl0g1SJaG/i03xTr1KfvuLnnk82AC6Xm4SOyqVsza1TuRQegocJYid3 +NFTgUc7eU88XjMffpuAkOjzC8xS/bsU1CL6awnjGhjvKUKHn2KRdnqcnPZk0DBay +KRg++fZeEWcVxJ77omk9LMP07rf2U1oCW+mGOjJcROQAeH/FW3i2UVSdsZlj2DBC +LagJAhjbRUp6G8sBRsgF0TRBJ9+lfXrJ9hJN+ZGQ4+rVMm3t3zA7QQBsccTIviH9 +PWcmT9R3HsHplai+0u9HG9y0A+AZQBl3XHyGs9mS0fwHAzBTp+W8qKESjtELtf5P +NgTv+w1CdRfNAoIBACzKbzQ+NYAExiK5hy4kPH88BlwecmybBl1te4yNMc1pxxpf +X/cfEJUABBZfNsKPTKe3O9O1emgC+HESnfSZAx+4PJChYTN+V/GC218Gh8hJHYZy +bscACpduwf4xUjRm+QhngOHBvDCUpTiqo9g16RMMjSWoFALLcq/WzH1qobwMM53q ++VaOv4K1cYgIJxbBuY/CUFwdGPxtPwSoFAhY3kkFakRtQ1TamiRLQwJqbeGWlAlA +ALY1F/35BSRhtPQQMrEuTYdeBZt7D/21+VN+pcw2r2HOWmBooKjmtwBbtHyfOHeW +AmptrY6joDssuDL89DSThmJ3PMnTsdA5TERxxs8CggEBAINEFRE6T5EvLDYMTe87 +SClbJRNqC4CHd9oYkLmU20X1bgpBAXj+4wsLZZHOg9hXy+tPUgJ9mjpmrARWjYqx +o/4dduRNntHeSigDWOhuLuoQQzOQAeh/eiQxX6sBQJTuhSz3Ewju8YgHyg1cA4Cu +z7tGsDxRuZ0rM3bQ25QQR+wbYhmehcTyuxlFyBdNre18ZGUcC4Z1Rwzh/kSJDvzO +756KnvGYjEOR3yn226zFKxMxqSoQoXv0vj35p8NNU4NqjG+kAm4lSKA+jdIWurKp +cASs1HWzNLCEqUI8+ryBdf3+hwCWPKl8ybRbp3ioNV4xpFqnvd4f5jn5eBr4bNRK +yr0CggEBAKdrTvdHVUzcLxWO4bHBS+ZJMpUJ/7z/efTB9PlzXC6aesx0kfGRc9Ss +esONlnZm6vYFi7vQ4LXWbX0Qsamy8/GWwmqASTrbIpQTuLRSSkMKifPkYZorWAhA +pk/ZEz+XwRL6wgSiiCL3Udez4my9Ng80Q5hSLUPVViJLCBLXUml8N+MxVQWvcYjw +AkX+AxxeZo2i1RHXTO4Q/eBzDbrDGKcW5D9RUImiBNzLvkKFxI/CVKNbSUZHT5IT +4YYWCQ6GsEPoVdrucRreqDJ4IQepKtN35VbcRefj1asUvK06DbaQQ+YOXVCG/ja6 +ru4R+r22/g05ks8IUKi+G/j0UeBSot8= -----END PRIVATE KEY-----