Fixes duplicate placeholder cover image on the 3 newest blog posts, broken aspect-ratio classes on the albums listing page, and a non-responsive fixed sidebar on the chat page.
172 lines
4.7 KiB
Markdown
172 lines
4.7 KiB
Markdown
# HydroLord Website Automation Scripts
|
|
|
|
This directory contains automation scripts for the HydroLord Hugo website.
|
|
|
|
## Scripts
|
|
|
|
### `generate_blog_post.py`
|
|
|
|
Generates a new blog post using Ollama's AI model and adds it to the Hugo blog.
|
|
|
|
**Configuration:**
|
|
- **Ollama Endpoint:** `http://10.30.20.110:11434`
|
|
- **Model:** `drjones-posts-to-much`
|
|
- **Output Directory:** `/root/hydro-sterile/content/blog/`
|
|
- **Schedule:** Runs automatically every 3 days via systemd timer
|
|
- **Randomization:** Each run uses a randomly varied prompt to ensure unique content
|
|
|
|
**Features:**
|
|
- Automatically finds the next available post number
|
|
- Generates title and summary from content
|
|
- Creates proper Hugo frontmatter
|
|
- Fails quietly if Ollama endpoint is unavailable (will retry in 3 days)
|
|
|
|
**Usage:**
|
|
```bash
|
|
python3 generate_blog_post.py
|
|
```
|
|
|
|
**Error Handling:**
|
|
If the Ollama endpoint is down, the script exits gracefully with code 0 (no error) to prevent systemd from logging failures. It will automatically retry in 3 days when the timer runs again.
|
|
|
|
### `start_hugo_server.sh`
|
|
|
|
Starts the Hugo development server for the website.
|
|
|
|
**Configuration:**
|
|
- **Port:** 1313 (configurable via `HUGO_PORT` env var)
|
|
- **Bind Address:** 0.0.0.0 (all interfaces, configurable via `HUGO_BIND` env var)
|
|
- **Base URL:** Read from `hugo.yaml`
|
|
|
|
**Usage:**
|
|
```bash
|
|
./start_hugo_server.sh
|
|
```
|
|
|
|
## Systemd Services
|
|
|
|
### Hugo Website Service
|
|
|
|
**Service:** `hugo-hydrolord.service`
|
|
|
|
Starts the Hugo server at boot and keeps it running.
|
|
|
|
**Commands:**
|
|
```bash
|
|
# Enable service to start at boot
|
|
sudo systemctl enable hugo-hydrolord.service
|
|
|
|
# Start service now
|
|
sudo systemctl start hugo-hydrolord.service
|
|
|
|
# Check status
|
|
sudo systemctl status hugo-hydrolord.service
|
|
|
|
# View logs
|
|
sudo journalctl -u hugo-hydrolord.service -f
|
|
```
|
|
|
|
### Blog Post Generator
|
|
|
|
**Service:** `hugo-blog-generator.service`
|
|
**Timer:** `hugo-blog-generator.timer`
|
|
|
|
Automatically generates blog posts every 3 days.
|
|
|
|
**Commands:**
|
|
```bash
|
|
# Enable timer
|
|
sudo systemctl enable hugo-blog-generator.timer
|
|
|
|
# Start timer
|
|
sudo systemctl start hugo-blog-generator.timer
|
|
|
|
# Check timer status
|
|
sudo systemctl status hugo-blog-generator.timer
|
|
|
|
# List all timers
|
|
systemctl list-timers hugo-blog-generator.timer
|
|
|
|
# Run generator manually (for testing)
|
|
sudo systemctl start hugo-blog-generator.service
|
|
|
|
# View logs
|
|
sudo journalctl -u hugo-blog-generator.service -f
|
|
```
|
|
|
|
## Installation
|
|
|
|
1. **Install Python dependencies:**
|
|
```bash
|
|
pip3 install ollama
|
|
```
|
|
|
|
2. **Make scripts executable:**
|
|
```bash
|
|
chmod +x /root/hydro-sterile/scripts/*.py
|
|
chmod +x /root/hydro-sterile/scripts/*.sh
|
|
```
|
|
|
|
3. **Enable and start Hugo service:**
|
|
```bash
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable hugo-hydrolord.service
|
|
sudo systemctl start hugo-hydrolord.service
|
|
```
|
|
|
|
4. **Enable and start blog generator timer:**
|
|
```bash
|
|
sudo systemctl enable hugo-blog-generator.timer
|
|
sudo systemctl start hugo-blog-generator.timer
|
|
```
|
|
|
|
5. **Verify everything is running:**
|
|
```bash
|
|
sudo systemctl status hugo-hydrolord.service
|
|
sudo systemctl status hugo-blog-generator.timer
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Hugo Server Not Starting
|
|
|
|
- Check if port 1313 is already in use: `sudo lsof -i :1313`
|
|
- Check logs: `sudo journalctl -u hugo-hydrolord.service -n 50`
|
|
- Verify Hugo is installed: `which hugo` or check `node_modules/.bin/hugo`
|
|
|
|
### Blog Generator Not Running
|
|
|
|
- Check if Ollama endpoint is accessible: `curl http://10.30.20.110:11434/api/tags`
|
|
- Check timer status: `systemctl list-timers hugo-blog-generator.timer`
|
|
- View logs: `sudo journalctl -u hugo-blog-generator.service -n 50`
|
|
- Test script manually: `python3 /root/hydro-sterile/scripts/generate_blog_post.py`
|
|
|
|
### Ollama Endpoint Down
|
|
|
|
The script is designed to fail quietly if Ollama is unavailable. It will exit with code 0 (success) and retry automatically in 3 days. No action needed.
|
|
|
|
## Configuration Changes
|
|
|
|
To change the Ollama endpoint or model, edit `/root/hydro-sterile/scripts/generate_blog_post.py` and modify the constants at the top:
|
|
|
|
```python
|
|
OLLAMA_HOST = "http://10.30.20.110:11434"
|
|
MODEL = "drjones-posts-to-much"
|
|
```
|
|
|
|
**Note:** The script now includes random prompt variations to ensure each blog post is unique. The model generates titles with credentials, which the script automatically extracts and separates from the article content.
|
|
|
|
After making changes, restart the timer:
|
|
```bash
|
|
sudo systemctl restart hugo-blog-generator.timer
|
|
```
|
|
|
|
## Files Location
|
|
|
|
- **Scripts:** `/root/hydro-sterile/scripts/`
|
|
- **Systemd Services:** `/etc/systemd/system/hugo-*.service`
|
|
- **Systemd Timers:** `/etc/systemd/system/hugo-*.timer`
|
|
- **Blog Posts:** `/root/hydro-sterile/content/blog/`
|
|
- **Logs:** `journalctl -u hugo-hydrolord.service` or `journalctl -u hugo-blog-generator.service`
|
|
|