{"id":17610047,"url":"https://github.com/darnfish/skyname","last_synced_at":"2025-04-30T15:18:17.254Z","repository":{"id":187805886,"uuid":"677600841","full_name":"darnfish/skyname","owner":"darnfish","description":"Free, unique usernames for Bluesky","archived":false,"fork":false,"pushed_at":"2024-01-15T08:07:03.000Z","size":1124,"stargazers_count":34,"open_issues_count":9,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-30T15:18:04.526Z","etag":null,"topics":["bluesky","cloudflare","dns","registrar"],"latest_commit_sha":null,"homepage":"https://skyna.me","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darnfish.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-12T02:52:55.000Z","updated_at":"2025-03-30T01:26:14.000Z","dependencies_parsed_at":"2024-10-23T00:49:18.579Z","dependency_job_id":"ae899e64-6618-4f34-9ee4-94a754a93486","html_url":"https://github.com/darnfish/skyname","commit_stats":null,"previous_names":["darnfish/skyname"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darnfish%2Fskyname","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darnfish%2Fskyname/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darnfish%2Fskyname/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darnfish%2Fskyname/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darnfish","download_url":"https://codeload.github.com/darnfish/skyname/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251729735,"owners_count":21634281,"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":["bluesky","cloudflare","dns","registrar"],"created_at":"2024-10-22T17:43:06.034Z","updated_at":"2025-04-30T15:18:17.197Z","avatar_url":"https://github.com/darnfish.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Skyname\nRegister and own your own free, unique usernames for Bluesky\n\n## Why?\nSkyname is a username registrar for Bluesky.\n\nBluesky uses domains as usernames. Since I own the domain darn.fish, I can set it as my username on Bluesky, hence why I am @darn.fish.\n\nDNS, specifically a TXT record, is used for verifying domain ownership. Skyname hijacks this process and lets users verify a subdomain on a set of domain names owned by whoever runs a Skyname instance.\n\nThe official Skyname instance is located at [skyna.me](https://skyna.me). You can find domains such as bsky.cool and bsky.lgbt among others. Anyone can sign up and claim their own \u003cusername\u003e.bsky.cool username for free and forever.\n\nIf you'd like to add your own domain for anyone to use, email [domains@skyna.me](mailto:domains@skyna.me) to start the process. Alternatively, and more preferrably, you can host your own instances and email [instances@skyna.me](mailto:instances@skyna.me) to be added to a list coming in the not so distant future.\n\n## Setup\nClone down the repo and install dependencies:\n```\ngit clone git@github.com:darnfish/skyname.git\ncd skyname\nyarn\n```\n\nYou will need to populate `SKYNAME_CONFIG` with a Base64 encoded JSON object to supply your owned domains and DNS providers. Here is a sample:\n```json\n{\n    \"domains\": {\n        \"example.com\": {\n            \"provider\": \"my-provider\",\n            \"zoneId\": \"\u003ccf_zone_id\u003e\",\n            \"disallowedSubdomains\": [\n                \"skyname\"\n            ]\n        }\n    },\n    \"providers\": {\n        \"my-provider\": {\n            \"service\": \"cloudflare\",\n            \"token\": \"\u003ccf_token\u003e\",\n            \"attestation\": {\n                \"verified\": true\n            }\n        }\n    }\n}\n```\n\nOnce you have this file, save it to `config.json` and run the following command to copy the encoded Base64 string to clipboard so you can set as your `SKYNAME_CONFIG` environment variable:\n```\ncat config.json | base64 | pbcopy -\n```\n\nYou will also need to set `POSTGRES_URL` to a PostgreSQL database. The database must have read write permissions and a table called `registrations` which can be created using the following SQL query:\n```sql\nCREATE TABLE \"public\".\"registrations\" (\n    \"id\" varchar NOT NULL,\n    \"created_at\" text NOT NULL DEFAULT now(),\n    \"invalidated_at\" text,\n    \"actor\" varchar NOT NULL,\n    \"subdomain\" varchar NOT NULL,\n    \"domain\" varchar NOT NULL,\n    \"previous_username\" varchar NOT NULL,\n    \"record_id\" varchar NOT NULL,\n    \"server\" varchar NOT NULL DEFAULT 'bsky.social'::character varying,\n    PRIMARY KEY (\"id\")\n);\n```\n\nYou can optionally set a `TG_CHAT_ID` and `TG_BOT_TOKEN` which will log events out to a Telegram chat.\n\n### Development\nTo run the server locally, make sure you have added the above environment variables to `.env.local` in the repository root. Then you can run the following:\n```\nyarn dev\n```\n\n## License\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarnfish%2Fskyname","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarnfish%2Fskyname","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarnfish%2Fskyname/lists"}