explaingit

diafygi/acme-tiny

4,767PythonAudience · ops devopsComplexity · 3/5LicenseSetup · moderate

TLDR

A tiny Python script (under 200 lines) that gets you a free HTTPS certificate from Let's Encrypt and renews it automatically. No extra software needed, just Python and OpenSSL, which are already on most servers.

Mindmap

mindmap
  root((acme-tiny))
  Certificate Setup
    Account private key
    Domain private key
    Certificate request
    Web server config
  How It Works
    Domain proof check
    Lets Encrypt API
    Signed cert returned
  Renewal
    90 day expiry
    Monthly cron job
    Auto server reload
  Dependencies
    Python stdlib
    OpenSSL CLI
  Audience
    Developers
    Server admins
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Get a free trusted HTTPS certificate for your website without installing bulky software

USE CASE 2

Set up automatic monthly renewal so your certificate never expires unnoticed

USE CASE 3

Audit every line of code before trusting it with your server's private keys

USE CASE 4

Run on minimal Linux servers where you cannot install large packages

Tech stack

PythonOpenSSLLet's EncryptACME protocol

Getting it running

Difficulty · moderate Time to first run · 1h+

Requires comfort with terminal commands, private keys, and basic web server config. No pip dependencies, just Python stdlib and the openssl CLI tool already on most Linux servers.

MIT license, free to use, modify, and share for any purpose including commercial projects.

In plain English

acme-tiny is a small Python script, under 200 lines, that gets a free HTTPS certificate from Let's Encrypt and renews it automatically. Let's Encrypt is a free certificate authority that lets website owners prove they control a domain and receive a certificate that browsers trust. The script handles that proof-and-issuance process without requiring a large software installation. The way it works is roughly: you generate a private key for your account and a separate private key for your domain, create a certificate request file, configure your web server to serve a small verification file that Let's Encrypt will check, run the script, and it returns a signed certificate you install in your web server settings. The README walks through each of those six steps with example commands for the terminal. Because the script runs on your server and has access to your private account key, the author explicitly recommends reading the source code before trusting it with those credentials. The entire script being under 200 lines makes that audit realistic for anyone comfortable reading Python. Let's Encrypt certificates expire every 90 days. To handle renewals without manual work, the README shows how to set up a scheduled task that runs the script once a month and automatically reloads the web server afterward. The project has no dependencies beyond Python itself and the openssl command-line tool, which is already present on most Linux servers. It is aimed at developers and server administrators who want a minimal, transparent tool rather than a full certificate management client. The README notes that if you are not comfortable with concepts like private keys and certificate signing requests, the official Let's Encrypt client may be a better fit.

Copy-paste prompts

Prompt 1
I have acme-tiny installed. Walk me through the 6 steps to get a Let's Encrypt certificate for my domain example.com, including generating the account key, domain key, and CSR.
Prompt 2
Show me a cron job entry that uses acme-tiny to renew my certificate monthly and automatically reload nginx afterward.
Prompt 3
Explain what a certificate signing request (CSR) is and why acme-tiny needs me to create one before it can get my HTTPS certificate.
Prompt 4
I want to use acme-tiny on Apache instead of nginx. How do I configure the web server to serve the verification file Let's Encrypt needs to check?
Open on GitHub → Explain another repo

← diafygi on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.