From 6e3540d2720b30b2c77228ab5bd6b1ab6b187455 Mon Sep 17 00:00:00 2001 From: Raphael Bitton Date: Sat, 11 Oct 2025 18:05:42 -0500 Subject: [PATCH] added readme, need to check for typos --- README.md | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..a46ab09 --- /dev/null +++ b/README.md @@ -0,0 +1,112 @@ +# Website + +I decided I hate WordPress, so here is the source for a site that uses Zola. It has a custom Docker image based on Alpine Linux which serves using nginx and has the Zola binary (zola serve sucks). Don't worry, I took WordPress off my resume. + +## Overview + +This is a static site built with [Zola](https://www.getzola.org/), a fast static site generator written in Rust. The site is containerized using Docker with a multi-stage build that compiles the site and serves it through nginx. + +## Tech Stack + +- **Zola** - Static site generator +- **Alpine Linux** - Lightweight container base +- **nginx** - Web server +- **Docker** - Containerization +- **Terminus theme** - Zola theme + +## Project Structure + +``` +. +├── src/ +│ ├── config.toml # Zola configuration +│ ├── content/ # Markdown content files +│ ├── static/ # Static assets +│ ├── templates/ # HTML templates +│ ├── sass/ # Stylesheets +│ └── themes/ # Zola themes +├── Dockerfile # Multi-stage Docker build +├── docker-compose.yml # Container orchestration +├── nginx.conf # nginx server configuration +└── serve.sh # Build and deployment script +``` + +## Setup + +### Prerequisites + +- Docker +- Docker Compose +- Git + +### Quick Start + +Run the build and deployment script: + +```bash +./serve.sh +``` + +Or manually: + +```bash +docker compose build +docker compose up -d +``` + +The site will be available at `http://localhost:1313` + +## Docker Architecture + +The Dockerfile uses a multi-stage build: + +1. **Builder Stage**: Uses Alpine Linux with Zola to build the static site +2. **Production Stage**: Uses nginx:alpine to serve the compiled site + +This approach keeps the final image lightweight by excluding build dependencies. + +## Configuration + +### Port Mapping + +The container exposes port 80 internally, mapped to port 1313 on the host (see `docker-compose.yml:8`). + +### Network + +The container connects to an external Docker network called `cloudflared-net` for integration with Cloudflare tunnels. +If you will not be using Cloudflare Tunnels via Docker please delete the references to it in `docker-compose.yml` before running `./serve.sh` or you will get an error. + +Alternatively, create dummy network by running: + +```bash +docker network create --driver=bridge cloudflared-net +``` + +### Site Configuration + +Edit `src/config.toml` to customize: +- Base URL +- Site title and author +- Menu items +- Theme settings + +## Development + +To make changes: + +1. Edit content in `src/content/` +2. Modify templates in `src/templates/` +3. Update styles in `src/sass/` +4. Rebuild and redeploy: `./serve.sh` + +## Why Not `zola serve`? + +The built-in `zola serve` command is great for development but not ideal for production. This setup uses nginx for: +- Better performance +- Production-grade serving +- Easier integration with reverse proxies +- In my experience `zola serve` can just be overall unreliable. + +## License + +See `LICENCE` file for details.