my own indieAuth provider! indiko.dunkirk.sh/docs
indieauth oauth2-server
6
fork

Configure Feed

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

feat: add GitHub Actions deployment workflow

Deploys to terebithia via Tailscale SSH on push to main.

💘 Generated with Crush

Assisted-by: Claude Sonnet 4.5 via Crush <crush@charm.land>

dunkirk.sh 278c6df3 c7614646

verified
+66
+66
.github/workflows/deploy.yaml
··· 1 + name: Deploy Indiko 2 + 3 + on: 4 + push: 5 + branches: 6 + - main 7 + workflow_dispatch: 8 + 9 + jobs: 10 + deploy: 11 + runs-on: ubuntu-latest 12 + steps: 13 + - uses: actions/checkout@v3 14 + 15 + - name: Setup Tailscale 16 + uses: tailscale/github-action@v3 17 + with: 18 + oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }} 19 + oauth-secret: ${{ secrets.TS_OAUTH_SECRET }} 20 + tags: tag:ci 21 + use-cache: "true" 22 + 23 + - name: Configure SSH 24 + run: | 25 + mkdir -p ~/.ssh 26 + echo "StrictHostKeyChecking no" >> ~/.ssh/config 27 + 28 + - name: Deploy to server 29 + run: | 30 + ssh indiko@terebithia << 'EOF' 31 + cd /var/lib/indiko/app 32 + git fetch --all 33 + git reset --hard origin/main 34 + bun install 35 + sudo /run/current-system/sw/bin/systemctl restart indiko.service 36 + EOF 37 + 38 + - name: Wait for service to start 39 + run: sleep 10 40 + 41 + - name: Health check 42 + run: | 43 + HEALTH_URL="https://indiko.dunkirk.sh/" 44 + MAX_RETRIES=6 45 + RETRY_DELAY=5 46 + 47 + for i in $(seq 1 $MAX_RETRIES); do 48 + echo "Health check attempt $i/$MAX_RETRIES..." 49 + 50 + HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$HEALTH_URL" || echo "000") 51 + 52 + if [ "$HTTP_CODE" = "200" ]; then 53 + echo "✅ Service is healthy (HTTP $HTTP_CODE)" 54 + exit 0 55 + fi 56 + 57 + echo "❌ Health check failed with HTTP $HTTP_CODE" 58 + 59 + if [ $i -lt $MAX_RETRIES ]; then 60 + echo "Retrying in ${RETRY_DELAY}s..." 61 + sleep $RETRY_DELAY 62 + fi 63 + done 64 + 65 + echo "❌ Health check failed after $MAX_RETRIES attempts" 66 + exit 1