BYOK Personal Data Server (PDS) written in Go
ipfs vow atproto pds go
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 127 lines 3.6 kB view raw
1services: 2 init-keys: 3 build: 4 context: . 5 dockerfile: Dockerfile 6 container_name: vow-init-keys 7 volumes: 8 - ./keys:/keys 9 - ./data:/data/vow 10 - ./init-keys.sh:/init-keys.sh:ro 11 environment: 12 VOW_DID: ${VOW_DID} 13 VOW_HOSTNAME: ${VOW_HOSTNAME} 14 VOW_ROTATION_KEY_PATH: /keys/rotation.key 15 VOW_JWK_PATH: /keys/jwk.key 16 VOW_CONTACT_EMAIL: ${VOW_CONTACT_EMAIL} 17 VOW_RELAYS: ${VOW_RELAYS:-https://bsky.network} 18 VOW_ADMIN_PASSWORD: ${VOW_ADMIN_PASSWORD} 19 entrypoint: ["/bin/sh", "/init-keys.sh"] 20 restart: "no" 21 22 ipfs: 23 image: ipfs/kubo:latest 24 container_name: vow-ipfs 25 volumes: 26 - /opt/ipfs:/data/ipfs 27 environment: 28 # Disable local network discovery. 29 IPFS_PROFILE: server 30 ports: 31 # P2P 32 - 4001:4001 33 - 4001:4001/udp 34 # Expose the IPFS gateway to the reverse proxy only. 35 - 127.0.0.1:8080:8080 36 # Keep the RPC API internal. 37 - 127.0.0.1:5001:5001 38 restart: unless-stopped 39 healthcheck: 40 test: ["CMD", "ipfs", "id"] 41 interval: 30s 42 timeout: 10s 43 retries: 5 44 start_period: 15s 45 46 vow: 47 build: 48 context: . 49 dockerfile: Dockerfile 50 container_name: vow-pds 51 depends_on: 52 init-keys: 53 condition: service_completed_successfully 54 ipfs: 55 condition: service_healthy 56 ports: 57 - "127.0.0.1:8080:8080" 58 volumes: 59 - ./data:/data/vow 60 - ./keys:/keys:ro 61 environment: 62 # Required 63 VOW_DID: ${VOW_DID} 64 VOW_HOSTNAME: ${VOW_HOSTNAME} 65 VOW_ROTATION_KEY_PATH: /keys/rotation.key 66 VOW_JWK_PATH: /keys/jwk.key 67 VOW_CONTACT_EMAIL: ${VOW_CONTACT_EMAIL} 68 VOW_RELAYS: ${VOW_RELAYS:-https://bsky.network} 69 VOW_ADMIN_PASSWORD: ${VOW_ADMIN_PASSWORD} 70 VOW_SESSION_SECRET: ${VOW_SESSION_SECRET} 71 72 # Server 73 VOW_ADDR: ":8080" 74 VOW_DB_NAME: ${VOW_DB_NAME:-/data/vow/vow.db} 75 76 # SMTP (optional) 77 VOW_SMTP_USER: ${VOW_SMTP_USER:-} 78 VOW_SMTP_PASS: ${VOW_SMTP_PASS:-} 79 VOW_SMTP_HOST: ${VOW_SMTP_HOST:-} 80 VOW_SMTP_PORT: ${VOW_SMTP_PORT:-} 81 VOW_SMTP_EMAIL: ${VOW_SMTP_EMAIL:-} 82 VOW_SMTP_NAME: ${VOW_SMTP_NAME:-} 83 84 # IPFS 85 # Use the internal ipfs service for the RPC API. 86 VOW_IPFS_NODE_URL: ${VOW_IPFS_NODE_URL:-http://ipfs:5001} 87 # Optional public gateway for sync.getBlob redirects. 88 VOW_IPFS_GATEWAY_URL: ${VOW_IPFS_GATEWAY_URL:-} 89 # Optional fallback for proxied ATProto requests. 90 # Format: did#service-id, for example did:plc:xxx#atproto_labeler 91 VOW_FALLBACK_PROXY: ${VOW_FALLBACK_PROXY:-} 92 restart: unless-stopped 93 healthcheck: 94 test: ["CMD", "curl", "-f", "http://localhost:8080/xrpc/_health"] 95 interval: 30s 96 timeout: 10s 97 retries: 3 98 start_period: 40s 99 100 create-invite: 101 build: 102 context: . 103 dockerfile: Dockerfile 104 container_name: vow-create-invite 105 network_mode: "service:vow" 106 volumes: 107 - ./keys:/keys 108 - ./data:/data/vow 109 - ./create-initial-invite.sh:/create-initial-invite.sh:ro 110 environment: 111 VOW_DID: ${VOW_DID} 112 VOW_HOSTNAME: ${VOW_HOSTNAME} 113 VOW_ROTATION_KEY_PATH: /keys/rotation.key 114 VOW_JWK_PATH: /keys/jwk.key 115 VOW_CONTACT_EMAIL: ${VOW_CONTACT_EMAIL} 116 VOW_RELAYS: ${VOW_RELAYS:-https://bsky.network} 117 VOW_ADMIN_PASSWORD: ${VOW_ADMIN_PASSWORD} 118 VOW_DB_NAME: ${VOW_DB_NAME:-/data/vow/vow.db} 119 depends_on: 120 vow: 121 condition: service_healthy 122 entrypoint: ["/bin/sh", "/create-initial-invite.sh"] 123 restart: "no" 124 125volumes: 126 ipfs_data: 127 driver: local