From bcce805c5809db7a747e36b483a8cf770f7fda92 Mon Sep 17 00:00:00 2001 From: teidesu Date: Tue, 28 May 2024 13:10:22 +0300 Subject: [PATCH] feat(koi): bluesky pds --- hosts/koi/configuration.nix | 1 + hosts/koi/containers/pds/default.nix | 39 ++++++++++++++++++ hosts/koi/containers/pds/docker-compose.yaml | 31 ++++++++++++++ .../assets/.well-known/assetlinks.json | 9 ++++ hosts/koi/services/landing/assets/lol.jpg | Bin 0 -> 24710 bytes .../koi/services/landing/assets/manifest.json | 8 ++++ lib/containers.nix | 27 ++++++++---- secrets/bluesky-pds-secrets.age | 5 +++ 8 files changed, 113 insertions(+), 7 deletions(-) create mode 100644 hosts/koi/containers/pds/default.nix create mode 100644 hosts/koi/containers/pds/docker-compose.yaml create mode 100644 hosts/koi/services/landing/assets/.well-known/assetlinks.json create mode 100644 hosts/koi/services/landing/assets/lol.jpg create mode 100644 hosts/koi/services/landing/assets/manifest.json create mode 100644 secrets/bluesky-pds-secrets.age diff --git a/hosts/koi/configuration.nix b/hosts/koi/configuration.nix index 1461b55..694fd0b 100755 --- a/hosts/koi/configuration.nix +++ b/hosts/koi/configuration.nix @@ -21,6 +21,7 @@ ./containers/torrent.nix ./containers/puffer.nix ./containers/sharkey + ./containers/pds ./vms/hass.nix # ./vms/windows.nix ]; diff --git a/hosts/koi/containers/pds/default.nix b/hosts/koi/containers/pds/default.nix new file mode 100644 index 0000000..bfdaaa2 --- /dev/null +++ b/hosts/koi/containers/pds/default.nix @@ -0,0 +1,39 @@ +{ abs, config, pkgs, ... }@inputs: + + +let + secrets = import (abs "lib/secrets.nix"); +in { + imports = [ + (secrets.declare [ + "bluesky-pds-secrets" + ]) + ((import (abs "lib/containers.nix") inputs).mkDockerComposeContainer { + directory = ./.; + envFiles = [ + # PDS_JWT_SECRET, PDS_ADMIN_PASSWORD, PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX, PDS_EMAIL_SMTP_URL + (secrets.file config "bluesky-pds-secrets") + ]; + }) + ]; + + systemd.tmpfiles.rules = [ + "d /mnt/puffer/bluesky-pds 0777 root root -" + "d /srv/bluesky-pds/data 0777 root root -" + ]; + + services.nginx.virtualHosts."pds.stupid.fish" = { + forceSSL = true; + useACMEHost = "stupid.fish"; + http2 = true; + + extraConfig = '' + client_max_body_size 250M; + ''; + + locations."/" = { + proxyPass = "http://pds.pds.docker:3000/"; + proxyWebsockets = true; + }; + }; +} diff --git a/hosts/koi/containers/pds/docker-compose.yaml b/hosts/koi/containers/pds/docker-compose.yaml new file mode 100644 index 0000000..d23dd37 --- /dev/null +++ b/hosts/koi/containers/pds/docker-compose.yaml @@ -0,0 +1,31 @@ +version: "3" + +services: + pds: + image: ghcr.io/bluesky-social/pds:sha-5cd5289d470ab6e8ab3fe5b1c1698ed26dbeb4b4 + restart: unless-stopped + environment: + - PDS_HOSTNAME=pds.stupid.fish + - PDS_DATA_DIRECTORY=/pds + - PDS_BLOBSTORE_DISK_LOCATION=/blobstore + - PDS_DID_PLC_URL=https://plc.directory + - PDS_BSKY_APP_VIEW_URL=https://api.bsky.app + - PDS_BSKY_APP_VIEW_DID=did:web:api.bsky.app + - PDS_REPORT_SERVICE_URL=https://mod.bsky.app + - PDS_REPORT_SERVICE_DID=did:plc:ar7c4by46qjdydhdevvrndac + - PDS_CRAWLERS=https://bsky.network + - LOG_ENABLED=true + - PDS_EMAIL_FROM_ADDRESS=alina@tei.su + - PDS_INVITE_REQUIRED=true + # forward secret variables + - PDS_JWT_SECRET=$PDS_JWT_SECRET + - PDS_ADMIN_PASSWORD=$PDS_ADMIN_PASSWORD + - PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=$PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX + - PDS_EMAIL_SMTP_URL=$PDS_EMAIL_SMTP_URL + volumes: + - type: bind + source: /srv/bluesky-pds/data + target: /pds + - type: bind + source: /mnt/puffer/bluesky-pds + target: /blobstore diff --git a/hosts/koi/services/landing/assets/.well-known/assetlinks.json b/hosts/koi/services/landing/assets/.well-known/assetlinks.json new file mode 100644 index 0000000..bc38d93 --- /dev/null +++ b/hosts/koi/services/landing/assets/.well-known/assetlinks.json @@ -0,0 +1,9 @@ +[{ + "relation": ["delegate_permission/common.handle_all_urls"], + "target": { + "namespace": "android_app", + "package_name": "fish.stupid.twa", + "sha256_cert_fingerprints": + ["6B:39:DC:A2:51:76:4C:57:BF:6F:A0:CD:47:D9:F8:23:49:1B:25:E5:DE:5B:BE:7D:BB:CD:F5:A7:91:4A:AA:DD"] + } + }] \ No newline at end of file diff --git a/hosts/koi/services/landing/assets/lol.jpg b/hosts/koi/services/landing/assets/lol.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce8882741cd67ce3c4446ef8f91506fb0265ff51 GIT binary patch literal 24710 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 z ssh-ed25519 sj88Xw PLt6rtLAJNLP3FnCB2zaOxiHk7kQqKeyjNQTr07Vohw +OrZCrZ6W8aYOQvHPNRWypZRufnmdzS0Slu9fAdq5Mf8 +--- 5LwMDjPXQJH0JYAhmjCnNtpd+R/mMIU4n7Tvyin2eNg +V y|\=ga8{%<ҾH+KF@%H1%"3GSא 3QnK~ޅSL=n%$c_uS|MC85IW@j+foCDXC\K6X+So-4tClF=W4yQ#ֶ q]`0R0l醖[ZPLΔ)[/[Ip7/>l' 9v>ҷa s'%AEi:SNJC&)ϴ^(.]cXc \ No newline at end of file