{"id":20181378,"url":"https://github.com/ac000/lehttpd","last_synced_at":"2025-03-03T06:11:46.029Z","repository":{"id":66721189,"uuid":"74409062","full_name":"ac000/lehttpd","owner":"ac000","description":"Micro http server whose sole purpose is to answer letsencrypt challenge responses.","archived":false,"fork":false,"pushed_at":"2024-10-21T21:21:39.000Z","size":34,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-13T17:20:14.975Z","etag":null,"topics":["http-server","letsencrypt-utils"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ac000.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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":"2016-11-21T21:50:30.000Z","updated_at":"2024-10-21T21:21:43.000Z","dependencies_parsed_at":"2024-11-14T07:03:29.366Z","dependency_job_id":null,"html_url":"https://github.com/ac000/lehttpd","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ac000%2Flehttpd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ac000%2Flehttpd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ac000%2Flehttpd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ac000%2Flehttpd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ac000","download_url":"https://codeload.github.com/ac000/lehttpd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241616700,"owners_count":19991543,"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":["http-server","letsencrypt-utils"],"created_at":"2024-11-14T02:35:19.545Z","updated_at":"2025-03-03T06:11:46.010Z","avatar_url":"https://github.com/ac000.png","language":"C","readme":"lehttpd is a micro http server with the sole purpose of answering\nletsencrypt[0] challenge responses.\n\nHandy for when you are issuing certificates for servers with no running\nweb server and you don't really want to set one up etc.\n\nUsage is simply a matter of calling lehttpd and telling it where the\nletsencrypt challenge directory is. lehttpd simply takes the last path\ncomponent of the request and sends that file from the specified directory.\n\nE.g. if it gets the request\n\n    /.well-known/acme-challenge/6rEoXjsdTITO7tJUXj-aXY-RN2CYOF1O6JsgfFqCeUs\n\nit will simply send the file\n\n    6rEoXjsdTITO7tJUXj-aXY-RN2CYOF1O6JsgfFqCeUs\n\nI use this in conjunction with the C based acme-client[1].\n\nSeeing as all this is meant to be automated. Here's what a shell script to\ndrive this might look like...\n\n    #!/bin/sh\n    #\n\n    if [[ ! -d /tmp/acme ]]; then\n            mkdir /tmp/acme\n    fi\n\n    # Will run for 60 seconds then terminate\n    lehttpd /tmp/acme \u0026\n\n    sleep 1\n\n    acme-client -v my.domain.com\n\n    if [ $? -eq 0 ]; then\n            # Certificates changed\n            systemctl restart service1\n            systemctl restart service2\n            ...\n    fi\n\n    exit 0\n\n\nlehttpd uses libmicrohttpd[2] and should be run as root, once started, it\nchroot's to the specified directory and switches to the 'nobody' user. It\nwill run for 60 seconds then terminate.\n\nOn Red Hat/Fedora based systems you yill need the libmicrohttpd-devel package\nand on Debian it's libmicrohttpd-dev\n\nAlso if you have libseccomp[3] installed it will try to make use of the\nLinux kernels seccomp support. This also needs the SCMP_FLTATR_CTL_TSYNC\nflag, which is also checked for at run-time.\n\nOn Red Hat/Fedora based systems you yill need the libseccomp-devel package\nand on Debian it's libseccomp-dev\n\nThe libseccomp detection uses pkg-config which on Red Hat et al is either\nthe pkgconfig or pkgconf-pkg-config package for newer systems. On Debian it's\npkg-config.\n\nThis is licensed under the GNU General Public License version 2. See\nCOPYING.\n\n[0] - https://letsencrypt.org/\n[1] - https://git.wolfsden.cz/acme-client-portable\n[2] - http://www.gnu.org/software/libmicrohttpd/\n[3] - https://github.com/seccomp/libseccomp\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fac000%2Flehttpd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fac000%2Flehttpd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fac000%2Flehttpd/lists"}