Marcus Allison — Portfolio (Static site) Quick deploy instructions for an nginx host (Debian/Ubuntu): 1. Copy files to the web root on the server: sudo mkdir -p /var/www/html sudo cp -r . /var/www/html/ sudo chown -R www-data:www-data /var/www/html 2. Configure nginx with your own server block and enable it: sudo cp /path/to/your/site.conf /etc/nginx/sites-available/website-but-better sudo ln -sf /etc/nginx/sites-available/website-but-better /etc/nginx/sites-enabled/ 3. Test nginx config and reload: sudo nginx -t sudo systemctl reload nginx 4. (Optional) Provision HTTPS with Certbot (Let's Encrypt): sudo apt update && sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d yourdomain.example.com -d www.yourdomain.example.com 5. Docker alternative (serve static site with nginx container): docker run --rm -p 80:80 -v "$(pwd):/usr/share/nginx/html:ro" nginx:stable Customize: - Replace `yourdomain.example.com` with your real domain. - Update contact email in `index.html`. - The homepage uses `the server.jpg` as a small lab snapshot; formal photography should live in `images/`. Photography gallery: - To regenerate `images/manifest.json` after adding or removing photos, run: ```bash py -3 scripts/generate_manifest.py ``` - Alternatively, enable Nginx directory listing for `/images/` so the site can probe the directory. Example server block fragment for `/images/` only: ``` location /images/ { alias /var/www/html/images/; autoindex on; } ``` Blog support: - Add plain text files to the `blog/` directory. Supported extensions are `.txt` and `.text`. - Each file should start with a date/time line, then a title line, then the body. - To attach a file, place it in `blog/files/` and reference it in the post with `[[file: filename.ext]]` or `[[attachment: filename.ext]]`. - Run `py -3 scripts/generate_blog_manifest.py` from the project root to refresh `blog/manifest.json` after adding or removing posts. Git sync: - Run the sync script from anywhere by invoking the repo script path, for example `./scripts/sync_site.sh` from the repo root or `/path/to/website-but-better/scripts/sync_site.sh` from another directory. - The script uses its own location to find the repo root, so it does not need to be started from the web root. - The default remote is `https://git.organic-server.org/organic-CPU/website-but-better.git` and the default branch is `main`. - By default it deploys to `/var/www/html`. - Override with `GIT_REPO_URL`, `GIT_BRANCH`, or `DEPLOY_DIR` if needed. Automatic sync every 12 hours: - Copy `scripts/sync_site.service` and `scripts/sync_site.timer` to `/etc/systemd/system/`. - Update `sync_site.service` to point at the actual repository path on your server. - Then enable and start the timer: ```bash sudo systemctl daemon-reload sudo systemctl enable --now sync_site.timer ``` This makes the website sync twice per day and deploy the latest files to the nginx root. Editing the Git link: - Update the header Git link in `index.html` at the element with id `git-link` to your repository URL. If you want, I can also: - Add a Docker Compose service for a static site + automatic certs. - Produce a small resume/JSON-LD metadata file for SEO.