{"id":21091218,"url":"https://github.com/jadedctrl/kaptchapelo","last_synced_at":"2026-01-01T23:05:52.904Z","repository":{"id":187084247,"uuid":"676283051","full_name":"JadedCtrl/kaptchapelo","owner":"JadedCtrl","description":"Customizable \u0026 simple Pleroma/Kocaptcha-compatible CAPTCHA. (Mirror 🪞)","archived":false,"fork":false,"pushed_at":"2023-08-09T01:48:57.000Z","size":281,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-21T01:13:31.812Z","etag":null,"topics":["captcha","captcha-server","captcha-service","kocaptcha"],"latest_commit_sha":null,"homepage":"https://hak.xwx.moe/jadedctrl/kaptchapelo","language":"Common Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JadedCtrl.png","metadata":{"files":{"readme":"README.md","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":"2023-08-08T21:13:28.000Z","updated_at":"2024-01-30T05:51:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"4d68d94b-594d-4476-a694-66384d63a040","html_url":"https://github.com/JadedCtrl/kaptchapelo","commit_stats":null,"previous_names":["jadedctrl/kaptchapelo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JadedCtrl%2Fkaptchapelo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JadedCtrl%2Fkaptchapelo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JadedCtrl%2Fkaptchapelo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JadedCtrl%2Fkaptchapelo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JadedCtrl","download_url":"https://codeload.github.com/JadedCtrl/kaptchapelo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243532849,"owners_count":20306217,"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":["captcha","captcha-server","captcha-service","kocaptcha"],"created_at":"2024-11-19T21:44:28.910Z","updated_at":"2026-01-01T23:05:52.834Z","avatar_url":"https://github.com/JadedCtrl.png","language":"Common Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kaptĉapelo\nKaptĉapelo is a simple [Kocaptcha](https://github.com/koto-bank/kocaptcha)-compatible CAPTCHA server, to keep out robots and people with dubious intent. Rather than auto-generated challenges like Kocaptcha, though, Kaptĉapelo lets you create shiny, pretty, _custom_ challenges.\n\nSince Kaptĉapelo is a kinda-sorta drop-in replacement for Kocaptcha, you can [use it as CAPTCHA](https://docs-develop.pleroma.social/backend/configuration/cheatsheet/#captcha) for your [Pleroma](https://pleroma.social) server.\n\n![A screenshot of a CAPTCHA challenge on the registration page of a Pleroma server. It is a picture of a feminine anime character, Ferris from Re:Zero, with the question: “Are they a boy or a girl?”](example.png)\n\n\n## Installation\n### Setup\nKaptĉapelo requires the following:\n\n* A Common Lisp implementation. I’d recommend [Steel Bank Common Lisp](http://www.sbcl.org/), which is robust and available on many operating systems under the package-name `sbcl`.\n* [Quicklisp](https://quicklisp.org/), a “package-manager” for Common Lisp libraries.\n\nTo install these, you can run the following commands (replacing `guix` with your package-manager of choice)…\n\n```\n$ guix install sbcl\n$ mkdir --parents ~/.local/lib/quicklisp/\n$ wget https://beta.quicklisp.org/quicklisp.lisp\n$ sbcl --load quicklisp.lisp\n```\n\nAnd then, in SBCL, run…\n\n```\n* (quicklisp-quickstart:install :path \"~/.local/lib/quicklisp/\")\n* (ql:add-to-init-file)\n* (quit)\n```\n\nBack in the shell, we can clone Kaptĉapelo…\n\n```\n$ cd ~/.local/lib/quicklisp/local-projects/\n$ git clone https://notabug.org/jadedctrl/kaptchapelo\n```\n\n\n### Execution\nIn the sources, you can find a script (`run-kaptchapelo.lisp`), which can be used like so:\n\n```\n$ # First, let’s make it executable…\n$ chmod +x ~/.local/lib/quicklisp/local-projects/kaptchapelo/run-kaptchapelo.lisp\n$ # … now we can run it…\n$ ~/.local/lib/quicklisp/local-projects/kaptchapelo/run-kaptchapelo.lisp\n```\n\nNow, Kaptchapelo should be running and good to go; visit http://localhost:5001 and have a look!\n\n\n\n## Configuration\n### Reverse-proxy\nYou’ll probably be running Kaptchapelo through a reverse proxy; here’s how you can add it to an existing server definition with [nginx](https://nginx.org/):\n\n```\nserver {\n\t[…]\n\n\tlocation /new {\n\t\tset $target http://localhost:5001;\n\t\tproxy_buffering off;\n\t\tproxy_pass http://localhost:5001;\n\t}\n\n\tlocation /captcha/ {\n\t\tset $target http://localhost:5001;\n\t\tproxy_buffering off;\n\t\tproxy_pass http://localhost:5001;\n\t}\n\n\t[…]\n}\n```\n\nThat is to say, you don’t need a dedicated subdomain!\n\n\n### Custom captchas\nMaking custom captchas is easy! A challenge is simply a PNG file (question) and a TXT file (answer).\n… that’s it! Literally.\n\nNote that the PNG and TXT files should have the same name (`bird.png` and `bird.txt`, not `bird2.png` and `bird1.txt`), and that the TXT answer should consist of one line with _no_ newline.\n\nA peek through this repository’s example captchas (in `./captcha/`) should give you the idea.\n\n\n### Captcha directory\nIt’s likely you’ll want to provide a custom directory in which to store your captchas; no problem! Just edit the aforementioned `run-kaptchapelo.lisp` script, which contains a line…\n\n```\n:captcha-directory #p\"~/.local/lib/quicklisp/local-projects/kaptchapelo/captcha/\"\n```\n\n… all you have to do is replace the path there with your own.\nIn addition, you can also change the port and address by editing this script.\n\n\n\n## Misc. information\nAuthor: Jaidyn Ann `@jadedctrl@jam.xwx.moe`  \nLicense: GNU AGPLv3\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjadedctrl%2Fkaptchapelo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjadedctrl%2Fkaptchapelo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjadedctrl%2Fkaptchapelo/lists"}