diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..955c22e
--- /dev/null
+++ b/LICENSE
@@ -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.
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index ef9391a..0000000
--- a/README.md
+++ /dev/null
@@ -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.
diff --git a/images/DSC_0036.jpg b/images/DSC_0036.jpg
new file mode 100644
index 0000000..6fa7cce
Binary files /dev/null and b/images/DSC_0036.jpg differ
diff --git a/images/DSC_0042.jpg b/images/DSC_0042.jpg
new file mode 100644
index 0000000..714128e
Binary files /dev/null and b/images/DSC_0042.jpg differ
diff --git a/images/DSC_0045.jpg b/images/DSC_0045.jpg
new file mode 100644
index 0000000..70a4500
Binary files /dev/null and b/images/DSC_0045.jpg differ
diff --git a/images/DSC_0048.jpg b/images/DSC_0048.jpg
new file mode 100644
index 0000000..e0bfc9c
Binary files /dev/null and b/images/DSC_0048.jpg differ
diff --git a/images/DSC_0054.jpg b/images/DSC_0054.jpg
new file mode 100644
index 0000000..cfa491d
Binary files /dev/null and b/images/DSC_0054.jpg differ
diff --git a/images/DSC_0068.jpg b/images/DSC_0068.jpg
new file mode 100644
index 0000000..8711806
Binary files /dev/null and b/images/DSC_0068.jpg differ
diff --git a/images/DSC_0081.jpg b/images/DSC_0081.jpg
new file mode 100644
index 0000000..d3ad17e
Binary files /dev/null and b/images/DSC_0081.jpg differ
diff --git a/images/DSC_0087.jpg b/images/DSC_0087.jpg
new file mode 100644
index 0000000..a8420d4
Binary files /dev/null and b/images/DSC_0087.jpg differ
diff --git a/images/DSC_0089.jpg b/images/DSC_0089.jpg
new file mode 100644
index 0000000..7fb2fcb
Binary files /dev/null and b/images/DSC_0089.jpg differ
diff --git a/images/DSC_0177.jpg b/images/DSC_0177.jpg
new file mode 100644
index 0000000..1ec9d0c
Binary files /dev/null and b/images/DSC_0177.jpg differ
diff --git a/images/DSC_0257.jpg b/images/DSC_0257.jpg
new file mode 100644
index 0000000..715c4e8
Binary files /dev/null and b/images/DSC_0257.jpg differ
diff --git a/images/DSC_0278.jpg b/images/DSC_0278.jpg
new file mode 100644
index 0000000..9b135de
Binary files /dev/null and b/images/DSC_0278.jpg differ
diff --git a/images/DSC_0297.jpg b/images/DSC_0297.jpg
new file mode 100644
index 0000000..d915850
Binary files /dev/null and b/images/DSC_0297.jpg differ
diff --git a/images/DSC_0335.jpg b/images/DSC_0335.jpg
new file mode 100644
index 0000000..22ee528
Binary files /dev/null and b/images/DSC_0335.jpg differ
diff --git a/images/DSC_0368.jpg b/images/DSC_0368.jpg
new file mode 100644
index 0000000..332cc90
Binary files /dev/null and b/images/DSC_0368.jpg differ
diff --git a/images/DSC_0378.jpg b/images/DSC_0378.jpg
new file mode 100644
index 0000000..f910fb6
Binary files /dev/null and b/images/DSC_0378.jpg differ
diff --git a/images/DSC_0387.jpg b/images/DSC_0387.jpg
new file mode 100644
index 0000000..8281b5d
Binary files /dev/null and b/images/DSC_0387.jpg differ
diff --git a/images/DSC_0389.jpg b/images/DSC_0389.jpg
new file mode 100644
index 0000000..a6bb8ea
Binary files /dev/null and b/images/DSC_0389.jpg differ
diff --git a/images/DSC_0402.jpg b/images/DSC_0402.jpg
new file mode 100644
index 0000000..f0e5cf8
Binary files /dev/null and b/images/DSC_0402.jpg differ
diff --git a/images/DSC_0404.jpg b/images/DSC_0404.jpg
new file mode 100644
index 0000000..153d177
Binary files /dev/null and b/images/DSC_0404.jpg differ
diff --git a/images/DSC_0430.jpg b/images/DSC_0430.jpg
new file mode 100644
index 0000000..4674f0d
Binary files /dev/null and b/images/DSC_0430.jpg differ
diff --git a/images/DSC_0439.jpg b/images/DSC_0439.jpg
new file mode 100644
index 0000000..4d97581
Binary files /dev/null and b/images/DSC_0439.jpg differ
diff --git a/images/DSC_0446.jpg b/images/DSC_0446.jpg
new file mode 100644
index 0000000..b604510
Binary files /dev/null and b/images/DSC_0446.jpg differ
diff --git a/images/DSC_0450.jpg b/images/DSC_0450.jpg
new file mode 100644
index 0000000..c55d7bf
Binary files /dev/null and b/images/DSC_0450.jpg differ
diff --git a/images/DSC_0499.jpg b/images/DSC_0499.jpg
new file mode 100644
index 0000000..e857d3d
Binary files /dev/null and b/images/DSC_0499.jpg differ
diff --git a/images/IMG_1023.HEIC b/images/IMG_1023.HEIC
new file mode 100644
index 0000000..3eadc7a
Binary files /dev/null and b/images/IMG_1023.HEIC differ
diff --git a/images/IMG_1024.HEIC b/images/IMG_1024.HEIC
new file mode 100644
index 0000000..e7b0ed4
Binary files /dev/null and b/images/IMG_1024.HEIC differ
diff --git a/images/IMG_1025.HEIC b/images/IMG_1025.HEIC
new file mode 100644
index 0000000..d104140
Binary files /dev/null and b/images/IMG_1025.HEIC differ
diff --git a/images/IMG_1026.HEIC b/images/IMG_1026.HEIC
new file mode 100644
index 0000000..c4dfdd9
Binary files /dev/null and b/images/IMG_1026.HEIC differ
diff --git a/images/IMG_1027.HEIC b/images/IMG_1027.HEIC
new file mode 100644
index 0000000..b60b7f5
Binary files /dev/null and b/images/IMG_1027.HEIC differ
diff --git a/images/IMG_1028.HEIC b/images/IMG_1028.HEIC
new file mode 100644
index 0000000..8684f27
Binary files /dev/null and b/images/IMG_1028.HEIC differ
diff --git a/images/IMG_1029.HEIC b/images/IMG_1029.HEIC
new file mode 100644
index 0000000..1da7f9d
Binary files /dev/null and b/images/IMG_1029.HEIC differ
diff --git a/images/IMG_1030.HEIC b/images/IMG_1030.HEIC
new file mode 100644
index 0000000..7555d2d
Binary files /dev/null and b/images/IMG_1030.HEIC differ
diff --git a/images/IMG_1031.HEIC b/images/IMG_1031.HEIC
new file mode 100644
index 0000000..881cc54
Binary files /dev/null and b/images/IMG_1031.HEIC differ
diff --git a/images/IMG_1032.HEIC b/images/IMG_1032.HEIC
new file mode 100644
index 0000000..025f747
Binary files /dev/null and b/images/IMG_1032.HEIC differ
diff --git a/images/IMG_1035.HEIC b/images/IMG_1035.HEIC
new file mode 100644
index 0000000..c3818cd
Binary files /dev/null and b/images/IMG_1035.HEIC differ
diff --git a/images/_DSC0590.jpg b/images/_DSC0590.jpg
new file mode 100644
index 0000000..89f453f
Binary files /dev/null and b/images/_DSC0590.jpg differ
diff --git a/images/_DSC0601.jpg b/images/_DSC0601.jpg
new file mode 100644
index 0000000..f26a01f
Binary files /dev/null and b/images/_DSC0601.jpg differ
diff --git a/images/_DSC0624.jpg b/images/_DSC0624.jpg
new file mode 100644
index 0000000..f11fd1a
Binary files /dev/null and b/images/_DSC0624.jpg differ
diff --git a/images/_DSC0665.jpg b/images/_DSC0665.jpg
new file mode 100644
index 0000000..c52291f
Binary files /dev/null and b/images/_DSC0665.jpg differ
diff --git a/images/_DSC0669.jpg b/images/_DSC0669.jpg
new file mode 100644
index 0000000..644317d
Binary files /dev/null and b/images/_DSC0669.jpg differ
diff --git a/images/_DSC0671.jpg b/images/_DSC0671.jpg
new file mode 100644
index 0000000..5154a0d
Binary files /dev/null and b/images/_DSC0671.jpg differ
diff --git a/images/_DSC0677.jpg b/images/_DSC0677.jpg
new file mode 100644
index 0000000..2164df9
Binary files /dev/null and b/images/_DSC0677.jpg differ
diff --git a/images/_DSC0678.jpg b/images/_DSC0678.jpg
new file mode 100644
index 0000000..be6d2b6
Binary files /dev/null and b/images/_DSC0678.jpg differ
diff --git a/images/_DSC0683.jpg b/images/_DSC0683.jpg
new file mode 100644
index 0000000..ca90781
Binary files /dev/null and b/images/_DSC0683.jpg differ
diff --git a/images/_DSC0697.jpg b/images/_DSC0697.jpg
new file mode 100644
index 0000000..52cfde6
Binary files /dev/null and b/images/_DSC0697.jpg differ
diff --git a/images/_DSC0701.jpg b/images/_DSC0701.jpg
new file mode 100644
index 0000000..39d10b8
Binary files /dev/null and b/images/_DSC0701.jpg differ
diff --git a/images/_DSC0732.jpg b/images/_DSC0732.jpg
new file mode 100644
index 0000000..ce51a77
Binary files /dev/null and b/images/_DSC0732.jpg differ
diff --git a/images/_DSC0762.jpg b/images/_DSC0762.jpg
new file mode 100644
index 0000000..95541f1
Binary files /dev/null and b/images/_DSC0762.jpg differ
diff --git a/images/_DSC0779.jpg b/images/_DSC0779.jpg
new file mode 100644
index 0000000..3014437
Binary files /dev/null and b/images/_DSC0779.jpg differ
diff --git a/images/_DSC0782.jpg b/images/_DSC0782.jpg
new file mode 100644
index 0000000..2e0fcd1
Binary files /dev/null and b/images/_DSC0782.jpg differ
diff --git a/images/_DSC0784.jpg b/images/_DSC0784.jpg
new file mode 100644
index 0000000..1d93709
Binary files /dev/null and b/images/_DSC0784.jpg differ
diff --git a/images/_DSC0817.jpg b/images/_DSC0817.jpg
new file mode 100644
index 0000000..046d341
Binary files /dev/null and b/images/_DSC0817.jpg differ
diff --git a/images/_DSC0823.jpg b/images/_DSC0823.jpg
new file mode 100644
index 0000000..c6c304b
Binary files /dev/null and b/images/_DSC0823.jpg differ
diff --git a/images/_DSC0837.jpg b/images/_DSC0837.jpg
new file mode 100644
index 0000000..5268e6b
Binary files /dev/null and b/images/_DSC0837.jpg differ
diff --git a/images/_DSC0841.jpg b/images/_DSC0841.jpg
new file mode 100644
index 0000000..71d01c2
Binary files /dev/null and b/images/_DSC0841.jpg differ
diff --git a/images/_DSC0846.jpg b/images/_DSC0846.jpg
new file mode 100644
index 0000000..2890496
Binary files /dev/null and b/images/_DSC0846.jpg differ
diff --git a/images/_DSC0850.jpg b/images/_DSC0850.jpg
new file mode 100644
index 0000000..ccbdc7b
Binary files /dev/null and b/images/_DSC0850.jpg differ
diff --git a/images/_DSC0854.jpg b/images/_DSC0854.jpg
new file mode 100644
index 0000000..b73845d
Binary files /dev/null and b/images/_DSC0854.jpg differ
diff --git a/images/_DSC0861.jpg b/images/_DSC0861.jpg
new file mode 100644
index 0000000..4ca8f6f
Binary files /dev/null and b/images/_DSC0861.jpg differ
diff --git a/images/_DSC0866.jpg b/images/_DSC0866.jpg
new file mode 100644
index 0000000..841ec18
Binary files /dev/null and b/images/_DSC0866.jpg differ
diff --git a/images/_DSC1007.jpg b/images/_DSC1007.jpg
new file mode 100644
index 0000000..352d700
Binary files /dev/null and b/images/_DSC1007.jpg differ
diff --git a/images/_DSC1009.jpg b/images/_DSC1009.jpg
new file mode 100644
index 0000000..a6019e5
Binary files /dev/null and b/images/_DSC1009.jpg differ
diff --git a/images/_DSC1016.jpg b/images/_DSC1016.jpg
new file mode 100644
index 0000000..63e5253
Binary files /dev/null and b/images/_DSC1016.jpg differ
diff --git a/images/_DSC1021.jpg b/images/_DSC1021.jpg
new file mode 100644
index 0000000..0575ae0
Binary files /dev/null and b/images/_DSC1021.jpg differ
diff --git a/images/_DSC1030.jpg b/images/_DSC1030.jpg
new file mode 100644
index 0000000..b44990a
Binary files /dev/null and b/images/_DSC1030.jpg differ
diff --git a/images/_DSC1037.jpg b/images/_DSC1037.jpg
new file mode 100644
index 0000000..c225ed6
Binary files /dev/null and b/images/_DSC1037.jpg differ
diff --git a/images/_DSC1042.jpg b/images/_DSC1042.jpg
new file mode 100644
index 0000000..c2ef915
Binary files /dev/null and b/images/_DSC1042.jpg differ
diff --git a/images/_DSC1049.jpg b/images/_DSC1049.jpg
new file mode 100644
index 0000000..83a8e4b
Binary files /dev/null and b/images/_DSC1049.jpg differ
diff --git a/images/_DSC1052.jpg b/images/_DSC1052.jpg
new file mode 100644
index 0000000..840f556
Binary files /dev/null and b/images/_DSC1052.jpg differ
diff --git a/images/_DSC1098.jpg b/images/_DSC1098.jpg
new file mode 100644
index 0000000..3d1641d
Binary files /dev/null and b/images/_DSC1098.jpg differ
diff --git a/images/_DSC1102.jpg b/images/_DSC1102.jpg
new file mode 100644
index 0000000..11f92d3
Binary files /dev/null and b/images/_DSC1102.jpg differ
diff --git a/images/_DSC1150.jpg b/images/_DSC1150.jpg
new file mode 100644
index 0000000..639d0f2
Binary files /dev/null and b/images/_DSC1150.jpg differ
diff --git a/images/_DSC1164.jpg b/images/_DSC1164.jpg
new file mode 100644
index 0000000..9b6e86c
Binary files /dev/null and b/images/_DSC1164.jpg differ
diff --git a/images/_DSC1282.jpg b/images/_DSC1282.jpg
new file mode 100644
index 0000000..b680c14
Binary files /dev/null and b/images/_DSC1282.jpg differ
diff --git a/images/_DSC1315.jpg b/images/_DSC1315.jpg
new file mode 100644
index 0000000..d2739af
Binary files /dev/null and b/images/_DSC1315.jpg differ
diff --git a/images/_DSC1341.jpg b/images/_DSC1341.jpg
new file mode 100644
index 0000000..0ac0bae
Binary files /dev/null and b/images/_DSC1341.jpg differ
diff --git a/images/_DSC1396.jpg b/images/_DSC1396.jpg
new file mode 100644
index 0000000..7576873
Binary files /dev/null and b/images/_DSC1396.jpg differ
diff --git a/images/_DSC1464.jpg b/images/_DSC1464.jpg
new file mode 100644
index 0000000..a741695
Binary files /dev/null and b/images/_DSC1464.jpg differ
diff --git a/images/_DSC1468.jpg b/images/_DSC1468.jpg
new file mode 100644
index 0000000..a6bf3d8
Binary files /dev/null and b/images/_DSC1468.jpg differ
diff --git a/images/_DSC1471.jpg b/images/_DSC1471.jpg
new file mode 100644
index 0000000..8c3f44c
Binary files /dev/null and b/images/_DSC1471.jpg differ
diff --git a/images/_DSC1487.jpg b/images/_DSC1487.jpg
new file mode 100644
index 0000000..c0139d0
Binary files /dev/null and b/images/_DSC1487.jpg differ
diff --git a/images/_DSC1495.jpg b/images/_DSC1495.jpg
new file mode 100644
index 0000000..86e3c83
Binary files /dev/null and b/images/_DSC1495.jpg differ
diff --git a/images/_DSC1498.jpg b/images/_DSC1498.jpg
new file mode 100644
index 0000000..1728f03
Binary files /dev/null and b/images/_DSC1498.jpg differ
diff --git a/images/_DSC1516.jpg b/images/_DSC1516.jpg
new file mode 100644
index 0000000..c5ee014
Binary files /dev/null and b/images/_DSC1516.jpg differ
diff --git a/images/_DSC1527.jpg b/images/_DSC1527.jpg
new file mode 100644
index 0000000..5a77e25
Binary files /dev/null and b/images/_DSC1527.jpg differ
diff --git a/images/_DSC1539.jpg b/images/_DSC1539.jpg
new file mode 100644
index 0000000..ff3f6be
Binary files /dev/null and b/images/_DSC1539.jpg differ
diff --git a/images/_DSC1542.jpg b/images/_DSC1542.jpg
new file mode 100644
index 0000000..c213264
Binary files /dev/null and b/images/_DSC1542.jpg differ
diff --git a/images/_DSC1543.jpg b/images/_DSC1543.jpg
new file mode 100644
index 0000000..d948013
Binary files /dev/null and b/images/_DSC1543.jpg differ
diff --git a/images/_DSC1550.jpg b/images/_DSC1550.jpg
new file mode 100644
index 0000000..b1bea5c
Binary files /dev/null and b/images/_DSC1550.jpg differ
diff --git a/images/_DSC1559.jpg b/images/_DSC1559.jpg
new file mode 100644
index 0000000..9adf1a0
Binary files /dev/null and b/images/_DSC1559.jpg differ
diff --git a/images/_DSC4322.jpg b/images/_DSC4322.jpg
new file mode 100644
index 0000000..f2ae0de
Binary files /dev/null and b/images/_DSC4322.jpg differ
diff --git a/images/_DSC4332.jpg b/images/_DSC4332.jpg
new file mode 100644
index 0000000..7805da9
Binary files /dev/null and b/images/_DSC4332.jpg differ
diff --git a/images/_DSC4343.jpg b/images/_DSC4343.jpg
new file mode 100644
index 0000000..715fb22
Binary files /dev/null and b/images/_DSC4343.jpg differ
diff --git a/images/_DSC4373.jpg b/images/_DSC4373.jpg
new file mode 100644
index 0000000..96e9064
Binary files /dev/null and b/images/_DSC4373.jpg differ
diff --git a/images/_DSC4408.jpg b/images/_DSC4408.jpg
new file mode 100644
index 0000000..8389d93
Binary files /dev/null and b/images/_DSC4408.jpg differ
diff --git a/images/_DSC4416.jpg b/images/_DSC4416.jpg
new file mode 100644
index 0000000..9d1b101
Binary files /dev/null and b/images/_DSC4416.jpg differ
diff --git a/images/_DSC4447.jpg b/images/_DSC4447.jpg
new file mode 100644
index 0000000..adf9ba8
Binary files /dev/null and b/images/_DSC4447.jpg differ
diff --git a/images/_DSC4478.jpg b/images/_DSC4478.jpg
new file mode 100644
index 0000000..5faf2c3
Binary files /dev/null and b/images/_DSC4478.jpg differ
diff --git a/images/_DSC4522.jpg b/images/_DSC4522.jpg
new file mode 100644
index 0000000..e89a1f8
Binary files /dev/null and b/images/_DSC4522.jpg differ
diff --git a/images/_DSC4523.jpg b/images/_DSC4523.jpg
new file mode 100644
index 0000000..9ff8528
Binary files /dev/null and b/images/_DSC4523.jpg differ
diff --git a/images/_DSC4532.jpg b/images/_DSC4532.jpg
new file mode 100644
index 0000000..67b3e1f
Binary files /dev/null and b/images/_DSC4532.jpg differ
diff --git a/images/_DSC4537.jpg b/images/_DSC4537.jpg
new file mode 100644
index 0000000..dcc29c2
Binary files /dev/null and b/images/_DSC4537.jpg differ
diff --git a/images/_DSC4558.jpg b/images/_DSC4558.jpg
new file mode 100644
index 0000000..7fe0123
Binary files /dev/null and b/images/_DSC4558.jpg differ
diff --git a/images/_DSC4561.jpg b/images/_DSC4561.jpg
new file mode 100644
index 0000000..51990f8
Binary files /dev/null and b/images/_DSC4561.jpg differ
diff --git a/images/_DSC4565.jpg b/images/_DSC4565.jpg
new file mode 100644
index 0000000..26ccde0
Binary files /dev/null and b/images/_DSC4565.jpg differ
diff --git a/images/_DSC4640.jpg b/images/_DSC4640.jpg
new file mode 100644
index 0000000..b8e552a
Binary files /dev/null and b/images/_DSC4640.jpg differ
diff --git a/images/_DSC4670.jpg b/images/_DSC4670.jpg
new file mode 100644
index 0000000..ba28774
Binary files /dev/null and b/images/_DSC4670.jpg differ
diff --git a/images/_DSC4686.jpg b/images/_DSC4686.jpg
new file mode 100644
index 0000000..2a25e3e
Binary files /dev/null and b/images/_DSC4686.jpg differ
diff --git a/images/_DSC4689.jpg b/images/_DSC4689.jpg
new file mode 100644
index 0000000..ddae223
Binary files /dev/null and b/images/_DSC4689.jpg differ
diff --git a/images/_DSC4760.jpg b/images/_DSC4760.jpg
new file mode 100644
index 0000000..6c5d68b
Binary files /dev/null and b/images/_DSC4760.jpg differ
diff --git a/images/_DSC4774.jpg b/images/_DSC4774.jpg
new file mode 100644
index 0000000..da20427
Binary files /dev/null and b/images/_DSC4774.jpg differ
diff --git a/images/_DSC4784.jpg b/images/_DSC4784.jpg
new file mode 100644
index 0000000..c5be979
Binary files /dev/null and b/images/_DSC4784.jpg differ
diff --git a/images/_DSC4814.jpg b/images/_DSC4814.jpg
new file mode 100644
index 0000000..1b27599
Binary files /dev/null and b/images/_DSC4814.jpg differ
diff --git a/images/_DSC4824.jpg b/images/_DSC4824.jpg
new file mode 100644
index 0000000..ee06d30
Binary files /dev/null and b/images/_DSC4824.jpg differ
diff --git a/images/_DSC4850.jpg b/images/_DSC4850.jpg
new file mode 100644
index 0000000..e8a6213
Binary files /dev/null and b/images/_DSC4850.jpg differ
diff --git a/images/_DSC4859.jpg b/images/_DSC4859.jpg
new file mode 100644
index 0000000..91859cc
Binary files /dev/null and b/images/_DSC4859.jpg differ
diff --git a/images/_DSC4907.jpg b/images/_DSC4907.jpg
new file mode 100644
index 0000000..0f41757
Binary files /dev/null and b/images/_DSC4907.jpg differ
diff --git a/images/_DSC4927.jpg b/images/_DSC4927.jpg
new file mode 100644
index 0000000..288256a
Binary files /dev/null and b/images/_DSC4927.jpg differ
diff --git a/images/_DSC4930.jpg b/images/_DSC4930.jpg
new file mode 100644
index 0000000..f06206f
Binary files /dev/null and b/images/_DSC4930.jpg differ
diff --git a/images/_DSC4935.jpg b/images/_DSC4935.jpg
new file mode 100644
index 0000000..b06a298
Binary files /dev/null and b/images/_DSC4935.jpg differ
diff --git a/images/_DSC4984.jpg b/images/_DSC4984.jpg
new file mode 100644
index 0000000..b16f6c2
Binary files /dev/null and b/images/_DSC4984.jpg differ
diff --git a/images/_DSC4996.jpg b/images/_DSC4996.jpg
new file mode 100644
index 0000000..994d9a4
Binary files /dev/null and b/images/_DSC4996.jpg differ
diff --git a/images/_DSC5005.jpg b/images/_DSC5005.jpg
new file mode 100644
index 0000000..6ac562b
Binary files /dev/null and b/images/_DSC5005.jpg differ
diff --git a/images/_DSC5014.jpg b/images/_DSC5014.jpg
new file mode 100644
index 0000000..0daa285
Binary files /dev/null and b/images/_DSC5014.jpg differ
diff --git a/images/_DSC5031.jpg b/images/_DSC5031.jpg
new file mode 100644
index 0000000..2823cc4
Binary files /dev/null and b/images/_DSC5031.jpg differ
diff --git a/images/_DSC5037.jpg b/images/_DSC5037.jpg
new file mode 100644
index 0000000..ba01897
Binary files /dev/null and b/images/_DSC5037.jpg differ
diff --git a/images/_DSC5058.jpg b/images/_DSC5058.jpg
new file mode 100644
index 0000000..f954df8
Binary files /dev/null and b/images/_DSC5058.jpg differ
diff --git a/images/_DSC5060.jpg b/images/_DSC5060.jpg
new file mode 100644
index 0000000..2338585
Binary files /dev/null and b/images/_DSC5060.jpg differ
diff --git a/images/_DSC5070.jpg b/images/_DSC5070.jpg
new file mode 100644
index 0000000..2046386
Binary files /dev/null and b/images/_DSC5070.jpg differ
diff --git a/images/_DSC5082.jpg b/images/_DSC5082.jpg
new file mode 100644
index 0000000..c084a18
Binary files /dev/null and b/images/_DSC5082.jpg differ
diff --git a/images/_DSC5088.jpg b/images/_DSC5088.jpg
new file mode 100644
index 0000000..88af394
Binary files /dev/null and b/images/_DSC5088.jpg differ
diff --git a/images/_DSC5096.jpg b/images/_DSC5096.jpg
new file mode 100644
index 0000000..c830bb7
Binary files /dev/null and b/images/_DSC5096.jpg differ
diff --git a/images/_DSC5109.jpg b/images/_DSC5109.jpg
new file mode 100644
index 0000000..5697bce
Binary files /dev/null and b/images/_DSC5109.jpg differ
diff --git a/images/_DSC5112.jpg b/images/_DSC5112.jpg
new file mode 100644
index 0000000..2dc6a31
Binary files /dev/null and b/images/_DSC5112.jpg differ
diff --git a/images/_DSC5220.jpg b/images/_DSC5220.jpg
new file mode 100644
index 0000000..d2b955f
Binary files /dev/null and b/images/_DSC5220.jpg differ
diff --git a/images/manifest.json b/images/manifest.json
deleted file mode 100644
index 8ad657e..0000000
--- a/images/manifest.json
+++ /dev/null
@@ -1,27 +0,0 @@
-[
- "DSC_0083.jpg",
- "DSC_0084.jpg",
- "DSC_0114.jpg",
- "DSC_0122.jpg",
- "DSC_0207.jpg",
- "DSC_0214.jpg",
- "DSC_0224.jpg",
- "DSC_0234.jpg",
- "DSC_0319.jpg",
- "DSC_0337.jpg",
- "DSC_0455.jpg",
- "DSC_0470.jpg",
- "_DSC0582.jpg",
- "_DSC0621.jpg",
- "_DSC0646.jpg",
- "_DSC0649.jpg",
- "_DSC0699.jpg",
- "_DSC0707.jpg",
- "_DSC0833.jpg",
- "_DSC0858.jpg",
- "_DSC1015.jpg",
- "_DSC1028.jpg",
- "_DSC1152.jpg",
- "_DSC1174.jpg",
- "_DSC1330.jpg"
-]
diff --git a/index.html b/index.html
index 22fd81b..aabf544 100644
--- a/index.html
+++ b/index.html
@@ -11,83 +11,127 @@
Marcus Sailer
Systems Administrator · Self-Hosting · Network Security
I am a passionate and dedicated systems administrator and self-hosting enthusiast with a comprehensive, production-grade home lab. My infrastructure demonstrates a deep understanding of containerization, reverse proxy configuration, network security, and the deployment of a wide array of open-source services. I thrive on creating robust, private, and self-sufficient digital ecosystems.
+
+ I am a passionate and dedicated systems administrator and self-hosting
+ enthusiast with a comprehensive, production-grade home lab. My
+ infrastructure demonstrates a deep understanding of containerization,
+ reverse proxy configuration, network security, and the deployment of a
+ wide array of open-source services. I thrive on creating robust,
+ private, and self-sufficient digital ecosystems.
+
Technical Skills/Services
-
My portfolio is a living environment where I actively use and manage the technologies below.
+
+ My portfolio is a living environment where I actively use and manage
+ the technologies below.
+
Secure and Private Self-Hosted Ecosystem: Designed and deployed a comprehensive suite of 20+ services on a single server, replacing numerous third-party cloud services.
-
Centralized Access and Security: Implemented Nginx Proxy Manager for SSL termination and reverse proxying, with WireGuard for secure admin access.
-
Local AI Integration: Deployed Ollama and Open WebUI to create a private, offline AI playground.
-
Resilient and Automated Network: Combined Pi-hole, OpenWrt, and DDNS to provide a stable, secure network on a dynamic IP.
+
+ Secure and Private Self-Hosted Ecosystem:
+ Designed and deployed a comprehensive suite of 20+ services on a
+ single server, replacing numerous third-party cloud services.
+
+
+
+ Centralized Access and Security:
+ Implemented Nginx Proxy Manager for SSL termination and reverse
+ proxying, with WireGuard for secure admin access.
+
+
+
+ Local AI Integration:
+ Deployed Ollama and Open WebUI to create a private, offline AI
+ playground.
+
+
+
+ Resilient and Automated Network:
+ Combined Pi-hole, OpenWrt, and DDNS to provide a stable, secure
+ network on a dynamic IP.
+
+
+
+ Data Ownership and Management:
+ Immich for photos, Vaultwarden for passwords, Gitea for code, and
+ Synology DSM for centralized storage.
-
Data Ownership and Management: Immich for photos, Vaultwarden for passwords, Gitea for code, and Synology DSM for centralized storage.
-
-
Photography
-
A selection from my photography. Click a thumbnail for a fullscreen preview. The gallery updates when images are added or a manifest is regenerated.