Moving photos into it's own page
@@ -0,0 +1,16 @@
|
|||||||
|
# Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
|
||||||
|
Copyright (c) 2026 Marcus Sailer
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
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.
|
|
||||||
|
After Width: | Height: | Size: 2.5 MiB |
|
After Width: | Height: | Size: 3.3 MiB |
|
After Width: | Height: | Size: 4.0 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 991 KiB |
|
After Width: | Height: | Size: 4.3 MiB |
|
After Width: | Height: | Size: 3.9 MiB |
|
After Width: | Height: | Size: 3.4 MiB |
|
After Width: | Height: | Size: 711 KiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 2.2 MiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 2.2 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 6.1 MiB |
|
After Width: | Height: | Size: 6.6 MiB |
|
After Width: | Height: | Size: 4.9 MiB |
|
After Width: | Height: | Size: 8.1 MiB |
|
After Width: | Height: | Size: 5.0 MiB |
|
After Width: | Height: | Size: 4.6 MiB |
|
After Width: | Height: | Size: 7.7 MiB |
|
After Width: | Height: | Size: 7.7 MiB |
|
After Width: | Height: | Size: 7.0 MiB |
|
After Width: | Height: | Size: 5.3 MiB |
|
After Width: | Height: | Size: 5.3 MiB |
|
After Width: | Height: | Size: 4.5 MiB |
|
After Width: | Height: | Size: 6.0 MiB |
|
After Width: | Height: | Size: 6.5 MiB |
|
After Width: | Height: | Size: 5.9 MiB |
|
After Width: | Height: | Size: 7.8 MiB |
|
After Width: | Height: | Size: 4.1 MiB |
|
After Width: | Height: | Size: 5.1 MiB |
|
After Width: | Height: | Size: 2.6 MiB |
|
After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 4.4 MiB |
|
After Width: | Height: | Size: 4.1 MiB |
|
After Width: | Height: | Size: 7.6 MiB |
|
After Width: | Height: | Size: 4.4 MiB |
|
After Width: | Height: | Size: 3.9 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.4 MiB |
|
After Width: | Height: | Size: 3.8 MiB |
|
After Width: | Height: | Size: 2.8 MiB |
|
After Width: | Height: | Size: 2.8 MiB |
|
After Width: | Height: | Size: 3.7 MiB |
|
After Width: | Height: | Size: 2.2 MiB |
|
After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 2.8 MiB |
|
After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 2.5 MiB |
|
After Width: | Height: | Size: 6.9 MiB |
|
After Width: | Height: | Size: 5.9 MiB |
|
After Width: | Height: | Size: 7.8 MiB |
|
After Width: | Height: | Size: 6.2 MiB |
|
After Width: | Height: | Size: 8.8 MiB |
|
After Width: | Height: | Size: 8.3 MiB |
|
After Width: | Height: | Size: 7.5 MiB |