Add Caddyfile and public hosting support
Some checks failed
Deploy to birb co. production / deploy (push) Failing after 10s

This commit is contained in:
2026-02-25 16:09:55 -08:00
parent 9f3449353b
commit 427e0bf72a
3 changed files with 45 additions and 7 deletions

View File

@@ -1,4 +1,4 @@
name: "Deploy to Homelab"
name: "Deploy to birb co. production"
on:
push:
@@ -23,23 +23,21 @@ jobs:
- name: Remove directory from server
run: |
ssh -i ~/.ssh/id_ed25519 github@${{ vars.HOST }} << 'EOF'
ssh -i ~/.ssh/id_ed25519 ${{ vars.USERNAME }}@${{ vars.HOST }} << 'EOF'
rm -rf ~/homelab-dsa-tutoring
EOF
# Avoid needing to set up SSH access to GitHub for this user
- name: Transfer repository files to server
run: |
scp -i ~/.ssh/id_ed25519 -r ./* github@${{ vars.HOST }}:~/homelab-dsa-tutoring
scp -i ~/.ssh/id_ed25519 -r ./* ${{ vars.USERNAME }}@${{ vars.HOST }}:~/homelab-dsa-tutoring
- name: Deploy on server with Docker
run: |
ssh -i ~/.ssh/id_ed25519 github@${{ vars.HOST }} << 'EOF'
ssh -i ~/.ssh/id_ed25519 ${{ vars.USERNAME }}@${{ vars.HOST }} << 'EOF'
cd ~/homelab-dsa-tutoring
export TS_AUTHKEY=${{ secrets.TS_CONTAINER_AUTHKEY }}
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock
docker compose -f docker-compose.yml down
docker compose -f docker-compose.yml up -d --build
EOF

13
Caddyfile Normal file
View File

@@ -0,0 +1,13 @@
# DSA Tutoring microsite
#
# For local use, serves on port 80.
# Replace :80 with your domain (e.g. dsa-tutoring.example.com) for
# automatic HTTPS via Let's Encrypt.
#
# Run `python build.py` first to generate the public/ directory.
dsa-tutoring.bchen.dev {
root * /srv/public
encode gzip
file_server
}

27
docker-compose.yml Normal file
View File

@@ -0,0 +1,27 @@
services:
builder:
image: python:3-alpine
command: python /app/build.py
volumes:
- .:/app
caddy:
image: caddy:2-alpine
restart: unless-stopped
depends_on:
builder:
condition: service_completed_successfully
ports:
- "80:80"
- "443:443"
- "8080:8080" # test port
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./public:/srv/public:ro
- caddy_data:/data
- caddy_config:/config
volumes:
caddy_data:
caddy_config: