Compare commits

...

2 commits

Author SHA1 Message Date
5c2597498d
vault backup: 2025-01-17 20:23:34 2025-01-17 20:23:34 -05:00
6633d7a2eb
vault backup: 2025-01-17 20:18:34 2025-01-17 20:18:34 -05:00
2 changed files with 32 additions and 46 deletions

View file

@ -10,46 +10,32 @@ date: 2025-01-16
docker pull code.modernleft.org/gravityfargo/quartz-docker:v4.4.0
```
This project runs **Quartz 4**, a fast, batteries-included static site generator, inside a **Docker container**. It transforms Markdown content into a fully functional website.
This project runs **Quartz 4.4.0**, a fast, batteries-included static site generator, inside a **Docker container**. It transforms Markdown content into a fully functional website.
While Quartz provides [Docker support](https://quartz.jzhao.xyz/features/Docker-Support), it is not as self contained as this project.
I explored several alternative approaches for configuration within this container, but none met my criteria for simplicity—specifically, avoiding the need to mount the entire site source and instead only requiring a dedicated `content` and `config` directory.
## 🚀 Features
- **Easy Configuration** Customize settings using a json file
- **Automated Site Updates** Configurable cron job to fetch and rebuild content
## 🐳 Docker Compose Setup
### Prepare Data Directories
Create a data directory and pull your existing content
Create a data directory
```bash
# create directories
mkdir -p /srv/quartz/config
cd /srv/quartz
# clone your content
git clone https://code.modernleft.org/gravityfargo/modernleft-docs.git content
mkdir -p /srv/quartz
```
### Compose File
Create a `docker-compose.yml` file:
![[docker-compose]]
### First Run
**First Run**
```bash
docker-compose up -d
docker stop quartz-wiki
```
On first run, the container will download the necessary dependencies and build the site.
In `/srv/quartz/config/config.json`, you need to change the `baseUrl` to your domain.
On first run, the container will download the necessary dependencies, build the site, and download the content repository.
You will also need to
## ⚙️ Configuration
@ -62,10 +48,12 @@ To keep the image small, `node_modules` are not included. When the container is
This is the command run by cron
```bash
cd /usr/share/nginx/html/content && \
git pull >/dev/null 2>&1 && \
cd /usr/share/nginx/html && \
npx quartz build >/dev/null 2>&1
cd /quartz/content
git restore .
git pull
cd /quartz/src &
npx quartz build
echo 'Content Updated.'
```
Setting `ENABLE_CRON` to `true` and defining `BUILD_SCHEDULE` performs these actions.
@ -75,22 +63,18 @@ Example:
```yaml
environment:
ENABLE_CRON: true
ENABLE_CRON: "true"
BUILD_SCHEDULE: "*/1 * * * *" # Runs every minute
```
### Environment Variables
See a list of all environment variables [here](#environment-variables).
| Variable | Description | Default Value |
| -------------------- | ----------------------------------------------------- | ----------------------------- |
| `NGINX_PORT` | Port for the Nginx server | `80` |
| `SERVER_NAME` | NGINX server name | `quartz.zhao.xyz` |
| `ENABLE_CRON` | Enables scheduled builds (`true` or `false`) | `false` |
| `BUILD_SCHEDULE` | Cron expression for scheduling site builds | `"*/10 * * * *"` every 10 min |
| `QUARTZ_CONFIG_PATH` | Path to the Quartz configuration file | `/config/quartz.json` |
| `USER_ID` | UID that` /content` and` /config` will be chown'd to. | `1000` |
| `GROUP_ID` | GID that` /content` and` /config` will be chown'd to. | `1000` |
You shouldn't need to change `QUARTZ_CONFIG_PATH`
| Variable | Description | Default Value |
| ---------------- | ----------------------------------------------------- | ----------------------------- |
| `USER_ID` | UID that` /content` and` /config` will be chown'd to. | `1000` |
| `GROUP_ID` | GID that` /content` and` /config` will be chown'd to. | `1000` |
| `NGINX_PORT` | Port for the Nginx server | `80` |
| `SERVER_NAME` | NGINX server name | `quartz.zhao.xyz` |
| `ENABLE_CRON` | Enables scheduled builds (`true` or `false`) | `false` |
| `BUILD_SCHEDULE` | Cron expression for scheduling site builds | `"*/10 * * * *"` every 10 min |
| `CONTENT_REPO` | URL of the content repository | |

View file

@ -1,15 +1,17 @@
```yaml
services:
quartz-wiki:
container_name: quartz-wiki
hostname: quartz-wiki
image: code.modernleft.org/gravityfargo/quartz-docker:v4.4.0
quartz-docker:
container_name: quartz-docker
image: code.modernleft.org/gravityfargo/quartz-docker:dev
ports:
- 80:80
- 80:80
environment:
USER_ID: 1000
GROUP_ID: 1001
SERVER_NAME: "docs.modernleft.org"
ENABLE_CRON: "true"
BUILD_SCHEDULE: "*/10 * * * *"
BUILD_SCHEDULE: "*/30 * * * *"
CONTENT_REPO: "https://code.modernleft.org/gravityfargo/modernleft-docs.git"
volumes:
- /srv/quartz/content:/quartz
- /srv/quartz:/quartz
```