{"id":23872034,"url":"https://github.com/eddiewebb/flarum-bluesky-handles","last_synced_at":"2026-01-29T00:08:35.044Z","repository":{"id":264092122,"uuid":"892311451","full_name":"eddiewebb/flarum-bluesky-handles","owner":"eddiewebb","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-28T11:50:09.000Z","size":476,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-27T16:46:26.988Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eddiewebb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-21T21:58:24.000Z","updated_at":"2024-11-28T11:48:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"4aff5b2d-6219-4616-90c5-a636b9440d6d","html_url":"https://github.com/eddiewebb/flarum-bluesky-handles","commit_stats":null,"previous_names":["eddiewebb/flarum-bluesky-handles"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/eddiewebb/flarum-bluesky-handles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddiewebb%2Fflarum-bluesky-handles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddiewebb%2Fflarum-bluesky-handles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddiewebb%2Fflarum-bluesky-handles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddiewebb%2Fflarum-bluesky-handles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eddiewebb","download_url":"https://codeload.github.com/eddiewebb/flarum-bluesky-handles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddiewebb%2Fflarum-bluesky-handles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28857038,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T22:56:21.783Z","status":"ssl_error","status_checked_at":"2026-01-28T22:56:00.861Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-01-03T15:19:20.727Z","updated_at":"2026-01-29T00:08:35.039Z","avatar_url":"https://github.com/eddiewebb.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BlueSky Custom Handles\n\n[![Latest Stable Version](https://img.shields.io/packagist/v/webbinaro/flarum-bluesky-handles.svg)](https://packagist.org/packages/webbinaro/flarum-bluesky-handles) [![Total Downloads](https://img.shields.io/packagist/dt/webbinaro/flarum-bluesky-handles.svg)](https://packagist.org/packages/webbinaro/flarum-bluesky-handles)\n\nA [Flarum](http://flarum.org) extension. Enables your Flarum users to set their Bluesky handles to use a sub-domain of your site.  I.e. @username.example.com vs the default bluesky domain. \n\n![Bluesky user settings with verified custom domain](https://github.com/eddiewebb/flarum-bluesky-handles/raw/main/assets/blueskysettings.png)\n\n## Installation\n\nInstall with composer:\n\n```sh\ncomposer require webbinaro/flarum-bluesky-handles:\"*\"\n```\n\n## Updating\n\n```sh\ncomposer update webbinaro/flarum-bluesky-handles:\"*\"\nphp flarum migrate\nphp flarum cache:clear\n```\n\n## Requires FOF/Masquerade\n\nThis extension depends on a custom bio field provided by FOF/Masquerade. Setting details below.\n\n1. Create a new field, type `Advanced`\n2. Set name as `Bluesky DID` or similar\n3. Set validation rule as `regex:/^did:[a-z]+:[a-zA-Z0-9._:%-]*[a-zA-Z0-9._-]$/`\n4. Set icon to `fas-brands fa-bluesky`\n\n![Example Masquerade Settings](https://github.com/eddiewebb/flarum-bluesky-handles/raw/main/assets/masqfieldsetup.png)\n\n### User entry\n\nUsers can find their DID on their Bluesky Profile \u003e Settings \u003e Handle \u003e Custom Handle\n\nUsers can enter it on Flarum \u003e Profile \u003e Edit Profile\n\n![Example user entry](https://github.com/eddiewebb/flarum-bluesky-handles/raw/main/assets/userentry.png)\n\n## Wildcard Domain Support - Handle requirements\n\nBluesky will try to resolve subdomains matching requested user handles.\n\nI.e.  @eddie.adkadv.com will attempt to resolve https://eddie.adkadv.com\n\nThis means you will need to configure your webserver (nginx, apache) to convert these into requests on a specific API endpoint `/api/bluesky/\u003csubdomain\u003e`\n\n1. Add wildcard to your DNS Settings as a new A and AAAA record\n2. Update your webserver to route all subdomains to documented API.\n3. Update your SSL Certificates to handle wildcard domains.\n\n\n### Nginx Example\n\nYou can add a new server block to nginx to listen to wildcard domains, excluding known ones.\n\n```\nserver {\n    listen 443 ssl http2;\n    listen [::]:443 ssl http2;\n    # listen for any subdomains EXCEPT gear.\n    server_name ~^(?\u003cslug\u003e(?!other-suddomain-to-exclude)\\w+)\\.example\\.com$;\n\n    if ( $request_uri ~ ^/.well-known/atproto-did ) {\n        # send atproto did verification requests to custom endpoint\n        return $scheme://example.com/api/bluesky/$slug;\n    }\n    # send all other requests to subpath of user profile\n    return $scheme://example.com/u/$slug$request_uri;\n    \n    \n\n    # Requires SSL, so make sure you have a wildcard enabled cert\n    # This DNS validation\n    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;\n    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;\n}\n\n```\n\n## Links\n\n- [Packagist](https://packagist.org/packages/webbinaro/flarum-bluesky-handles)\n- [GitHub](https://github.com/eddiewebb/flarum-bluesky-handles)\n- [Discuss](https://discuss.flarum.org/d/36418-custom-bluesky-handles-for-domain-users)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddiewebb%2Fflarum-bluesky-handles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feddiewebb%2Fflarum-bluesky-handles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddiewebb%2Fflarum-bluesky-handles/lists"}