checking your domain, perhaps you see the solution ( https://check-your-website.server-daten.de/?q=abel.works ):
Domainname | Http-Status | redirect | Sec. | G |
---|---|---|---|---|
• http://abel.works/ | ||||
18.139.60.107 | 200 | 0.727 | H | |
• http://www.abel.works/ | ||||
18.139.60.107 | 200 | 0.700 | H | |
• https://abel.works/ | ||||
18.139.60.107 | -14 | 10.027 | T | |
Timeout - The operation has timed out | ||||
• https://www.abel.works/ | ||||
18.139.60.107 | -14 | 10.027 | T | |
Timeout - The operation has timed out | ||||
• abel.works | ||||
18.139.60.107 | 200 | 0.700 | ||
Visible Content: . |
</app-root>|
http + / works. https not, but that's not relevant. But /.well-known/acme-challenge sends a lot of content.
Info: Html-Content with meta and/or script, may be a problem creating a Letsencrypt certificate using http-01 validation
<!doctype html> <html lang="en"> <head> <base href="/"> <meta charset="utf-8"> <title>Timetable Angular</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- reduced for brevity --> <!-- inline spinner styles to be able to display spinner right away --> <style type="text/css"> body, html { height: 100%; } .app-loading { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; } .app-loading .spinner { height: 200px; width: 200px; animation: rotate 2s linear infinite; transform-origin: center center; position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; } .app-loading .spinner .path { stroke-dasharray: 1, 200; stroke-dashoffset: 0; animation: dash 1.5s ease-in-out infinite; stroke-linecap: round; stroke: #ddd; } @keyframes rotate { 100% { transform: rotate(360deg); } } @keyframes dash { 0% { stroke-dasharray: 1, 200; stroke-dashoffset: 0; } 50% { stroke-dasharray: 89, 200; stroke-dashoffset: -35px; } 100% { stroke-dasharray: 89, 200; stroke-dashoffset: -124px; } } </style> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-141134302-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-141134302-1', { 'send_page_view': false }); </script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> <link href="https://fonts.googleapis.com/css?family=Roboto|Roboto+Condensed" rel="stylesheet"> <link rel="stylesheet" href="https://use.typekit.net/fij5jri.css"> <!-- For code-saver font --> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous"> <link rel="icon" type="image/x-icon" href="favicon.ico"> <link rel="stylesheet" href="styles.1aadc07444dcd975815c.css"></head> <body> <app-root>. <!-- loading layout replaced by app after startupp --> <div class="app-loading"> <!-- Style logo inside div below, .logo --> <div class="logo"></div> <svg class="spinner" viewBox="25 25 50 50"> <circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10"/> </svg> </div> </app-root> <script type="text/javascript" src="runtime.f4976e9fdf54f6f84c4f.js"></script><script type="text/javascript" src="polyfills.73595e80ac16f6619f1b.js"></script><script type="text/javascript" src="scripts.d871263a2df3baf77f0a.js"></script><script type="text/javascript" src="main.c9a7ab40cf65ee5153e4.js"></script></body> </html>
You have a nginx. There should be a root definition. Is it possible to create an exception, so that path /.well-known/acme-challenge isn't answered by your app?
Then use that root.
certbot run -a webroot certonly -w yourRoot -d abel.works