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

- +
+

Professional Summary

-

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. +

+
+

Infrastructure & Orchestration

Docker, LXC, Nginx Proxy Manager, DDNS

+

Network & Security

WireGuard, Pi-hole, OpenWrt, Vaultwarden

+

Cloud & Storage

Immich, Synology DSM, Zipline

+

Communication & Collaboration

Matrix Synapse, Gitea

+

AI & Automation

Ollama, Open WebUI, Home Assistant (HAOS)

+

Web & Data

SearXNG, Kiwix, Trilium, Homarr

+

Photography & Media

-

Photo-Gallery and Photography

+

+ + Photo-Gallery and Photography + +

+

Monitoring & Time

NTP server, UISP (UniFi OS Server)

+
+

Key Infrastructure Projects

+
    -
  1. 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.
  2. -
  3. Centralized Access and Security: Implemented Nginx Proxy Manager for SSL termination and reverse proxying, with WireGuard for secure admin access.
  4. -
  5. Local AI Integration: Deployed Ollama and Open WebUI to create a private, offline AI playground.
  6. -
  7. Resilient and Automated Network: Combined Pi-hole, OpenWrt, and DDNS to provide a stable, secure network on a dynamic IP. +
  8. + 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. +
  9. + +
  10. + Centralized Access and Security: + Implemented Nginx Proxy Manager for SSL termination and reverse + proxying, with WireGuard for secure admin access. +
  11. + +
  12. + Local AI Integration: + Deployed Ollama and Open WebUI to create a private, offline AI + playground. +
  13. + +
  14. + Resilient and Automated Network: + Combined Pi-hole, OpenWrt, and DDNS to provide a stable, secure + network on a dynamic IP. +
  15. + +
  16. + Data Ownership and Management: + Immich for photos, Vaultwarden for passwords, Gitea for code, and + Synology DSM for centralized storage.
  17. -
  18. 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.

- - - -
+

The Server

This is the server running it all

- Server photo + + Server photo
+

Contact

-

If you'd like to discuss a role, contract, or collaboration, please reach out via email: marcus.sailer@organic-server.org.

+ +

+ If you'd like to discuss a role, contract, or collaboration, please + reach out via email: + + marcus.sailer@organic-server.org + . +

+
+ - + \ No newline at end of file diff --git a/photography.html b/photography.html new file mode 100644 index 0000000..73de2ec --- /dev/null +++ b/photography.html @@ -0,0 +1,84 @@ + + + + + + Marcus Sailer - Photography + + + + + + + + +
+ +
+ +

Gallery

+ +

+ A selection from my photography. Click a thumbnail for a fullscreen + preview. The gallery updates when images are added or a manifest is + regenerated. +

+ + + + + + + +
+ +
+ + + + + + + + + \ No newline at end of file