{"id":21656901,"url":"https://github.com/firsttimeez/server-ssl","last_synced_at":"2026-03-04T22:31:56.122Z","repository":{"id":263590994,"uuid":"890873065","full_name":"FirstTimeEZ/server-ssl","owner":"FirstTimeEZ","description":"Node.js server that is SSL by default that can be used for development or production and can create and renew Lets Encrypt Certificates automatically using ACME, including wildcard certificates","archived":false,"fork":false,"pushed_at":"2024-12-28T05:55:45.000Z","size":3792,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-07T23:39:32.738Z","etag":null,"topics":["acme","acme-ari","api-server","development","dns-01","http-redirect","https","https-server","lets-encrypt","linux","nodejs","openssl","production","rest-api","server","ssl","ssl-support","web-server","wildcard-certificates","windows"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FirstTimeEZ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-19T10:30:00.000Z","updated_at":"2025-01-11T13:44:55.000Z","dependencies_parsed_at":"2024-11-19T12:04:46.062Z","dependency_job_id":"bf1424d6-a23b-40ce-83b1-2970d825fe92","html_url":"https://github.com/FirstTimeEZ/server-ssl","commit_stats":null,"previous_names":["firsttimeez/server-ssl"],"tags_count":96,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FirstTimeEZ%2Fserver-ssl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FirstTimeEZ%2Fserver-ssl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FirstTimeEZ%2Fserver-ssl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FirstTimeEZ%2Fserver-ssl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FirstTimeEZ","download_url":"https://codeload.github.com/FirstTimeEZ/server-ssl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252973616,"owners_count":21834105,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acme","acme-ari","api-server","development","dns-01","http-redirect","https","https-server","lets-encrypt","linux","nodejs","openssl","production","rest-api","server","ssl","ssl-support","web-server","wildcard-certificates","windows"],"created_at":"2024-11-25T09:18:04.570Z","updated_at":"2026-03-04T22:31:56.086Z","avatar_url":"https://github.com/FirstTimeEZ.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![](https://i.imgur.com/nSEjI0t.jpeg)](https://github.com/FirstTimeEZ/server-ssl/archive/refs/heads/main.zip)\n\n# server-ssl\n\n[`Node.js`](https://nodejs.org/en) server that is `SSL` by default that can be used for development or production\n\nDesigned to get out of your way so you can still change _anything_\n\nCreates and renews `Lets Encrypt Certificates` automatically using `ACME`\n\nIf you use `CloudFlare` you can get `Wildcard Certificates`\n\n## Getting Started\n\nThe easiest usage would be to serve a website:\n\n1. [`Clone`](https://github.com/FirstTimeEZ/server-ssl.git) or [`Download`](https://github.com/FirstTimeEZ/server-ssl/archive/refs/heads/main.zip) the main branch and extract it somewhere\n2. Put your website in the `website` folder\n3. Open the `server-ssl` folder in `Command Prompt` or `Git Bash`\n4. Run `npm install`\n5. Run `node server-ssl`\n6. View your website at `https://localhost`\n\n![](https://i.imgur.com/ZYXoLMy.gif)\n\nYou can also use different kinds of `Lets Encrypt!` certificates, see configuration below.\n\n![](https://i.imgur.com/mQ4uaxL.gif)\n\n\nThe default page/config is a simple [`API`](https://github.com/FirstTimeEZ/simple-api-router) that serves and displays the `time`\n\n[![](https://i.imgur.com/DEbJVUq.png)](https://github.com/FirstTimeEZ/server-ssl/archive/refs/heads/main.zip)\n\n## Advanced/Production Usage\n\n`server-ssl` has a configuration file called `server-ssl.sc` that contains all the options you can change\n\n#### Default Configuration `(server-ssl.sc)`\n \n```\nportHttps          :: 443                                // The port number for HTTPS\nportHttp           :: 80                                 // The port number for HTTP that will be redirected\n\ncertificate        :: \"certificate.pem\"                  // The path to the certificate file.\nprivate-key        :: \"private-key.pem\"                  // The path to the private key for the certificate.\n\nwebsiteRoot        :: \"wwwroot\"                          // The directory for the website files\nentryPage          :: \"index.html\"                       // The page to use for the websites entry point \nerrorRoot          :: \"error\"                            // The directory for error messages (404,500)\n\nnoCheckNodeVersion :: false                              // True to skip checking Node.js version\n\nuseLetsEncrypt     :: false                              // Use Lets Encrypt! to generate a certificate\ndomains            :: [\"ssl.boats\",\"www.ssl.boats\"]      // Domains to generate the certificate for\ngenerateCertAnyway :: false                              // True to generate before the recommended time\nuseStaging         :: false                              // True to use the staging server to avoid rate limits\n\nuseDnsProvider     :: false                              // Use the DNS-01 Challenge to generate certificate\nproviderName       :: \"Cloud Flare\"                      // Name of supported DNS Provider\nproviderToken      :: \"apiTokenWithDnsEditPermission\"    // API Token for DNS Provider\nproviderZone       :: \"\"                                 // ZoneId for DNS Provider, may found automatically.\n```\n\n#### Multiple Configuration Files\n\nYou can create multiple configuration files and choose which one to load as an argument.\n\n```\nnode server-ssl --config=\"server-ssl-staging.sc\"\n```\n\nIf no argument is provided the default configuration file is loaded. `(server-ssl.sc)`\n\n#### Generate Wild Card Certificates\n\nYou can generate `Wild Card Certificates` if you use a supported `DNS-01` provider\n\nAt this present moment that is only `Cloud Flare`\n\n![](https://i.imgur.com/R132a6z.gif)\n\n#### Generate SAN Certificates\n\nThese certificates can have up to `50` sub-domains and no `Wild Card`\n\nYou can generate `Lets Encrypt Certificates` with the `SAN Extension` using the `HTTP-01` challenge \n\nThis is the default configuration.\n\n![](https://i.imgur.com/VkOrZcX.gif)\n\n#### Always Redirects `HTTP` to `HTTPS`\n\n`HTTP` requests from end users are always redirected to `HTTPS`\n\n`ACME Challenges` transparently happen over `HTTP` to create/issue a new certificate\n\n## Default Layout\n\n```\n/root\n│\n├── /error\n│   ├── 404.html\n│   └── 500.html\n│\n├── /ssl\n│   ├── /production\n│   │   │\n│   │   ├── ...\n│   │   ├── private-key.pem\n│   │   └── certificate.pem\n│   │\n│   ├── /staging\n│   │   │\n│   │   ├── ...\n│   │   ├── private-key.pem\n│   │   └── certificate.pem\n│   │\n│   └── state.js\n│\n├── /wwwroot\n│   └── index.html \u003c---- Your website goes here\n│\n├── server-ssl.sc\n└── server-ssl.js\n```\n\n## 404/500 Pages\n\nThe server is configured to serve custom `404` and `500` error pages, instead of plain-text.\n\n[![](https://i.imgur.com/gzgRNdQ.png)](https://github.com/FirstTimeEZ/server-ssl/archive/refs/heads/main.zip) [![](https://i.imgur.com/KSixh7q.png)](https://github.com/FirstTimeEZ/server-ssl/archive/refs/heads/main.zip)\n\nCurrently everything is treated like a `Server Error` except for `Not Found`\n\n[![](https://i.imgur.com/l8DMrQY.png)](https://github.com/FirstTimeEZ/server-ssl/archive/refs/heads/main.zip) [![](https://i.imgur.com/mP2d4vi.png)](https://github.com/FirstTimeEZ/server-ssl/archive/refs/heads/main.zip)\n\nThese pages will automatically select light/dark mode","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirsttimeez%2Fserver-ssl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffirsttimeez%2Fserver-ssl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirsttimeez%2Fserver-ssl/lists"}