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 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. 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 ## 🐳 Docker Compose Setup
### Prepare Data Directories Create a data directory
Create a data directory and pull your existing content
```bash ```bash
# create directories mkdir -p /srv/quartz
mkdir -p /srv/quartz/config
cd /srv/quartz
# clone your content
git clone https://code.modernleft.org/gravityfargo/modernleft-docs.git content
``` ```
### Compose File
Create a `docker-compose.yml` file: Create a `docker-compose.yml` file:
![[docker-compose]] ![[docker-compose]]
### First Run **First Run**
```bash ```bash
docker-compose up -d docker-compose up -d
docker stop quartz-wiki docker stop quartz-wiki
``` ```
On first run, the container will download the necessary dependencies and build the site. On first run, the container will download the necessary dependencies, build the site, and download the content repository.
You will also need to
In `/srv/quartz/config/config.json`, you need to change the `baseUrl` to your domain.
## ⚙️ Configuration ## ⚙️ 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 This is the command run by cron
```bash ```bash
cd /usr/share/nginx/html/content && \ cd /quartz/content
git pull >/dev/null 2>&1 && \ git restore .
cd /usr/share/nginx/html && \ git pull
npx quartz build >/dev/null 2>&1 cd /quartz/src &
npx quartz build
echo 'Content Updated.'
``` ```
Setting `ENABLE_CRON` to `true` and defining `BUILD_SCHEDULE` performs these actions. Setting `ENABLE_CRON` to `true` and defining `BUILD_SCHEDULE` performs these actions.
@ -75,22 +63,18 @@ Example:
```yaml ```yaml
environment: environment:
ENABLE_CRON: true ENABLE_CRON: "true"
BUILD_SCHEDULE: "*/1 * * * *" # Runs every minute BUILD_SCHEDULE: "*/1 * * * *" # Runs every minute
``` ```
### Environment Variables ### Environment Variables
See a list of all environment variables [here](#environment-variables).
| Variable | Description | Default Value | | 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` | | `NGINX_PORT` | Port for the Nginx server | `80` |
| `SERVER_NAME` | NGINX server name | `quartz.zhao.xyz` | | `SERVER_NAME` | NGINX server name | `quartz.zhao.xyz` |
| `ENABLE_CRON` | Enables scheduled builds (`true` or `false`) | `false` | | `ENABLE_CRON` | Enables scheduled builds (`true` or `false`) | `false` |
| `BUILD_SCHEDULE` | Cron expression for scheduling site builds | `"*/10 * * * *"` every 10 min | | `BUILD_SCHEDULE` | Cron expression for scheduling site builds | `"*/10 * * * *"` every 10 min |
| `QUARTZ_CONFIG_PATH` | Path to the Quartz configuration file | `/config/quartz.json` | | `CONTENT_REPO` | URL of the content repository | |
| `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`

View file

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