Initial commit

This commit is contained in:
hantim
2026-04-09 17:40:51 -04:00
commit 3c10a8c6e4
6 changed files with 114 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
name: Build and Push Docker Image
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Login to Gitea Registry
env:
REGISTRY_TOKEN: ${{ secrets.CI_REGISTRY_TOKEN }}
run: echo "$REGISTRY_TOKEN" | docker login git.timothykim.net -u timothykim --password-stdin
- name: Build and Push
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: git.timothykim.net/hantim/carolpreschool.com:latest
- name: Deploy
env:
DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
DEPLOY_HOST: ${{ vars.DEPLOY_HOST }}
run: |
mkdir -p ~/.ssh
echo "$DEPLOY_SSH_KEY" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
ssh -o StrictHostKeyChecking=accept-new -i ~/.ssh/deploy_key deploy@"$DEPLOY_HOST" deploy-carolpreschool.com
+2
View File
@@ -0,0 +1,2 @@
*.swp
static/media/
+12
View File
@@ -0,0 +1,12 @@
FROM nginx:alpine
# Remove default content
RUN rm -rf /usr/share/nginx/html/*
# static site
COPY static /usr/share/nginx/html
# a custom nginx config
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
+40
View File
@@ -0,0 +1,40 @@
# ${REPO_NAME}
Static site hosted on the hantim platform.
## How it works
Put your HTML, CSS, and JS in `static/`. Push to `main` and the site deploys automatically.
### Dockerfile
Copies `static/` into an `nginx:alpine` container and applies `nginx.conf`. The container serves on port 80 — the platform's reverse proxy handles HTTPS and domain routing.
### nginx.conf
Per-container HTTP config. Serves files from `static/` with clean URLs and aggressive caching for static assets. Edit this to add custom routing, headers, or rewrites.
### Media files
Large files (images, videos, etc.) are stored in Garage (S3-compatible object storage), not in this repo.
Upload with the AWS CLI:
```
aws --endpoint-url https://s3.hantim.net s3 cp photo.jpg s3://${REPO_NAME}/photo.jpg
aws --endpoint-url https://s3.hantim.net s3 sync static/media/ s3://${REPO_NAME}/
```
Media is served at `https://www.${REPO_NAME}/media/`. Reference it in your HTML:
```html
<img src="/media/photo.jpg">
```
## Deploy flow
Push to `main` triggers `.gitea/workflows/build.yml`:
1. Build Docker image from this repo
2. Push to Gitea container registry
3. SSH to server and restart the container
+16
View File
@@ -0,0 +1,16 @@
server {
listen 80;
root /usr/share/nginx/html;
index index.html;
# Clean URLs — serve index.html for directories
location / {
try_files $uri $uri/ =404;
}
# Cache static assets aggressively
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
+7
View File
@@ -0,0 +1,7 @@
<!DOCTYPE html>
<html>
<head><title>carolpreschool.com</title></head>
<body>
<h1>carolpreschool.com</h1>
</body>
</html>