Tengo una pregunta tonta, y lo siento, pero ¿cómo habilito SSL el conjunto de aplicaciones doccano dentro de un contenedor docker?
Cuando ejecuto la aplicación así:
docker run -d --rm --name doccano \
-e "ADMIN_USERNAME=admin" \
-e "[email protected]" \
-e "ADMIN_PASSWORD=password" \
-e "DEBUG=False" \
-e "SECRET_KEY=secret-key" \
-p 80:8000 doccano:myrebuilt
Y hago sudo netstat -tpln
obtengo esto:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::80 :::* LISTEN 32697/docker:proxy
Si escribo http://mydoccano:80/
en mi navegador web, puedo ver la aplicación Docanno. Desafortunadamente, esto no es seguro.
Así que pensé en configurar nginx en la máquina host y redirigir de 80 a 443, pero aparece este error al intentar ejecutar la imagen de la ventana acoplable:
fc310303a5710e422580f1ffd5a0f1a30
docker: Error response from daemon: driver failed programming external connectivity on endpoint doccano (fa81ff4b030a29636bc22178e75b95a9d9988984325): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use.
¿Qué puedo hacer para redirigir de http:/mydoccano/
a https://mydocano/
? ¿Debo configurar nginx dentro del contenedor de la ventana acoplable? ¿O debería poner los certificados ssl dentro del contenedor y ejecutarlo mientras paso algún tipo de parámetros ssl? ¿Alguna idea o sugerencia? ¡Gracias por adelantado!
Recomendaría usar nginx para terminar SSL y luego reenviar la solicitud a doccano. Tenga en cuenta que si usa doccano detrás de SSL, tendrá que configurar los ajustes mencionados en https://github.com/chakki-works/doccano/pull/350.
gracias, @cw
Gracias a la sugerencia de @cw, finalmente hice que mi aplicación doccano funcionara con SSL.
Solo para el registro y en caso de que alguien esté interesado en saber cómo lo hice funcionar, aquí está mi configuración de Nginx en el servidor de producción:
upstream doccano_app {
server 127.0.0.1:8080;
}
server {
listen 80;
listen [::]:80;
server_name doccano.mydomain.com;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
listing [::]443 ssl;
server_name doccano.mydomain.com;
ssl_certificate /etc/letsencrypt/live/doccano.mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/doccano.mydomain.com/privkey.pem;
root /var/www/html;
try_files $uri @docker;
location <strong i="7">@docker</strong> {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded_Proto $scheme;
proxy_redirect off;
proxy_pass http://doccano_app;
}
}
Comentario más útil
Gracias a la sugerencia de @cw, finalmente hice que mi aplicación doccano funcionara con SSL.
Solo para el registro y en caso de que alguien esté interesado en saber cómo lo hice funcionar, aquí está mi configuración de Nginx en el servidor de producción: