{"id":13771445,"url":"https://github.com/ambyshframber/kepler","last_synced_at":"2025-05-11T04:30:41.671Z","repository":{"id":41979853,"uuid":"509579949","full_name":"ambyshframber/kepler","owner":"ambyshframber","description":"simple gemini server in rust","archived":false,"fork":false,"pushed_at":"2022-08-07T20:22:31.000Z","size":22,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-11-17T07:34:07.337Z","etag":null,"topics":["gemini","gemini-protocol","gemini-server"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ambyshframber.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-01T20:22:48.000Z","updated_at":"2024-02-10T16:45:38.000Z","dependencies_parsed_at":"2022-09-21T12:11:07.824Z","dependency_job_id":null,"html_url":"https://github.com/ambyshframber/kepler","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/ambyshframber%2Fkepler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ambyshframber%2Fkepler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ambyshframber%2Fkepler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ambyshframber%2Fkepler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ambyshframber","download_url":"https://codeload.github.com/ambyshframber/kepler/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253518941,"owners_count":21921074,"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":["gemini","gemini-protocol","gemini-server"],"created_at":"2024-08-03T17:00:51.568Z","updated_at":"2025-05-11T04:30:41.354Z","avatar_url":"https://github.com/ambyshframber.png","language":"Rust","funding_links":[],"categories":["Servers"],"sub_categories":["Graphical"],"readme":"# kepler\n\na simple gemini server\n\n## a brief note about gemini\n\ngemini is like the web, but smaller. it's designed to be a much smaller specification and therefore much easier to implement and maintain.\n\nfor more info, check out [this page](https://gemini.circumlunar.space/)\n\n## how to use kepler\n\nkepler uses INI for config. to start kepler, run `kepler path/to/config/file`. all paths in the config are relative to the folder containing the config file. an example setup is included in this repository. values MUST NOT be enclosed with quotes.\n\nlist of keys:\n\n- `hostname`: should be set to the hostname of the server. this is used to validate request URIs. defaults to `localhost`\n- `private_key_file`: the path to the private key file. the file should be PEM encoded. defaults to `key.pem`\n- `cert_chain_file`: the path to the TLS certificate. again, the file should be PEM encoded. defaults to `cert.pem`\n- `content_root`: the folder to use when serving a static file. defaults to `content`\n- `index`: the file to serve when a request path terminates at a folder. defaults to `index.gmi`\n- `port`: the port to use. this should never really need changing. defaults to `1965`\n- `redirects_file`: the path to the redirects table file. if not present, no redirects will be loaded.\n- `redirects_ttl`: the amount of time (in seconds) to wait before refreshing the redirects table from the disk. defaults to `1800`, equal to 30 minutes\n\n### redirects\n\nkepler supports redirections, and can dynamically update redirects without needing to restart. redirects are specified in a separate INI file, which is pointed to by the `redirects_file` key. this file is structured a little oddly because gemini redirects can be permanent or temporary. an example redirect might be\n```ini\n[test_redirect]\ndestination = gemini://gemini.circumlunar.space\npermanent = true\n```\n\nany request for that path will be redirected to `destination`, with the permanence of the redirect being determined by `permanent`. if permanent is not present or the value does not equal `true` or `false`, the redirect will be assumed to be temporary. paths do not have a starting or ending slash.\n\nthe redirect table will be reloaded from disk on the first incoming request after N seconds have passed since the last reload, where N is the value of `redirects_ttl`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fambyshframber%2Fkepler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fambyshframber%2Fkepler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fambyshframber%2Fkepler/lists"}