up
This commit is contained in:
		
							
								
								
									
										108
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										108
									
								
								README.md
									
									
									
									
									
								
							@@ -0,0 +1,108 @@
 | 
				
			|||||||
 | 
					# atproto(at protocol)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- @
 | 
				
			||||||
 | 
					- [at]mosphere
 | 
				
			||||||
 | 
					- at://domain
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## account
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[@ai.syu.is](https://web.syu.is/profile/ai.syu.is)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- https://plc.syu.is/did:plc:6qyecktefllvenje24fcxnie
 | 
				
			||||||
 | 
					- https://plc.directory/did:plc:ytvoptig4ddshmwdsjmhtcym
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					$ curl -sL syu.is/xrpc/_health
 | 
				
			||||||
 | 
					{"version":"0.4.65"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# latest
 | 
				
			||||||
 | 
					# https://github.com/bluesky-social/atproto/blob/main/packages/pds/package.json
 | 
				
			||||||
 | 
					$ curl -sL https://raw.githubusercontent.com/bluesky-social/atproto/refs/heads/main/packages/pds/package.json |jq -r .version
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					$ curl -sL "syu.is/xrpc/com.atproto.repo.describeRepo?repo=ai.syu.is" |jq -r .did
 | 
				
			||||||
 | 
					did:plc:6qyecktefllvenje24fcxnie
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$ curl -sL "syu.is/xrpc/com.atproto.repo.listRecords?repo=ai.syu.is&collection=app.bsky.feed.post&reverse=true&limit=1" 
 | 
				
			||||||
 | 
					{"records":[{"uri":"at://did:plc:6qyecktefllvenje24fcxnie/app.bsky.feed.post/3l6s2riuouk2j","cid":"bafyreibjohl7va4upkibw5twaxdd4jg3l6rmfatu4dpjjfd5xkb2ijtlx4","value":{"text":"hello","$type":"app.bsky.feed.post","langs":["ja"],"createdAt":"2024-10-18T13:21:39.809Z"}}],"cursor":"3l6s2riuouk2j"}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## feed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> at://did:plc:6qyecktefllvenje24fcxnie/app.bsky.feed.generator/cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## link
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- https://github.com/bluesky-social/atproto
 | 
				
			||||||
 | 
					- https://github.com/itaru2622/bluesky-selfhost-env
 | 
				
			||||||
 | 
					- https://github.com/bluesky-social/atproto/discussions/2026
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## self-host
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					currently, bsky and bsync require patches to function properly. additionally, social-app is not displaying avatars. for components that are not working, it's recommended to use [itaru2622/bluesky-selfhost-env](https://github.com/itaru2622/bluesky-selfhost-env). this repository provides an environment for self-hosting bluesky.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- bsky = appview
 | 
				
			||||||
 | 
					- ozone = mod
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					|name|service|patch|
 | 
				
			||||||
 | 
					|---|---|---|
 | 
				
			||||||
 | 
					|pds|https://github.com/bluesky-social/atproto/blob/main/services/pds/Dockerfile||
 | 
				
			||||||
 | 
					|bsky|https://github.com/bluesky-social/atproto/blob/main/services/bsky/Dockerfile|[itaru2622/bluesky-atproto-bsky](https://hub.docker.com/r/itaru2622/bluesky-atproto-bsky)|
 | 
				
			||||||
 | 
					|bsync|https://github.com/bluesky-social/atproto/blob/main/services/bsync/Dockerfile||
 | 
				
			||||||
 | 
					|ozone|https://github.com/bluesky-social/atproto/blob/main/services/ozone/Dockerfile||
 | 
				
			||||||
 | 
					|plc|https://github.com/did-method-plc/did-method-plc/tree/main/packages/server||
 | 
				
			||||||
 | 
					|bgs|https://github.com/bluesky-social/indigo/tree/main/cmd/bigsky||
 | 
				
			||||||
 | 
					|feed|https://github.com/bluesky-social/feed-generator||
 | 
				
			||||||
 | 
					|web|https://github.com/bluesky-social/social-app|[bluesky-selfhost-env](https://github.com/itaru2622/bluesky-selfhost-env/blob/master/patching/160-social-app-disable-hackModifyThumbnailPath.diff)|
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					# BSKY_IMG_URI_ENDPOINT, BSKY_BLOB_CACHE_LOC
 | 
				
			||||||
 | 
					# avatar link example
 | 
				
			||||||
 | 
					1. https://appview.${host}/img/avatar/plain/${did}/${cid}@jpeg
 | 
				
			||||||
 | 
					2. https://${host}/xrpc/com.atproto.sync.getBlob?did=${did}&cid=${cid}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					docker compose will not be published unless you write ports. it is only valid internally. add ports only for what you want to publish.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## api
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					# create account
 | 
				
			||||||
 | 
					url=https://${pds}/xrpc/com.atproto.server.createAccount
 | 
				
			||||||
 | 
					json="{\"email\": \"$email\", \"handle\": \"$handle\", \"password\": \"$password\"}"
 | 
				
			||||||
 | 
					curl -X POST -H "Content-Type: application/json" -d $json -sL $url 
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					change `src/pds/handle` to use a name of 3 characters or less. also, you cannot create an account with a name of 3 characters or less from social-app (web client). please create it from api.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- [/atproto/packages/pds/src/handle/index.ts](https://github.com/bluesky-social/atproto/blame/d4d5a6edba972c0e9976289bde8bc0b42ff547ca/packages/pds/src/handle/index.ts#L86-L88)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					# invite code
 | 
				
			||||||
 | 
					admin_password=xxx
 | 
				
			||||||
 | 
					url=https://$host/xrpc/com.atproto.server.createInviteCode
 | 
				
			||||||
 | 
					json="{\"useCount\":1}"
 | 
				
			||||||
 | 
					curl -X POST -u admin:${admin_password} -H "Content-Type: application/json" -d "$json" -sL $url
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## oauth
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					# https://github.com/bluesky-social/cookbook/tree/main/python-oauth-web-app
 | 
				
			||||||
 | 
					$ cd ./repos/cookbook/python-oauth-web-app
 | 
				
			||||||
 | 
					$ rye sync
 | 
				
			||||||
 | 
					$ rye run python3 -c 'import secrets; print(secrets.token_hex())'|xargs echo FLASK_SECRET_KEY|tr -d ' ' >> .env
 | 
				
			||||||
 | 
					$ rye run python3 generate_jwk.py |xargs echo FLASK_CLIENT_SECRET_JWK|tr -d ' ' >> .env
 | 
				
			||||||
 | 
					$ cat .env
 | 
				
			||||||
 | 
					$ rye run flask run
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					please access `127.0.0.1:5000`. it may not work if you use localhost.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					also, oauth doesn't work on localhost. use [ngrok](https://ngrok.com/), [tailscale](https://tailscale.com/).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					$ ngrok http http://localhost:5000
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										30
									
								
								build.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								build.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					#!/bin/zsh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					d=${0:a:h}
 | 
				
			||||||
 | 
					cd $d/repos
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					t="
 | 
				
			||||||
 | 
					https://github.com/bluesky-social/atproto
 | 
				
			||||||
 | 
					https://github.com/did-method-plc/did-method-plc
 | 
				
			||||||
 | 
					https://github.com/bluesky-social/feed-generator
 | 
				
			||||||
 | 
					https://github.com/bluesky-social/social-app
 | 
				
			||||||
 | 
					https://github.com/bluesky-social/cookbook
 | 
				
			||||||
 | 
					https://github.com/itaru2622/bluesky-selfhost-env
 | 
				
			||||||
 | 
					"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					t=`echo $t|grep -v '^$'`
 | 
				
			||||||
 | 
					n=`echo $t|wc -l`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for ((i=1;i<=$n;i++))
 | 
				
			||||||
 | 
					do
 | 
				
			||||||
 | 
						tt=`echo $t|awk "NR==$i"`
 | 
				
			||||||
 | 
						dd=$d/repos/$tt:t
 | 
				
			||||||
 | 
						if [ -d $dd ];then
 | 
				
			||||||
 | 
							echo ok
 | 
				
			||||||
 | 
							cd $dd
 | 
				
			||||||
 | 
							git pull
 | 
				
			||||||
 | 
							cd $d/repos
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							git clone $tt
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
							
								
								
									
										166
									
								
								compose.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										166
									
								
								compose.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,166 @@
 | 
				
			|||||||
 | 
					services:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  database:
 | 
				
			||||||
 | 
					    image: postgres:16-alpine
 | 
				
			||||||
 | 
					    restart: always
 | 
				
			||||||
 | 
					    env_file:
 | 
				
			||||||
 | 
					      - ./envs/postgres
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - ./configs/postgres/init/:/docker-entrypoint-initdb.d/
 | 
				
			||||||
 | 
					      - ./data/postgres/:/var/lib/postgresql/data/
 | 
				
			||||||
 | 
					    healthcheck:
 | 
				
			||||||
 | 
					      test: "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"
 | 
				
			||||||
 | 
					      interval: 5s
 | 
				
			||||||
 | 
					      retries: 20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  redis:
 | 
				
			||||||
 | 
					    image: redis:alpine
 | 
				
			||||||
 | 
					    restart: always
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - ./data/redis/:/data/
 | 
				
			||||||
 | 
					    healthcheck:
 | 
				
			||||||
 | 
					      test: ["CMD", "redis-cli", "ping", "|", "grep", "PONG"]
 | 
				
			||||||
 | 
					      interval: 1s
 | 
				
			||||||
 | 
					      timeout: 5s
 | 
				
			||||||
 | 
					      retries: 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  pds-fix-permission:
 | 
				
			||||||
 | 
					    image: alpine:latest
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - ./data/pds/:/data/
 | 
				
			||||||
 | 
					    command: chown 1000.1000 /data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bsky-fix-permission:
 | 
				
			||||||
 | 
					    image: alpine:latest
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - ./data/bsky/:/data/
 | 
				
			||||||
 | 
					    command: chown 1000.1000 /data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  plc:
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 2582:3000
 | 
				
			||||||
 | 
					    build:
 | 
				
			||||||
 | 
					      context: ./repos/did-method-plc/
 | 
				
			||||||
 | 
					      dockerfile: packages/server/Dockerfile
 | 
				
			||||||
 | 
					    restart: always
 | 
				
			||||||
 | 
					    env_file:
 | 
				
			||||||
 | 
					      - ./envs/plc
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      database:
 | 
				
			||||||
 | 
					        condition: service_healthy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  pds:
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 2583:3000
 | 
				
			||||||
 | 
					    #image: itaru2622/bluesky-atproto-pds
 | 
				
			||||||
 | 
					    #image: ghcr.io/bluesky-social/pds:latest
 | 
				
			||||||
 | 
					    build:
 | 
				
			||||||
 | 
					      context: ./repos/atproto/
 | 
				
			||||||
 | 
					      dockerfile: services/pds/Dockerfile
 | 
				
			||||||
 | 
					    restart: always
 | 
				
			||||||
 | 
					    env_file:
 | 
				
			||||||
 | 
					      - ./envs/pds
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - ./data/pds/:/data/
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      database:
 | 
				
			||||||
 | 
					        condition: service_healthy
 | 
				
			||||||
 | 
					      pds-fix-permission:
 | 
				
			||||||
 | 
					        condition: service_completed_successfully
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bgs:
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 2470:2470
 | 
				
			||||||
 | 
					    build:
 | 
				
			||||||
 | 
					      context: ./repos/indigo/
 | 
				
			||||||
 | 
					      dockerfile: cmd/bigsky/Dockerfile
 | 
				
			||||||
 | 
					    restart: always
 | 
				
			||||||
 | 
					    env_file:
 | 
				
			||||||
 | 
					      - ./envs/bgs
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - ./data/bgs/:/data/
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      database:
 | 
				
			||||||
 | 
					        condition: service_healthy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ozone:
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 2585:3000
 | 
				
			||||||
 | 
					    build:
 | 
				
			||||||
 | 
					      context: ./repos/atproto/
 | 
				
			||||||
 | 
					      dockerfile: services/ozone/Dockerfile
 | 
				
			||||||
 | 
					    restart: always
 | 
				
			||||||
 | 
					    command: node --enable-source-maps api.js
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - ./data/ozone/:/data/
 | 
				
			||||||
 | 
					      - ./repos/ozone.js:/app/services/ozone/api.js:ro
 | 
				
			||||||
 | 
					    env_file:
 | 
				
			||||||
 | 
					      - ./envs/ozone
 | 
				
			||||||
 | 
					    healthcheck:
 | 
				
			||||||
 | 
					      test: "wget -q --spider http://localhost:3000/xrpc/_health"
 | 
				
			||||||
 | 
					      interval: 5s
 | 
				
			||||||
 | 
					      retries: 20
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      database:
 | 
				
			||||||
 | 
					        condition: service_healthy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ozone-daemon:
 | 
				
			||||||
 | 
					    build:
 | 
				
			||||||
 | 
					      context: ./repos/atproto/
 | 
				
			||||||
 | 
					      dockerfile: services/ozone/Dockerfile
 | 
				
			||||||
 | 
					    restart: always
 | 
				
			||||||
 | 
					    command: node --enable-source-maps daemon.js
 | 
				
			||||||
 | 
					    env_file:
 | 
				
			||||||
 | 
					      - ./envs/ozone
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      ozone:
 | 
				
			||||||
 | 
					        condition: service_healthy
 | 
				
			||||||
 | 
					      database:
 | 
				
			||||||
 | 
					        condition: service_healthy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  social-app:
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 8100:8100
 | 
				
			||||||
 | 
					        #image: itaru2622/bluesky-social-app
 | 
				
			||||||
 | 
					    build:
 | 
				
			||||||
 | 
					      context: ./repos/social-app/
 | 
				
			||||||
 | 
					      dockerfile: Dockerfile
 | 
				
			||||||
 | 
					    restart: always
 | 
				
			||||||
 | 
					    env_file:
 | 
				
			||||||
 | 
					      - ./envs/social-app
 | 
				
			||||||
 | 
					    command: "/usr/bin/bskyweb serve"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bsky:
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 2584:2584
 | 
				
			||||||
 | 
					    image: itaru2622/bluesky-atproto-bsky
 | 
				
			||||||
 | 
					      #build:
 | 
				
			||||||
 | 
					      #  context: ./repos/atproto/
 | 
				
			||||||
 | 
					      #  dockerfile: services/bsky/Dockerfile
 | 
				
			||||||
 | 
					    restart: always
 | 
				
			||||||
 | 
					    env_file:
 | 
				
			||||||
 | 
					      - ./envs/bsky
 | 
				
			||||||
 | 
					    user: root
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - ./data/bsky/:/data/
 | 
				
			||||||
 | 
					        #      - ./repos/bsky.js:/app/services/bsky/api.js:ro
 | 
				
			||||||
 | 
					    command: node --enable-source-maps api.js
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      database:
 | 
				
			||||||
 | 
					        condition: service_healthy
 | 
				
			||||||
 | 
					      redis:
 | 
				
			||||||
 | 
					        condition: service_healthy
 | 
				
			||||||
 | 
					      bsky-fix-permission:
 | 
				
			||||||
 | 
					        condition: service_completed_successfully
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  feed:
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 2586:2586
 | 
				
			||||||
 | 
					    build:
 | 
				
			||||||
 | 
					      context: ./repos/feed-generator/
 | 
				
			||||||
 | 
					    restart: always
 | 
				
			||||||
 | 
					    env_file:
 | 
				
			||||||
 | 
					      - ./envs/feed
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - ./data/feed/:/data/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										35
									
								
								configs/postgres/init/init.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								configs/postgres/init/init.sql
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					-- PLC
 | 
				
			||||||
 | 
					CREATE DATABASE plc;
 | 
				
			||||||
 | 
					GRANT ALL PRIVILEGES ON DATABASE plc TO postgres;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- BGS
 | 
				
			||||||
 | 
					CREATE DATABASE bgs;
 | 
				
			||||||
 | 
					CREATE DATABASE carstore;
 | 
				
			||||||
 | 
					GRANT ALL PRIVILEGES ON DATABASE bgs TO postgres;
 | 
				
			||||||
 | 
					GRANT ALL PRIVILEGES ON DATABASE carstore TO postgres;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- bsky(AppView)
 | 
				
			||||||
 | 
					--CREATE DATABASE appview;
 | 
				
			||||||
 | 
					--GRANT ALL PRIVILEGES ON DATABASE appview TO postgres;
 | 
				
			||||||
 | 
					CREATE DATABASE bsky;
 | 
				
			||||||
 | 
					GRANT ALL PRIVILEGES ON DATABASE bsky TO postgres;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- ozone(Moderation)
 | 
				
			||||||
 | 
					--CREATE DATABASE moderation;
 | 
				
			||||||
 | 
					--GRANT ALL PRIVILEGES ON DATABASE moderation TO postgres;
 | 
				
			||||||
 | 
					CREATE DATABASE ozone;
 | 
				
			||||||
 | 
					GRANT ALL PRIVILEGES ON DATABASE ozone TO postgres;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- search(palomar)
 | 
				
			||||||
 | 
					CREATE DATABASE search;
 | 
				
			||||||
 | 
					GRANT ALL PRIVILEGES ON DATABASE search TO postgres;
 | 
				
			||||||
 | 
					--CREATE DATABASE palomar;
 | 
				
			||||||
 | 
					--GRANT ALL PRIVILEGES ON DATABASE palomar TO postgres;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- PDS
 | 
				
			||||||
 | 
					CREATE DATABASE pds;
 | 
				
			||||||
 | 
					GRANT ALL PRIVILEGES ON DATABASE pds TO postgres;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- BSYNC
 | 
				
			||||||
 | 
					CREATE DATABASE bsync;
 | 
				
			||||||
 | 
					GRANT ALL PRIVILEGES ON DATABASE bsync TO postgres;
 | 
				
			||||||
							
								
								
									
										6
									
								
								envs/bgs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								envs/bgs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					DATABASE_URL=postgres://postgres:postgres@database/bgs
 | 
				
			||||||
 | 
					CARSTORE_DATABASE_URL=postgres://postgres:postgres@database/carstore
 | 
				
			||||||
 | 
					DATA_DIR=/data
 | 
				
			||||||
 | 
					ATP_PLC_HOST=https://plc.${host}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BGS_ADMIN_KEY
 | 
				
			||||||
							
								
								
									
										19
									
								
								envs/bsky
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								envs/bsky
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					BSKY_PORT=2584
 | 
				
			||||||
 | 
					BSKY_BLOB_CACHE_LOC=/data/
 | 
				
			||||||
 | 
					BSKY_BSYNC_HTTP_VERSION=1.1
 | 
				
			||||||
 | 
					BSKY_BSYNC_PORT=3002
 | 
				
			||||||
 | 
					BSKY_BSYNC_URL=http://bsky:3002
 | 
				
			||||||
 | 
					BSKY_COURIER_URL=http://fake-courier.example.invalid/
 | 
				
			||||||
 | 
					BSKY_DATAPLANE_HTTP_VERSION=1.1
 | 
				
			||||||
 | 
					BSKY_DATAPLANE_PORT=3001
 | 
				
			||||||
 | 
					BSKY_DATAPLANE_URLS=http://bsky:3001
 | 
				
			||||||
 | 
					BSKY_DB_POSTGRES_URL=postgres://postgres:postgres@database/bsky
 | 
				
			||||||
 | 
					BSKY_DID_PLC_URL=https://plc.${host}
 | 
				
			||||||
 | 
					BSKY_PUBLIC_URL=https://bsky.${host}
 | 
				
			||||||
 | 
					BSKY_REPO_PROVIDER=wss://bgs.${host}
 | 
				
			||||||
 | 
					BSKY_SERVER_DID=did:web:bsky.${host}
 | 
				
			||||||
 | 
					MOD_SERVICE_DID=did:web:ozone.${host}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#BSKY_IMG_URI_ENDPOINT=https://bsky.${host}/img
 | 
				
			||||||
 | 
					BSKY_ADMIN_PASSWORDS
 | 
				
			||||||
 | 
					BSKY_SERVICE_SIGNING_KEY
 | 
				
			||||||
							
								
								
									
										21
									
								
								envs/ozone
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								envs/ozone
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					OZONE_SERVER_DID=did:web:ozone.${host}
 | 
				
			||||||
 | 
					OZONE_PUBLIC_URL=https://ozone.${host}
 | 
				
			||||||
 | 
					OZONE_ADMIN_HANDLE=${user}.${host}
 | 
				
			||||||
 | 
					OZONE_MODERATOR_DIDS=${did}
 | 
				
			||||||
 | 
					OZONE_ADMIN_DIDS=${did}
 | 
				
			||||||
 | 
					OZONE_DB_POSTGRES_URL=postgres://postgres:postgres@database/ozone
 | 
				
			||||||
 | 
					OZONE_DID_PLC_URL=https://plc.${host}
 | 
				
			||||||
 | 
					NEXT_PUBLIC_PLC_DIRECTORY_URL=https://plc.${host}
 | 
				
			||||||
 | 
					NEXT_PUBLIC_OZONE_SERVICE_DID=did:web:ozone.${host}
 | 
				
			||||||
 | 
					NEXT_PUBLIC_SOCIAL_APP_DOMAIN=mod.${host}
 | 
				
			||||||
 | 
					NEXT_PUBLIC_SOCIAL_APP_URL=https://mod.${host}
 | 
				
			||||||
 | 
					OZONE_APPVIEW_DID=did:web:bsky.${host}
 | 
				
			||||||
 | 
					OZONE_APPVIEW_URL=https://bsky.${host}
 | 
				
			||||||
 | 
					OZONE_APPVIEW_PUSH_EVENTS=false
 | 
				
			||||||
 | 
					OZONE_PDS_DID=did:web:${host}
 | 
				
			||||||
 | 
					OZONE_PDS_URL=https://${host}
 | 
				
			||||||
 | 
					OZONE_DEV_MODE=true
 | 
				
			||||||
 | 
					OZONE_DB_MIGRATE=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OZONE_ADMIN_PASSWORD
 | 
				
			||||||
 | 
					OZONE_SIGNING_KEY_HEX
 | 
				
			||||||
							
								
								
									
										21
									
								
								envs/pds
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								envs/pds
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					PDS_HOSTNAME=${host}
 | 
				
			||||||
 | 
					PDS_DB_POSTGRES_URL=postgres://postgres:postgres@database/pds
 | 
				
			||||||
 | 
					PDS_DATA_DIRECTORY=/data
 | 
				
			||||||
 | 
					PDS_BLOBSTORE_DISK_LOCATION=/data/img/static
 | 
				
			||||||
 | 
					#PDS_BLOBSTORE_DISK_TMP_LOCATION=/data/img/tmp
 | 
				
			||||||
 | 
					PDS_BSKY_APP_VIEW_DID=did:web:bsky.${host}
 | 
				
			||||||
 | 
					PDS_BSKY_APP_VIEW_URL=https://bsky.${host}
 | 
				
			||||||
 | 
					PDS_CRAWLERS=https://bgs.${host}
 | 
				
			||||||
 | 
					PDS_DEV_MODE=true
 | 
				
			||||||
 | 
					PDS_DID_PLC_URL=https://plc.${host}
 | 
				
			||||||
 | 
					PDS_ENABLE_DID_DOC_WITH_SESSION=true
 | 
				
			||||||
 | 
					PDS_INVITE_INTERVAL=604800000
 | 
				
			||||||
 | 
					PDS_SERVICE_DID=did:web:${host}
 | 
				
			||||||
 | 
					PDS_EMAIL_FROM_ADDRESS=no-reply@${host}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PDS_INVITE_REQUIRED=true
 | 
				
			||||||
 | 
					PDS_EMAIL_SMTP_URL=smtps://${user}:${app_password}@smtp.gmail.com
 | 
				
			||||||
 | 
					PDS_ADMIN_PASSWORD
 | 
				
			||||||
 | 
					PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX
 | 
				
			||||||
 | 
					PDS_REPO_SIGNING_KEY_K256_PRIVATE_KEY_HEX
 | 
				
			||||||
 | 
					PDS_JWT_SECRET
 | 
				
			||||||
							
								
								
									
										4
									
								
								envs/plc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								envs/plc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					DATABASE_URL=postgres://postgres:postgres@database/plc
 | 
				
			||||||
 | 
					DB_CREDS_JSON='{"username":"postgres","password":"postgres","host":"database","port":"5432","database":"plc"}'
 | 
				
			||||||
 | 
					ENABLE_MIGRATIONS=true
 | 
				
			||||||
 | 
					DB_MIGRATE_CREDS_JSON='{"username":"postgres","password":"postgres","host":"database","port":"5432","database":"plc"}'
 | 
				
			||||||
							
								
								
									
										4
									
								
								envs/postgres
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								envs/postgres
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					#POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
 | 
				
			||||||
 | 
					POSTGRES_USER=postgres
 | 
				
			||||||
 | 
					POSTGRES_PASSWORD=postgres
 | 
				
			||||||
 | 
					POSTGRES_DB=healthcheck
 | 
				
			||||||
							
								
								
									
										1
									
								
								envs/social-app
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								envs/social-app
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					ATP_APPVIEW_HOST=https://bsky.${host}
 | 
				
			||||||
							
								
								
									
										52
									
								
								icons/Logotype.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								icons/Logotype.tsx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					import React from 'react'
 | 
				
			||||||
 | 
					import Svg, {Path, SvgProps, PathProps} from 'react-native-svg'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import {usePalette} from '#/lib/hooks/usePalette'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const ratio = 17 / 64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function Logotype({
 | 
				
			||||||
 | 
					  fill,
 | 
				
			||||||
 | 
					  ...rest
 | 
				
			||||||
 | 
					}: {fill?: PathProps['fill']} & SvgProps) {
 | 
				
			||||||
 | 
					  const pal = usePalette('default')
 | 
				
			||||||
 | 
					  // @ts-ignore it's fiiiiine
 | 
				
			||||||
 | 
					  const size = parseInt(rest.width || 32)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return (
 | 
				
			||||||
 | 
					    <Svg
 | 
				
			||||||
 | 
					      fill="none"
 | 
				
			||||||
 | 
					      viewBox="0 0 2821.6379 794.29016"
 | 
				
			||||||
 | 
					      {...rest}
 | 
				
			||||||
 | 
					      width={size}
 | 
				
			||||||
 | 
					      height={Number(size) * ratio}>
 | 
				
			||||||
 | 
					      <g
 | 
				
			||||||
 | 
					      transform="matrix(0.1,0,0,-0.1,-282.80153,1445)"
 | 
				
			||||||
 | 
					      fill="#000000"
 | 
				
			||||||
 | 
					      stroke="none"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					      <path
 | 
				
			||||||
 | 
					      d="m 24787,14443 c -4,-3 -7,-224 -7,-490 v -483 h 545 545 v 490 490 h -538 c -296,0 -542,-3 -545,-7 z"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					      <path
 | 
				
			||||||
 | 
					       d="m 5190,13285 c -8,-3 -96,-12 -195,-20 -199,-16 -296,-32 -430,-70 -49,-14 -115,-32 -145,-40 -153,-39 -504,-198 -662,-301 -21,-13 -57,-36 -80,-51 -24,-16 -72,-50 -109,-78 -241,-182 -377,-315 -528,-517 -119,-158 -120,-160 -106,-188 23,-45 140,-140 560,-457 110,-84 319,-242 465,-353 146,-110 369,-279 495,-375 791,-600 723,-549 1049,-799 269,-207 398,-307 524,-403 l 114,-86 -49,-49 c -128,-131 -378,-258 -588,-299 -66,-13 -357,-13 -420,0 -115,23 -172,39 -202,54 -18,10 -37,17 -43,17 -24,0 -171,81 -255,141 -50,35 -146,121 -215,192 -69,70 -133,127 -142,127 -19,0 -153,-63 -177,-83 -9,-7 -54,-35 -101,-62 -47,-26 -110,-64 -140,-85 -30,-20 -97,-61 -148,-91 -51,-30 -107,-62 -124,-72 -18,-10 -57,-38 -87,-61 -70,-53 -252,-168 -446,-281 -82,-49 -158,-95 -168,-104 -16,-16 -14,-21 34,-106 165,-289 544,-666 867,-860 9,-6 35,-22 58,-37 36,-23 267,-138 349,-173 108,-47 160,-67 240,-93 150,-48 201,-62 228,-62 14,0 64,-9 109,-19 197,-46 302,-56 573,-56 197,1 281,5 345,17 47,9 110,19 141,22 31,3 75,13 99,21 23,8 56,15 72,15 17,0 51,7 77,15 25,8 80,24 121,36 41,12 125,41 185,66 61,25 124,50 140,56 17,7 89,42 160,78 113,58 177,98 395,246 82,56 273,232 403,371 127,136 237,271 237,291 0,12 -208,179 -425,342 -186,140 -1121,843 -1720,1294 -264,199 -589,444 -723,546 -134,101 -274,208 -312,237 -39,29 -70,58 -70,66 0,21 107,115 203,179 95,64 237,133 295,143 20,4 49,12 63,20 96,48 519,48 619,-1 14,-7 41,-16 60,-20 65,-13 262,-118 360,-191 99,-74 250,-230 372,-384 34,-44 70,-80 80,-80 9,0 39,15 67,33 28,17 70,44 94,58 23,15 121,76 217,136 96,60 254,156 350,213 96,56 272,160 390,230 118,70 230,135 248,144 41,21 41,45 -3,116 -18,30 -46,75 -61,100 -64,106 -252,348 -352,454 -106,112 -169,171 -293,274 -197,164 -310,235 -594,376 -215,106 -519,205 -735,240 -137,22 -574,51 -610,41 z"
 | 
				
			||||||
 | 
					   />
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					       d="m 29095,12736 c -421,-44 -744,-157 -975,-342 -259,-207 -396,-446 -465,-809 -16,-84 -23,-301 -14,-425 36,-518 257,-859 694,-1070 166,-80 284,-116 716,-215 449,-103 514,-121 646,-186 218,-107 308,-253 306,-494 -2,-303 -188,-477 -588,-551 -140,-26 -640,-27 -825,-1 -275,38 -486,94 -776,203 -94,35 -174,64 -178,64 -3,0 -6,-175 -6,-389 v -388 l 88,-41 c 404,-187 905,-282 1486,-282 675,0 1154,150 1465,459 196,194 311,434 362,756 20,121 17,476 -5,600 -89,517 -358,800 -945,994 -130,43 -241,71 -616,156 -137,31 -299,73 -360,92 -331,106 -455,246 -455,511 1,249 127,412 387,501 272,92 801,76 1269,-39 116,-28 326,-96 432,-138 l 52,-22 -2,406 -3,406 -66,28 c -154,66 -413,140 -604,174 -279,49 -756,69 -1020,42 z"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					       d="m 9630,12676 c 0,-2 403,-996 896,-2208 493,-1211 898,-2211 901,-2220 6,-21 -135,-386 -193,-499 -104,-202 -256,-324 -471,-380 -118,-30 -340,-43 -516,-29 -84,6 -185,17 -225,24 -40,7 -75,10 -77,7 -3,-2 -5,-163 -5,-357 v -353 l 63,-30 c 194,-93 493,-138 801,-120 414,23 683,115 937,319 174,140 357,402 474,680 26,62 1945,5159 1945,5167 0,2 -232,2 -516,1 l -517,-3 -556,-1550 c -485,-1350 -560,-1550 -578,-1553 -18,-3 -26,11 -62,105 -23,59 -295,758 -605,1553 l -562,1445 -567,3 c -312,1 -567,0 -567,-2 z"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					       d="m 15690,10867 c 0,-1970 -1,-1936 56,-2153 128,-497 461,-787 1014,-885 147,-26 440,-36 605,-20 413,40 834,200 1181,447 35,25 73,44 88,44 14,0 26,-1 26,-3 0,-2 20,-94 45,-205 25,-111 45,-204 45,-207 0,-3 209,-5 465,-5 h 465 v 2400 2400 h -535 -535 l -2,-1866 -3,-1866 -115,-50 c -425,-185 -743,-252 -1088,-227 -302,21 -472,109 -562,293 -79,161 -74,11 -77,1969 l -3,1747 h -535 -535 z"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					       d="m 24785,12668 c -3,-7 -4,-1086 -3,-2398 l 3,-2385 538,-3 537,-2 v 2400 2400 h -535 c -419,0 -537,-3 -540,-12 z"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					       d="m 21660,8275 v -545 h 565 565 v 545 545 h -565 -565 z"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					  </g>
 | 
				
			||||||
 | 
					    </Svg>
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										32
									
								
								icons/title.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								icons/title.svg
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					<svg
 | 
				
			||||||
 | 
					   viewBox="0 0 2821.6379 794.29016"
 | 
				
			||||||
 | 
					   preserveAspectRatio="xMidYMid"
 | 
				
			||||||
 | 
					   xmlns:svg="http://www.w3.org/2000/svg">
 | 
				
			||||||
 | 
					  <g
 | 
				
			||||||
 | 
					     transform="matrix(0.1,0,0,-0.1,-282.80153,1445)"
 | 
				
			||||||
 | 
					     fill="#000000"
 | 
				
			||||||
 | 
					     stroke="none"
 | 
				
			||||||
 | 
					     >
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					       d="m 24787,14443 c -4,-3 -7,-224 -7,-490 v -483 h 545 545 v 490 490 h -538 c -296,0 -542,-3 -545,-7 z"
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					       d="m 5190,13285 c -8,-3 -96,-12 -195,-20 -199,-16 -296,-32 -430,-70 -49,-14 -115,-32 -145,-40 -153,-39 -504,-198 -662,-301 -21,-13 -57,-36 -80,-51 -24,-16 -72,-50 -109,-78 -241,-182 -377,-315 -528,-517 -119,-158 -120,-160 -106,-188 23,-45 140,-140 560,-457 110,-84 319,-242 465,-353 146,-110 369,-279 495,-375 791,-600 723,-549 1049,-799 269,-207 398,-307 524,-403 l 114,-86 -49,-49 c -128,-131 -378,-258 -588,-299 -66,-13 -357,-13 -420,0 -115,23 -172,39 -202,54 -18,10 -37,17 -43,17 -24,0 -171,81 -255,141 -50,35 -146,121 -215,192 -69,70 -133,127 -142,127 -19,0 -153,-63 -177,-83 -9,-7 -54,-35 -101,-62 -47,-26 -110,-64 -140,-85 -30,-20 -97,-61 -148,-91 -51,-30 -107,-62 -124,-72 -18,-10 -57,-38 -87,-61 -70,-53 -252,-168 -446,-281 -82,-49 -158,-95 -168,-104 -16,-16 -14,-21 34,-106 165,-289 544,-666 867,-860 9,-6 35,-22 58,-37 36,-23 267,-138 349,-173 108,-47 160,-67 240,-93 150,-48 201,-62 228,-62 14,0 64,-9 109,-19 197,-46 302,-56 573,-56 197,1 281,5 345,17 47,9 110,19 141,22 31,3 75,13 99,21 23,8 56,15 72,15 17,0 51,7 77,15 25,8 80,24 121,36 41,12 125,41 185,66 61,25 124,50 140,56 17,7 89,42 160,78 113,58 177,98 395,246 82,56 273,232 403,371 127,136 237,271 237,291 0,12 -208,179 -425,342 -186,140 -1121,843 -1720,1294 -264,199 -589,444 -723,546 -134,101 -274,208 -312,237 -39,29 -70,58 -70,66 0,21 107,115 203,179 95,64 237,133 295,143 20,4 49,12 63,20 96,48 519,48 619,-1 14,-7 41,-16 60,-20 65,-13 262,-118 360,-191 99,-74 250,-230 372,-384 34,-44 70,-80 80,-80 9,0 39,15 67,33 28,17 70,44 94,58 23,15 121,76 217,136 96,60 254,156 350,213 96,56 272,160 390,230 118,70 230,135 248,144 41,21 41,45 -3,116 -18,30 -46,75 -61,100 -64,106 -252,348 -352,454 -106,112 -169,171 -293,274 -197,164 -310,235 -594,376 -215,106 -519,205 -735,240 -137,22 -574,51 -610,41 z"
 | 
				
			||||||
 | 
					   />
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					       d="m 29095,12736 c -421,-44 -744,-157 -975,-342 -259,-207 -396,-446 -465,-809 -16,-84 -23,-301 -14,-425 36,-518 257,-859 694,-1070 166,-80 284,-116 716,-215 449,-103 514,-121 646,-186 218,-107 308,-253 306,-494 -2,-303 -188,-477 -588,-551 -140,-26 -640,-27 -825,-1 -275,38 -486,94 -776,203 -94,35 -174,64 -178,64 -3,0 -6,-175 -6,-389 v -388 l 88,-41 c 404,-187 905,-282 1486,-282 675,0 1154,150 1465,459 196,194 311,434 362,756 20,121 17,476 -5,600 -89,517 -358,800 -945,994 -130,43 -241,71 -616,156 -137,31 -299,73 -360,92 -331,106 -455,246 -455,511 1,249 127,412 387,501 272,92 801,76 1269,-39 116,-28 326,-96 432,-138 l 52,-22 -2,406 -3,406 -66,28 c -154,66 -413,140 -604,174 -279,49 -756,69 -1020,42 z"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					       d="m 9630,12676 c 0,-2 403,-996 896,-2208 493,-1211 898,-2211 901,-2220 6,-21 -135,-386 -193,-499 -104,-202 -256,-324 -471,-380 -118,-30 -340,-43 -516,-29 -84,6 -185,17 -225,24 -40,7 -75,10 -77,7 -3,-2 -5,-163 -5,-357 v -353 l 63,-30 c 194,-93 493,-138 801,-120 414,23 683,115 937,319 174,140 357,402 474,680 26,62 1945,5159 1945,5167 0,2 -232,2 -516,1 l -517,-3 -556,-1550 c -485,-1350 -560,-1550 -578,-1553 -18,-3 -26,11 -62,105 -23,59 -295,758 -605,1553 l -562,1445 -567,3 c -312,1 -567,0 -567,-2 z"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					       d="m 15690,10867 c 0,-1970 -1,-1936 56,-2153 128,-497 461,-787 1014,-885 147,-26 440,-36 605,-20 413,40 834,200 1181,447 35,25 73,44 88,44 14,0 26,-1 26,-3 0,-2 20,-94 45,-205 25,-111 45,-204 45,-207 0,-3 209,-5 465,-5 h 465 v 2400 2400 h -535 -535 l -2,-1866 -3,-1866 -115,-50 c -425,-185 -743,-252 -1088,-227 -302,21 -472,109 -562,293 -79,161 -74,11 -77,1969 l -3,1747 h -535 -535 z"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					       d="m 24785,12668 c -3,-7 -4,-1086 -3,-2398 l 3,-2385 538,-3 537,-2 v 2400 2400 h -535 c -419,0 -537,-3 -540,-12 z"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					       d="m 21660,8275 v -545 h 565 565 v 545 545 h -565 -565 z"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					  </g>
 | 
				
			||||||
 | 
					</svg>
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 4.0 KiB  | 
							
								
								
									
										0
									
								
								repos/.keep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								repos/.keep
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								repos/atproto
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								repos/atproto
									
									
									
									
									
										Submodule
									
								
							 Submodule repos/atproto added at 8f2b80a0dc
									
								
							
							
								
								
									
										1
									
								
								repos/bluesky-selfhost-env
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								repos/bluesky-selfhost-env
									
									
									
									
									
										Submodule
									
								
							 Submodule repos/bluesky-selfhost-env added at 3e384e3b58
									
								
							
							
								
								
									
										1
									
								
								repos/cookbook
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								repos/cookbook
									
									
									
									
									
										Submodule
									
								
							 Submodule repos/cookbook added at 03739f5268
									
								
							
							
								
								
									
										1
									
								
								repos/did-method-plc
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								repos/did-method-plc
									
									
									
									
									
										Submodule
									
								
							 Submodule repos/did-method-plc added at 13da315787
									
								
							
							
								
								
									
										1
									
								
								repos/feed-generator
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								repos/feed-generator
									
									
									
									
									
										Submodule
									
								
							 Submodule repos/feed-generator added at 9a887dd8f2
									
								
							
							
								
								
									
										1
									
								
								repos/social-app
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								repos/social-app
									
									
									
									
									
										Submodule
									
								
							 Submodule repos/social-app added at f6649e22a7
									
								
							
		Reference in New Issue
	
	Block a user