{"id":19884197,"url":"https://github.com/opus-codium/puppet-dehydrated","last_synced_at":"2026-02-18T06:02:52.477Z","repository":{"id":47465155,"uuid":"57405074","full_name":"opus-codium/puppet-dehydrated","owner":"opus-codium","description":"dehydrated puppet module","archived":false,"fork":false,"pushed_at":"2025-05-21T01:26:09.000Z","size":186,"stargazers_count":3,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-10T13:49:06.079Z","etag":null,"topics":["dehydrated","hacktoberfest","letsencrypt","letsencrypt-sh","puppet"],"latest_commit_sha":null,"homepage":"","language":"Puppet","has_issues":false,"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/opus-codium.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-04-29T18:30:27.000Z","updated_at":"2025-05-21T01:26:09.000Z","dependencies_parsed_at":"2024-06-22T15:37:47.996Z","dependency_job_id":"cabc6b67-1b95-4e6b-8ff2-52b58f61be44","html_url":"https://github.com/opus-codium/puppet-dehydrated","commit_stats":{"total_commits":132,"total_committers":4,"mean_commits":33.0,"dds":0.09090909090909094,"last_synced_commit":"35dd9023bcdc0dc5815d2cffcf5ea6b8c264221d"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/opus-codium/puppet-dehydrated","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opus-codium%2Fpuppet-dehydrated","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opus-codium%2Fpuppet-dehydrated/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opus-codium%2Fpuppet-dehydrated/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opus-codium%2Fpuppet-dehydrated/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opus-codium","download_url":"https://codeload.github.com/opus-codium/puppet-dehydrated/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opus-codium%2Fpuppet-dehydrated/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266462924,"owners_count":23932881,"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","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["dehydrated","hacktoberfest","letsencrypt","letsencrypt-sh","puppet"],"created_at":"2024-11-12T17:25:44.289Z","updated_at":"2026-02-18T06:02:52.470Z","avatar_url":"https://github.com/opus-codium.png","language":"Puppet","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dehydrated\n\n\u003c!-- header GFM --\u003e\n[![Build Status](https://img.shields.io/github/actions/workflow/status/opus-codium/puppet-dehydrated/release.yml)](https://github.com/opus-codium/puppet-dehydrated/releases)\n[![Puppet Forge](https://img.shields.io/puppetforge/v/opuscodium/dehydrated.svg)](https://forge.puppetlabs.com/opuscodium/dehydrated)\n[![Puppet Forge - downloads](https://img.shields.io/puppetforge/dt/opuscodium/dehydrated.svg)](https://forge.puppetlabs.com/opuscodium/dehydrated)\n[![Puppet Forge - endorsement](https://img.shields.io/puppetforge/e/opuscodium/dehydrated.svg)](https://forge.puppetlabs.com/opuscodium/dehydrated)\n[![Puppet Forge - scores](https://img.shields.io/puppetforge/f/opuscodium/dehydrated.svg)](https://forge.puppetlabs.com/opuscodium/dehydrated)\n[![License](https://img.shields.io/github/license/opus-codium/puppet-dehydrated.svg)](https://github.com/voxpupuli/opuscodium-dehydrated/blob/master/LICENSE.md)\n\u003c!-- header --\u003e\n\n#### Table of Contents\n\n\u003c!-- vim-markdown-toc GFM --\u003e\n\n* [Module Description](#module-description)\n* [Setup](#setup)\n  * [Beginning with dehydrated](#beginning-with-dehydrated)\n* [Usage](#usage)\n  * [Generate a simple certificate](#generate-a-simple-certificate)\n  * [Generate a certificate with SAN](#generate-a-certificate-with-san)\n  * [Use DNS-01 hook](#use-dns-01-hook)\n  * [Renewing certificates with cron](#renewing-certificates-with-cron)\n  * [Serving challenges with Apache](#serving-challenges-with-apache)\n\n\u003c!-- vim-markdown-toc --\u003e\n\n## Module Description\n\nThe dehydrated module lets you use Puppet to manage [Let's Encrypt](https://letsencrypt.org/) certificates creation and renewal using [dehydrated](https://github.com/dehydrated-io/dehydrated).\n\n## Setup\n\n### Beginning with dehydrated\n\nLet's encrypt needs a contact address that must be passed to the `dehydrated` class:\n\n```puppet\nclass { 'dehydrated':\n  contact_email =\u003e 'user@example.com',\n}\n```\n\nThis is enough to get started and creating certificates.\n\n## Usage\n\n### Generate a simple certificate\n\nAfter including the required `dehydrated` class, each `dehydrated::certificate` will produce a single certificate file:\n\n```puppet\nclass { 'dehydrated':\n  contact_email =\u003e 'user@example.com',\n}\n\ndehydrated::certificate { 'example.com':\n}\n```\n\n### Generate a certificate with SAN\n\nA `dehydrated::certificate` can use the `domains` parameter to indicate Subject Alternative Names (SAN).\n\n```puppet\nclass { 'dehydrated':\n  contact_email =\u003e 'user@example.com',\n}\n\ndehydrated::certificate { 'example.com':\n  domains =\u003e [\n    'www.example.com',\n    'example.net',\n    'www.example.net'\n  ],\n}\n```\n\n### Use DNS-01 hook\n\nExamples of dns-01 `hook.sh`:\n* [nsupdate](https://github.com/lukas2511/dehydrated/blob/master/docs/examples/hook.sh)\n* [more](https://github.com/lukas2511/dehydrated/wiki/Examples-for-DNS-01-hooks)\n\n**Hook must wait until DNS records are really synced across public DNS servers and only\nthen finish. Otherwise Let's Encrypt won't find the records from their side and dehydrated\nrun will fail.**\n\n```puppet\nclass { 'dehydrated':\n  contact_email =\u003e 'user@example.com',\n  challengetype =\u003e 'dns-01',\n  hook          =\u003e '/home/dehydrated/hook.sh',\n  timeout       =\u003e 600,\n}\n\ndehydrated::certificate { 'example.com':\n}\n```\n\n### Renewing certificates with cron\n\nThe `cron_integration` parameter of the `dehydrated` class configures cron to renew certificates before they expire.\n\n```puppet\nclass { 'dehydrated':\n  contact_email    =\u003e 'user@example.com',\n  cron_integration =\u003e true,\n}\n```\n\n**Please note that the web server is not automatically restarted when certificates are renewed.**\n\n### Serving challenges with Apache\n\nThe `apache_integration` parameter of the `dehydrated` class configures apache to serve the challenges used for domain validation.\n\nThe following example redirect all HTTP requests to HTTPS except those related to letsencrypt's validation:\n\n```puppet\ninclude ::apache\ninclude ::apache::mod::rewrite\n\nclass { 'dehydrated':\n  contact_email      =\u003e 'user@example.com',\n  apache_integration =\u003e true,\n}\n\napache::vhost { 'main':\n  port           =\u003e 80,\n  default_vhost  =\u003e true,\n  docroot        =\u003e '/var/empty',\n  manage_docroot =\u003e false,\n  directories    =\u003e [\n    {\n      path     =\u003e '/var/empty',\n      rewrites =\u003e [\n        {\n          rewrite_rule =\u003e '.* https://%{HTTP_HOST}%{REQUEST_URI} [R=301]',\n        },\n      ],\n    },\n  ],\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopus-codium%2Fpuppet-dehydrated","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopus-codium%2Fpuppet-dehydrated","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopus-codium%2Fpuppet-dehydrated/lists"}