Compare commits
No commits in common. "main" and "update/remove-extra-cells" have entirely different histories.
main
...
update/rem
2
.github/FUNDING.yml
vendored
|
@ -1,2 +0,0 @@
|
|||
github: twhite96
|
||||
custom: ["https://www.buymeacoffee.com/tifflabs"]
|
72
README.md
|
@ -1,20 +1,13 @@
|
|||
<p align="center">
|
||||
<img width="100%" src="./assets/labs.svg" />
|
||||
<img width="100%" src="./assets/tifflabs.svg" />
|
||||
</p>
|
||||
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub Release" src="https://img.shields.io/github/v/release/twhite96/homelab-config?include_prereleases&style=for-the-badge&logo=github&logoColor=black&labelColor=white&color=%23ff0000">
|
||||
<img alt="Mastodon Follow" src="https://img.shields.io/mastodon/follow/109435346803331556?domain=https%3A%2F%2Ffosstodon.org&style=for-the-badge&logo=mastodon&logoColor=%23ff0000&label=Fosstodon%20Follows&labelColor=white&color=%23ff0000">
|
||||
<img alt="GitHub Sponsors" src="https://img.shields.io/github/sponsors/twhite96?style=for-the-badge&logoColor=%23ff0000&labelColor=white&color=%23ff0000">
|
||||
<img alt="Gitea Issues" src="https://img.shields.io/gitea/issues/open/tifflabs/homelab-config?gitea_url=https%3A%2F%2Fwww.tifflabs-software.org%2F&style=for-the-badge&logo=forgejo&logoColor=%23ff0000&labelColor=white&color=ff0000">
|
||||
</p>
|
||||
|
||||
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
||||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
||||
## Table of Contents
|
||||
|
||||
- [The Purpose of this repo](#the-purpose-of-this-repo)
|
||||
- [Introduction: What is a "home lab"?](#introduction-what-is-a-home-lab)
|
||||
- [Who is a home lab for?](#who-is-a-home-lab-for)
|
||||
- [What hardware should I invest in?](#what-hardware-should-i-invest-in)
|
||||
|
@ -23,13 +16,6 @@
|
|||
|
||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||
|
||||
|
||||
# The Purpose of this repo
|
||||
|
||||
The purpose of this repo, as of today, is to document my homelab and network. From here, the scripts, Dockerfiles, Docker Compose files, and markdown files will be imported into my wiki of choice, [Wiki.js](https://js.wiki/). From there, I will update my [draw.io](https://www.drawio.com/) diagrams to explain which devices are on what subnet and the switches each device is connected to.
|
||||
|
||||
If you would like more information about documenting your homelab/network setup, there are some excellent resources listed at the end of this README.
|
||||
|
||||
# Introduction: What is a "home lab"?
|
||||
|
||||
A home lab is basically an over-engineered home networking setup for uber nerds. You can self-host your blog and airgap your IoT traffic with a VLAN on your UniFi Dream Machine Pro or SE, but it really isn't necessary.
|
||||
|
@ -46,39 +32,46 @@ Start *very, very, small*. I've built up the stuff I have over two and a half ye
|
|||
Maybe grab a server rack, a cheap one will do. A good, solid router is a must if you're going to be doing this. Pick up a decent ethernet switch and a dedicated mini PC and get your hands dirty. All this can be had for under $500.
|
||||
|
||||
You'll find my setup below.
|
||||
|
||||
[☝️ Top](#table-of-contents)
|
||||
|
||||
# These are the tools and settings I am using in my home lab.
|
||||
|
||||
<!--  -->
|
||||
|
||||
| | Device | Image/Where to Buy (Click the Image) |
|
||||
| --- | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
||||
| | | |
|
||||
| | Used NUCs | [![nucs]](https://www.ebay.com/itm/285116201597?var=586979484256) |
|
||||
| | Intel NUC | [![ha-nuc]](https://www.amazon.com/gp/product/B09DCZQFF2/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | UniFi Dream Machine Pro | [![udm-pro]](https://store.ui.com/us/en/pro/category/all-unifi-cloud-gateways/products/udm-pro) |
|
||||
| | UniFi Flex HD AP | [![unifi-flex-hd]](https://www.amazon.com/gp/product/B07YQ87QBF) |
|
||||
| | TP-Link (T1600G-18TS) 16 Port Managed Switch | [![tp-link-T1600G-18TS-switch]](https://www.amazon.com/gp/product/B0797KPRPK/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Echogear Server Rack | [![rack]](https://www.amazon.com/gp/product/B07YYJMCNV/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Generic NUC 1U Rack | [![nuc-rack]](https://www.amazon.com/gp/product/B09BJ5WBHB/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Cyberpower power strip 12 outlets | [![cyberpower-strip-12]](https://www.amazon.com/gp/product/B00077INZU/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Cyberpower power strip 18 outlets | [![cyberpower-strip-18]](https://www.amazon.com/gp/product/B004K1YG1Y/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Synology DS920+ NAS | [![synology-9120]](https://www.amazon.com/gp/product/B087Z34F3R/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Deco X55 Router | [![deco-x55]](https://www.amazon.com/gp/product/B09PRB1MZM/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Navepoint 12U Closet Rack | [![navepoint-12u-closet-rack]](https://www.amazon.com/gp/product/B072BXSTY8/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Beelink NUC | [![beelink-nuc]](https://www.amazon.com/gp/product/B0BVLPCDVW/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | CyberPower LCD UPS System 2U Rack/Tower | [![cyber-power-ups]](https://www.amazon.com/gp/product/B00HDODQYS?th=1) |
|
||||
| | Raspberry Pi 4 B 8gb RAM | [![raspberry-pi-4]](https://www.amazon.com/gp/product/B08R87H4RR/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Beelink S12 Pro Mini PC, Intel 12th Gen Alder Lake- N100 | [![beelink-s12-pro-nucs]](https://www.amazon.com/dp/B0CRKD4YQL?th=1) |
|
||||
| | Device | Image/Where to Buy (Click the Image) |
|
||||
| --- | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
||||
| | | |
|
||||
| | Used NUCs | [![nucs]](https://www.ebay.com/itm/285116201597?var=586979484256) |
|
||||
| | Intel NUC | [![ha-nuc]](https://www.amazon.com/gp/product/B09DCZQFF2/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | UniFi Dream Machine Pro | [![udm-pro]](https://store.ui.com/us/en/pro/category/all-unifi-cloud-gateways/products/udm-pro) |
|
||||
| | UniFi Flex HD AP | [![unifi-flex-hd]](https://www.amazon.com/gp/product/B07YQ87QBF) |
|
||||
| | TP-Link (T1600G-18TS) 16 Port Managed Switch | [![tp-link-T1600G-18TS-switch]](https://www.amazon.com/gp/product/B0797KPRPK/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Echogear Server Rack | [![rack]](https://www.amazon.com/gp/product/B07YYJMCNV/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Generic NUC 1U Rack | [![nuc-rack]](https://www.amazon.com/gp/product/B09BJ5WBHB/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Cyberpower power strip 12 outlets | [![cyberpower-strip-12]](https://www.amazon.com/gp/product/B00077INZU/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Cyberpower power strip 18 outlets | [![cyberpower-strip-18]](https://www.amazon.com/gp/product/B004K1YG1Y/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Synology DS920+ NAS | [![synology-9120]](https://www.amazon.com/gp/product/B087Z34F3R/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Deco X55 Router | [![deco-x55]](https://www.amazon.com/gp/product/B09PRB1MZM/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Navepoint 12U Closet Rack | [![navepoint-12u-closet-rack]](https://www.amazon.com/gp/product/B072BXSTY8/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | Beelink NUC | [![beelink-nuc]](https://www.amazon.com/gp/product/B0BVLPCDVW/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
| | CyberPower LCD UPS System 2U Rack/Tower | [![cyber-power-ups]](https://www.amazon.com/gp/product/B00HDODQYS?th=1) |
|
||||
| | Raspberry Pi 4 B 8gb RAM | [![raspberry-pi-4]](https://www.amazon.com/gp/product/B08R87H4RR/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) |
|
||||
|
||||
[☝️ Top](#table-of-contents)
|
||||
|
||||
## Server software
|
||||
Some of the software running on the servers in my home lab.
|
||||
|
||||
[Software](/software/README.md)
|
||||
<details>
|
||||
<summary>Server Software</summary>
|
||||
<ul>
|
||||
<li><a href="https://www.proxmox.com/en/downloads/category/iso-images-pve/">Proxmox</a></li>
|
||||
<li><a href="https://ubuntu.com/download/server">Ubuntu Server</a></li>
|
||||
<li><a href="https://www.docker.com/">Docker</a></li>
|
||||
<li><a href="https://k3s.io/">k3s</a></li>
|
||||
<li><a href="https://www.home-assistant.io/">Home Assistant</a></li>
|
||||
<li><a href="https://tailscale.com/">Tailscale</a></li>
|
||||
<li><a href="https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/udm-pro/">UniFi OS</a></li>
|
||||
</ul>
|
||||
</details>
|
||||
|
||||
[nucs]: assets/used-nuc.png
|
||||
[ha-nuc]: assets/nuc.png
|
||||
|
@ -93,8 +86,5 @@ Some of the software running on the servers in my home lab.
|
|||
[deco-x55]: assets/deco-x55.png
|
||||
[navepoint-12u-closet-rack]: assets/navepoint-12u.png
|
||||
[raspberry-pi-4]: assets/rpi-4.png
|
||||
[raspberry-pi-3B+]: assets/rpi-3bp.png
|
||||
[raspberry-pi-2]: assets/rpi-2.png
|
||||
[beelink-nuc]: assets/beelink.png
|
||||
[beelink-s12-pro-nucs]: assets/beelink-pros.png
|
||||
[cyber-power-ups]: assets/ups.png
|
|
@ -1,12 +0,0 @@
|
|||
# Ansible Playbooks
|
||||
|
||||
> [!NOTE]
|
||||
> Links to videos and articles about how others have built their home labs, as well as a link to my home lab building series.
|
||||
|
||||
Ansible Playbooks allow us to automate redundant server tasks as code.
|
||||
|
||||
If you're curious about Ansible and how it works, below are some excellent YouTube channels and videos that will give you a better understanding of how to use them.
|
||||
|
||||
- [Automate Everything with Ansible! (Ansible for Beginners)](https://youtu.be/w9eCU4bGgjQ)
|
||||
- [The Fastest Way to run Kubernetes at Home - k3s Ansible Automation - Kubernetes in your HomeLab](https://youtu.be/CbkEWcUZ7zM)
|
||||
- [Ansible 101](https://www.youtube.com/playlist?list=PL2_OBreMn7FqZkvMYt6ATmgC0KAGGJNAN)
|
|
@ -1,21 +0,0 @@
|
|||
- hosts: localhost
|
||||
vars:
|
||||
nfs_version: 3 # to force nfs version to 3.
|
||||
roles:
|
||||
- role: ome.nfs_mount
|
||||
nfs_share_mounts:
|
||||
- path: /mnt/remote
|
||||
location: nfs.example.org:/data
|
||||
# remove a mount from a server
|
||||
- path: /mnt/remote_old
|
||||
location: nfs.example.org:/data1337
|
||||
state: absent
|
||||
- path: /mnt/readonly
|
||||
location: nfs.example.org:/read-only
|
||||
opts: "{{ nfs_mount_opts }},ro"
|
||||
- path: /mnt/ex_passno
|
||||
location: nfs.example.org:/ex_passno
|
||||
passno: 0
|
||||
- path: /mnt/ex_dump
|
||||
location: nfs.example.org:/ex_dump
|
||||
dump: 0
|
Before Width: | Height: | Size: 2.6 MiB |
Before Width: | Height: | Size: 924 KiB |
Before Width: | Height: | Size: 1 MiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 6.1 MiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 685 KiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 918 KiB |
616
assets/labs.svg
|
@ -1,616 +0,0 @@
|
|||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="100%" viewBox="0 0 1611 899" enable-background="new 0 0 1611 899" xml:space="preserve">
|
||||
<path fill="#FF0000" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1086.000000,900.000000
|
||||
C724.000000,900.000000 362.500000,900.000000 1.000000,900.000000
|
||||
C1.000000,600.333313 1.000000,300.666656 1.000000,1.000000
|
||||
C538.000000,1.000000 1075.000000,1.000000 1612.000000,1.000000
|
||||
C1612.000000,300.666656 1612.000000,600.333313 1612.000000,900.000000
|
||||
C1436.833374,900.000000 1261.666626,900.000000 1086.000000,900.000000
|
||||
M1097.500000,407.001923
|
||||
C1164.150757,407.001892 1230.801514,407.009399 1297.452271,406.994873
|
||||
C1309.227295,406.992310 1314.932251,401.275665 1314.947021,389.525421
|
||||
C1314.968384,372.529480 1314.969482,355.533447 1314.947021,338.537506
|
||||
C1314.931030,326.410492 1309.417725,320.998505 1297.153809,320.998444
|
||||
C1166.851318,320.997833 1036.548828,320.997833 906.246399,321.000610
|
||||
C904.413879,321.000641 902.570007,320.914368 900.750916,321.080902
|
||||
C893.377380,321.755981 887.842834,327.129883 887.777161,334.407349
|
||||
C887.599792,354.066467 887.565979,373.730743 887.880371,393.386475
|
||||
C887.928894,396.415314 889.519470,399.885620 891.450989,402.312897
|
||||
C894.641296,406.322144 899.478882,407.055450 904.545532,407.049683
|
||||
C968.530334,406.977020 1032.515137,407.001923 1097.500000,407.001923
|
||||
M1219.500000,603.001892
|
||||
C1245.660400,603.001892 1271.820801,603.028931 1297.981201,602.989014
|
||||
C1309.073975,602.972107 1314.919678,597.089539 1314.942993,585.992249
|
||||
C1314.978638,568.996399 1314.961914,552.000488 1314.949463,535.004578
|
||||
C1314.940186,522.426392 1309.554565,516.998535 1297.121094,516.998474
|
||||
C1166.819214,516.997864 1036.517334,516.997864 906.215515,517.000732
|
||||
C904.383057,517.000732 902.538757,516.913391 900.720215,517.083313
|
||||
C893.348877,517.772400 887.839417,523.148438 887.774719,530.438049
|
||||
C887.600464,550.097107 887.692200,569.758850 887.737793,589.419373
|
||||
C887.752319,595.674438 891.133789,599.821350 896.777710,601.831848
|
||||
C899.503418,602.802795 902.630188,602.955750 905.575623,602.957275
|
||||
C1009.883728,603.010559 1114.191895,603.001892 1219.500000,603.001892
|
||||
M1118.500000,418.998077
|
||||
C1047.017090,418.998077 975.534180,418.990753 904.051270,419.005951
|
||||
C893.162598,419.008240 887.692871,424.347534 887.655762,435.100067
|
||||
C887.593628,453.095581 887.576416,471.091797 887.664551,489.087097
|
||||
C887.715942,499.577911 893.236389,504.990875 903.741333,504.992065
|
||||
C1035.043579,505.006989 1166.345825,505.006653 1297.648071,504.993500
|
||||
C1309.121826,504.992340 1314.924194,499.212952 1314.944458,487.829529
|
||||
C1314.974854,470.666962 1314.973145,453.504272 1314.945557,436.341705
|
||||
C1314.926514,424.508942 1309.343140,418.999115 1297.457886,418.998779
|
||||
C1238.138550,418.997192 1178.819336,418.998077 1118.500000,418.998077
|
||||
M476.054474,566.500000
|
||||
C476.054474,576.586487 476.054474,586.672974 476.054474,596.852173
|
||||
C494.136780,596.852173 511.607880,597.224365 529.047119,596.642151
|
||||
C534.838989,596.448792 540.892395,594.558472 546.228394,592.130249
|
||||
C559.318237,586.173340 565.922363,573.327820 564.441895,558.545349
|
||||
C562.891052,543.061401 556.165649,535.283386 540.676331,531.059814
|
||||
C540.171204,530.922058 539.667114,530.780640 538.998230,530.595520
|
||||
C539.484924,529.894287 539.609192,529.535156 539.859802,529.380005
|
||||
C553.078125,521.197693 555.072388,508.661926 552.616882,494.883148
|
||||
C550.465820,482.812714 541.587524,474.507294 527.263916,473.159729
|
||||
C510.457458,471.578552 493.474640,471.872467 476.054474,471.337311
|
||||
C476.054474,503.337585 476.054474,534.418762 476.054474,566.500000
|
||||
M402.500946,571.980896
|
||||
C410.828796,571.980896 419.160522,572.126282 427.482452,571.903992
|
||||
C430.495850,571.823547 431.872284,572.810120 432.823547,575.633118
|
||||
C435.243896,582.815674 437.993835,589.887268 440.506134,596.715942
|
||||
C450.966400,596.715942 460.848297,596.715942 471.119598,596.715942
|
||||
C468.628967,590.501160 466.305969,584.661926 463.951080,578.835632
|
||||
C450.074402,544.502808 436.218658,510.161346 422.219910,475.878296
|
||||
C421.560455,474.263336 419.657562,472.090027 418.247345,472.024048
|
||||
C410.286743,471.651642 402.299683,471.844208 394.256073,471.844208
|
||||
C377.405914,513.604126 360.662201,555.100159 343.836456,596.799561
|
||||
C354.430603,596.799561 364.392273,596.799561 374.451630,596.799561
|
||||
C375.481659,594.023987 376.442719,591.387146 377.437683,588.763123
|
||||
C379.494354,583.339111 380.103271,575.749084 384.036774,573.095459
|
||||
C388.209869,570.280212 395.546692,572.154602 402.500946,571.980896
|
||||
M611.571472,572.189636
|
||||
C602.763184,568.215454 593.954834,564.241272 584.915710,560.162964
|
||||
C580.822205,567.052246 576.253235,574.741516 571.127686,583.367615
|
||||
C577.305481,586.790833 582.942383,590.699097 589.145447,593.207581
|
||||
C609.512329,601.443970 629.781189,602.181580 649.718445,591.297607
|
||||
C665.187317,582.853027 673.932617,552.090271 655.186035,537.103516
|
||||
C648.894714,532.074036 641.715942,528.086243 634.688721,524.066528
|
||||
C628.648010,520.611145 622.144104,517.972778 616.039917,514.618408
|
||||
C612.225891,512.522583 609.542175,509.421997 610.653870,504.437012
|
||||
C611.791504,499.336365 615.346802,496.932556 620.061646,496.073212
|
||||
C622.647278,495.601990 625.519287,495.174866 627.977844,495.816803
|
||||
C635.621033,497.812469 643.128296,500.328613 651.215759,502.804352
|
||||
C654.460327,496.393372 658.244202,488.916687 661.987854,481.519592
|
||||
C648.880920,471.611420 626.535645,467.030579 611.776978,471.010986
|
||||
C596.578125,475.110168 584.724060,487.664307 582.952148,501.538208
|
||||
C580.947998,517.231140 587.373596,529.278809 602.722717,537.967957
|
||||
C607.918213,540.909119 613.478943,543.197571 618.777954,545.965881
|
||||
C622.597717,547.961365 626.533630,549.898987 629.936890,552.493225
|
||||
C637.202515,558.031799 635.755310,568.220825 627.062012,570.990601
|
||||
C622.486816,572.448303 617.300354,571.987366 611.571472,572.189636
|
||||
M457.916016,342.499969
|
||||
C457.916016,373.899384 457.916016,405.298767 457.916016,436.676880
|
||||
C467.711243,436.676880 476.940460,436.676880 486.589844,436.676880
|
||||
C486.589844,419.943848 486.589844,403.532776 486.589844,386.636169
|
||||
C500.249725,386.636169 513.488770,386.636169 526.601196,386.636169
|
||||
C526.601196,378.070557 526.601196,370.006805 526.601196,361.631836
|
||||
C513.136597,361.631836 500.029938,361.631836 486.644745,361.631836
|
||||
C486.644745,353.262451 486.644745,345.218872 486.644745,336.779816
|
||||
C501.220795,336.779816 515.481873,336.779816 529.913818,336.779816
|
||||
C529.913818,328.326721 529.913818,320.271667 529.913818,312.206543
|
||||
C505.794098,312.206543 481.946289,312.206543 457.916016,312.206543
|
||||
C457.916016,322.212067 457.916016,331.856018 457.916016,342.499969
|
||||
M598.498535,336.889008
|
||||
C604.273132,336.889008 610.047729,336.889008 615.879272,336.889008
|
||||
C615.879272,328.261658 615.879272,320.203796 615.879272,312.058655
|
||||
C591.841064,312.058655 568.107971,312.058655 544.232605,312.058655
|
||||
C544.232605,353.769287 544.232605,395.264709 544.232605,436.629578
|
||||
C553.764954,436.629578 562.976868,436.629578 572.642334,436.629578
|
||||
C572.642334,419.870453 572.642334,403.480591 572.642334,386.587952
|
||||
C586.333069,386.587952 599.562805,386.587952 612.735474,386.587952
|
||||
C612.735474,378.125366 612.735474,370.182526 612.735474,361.738586
|
||||
C599.297974,361.738586 586.077209,361.738586 572.690857,361.738586
|
||||
C572.690857,353.201965 572.690857,345.173248 572.690857,336.889008
|
||||
C581.202942,336.889008 589.351074,336.889008 598.498535,336.889008
|
||||
M339.500061,311.838348
|
||||
C330.725525,311.838348 321.951019,311.838348 313.105042,311.838348
|
||||
C313.105042,320.417908 313.105042,328.471161 313.105042,336.998138
|
||||
C322.985992,336.998138 332.568573,336.998138 342.563904,336.998138
|
||||
C342.563904,370.553925 342.563904,403.633698 342.563904,436.724121
|
||||
C352.241577,436.724121 361.485535,436.724121 371.115143,436.724121
|
||||
C371.115143,403.377716 371.115143,370.310974 371.115143,336.674927
|
||||
C381.206299,336.674927 390.918945,336.674927 400.589142,336.674927
|
||||
C400.589142,328.165649 400.589142,320.232178 400.589142,311.838348
|
||||
C380.391968,311.838348 360.446045,311.838348 339.500061,311.838348
|
||||
M330.485413,597.005554
|
||||
C334.558533,597.005554 338.631653,597.005554 342.598206,597.005554
|
||||
C342.598206,588.276184 342.598206,580.345520 342.598206,571.964905
|
||||
C328.293182,571.964905 314.224060,571.964905 299.717041,571.964905
|
||||
C299.717041,538.472229 299.717041,505.429871 299.717041,472.221832
|
||||
C289.927307,472.221832 280.589142,472.221832 271.345215,472.221832
|
||||
C271.345215,513.973206 271.345215,555.340942 271.345215,597.005554
|
||||
C290.920410,597.005554 310.204742,597.005554 330.485413,597.005554
|
||||
M774.203003,302.499969
|
||||
C774.203003,415.122589 774.203308,527.745239 774.201721,640.367859
|
||||
C774.201660,643.771851 774.002991,647.688965 778.640991,647.864075
|
||||
C783.475830,648.046631 783.264282,644.096313 783.255005,640.683838
|
||||
C783.253174,640.017456 783.254761,639.351013 783.254761,638.684631
|
||||
C783.254761,521.063965 783.254822,403.443329 783.254395,285.822693
|
||||
C783.254395,284.489899 783.226135,283.156616 783.251953,281.824371
|
||||
C783.313538,278.646790 782.490051,275.982208 778.709045,276.079651
|
||||
C775.017639,276.174805 774.205750,278.889709 774.203735,282.007629
|
||||
C774.199524,288.505096 774.202759,295.002533 774.203003,302.499969
|
||||
M439.734863,417.499481
|
||||
C439.734863,382.430084 439.734863,347.360657 439.734863,312.069214
|
||||
C429.970398,312.069214 420.738434,312.069214 411.369629,312.069214
|
||||
C411.369629,353.790070 411.369629,395.277130 411.369629,436.694336
|
||||
C420.923126,436.694336 430.154205,436.694336 439.734863,436.694336
|
||||
C439.734863,430.424896 439.734863,424.462006 439.734863,417.499481
|
||||
z"/>
|
||||
<path fill="#FFFEFE" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1097.000000,407.001923
|
||||
C1032.515137,407.001923 968.530334,406.977020 904.545532,407.049683
|
||||
C899.478882,407.055450 894.641296,406.322144 891.450989,402.312897
|
||||
C889.519470,399.885620 887.928894,396.415314 887.880371,393.386475
|
||||
C887.565979,373.730743 887.599792,354.066467 887.777161,334.407349
|
||||
C887.842834,327.129883 893.377380,321.755981 900.750916,321.080902
|
||||
C902.570007,320.914368 904.413879,321.000641 906.246399,321.000610
|
||||
C1036.548828,320.997833 1166.851318,320.997833 1297.153809,320.998444
|
||||
C1309.417725,320.998505 1314.931030,326.410492 1314.947021,338.537506
|
||||
C1314.969482,355.533447 1314.968384,372.529480 1314.947021,389.525421
|
||||
C1314.932251,401.275665 1309.227295,406.992310 1297.452271,406.994873
|
||||
C1230.801514,407.009399 1164.150757,407.001892 1097.000000,407.001923
|
||||
M916.641602,354.341370
|
||||
C916.437866,360.063019 915.112732,366.019104 916.250061,371.460419
|
||||
C919.139587,385.284943 933.987732,394.846680 947.551086,392.628510
|
||||
C962.436584,390.194092 973.763733,376.879120 972.679749,363.090057
|
||||
C971.589233,349.217834 962.023376,337.917847 949.626587,335.857788
|
||||
C935.011353,333.429016 923.108948,339.882111 916.641602,354.341370
|
||||
M1047.425049,366.412048
|
||||
C1047.425049,369.333496 1047.425049,372.254944 1047.425049,375.279938
|
||||
C1076.388672,375.279938 1104.600708,375.279938 1133.019531,375.279938
|
||||
C1133.019531,367.833344 1133.019531,360.620239 1133.019531,353.382812
|
||||
C1104.470093,353.382812 1076.241211,353.382812 1047.425049,353.382812
|
||||
C1047.425049,357.544922 1047.425049,361.495239 1047.425049,366.412048
|
||||
M1200.977295,344.762085
|
||||
C1200.977295,357.756317 1201.060181,370.751373 1200.929321,383.744293
|
||||
C1200.887695,387.885376 1201.883789,390.575073 1206.660767,390.505798
|
||||
C1211.154175,390.440643 1212.134277,387.885040 1212.100586,383.957794
|
||||
C1211.986328,370.631378 1211.987671,357.302765 1212.099487,343.976318
|
||||
C1212.132690,340.017334 1211.059082,337.512695 1206.590332,337.495758
|
||||
C1202.215210,337.479187 1200.646851,339.766937 1200.977295,344.762085
|
||||
M1233.049927,344.752686
|
||||
C1233.345581,340.614960 1232.586792,337.413544 1227.355713,337.489929
|
||||
C1222.418457,337.562103 1221.899170,340.602600 1221.930786,344.544647
|
||||
C1222.036133,357.703217 1222.042969,370.863739 1221.926880,384.022095
|
||||
C1221.891968,387.982452 1222.953491,390.487793 1227.425293,390.504211
|
||||
C1231.789062,390.520264 1233.135742,388.258484 1233.095947,384.182587
|
||||
C1232.970581,371.357574 1233.049927,358.530579 1233.049927,344.752686
|
||||
M1252.645996,338.736359
|
||||
C1245.619629,335.941071 1242.977783,337.627930 1242.969971,344.958527
|
||||
C1242.956299,357.956818 1243.036743,370.955688 1242.923584,383.953003
|
||||
C1242.889526,387.869141 1243.839355,390.451111 1248.352539,390.506256
|
||||
C1253.118774,390.564453 1254.133301,387.893127 1254.091553,383.742767
|
||||
C1253.959351,370.579163 1254.071045,357.413239 1254.005981,344.248657
|
||||
C1253.997925,342.641602 1253.488281,341.037048 1252.645996,338.736359
|
||||
z"/>
|
||||
<path fill="#FFFEFE" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1219.000000,603.001892
|
||||
C1114.191895,603.001892 1009.883728,603.010559 905.575623,602.957275
|
||||
C902.630188,602.955750 899.503418,602.802795 896.777710,601.831848
|
||||
C891.133789,599.821350 887.752319,595.674438 887.737793,589.419373
|
||||
C887.692200,569.758850 887.600464,550.097107 887.774719,530.438049
|
||||
C887.839417,523.148438 893.348877,517.772400 900.720215,517.083313
|
||||
C902.538757,516.913391 904.383057,517.000732 906.215515,517.000732
|
||||
C1036.517334,516.997864 1166.819214,516.997864 1297.121094,516.998474
|
||||
C1309.554565,516.998535 1314.940186,522.426392 1314.949463,535.004578
|
||||
C1314.961914,552.000488 1314.978638,568.996399 1314.942993,585.992249
|
||||
C1314.919678,597.089539 1309.073975,602.972107 1297.981201,602.989014
|
||||
C1271.820801,603.028931 1245.660400,603.001892 1219.000000,603.001892
|
||||
M960.658020,536.770813
|
||||
C959.965454,536.309082 959.292786,535.813660 958.577393,535.390503
|
||||
C948.015320,529.142944 934.808228,530.129761 925.437988,537.856262
|
||||
C915.774475,545.824524 912.482666,558.461792 916.969238,570.367493
|
||||
C921.216125,581.637085 932.380554,589.097290 944.605469,588.834351
|
||||
C956.079163,588.587585 967.062134,580.656677 970.940979,569.817200
|
||||
C975.182190,557.964966 971.737000,546.295898 960.658020,536.770813
|
||||
M1059.522827,549.159302
|
||||
C1055.610107,549.159302 1051.697388,549.159302 1047.752808,549.159302
|
||||
C1047.752808,556.947693 1047.752808,564.007812 1047.752808,571.143677
|
||||
C1076.402466,571.143677 1104.722656,571.143677 1133.068604,571.143677
|
||||
C1133.068604,563.676880 1133.068604,556.580383 1133.068604,549.159302
|
||||
C1108.708496,549.159302 1084.612305,549.159302 1059.522827,549.159302
|
||||
M1242.968384,578.297729
|
||||
C1242.968384,578.630859 1242.990479,578.965637 1242.965088,579.296814
|
||||
C1242.643921,583.471680 1243.483521,586.612183 1248.692871,586.508240
|
||||
C1253.639404,586.409546 1254.108643,583.324036 1254.078857,579.407410
|
||||
C1253.978638,566.250488 1253.971558,553.091736 1254.082275,539.934998
|
||||
C1254.115723,535.953613 1252.968872,533.502808 1248.526245,533.494141
|
||||
C1244.120361,533.485596 1242.881348,535.833801 1242.922241,539.869385
|
||||
C1243.048950,552.359619 1242.968384,564.851868 1242.968384,578.297729
|
||||
M1221.972412,548.520752
|
||||
C1221.972778,559.177490 1222.047485,569.834961 1221.934570,580.490479
|
||||
C1221.893311,584.380676 1223.322388,586.477417 1227.392334,586.496033
|
||||
C1231.327393,586.514038 1233.109741,584.745483 1233.082275,580.717224
|
||||
C1232.988281,566.897400 1232.994995,553.076294 1233.077393,539.256348
|
||||
C1233.101318,535.236633 1231.302734,533.465149 1227.360474,533.503235
|
||||
C1223.282837,533.542664 1221.752686,535.657837 1221.947876,539.540283
|
||||
C1222.081543,542.197754 1221.972900,544.867371 1221.972412,548.520752
|
||||
M1211.735352,583.833313
|
||||
C1211.841675,569.180115 1211.887451,554.526123 1212.094238,539.874329
|
||||
C1212.151123,535.846436 1210.896973,533.479797 1206.483765,533.494446
|
||||
C1202.046143,533.509155 1200.899170,535.943604 1200.934570,539.938599
|
||||
C1201.052979,553.267944 1200.877441,566.600586 1201.088013,579.927734
|
||||
C1201.119995,581.955017 1202.255127,585.370911 1203.485474,585.672180
|
||||
C1205.840332,586.248840 1208.630249,585.048401 1211.735352,583.833313
|
||||
z"/>
|
||||
<path fill="#FFFEFE" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1119.000000,418.998077
|
||||
C1178.819336,418.998077 1238.138550,418.997192 1297.457886,418.998779
|
||||
C1309.343140,418.999115 1314.926514,424.508942 1314.945557,436.341705
|
||||
C1314.973145,453.504272 1314.974854,470.666962 1314.944458,487.829529
|
||||
C1314.924194,499.212952 1309.121826,504.992340 1297.648071,504.993500
|
||||
C1166.345825,505.006653 1035.043579,505.006989 903.741333,504.992065
|
||||
C893.236389,504.990875 887.715942,499.577911 887.664551,489.087097
|
||||
C887.576416,471.091797 887.593628,453.095581 887.655762,435.100067
|
||||
C887.692871,424.347534 893.162598,419.008240 904.051270,419.005951
|
||||
C975.534180,418.990753 1047.017090,418.998077 1119.000000,418.998077
|
||||
M967.206604,478.631775
|
||||
C974.739563,467.498474 974.456604,454.572357 966.454651,444.283691
|
||||
C959.014404,434.717224 945.974548,430.838837 934.608704,434.811707
|
||||
C922.986084,438.874390 915.055969,449.499542 914.999451,461.085327
|
||||
C914.935669,474.157623 922.216919,484.733276 934.296326,489.113098
|
||||
C946.038513,493.370636 958.436951,489.610687 967.206604,478.631775
|
||||
M1084.500000,451.159424
|
||||
C1072.273193,451.159424 1060.046387,451.159424 1047.742798,451.159424
|
||||
C1047.742798,458.925690 1047.742798,465.986786 1047.742798,473.155426
|
||||
C1076.383301,473.155426 1104.704590,473.155426 1133.079590,473.155426
|
||||
C1133.079590,465.702820 1133.079590,458.608185 1133.079590,451.159424
|
||||
C1117.048340,451.159424 1101.274170,451.159424 1084.500000,451.159424
|
||||
M1201.064453,439.065338
|
||||
C1201.035400,453.395142 1201.073120,467.725586 1200.934570,482.054321
|
||||
C1200.895996,486.040161 1202.022583,488.496063 1206.473267,488.505371
|
||||
C1210.865967,488.514587 1212.140137,486.191681 1212.103027,482.142334
|
||||
C1211.980713,468.812592 1212.179932,455.478699 1211.930420,442.152466
|
||||
C1211.890991,440.044891 1210.708374,436.975677 1209.103149,436.105164
|
||||
C1206.535400,434.712616 1203.198120,434.881104 1201.064453,439.065338
|
||||
M1251.955444,436.164795
|
||||
C1244.558838,434.633026 1242.972778,435.894226 1242.968384,443.355591
|
||||
C1242.960815,456.187775 1243.032593,469.020477 1242.925781,481.851776
|
||||
C1242.893677,485.702789 1243.685791,488.414368 1248.251587,488.503540
|
||||
C1252.956421,488.595428 1254.139038,486.068665 1254.093994,481.843109
|
||||
C1253.953735,468.679108 1254.097900,455.512207 1253.980347,442.347748
|
||||
C1253.963501,440.472076 1253.108887,438.603851 1251.955444,436.164795
|
||||
M1231.647827,487.272156
|
||||
C1232.115112,485.570435 1232.973511,483.872040 1232.987915,482.166504
|
||||
C1233.099854,468.834900 1232.968750,455.501160 1233.097290,442.169861
|
||||
C1233.137817,437.974152 1231.998657,435.393677 1227.266846,435.495361
|
||||
C1222.717041,435.593170 1221.895142,438.272491 1221.928711,442.138702
|
||||
C1222.040161,454.970306 1221.965454,467.803467 1221.972656,480.636047
|
||||
C1221.976929,488.101715 1223.560913,489.363770 1231.647827,487.272156
|
||||
z"/>
|
||||
<path fill="#FFFDFD" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M476.054474,566.000000
|
||||
C476.054474,534.418762 476.054474,503.337585 476.054474,471.337311
|
||||
C493.474640,471.872467 510.457458,471.578552 527.263916,473.159729
|
||||
C541.587524,474.507294 550.465820,482.812714 552.616882,494.883148
|
||||
C555.072388,508.661926 553.078125,521.197693 539.859802,529.380005
|
||||
C539.609192,529.535156 539.484924,529.894287 538.998230,530.595520
|
||||
C539.667114,530.780640 540.171204,530.922058 540.676331,531.059814
|
||||
C556.165649,535.283386 562.891052,543.061401 564.441895,558.545349
|
||||
C565.922363,573.327820 559.318237,586.173340 546.228394,592.130249
|
||||
C540.892395,594.558472 534.838989,596.448792 529.047119,596.642151
|
||||
C511.607880,597.224365 494.136780,596.852173 476.054474,596.852173
|
||||
C476.054474,586.672974 476.054474,576.586487 476.054474,566.000000
|
||||
M516.945801,545.512512
|
||||
C513.006042,545.512512 509.066223,545.512512 504.952209,545.512512
|
||||
C504.952209,555.461426 504.952209,565.021790 504.952209,575.402100
|
||||
C511.302704,574.904785 517.459595,574.924805 523.413452,573.835449
|
||||
C531.770752,572.306396 535.389893,566.611023 534.280945,558.224304
|
||||
C533.227417,550.256104 528.835388,546.892517 516.945801,545.512512
|
||||
M506.498993,493.878052
|
||||
C505.927338,494.321045 504.862427,494.758209 504.857117,495.207886
|
||||
C504.757751,503.635223 504.784058,512.064026 504.784058,521.258545
|
||||
C509.120117,520.662659 512.933533,520.499817 516.545959,519.562561
|
||||
C522.916199,517.909790 526.008301,513.324951 525.924927,506.578003
|
||||
C525.849731,500.492188 522.784851,496.593079 516.311951,494.979889
|
||||
C513.444092,494.265137 510.409088,494.220825 506.498993,493.878052
|
||||
z"/>
|
||||
<path fill="#FFFDFD" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M402.001404,571.980957
|
||||
C395.546692,572.154602 388.209869,570.280212 384.036774,573.095459
|
||||
C380.103271,575.749084 379.494354,583.339111 377.437683,588.763123
|
||||
C376.442719,591.387146 375.481659,594.023987 374.451630,596.799561
|
||||
C364.392273,596.799561 354.430603,596.799561 343.836456,596.799561
|
||||
C360.662201,555.100159 377.405914,513.604126 394.256073,471.844208
|
||||
C402.299683,471.844208 410.286743,471.651642 418.247345,472.024048
|
||||
C419.657562,472.090027 421.560455,474.263336 422.219910,475.878296
|
||||
C436.218658,510.161346 450.074402,544.502808 463.951080,578.835632
|
||||
C466.305969,584.661926 468.628967,590.501160 471.119598,596.715942
|
||||
C460.848297,596.715942 450.966400,596.715942 440.506134,596.715942
|
||||
C437.993835,589.887268 435.243896,582.815674 432.823547,575.633118
|
||||
C431.872284,572.810120 430.495850,571.823547 427.482452,571.903992
|
||||
C419.160522,572.126282 410.828796,571.980896 402.001404,571.980957
|
||||
M420.797516,546.715088
|
||||
C416.591888,534.777161 412.386230,522.839233 407.707458,509.558380
|
||||
C402.644623,522.789307 398.128754,534.590881 393.406860,546.930786
|
||||
C402.751587,546.930786 411.346039,546.930786 420.797516,546.715088
|
||||
z"/>
|
||||
<path fill="#FFFCFC" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M611.980713,572.291199
|
||||
C617.300354,571.987366 622.486816,572.448303 627.062012,570.990601
|
||||
C635.755310,568.220825 637.202515,558.031799 629.936890,552.493225
|
||||
C626.533630,549.898987 622.597717,547.961365 618.777954,545.965881
|
||||
C613.478943,543.197571 607.918213,540.909119 602.722717,537.967957
|
||||
C587.373596,529.278809 580.947998,517.231140 582.952148,501.538208
|
||||
C584.724060,487.664307 596.578125,475.110168 611.776978,471.010986
|
||||
C626.535645,467.030579 648.880920,471.611420 661.987854,481.519592
|
||||
C658.244202,488.916687 654.460327,496.393372 651.215759,502.804352
|
||||
C643.128296,500.328613 635.621033,497.812469 627.977844,495.816803
|
||||
C625.519287,495.174866 622.647278,495.601990 620.061646,496.073212
|
||||
C615.346802,496.932556 611.791504,499.336365 610.653870,504.437012
|
||||
C609.542175,509.421997 612.225891,512.522583 616.039917,514.618408
|
||||
C622.144104,517.972778 628.648010,520.611145 634.688721,524.066528
|
||||
C641.715942,528.086243 648.894714,532.074036 655.186035,537.103516
|
||||
C673.932617,552.090271 665.187317,582.853027 649.718445,591.297607
|
||||
C629.781189,602.181580 609.512329,601.443970 589.145447,593.207581
|
||||
C582.942383,590.699097 577.305481,586.790833 571.127686,583.367615
|
||||
C576.253235,574.741516 580.822205,567.052246 584.915710,560.162964
|
||||
C593.954834,564.241272 602.763184,568.215454 611.980713,572.291199
|
||||
z"/>
|
||||
<path fill="#FFFEFE" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M457.916016,341.999939
|
||||
C457.916016,331.856018 457.916016,322.212067 457.916016,312.206543
|
||||
C481.946289,312.206543 505.794098,312.206543 529.913818,312.206543
|
||||
C529.913818,320.271667 529.913818,328.326721 529.913818,336.779816
|
||||
C515.481873,336.779816 501.220795,336.779816 486.644745,336.779816
|
||||
C486.644745,345.218872 486.644745,353.262451 486.644745,361.631836
|
||||
C500.029938,361.631836 513.136597,361.631836 526.601196,361.631836
|
||||
C526.601196,370.006805 526.601196,378.070557 526.601196,386.636169
|
||||
C513.488770,386.636169 500.249725,386.636169 486.589844,386.636169
|
||||
C486.589844,403.532776 486.589844,419.943848 486.589844,436.676880
|
||||
C476.940460,436.676880 467.711243,436.676880 457.916016,436.676880
|
||||
C457.916016,405.298767 457.916016,373.899384 457.916016,341.999939
|
||||
z"/>
|
||||
<path fill="#FFFEFE" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M597.998901,336.889008
|
||||
C589.351074,336.889008 581.202942,336.889008 572.690857,336.889008
|
||||
C572.690857,345.173248 572.690857,353.201965 572.690857,361.738586
|
||||
C586.077209,361.738586 599.297974,361.738586 612.735474,361.738586
|
||||
C612.735474,370.182526 612.735474,378.125366 612.735474,386.587952
|
||||
C599.562805,386.587952 586.333069,386.587952 572.642334,386.587952
|
||||
C572.642334,403.480591 572.642334,419.870453 572.642334,436.629578
|
||||
C562.976868,436.629578 553.764954,436.629578 544.232605,436.629578
|
||||
C544.232605,395.264709 544.232605,353.769287 544.232605,312.058655
|
||||
C568.107971,312.058655 591.841064,312.058655 615.879272,312.058655
|
||||
C615.879272,320.203796 615.879272,328.261658 615.879272,336.889008
|
||||
C610.047729,336.889008 604.273132,336.889008 597.998901,336.889008
|
||||
z"/>
|
||||
<path fill="#FFFCFC" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M340.000092,311.838348
|
||||
C360.446045,311.838348 380.391968,311.838348 400.589142,311.838348
|
||||
C400.589142,320.232178 400.589142,328.165649 400.589142,336.674927
|
||||
C390.918945,336.674927 381.206299,336.674927 371.115143,336.674927
|
||||
C371.115143,370.310974 371.115143,403.377716 371.115143,436.724121
|
||||
C361.485535,436.724121 352.241577,436.724121 342.563904,436.724121
|
||||
C342.563904,403.633698 342.563904,370.553925 342.563904,336.998138
|
||||
C332.568573,336.998138 322.985992,336.998138 313.105042,336.998138
|
||||
C313.105042,328.471161 313.105042,320.417908 313.105042,311.838348
|
||||
C321.951019,311.838348 330.725525,311.838348 340.000092,311.838348
|
||||
z"/>
|
||||
<path fill="#FFFCFC" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M329.987244,597.005554
|
||||
C310.204742,597.005554 290.920410,597.005554 271.345215,597.005554
|
||||
C271.345215,555.340942 271.345215,513.973206 271.345215,472.221832
|
||||
C280.589142,472.221832 289.927307,472.221832 299.717041,472.221832
|
||||
C299.717041,505.429871 299.717041,538.472229 299.717041,571.964905
|
||||
C314.224060,571.964905 328.293182,571.964905 342.598206,571.964905
|
||||
C342.598206,580.345520 342.598206,588.276184 342.598206,597.005554
|
||||
C338.631653,597.005554 334.558533,597.005554 329.987244,597.005554
|
||||
z"/>
|
||||
<path fill="#FFF6F6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M774.203003,302.000000
|
||||
C774.202759,295.002533 774.199524,288.505096 774.203735,282.007629
|
||||
C774.205750,278.889709 775.017639,276.174805 778.709045,276.079651
|
||||
C782.490051,275.982208 783.313538,278.646790 783.251953,281.824371
|
||||
C783.226135,283.156616 783.254395,284.489899 783.254395,285.822693
|
||||
C783.254822,403.443329 783.254761,521.063965 783.254761,638.684631
|
||||
C783.254761,639.351013 783.253174,640.017456 783.255005,640.683838
|
||||
C783.264282,644.096313 783.475830,648.046631 778.640991,647.864075
|
||||
C774.002991,647.688965 774.201660,643.771851 774.201721,640.367859
|
||||
C774.203308,527.745239 774.203003,415.122589 774.203003,302.000000
|
||||
z"/>
|
||||
<path fill="#FFFBFB" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M439.734863,417.999268
|
||||
C439.734863,424.462006 439.734863,430.424896 439.734863,436.694336
|
||||
C430.154205,436.694336 420.923126,436.694336 411.369629,436.694336
|
||||
C411.369629,395.277130 411.369629,353.790070 411.369629,312.069214
|
||||
C420.738434,312.069214 429.970398,312.069214 439.734863,312.069214
|
||||
C439.734863,347.360657 439.734863,382.430084 439.734863,417.999268
|
||||
z"/>
|
||||
<path fill="#FF0202" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M916.774414,353.969299
|
||||
C923.108948,339.882111 935.011353,333.429016 949.626587,335.857788
|
||||
C962.023376,337.917847 971.589233,349.217834 972.679749,363.090057
|
||||
C973.763733,376.879120 962.436584,390.194092 947.551086,392.628510
|
||||
C933.987732,394.846680 919.139587,385.284943 916.250061,371.460419
|
||||
C915.112732,366.019104 916.437866,360.063019 916.774414,353.969299
|
||||
z"/>
|
||||
<path fill="#FF0404" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1047.425049,365.928802
|
||||
C1047.425049,361.495239 1047.425049,357.544922 1047.425049,353.382812
|
||||
C1076.241211,353.382812 1104.470093,353.382812 1133.019531,353.382812
|
||||
C1133.019531,360.620239 1133.019531,367.833344 1133.019531,375.279938
|
||||
C1104.600708,375.279938 1076.388672,375.279938 1047.425049,375.279938
|
||||
C1047.425049,372.254944 1047.425049,369.333496 1047.425049,365.928802
|
||||
z"/>
|
||||
<path fill="#FF0000" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1200.977295,344.295288
|
||||
C1200.646851,339.766937 1202.215210,337.479187 1206.590332,337.495758
|
||||
C1211.059082,337.512695 1212.132690,340.017334 1212.099487,343.976318
|
||||
C1211.987671,357.302765 1211.986328,370.631378 1212.100586,383.957794
|
||||
C1212.134277,387.885040 1211.154175,390.440643 1206.660767,390.505798
|
||||
C1201.883789,390.575073 1200.887695,387.885376 1200.929321,383.744293
|
||||
C1201.060181,370.751373 1200.977295,357.756317 1200.977295,344.295288
|
||||
z"/>
|
||||
<path fill="#FF0000" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1233.049927,345.228516
|
||||
C1233.049927,358.530579 1232.970581,371.357574 1233.095947,384.182587
|
||||
C1233.135742,388.258484 1231.789062,390.520264 1227.425293,390.504211
|
||||
C1222.953491,390.487793 1221.891968,387.982452 1221.926880,384.022095
|
||||
C1222.042969,370.863739 1222.036133,357.703217 1221.930786,344.544647
|
||||
C1221.899170,340.602600 1222.418457,337.562103 1227.355713,337.489929
|
||||
C1232.586792,337.413544 1233.345581,340.614960 1233.049927,345.228516
|
||||
z"/>
|
||||
<path fill="#FF0000" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1252.928467,339.083862
|
||||
C1253.488281,341.037048 1253.997925,342.641602 1254.005981,344.248657
|
||||
C1254.071045,357.413239 1253.959351,370.579163 1254.091553,383.742767
|
||||
C1254.133301,387.893127 1253.118774,390.564453 1248.352539,390.506256
|
||||
C1243.839355,390.451111 1242.889526,387.869141 1242.923584,383.953003
|
||||
C1243.036743,370.955688 1242.956299,357.956818 1242.969971,344.958527
|
||||
C1242.977783,337.627930 1245.619629,335.941071 1252.928467,339.083862
|
||||
z"/>
|
||||
<path fill="#FF0202" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M960.973572,536.947998
|
||||
C971.737000,546.295898 975.182190,557.964966 970.940979,569.817200
|
||||
C967.062134,580.656677 956.079163,588.587585 944.605469,588.834351
|
||||
C932.380554,589.097290 921.216125,581.637085 916.969238,570.367493
|
||||
C912.482666,558.461792 915.774475,545.824524 925.437988,537.856262
|
||||
C934.808228,530.129761 948.015320,529.142944 958.577393,535.390503
|
||||
C959.292786,535.813660 959.965454,536.309082 960.973572,536.947998
|
||||
z"/>
|
||||
<path fill="#FF0404" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1060.019531,549.159302
|
||||
C1084.612305,549.159302 1108.708496,549.159302 1133.068604,549.159302
|
||||
C1133.068604,556.580383 1133.068604,563.676880 1133.068604,571.143677
|
||||
C1104.722656,571.143677 1076.402466,571.143677 1047.752808,571.143677
|
||||
C1047.752808,564.007812 1047.752808,556.947693 1047.752808,549.159302
|
||||
C1051.697388,549.159302 1055.610107,549.159302 1060.019531,549.159302
|
||||
z"/>
|
||||
<path fill="#FF0000" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1242.968384,577.820557
|
||||
C1242.968384,564.851868 1243.048950,552.359619 1242.922241,539.869385
|
||||
C1242.881348,535.833801 1244.120361,533.485596 1248.526245,533.494141
|
||||
C1252.968872,533.502808 1254.115723,535.953613 1254.082275,539.934998
|
||||
C1253.971558,553.091736 1253.978638,566.250488 1254.078857,579.407410
|
||||
C1254.108643,583.324036 1253.639404,586.409546 1248.692871,586.508240
|
||||
C1243.483521,586.612183 1242.643921,583.471680 1242.965088,579.296814
|
||||
C1242.990479,578.965637 1242.968384,578.630859 1242.968384,577.820557
|
||||
z"/>
|
||||
<path fill="#FF0000" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1221.972412,548.026123
|
||||
C1221.972900,544.867371 1222.081543,542.197754 1221.947876,539.540283
|
||||
C1221.752686,535.657837 1223.282837,533.542664 1227.360474,533.503235
|
||||
C1231.302734,533.465149 1233.101318,535.236633 1233.077393,539.256348
|
||||
C1232.994995,553.076294 1232.988281,566.897400 1233.082275,580.717224
|
||||
C1233.109741,584.745483 1231.327393,586.514038 1227.392334,586.496033
|
||||
C1223.322388,586.477417 1221.893311,584.380676 1221.934570,580.490479
|
||||
C1222.047485,569.834961 1221.972778,559.177490 1221.972412,548.026123
|
||||
z"/>
|
||||
<path fill="#FF0000" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1211.487549,584.209351
|
||||
C1208.630249,585.048401 1205.840332,586.248840 1203.485474,585.672180
|
||||
C1202.255127,585.370911 1201.119995,581.955017 1201.088013,579.927734
|
||||
C1200.877441,566.600586 1201.052979,553.267944 1200.934570,539.938599
|
||||
C1200.899170,535.943604 1202.046143,533.509155 1206.483765,533.494446
|
||||
C1210.896973,533.479797 1212.151123,535.846436 1212.094238,539.874329
|
||||
C1211.887451,554.526123 1211.841675,569.180115 1211.487549,584.209351
|
||||
z"/>
|
||||
<path fill="#FF0202" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M967.015930,478.940063
|
||||
C958.436951,489.610687 946.038513,493.370636 934.296326,489.113098
|
||||
C922.216919,484.733276 914.935669,474.157623 914.999451,461.085327
|
||||
C915.055969,449.499542 922.986084,438.874390 934.608704,434.811707
|
||||
C945.974548,430.838837 959.014404,434.717224 966.454651,444.283691
|
||||
C974.456604,454.572357 974.739563,467.498474 967.015930,478.940063
|
||||
z"/>
|
||||
<path fill="#FF0404" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1085.000000,451.159424
|
||||
C1101.274170,451.159424 1117.048340,451.159424 1133.079590,451.159424
|
||||
C1133.079590,458.608185 1133.079590,465.702820 1133.079590,473.155426
|
||||
C1104.704590,473.155426 1076.383301,473.155426 1047.742798,473.155426
|
||||
C1047.742798,465.986786 1047.742798,458.925690 1047.742798,451.159424
|
||||
C1060.046387,451.159424 1072.273193,451.159424 1085.000000,451.159424
|
||||
z"/>
|
||||
<path fill="#FF0000" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1201.180420,438.629150
|
||||
C1203.198120,434.881104 1206.535400,434.712616 1209.103149,436.105164
|
||||
C1210.708374,436.975677 1211.890991,440.044891 1211.930420,442.152466
|
||||
C1212.179932,455.478699 1211.980713,468.812592 1212.103027,482.142334
|
||||
C1212.140137,486.191681 1210.865967,488.514587 1206.473267,488.505371
|
||||
C1202.022583,488.496063 1200.895996,486.040161 1200.934570,482.054321
|
||||
C1201.073120,467.725586 1201.035400,453.395142 1201.180420,438.629150
|
||||
z"/>
|
||||
<path fill="#FF0000" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1252.298706,436.448486
|
||||
C1253.108887,438.603851 1253.963501,440.472076 1253.980347,442.347748
|
||||
C1254.097900,455.512207 1253.953735,468.679108 1254.093994,481.843109
|
||||
C1254.139038,486.068665 1252.956421,488.595428 1248.251587,488.503540
|
||||
C1243.685791,488.414368 1242.893677,485.702789 1242.925781,481.851776
|
||||
C1243.032593,469.020477 1242.960815,456.187775 1242.968384,443.355591
|
||||
C1242.972778,435.894226 1244.558838,434.633026 1252.298706,436.448486
|
||||
z"/>
|
||||
<path fill="#FF0000" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M1231.302246,487.554504
|
||||
C1223.560913,489.363770 1221.976929,488.101715 1221.972656,480.636047
|
||||
C1221.965454,467.803467 1222.040161,454.970306 1221.928711,442.138702
|
||||
C1221.895142,438.272491 1222.717041,435.593170 1227.266846,435.495361
|
||||
C1231.998657,435.393677 1233.137817,437.974152 1233.097290,442.169861
|
||||
C1232.968750,455.501160 1233.099854,468.834900 1232.987915,482.166504
|
||||
C1232.973511,483.872040 1232.115112,485.570435 1231.302246,487.554504
|
||||
z"/>
|
||||
<path fill="#FF0404" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M517.386475,545.567932
|
||||
C528.835388,546.892517 533.227417,550.256104 534.280945,558.224304
|
||||
C535.389893,566.611023 531.770752,572.306396 523.413452,573.835449
|
||||
C517.459595,574.924805 511.302704,574.904785 504.952209,575.402100
|
||||
C504.952209,565.021790 504.952209,555.461426 504.952209,545.512512
|
||||
C509.066223,545.512512 513.006042,545.512512 517.386475,545.567932
|
||||
z"/>
|
||||
<path fill="#FF0303" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M506.974487,493.875122
|
||||
C510.409088,494.220825 513.444092,494.265137 516.311951,494.979889
|
||||
C522.784851,496.593079 525.849731,500.492188 525.924927,506.578003
|
||||
C526.008301,513.324951 522.916199,517.909790 516.545959,519.562561
|
||||
C512.933533,520.499817 509.120117,520.662659 504.784058,521.258545
|
||||
C504.784058,512.064026 504.757751,503.635223 504.857117,495.207886
|
||||
C504.862427,494.758209 505.927338,494.321045 506.974487,493.875122
|
||||
z"/>
|
||||
<path fill="#FF0505" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M420.369019,546.822937
|
||||
C411.346039,546.930786 402.751587,546.930786 393.406860,546.930786
|
||||
C398.128754,534.590881 402.644623,522.789307 407.707458,509.558380
|
||||
C412.386230,522.839233 416.591888,534.777161 420.369019,546.822937
|
||||
z"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 855 KiB |
8
builds/README.md
Normal file
|
@ -0,0 +1,8 @@
|
|||
# Home Lab Builds, etc
|
||||
|
||||
> [!NOTE]\
|
||||
> Links to videos and articles about how others have built their home labs, as well as a link to my home lab building series.
|
||||
|
||||
|
||||
|
||||
|
6
cloudflare/README.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Cloudflare Examples
|
||||
|
||||
> [!NOTE]\
|
||||
> This is a work in progress. I will be placing configs and yaml files and docker compose files, etc in here once I get a better feel for Cloudflare proxying and how it works.
|
||||
|
||||
|
6
docker/README.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Docker Examples
|
||||
|
||||
> [!NOTE]\
|
||||
> This is a work in progress. I will be placing configs and yaml files and docker compose files, etc in here once I get a better feel for Docker compose and how it works.
|
||||
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
|
||||
---
|
||||
services:
|
||||
audiobookshelf:
|
||||
image: ghcr.io/advplyr/audiobookshelf:latest
|
||||
ports:
|
||||
- 13378:80
|
||||
volumes:
|
||||
- /audiobooks:/audiobooks
|
||||
- /podcasts:/podcasts
|
||||
- /config:/config
|
||||
- /metadata>:/metadata
|
||||
environment:
|
||||
- TZ=America/New_York
|
|
@ -1,68 +0,0 @@
|
|||
name: immich
|
||||
|
||||
services:
|
||||
immich-server:
|
||||
container_name: immich_server
|
||||
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
||||
command: ['start.sh', 'immich']
|
||||
volumes:
|
||||
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- 2283:3001
|
||||
depends_on:
|
||||
- redis
|
||||
- database
|
||||
restart: always
|
||||
|
||||
immich-microservices:
|
||||
container_name: immich_microservices
|
||||
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
||||
# extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding
|
||||
# file: hwaccel.transcoding.yml
|
||||
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
|
||||
command: ['start.sh', 'microservices']
|
||||
volumes:
|
||||
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
env_file:
|
||||
- .env
|
||||
depends_on:
|
||||
- redis
|
||||
- database
|
||||
restart: always
|
||||
|
||||
immich-machine-learning:
|
||||
container_name: immich_machine_learning
|
||||
# For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
|
||||
# Example tag: ${IMMICH_VERSION:-release}-cuda
|
||||
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
|
||||
# extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
|
||||
# file: hwaccel.ml.yml
|
||||
# service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
|
||||
volumes:
|
||||
- model-cache:/cache
|
||||
env_file:
|
||||
- .env
|
||||
restart: always
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: registry.hub.docker.com/library/redis:6.2-alpine@sha256:84882e87b54734154586e5f8abd4dce69fe7311315e2fc6d67c29614c8de2672
|
||||
restart: always
|
||||
|
||||
database:
|
||||
container_name: immich_postgres
|
||||
image: registry.hub.docker.com/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
|
||||
environment:
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||
POSTGRES_USER: ${DB_USERNAME}
|
||||
POSTGRES_DB: ${DB_DATABASE_NAME}
|
||||
volumes:
|
||||
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
|
||||
restart: always
|
||||
|
||||
volumes:
|
||||
model-cache:
|
|
@ -1,71 +0,0 @@
|
|||
---
|
||||
services:
|
||||
piped-frontend:
|
||||
image: 1337kavin/piped-frontend:latest
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- piped
|
||||
environment:
|
||||
BACKEND_HOSTNAME: pipedapi.tifflabs.cfd
|
||||
container_name: piped-frontend
|
||||
piped-proxy:
|
||||
image: 1337kavin/piped-proxy:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- UDS=1
|
||||
volumes:
|
||||
- piped-proxy:/app/socket
|
||||
container_name: piped-proxy
|
||||
piped:
|
||||
image: 1337kavin/piped:latest
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./config/config.properties:/app/config.properties:ro
|
||||
depends_on:
|
||||
- postgres
|
||||
container_name: piped-backend
|
||||
nginx:
|
||||
image: nginx:mainline-alpine
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:80"
|
||||
volumes:
|
||||
- ./config/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
- ./config/pipedapi.conf:/etc/nginx/conf.d/pipedapi.conf:ro
|
||||
- ./config/pipedproxy.conf:/etc/nginx/conf.d/pipedproxy.conf:ro
|
||||
- ./config/pipedfrontend.conf:/etc/nginx/conf.d/pipedfrontend.conf:ro
|
||||
- ./config/ytproxy.conf:/etc/nginx/snippets/ytproxy.conf:ro
|
||||
- piped-proxy:/var/run/ytproxy
|
||||
container_name: nginx
|
||||
depends_on:
|
||||
- piped
|
||||
- piped-proxy
|
||||
- pipedfrontend
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.piped.rule=Host(`FRONTEND_HOSTNAME`, `BACKEND_HOSTNAME`, `PROXY_HOSTNAME`)"
|
||||
- "traefik.http.routers.piped.entrypoints=websecure"
|
||||
- "traefik.http.services.piped.loadbalancer.server.port=8080"
|
||||
postgres:
|
||||
image: postgres:15
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./data/db:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_DB=piped
|
||||
- POSTGRES_USER=piped
|
||||
- POSTGRES_PASSWORD=changeme
|
||||
container_name: postgres
|
||||
watchtower:
|
||||
image: containrrr/watchtower
|
||||
restart: always
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
environment:
|
||||
- WATCHTOWER_CLEANUP=true
|
||||
- WATCHTOWER_INCLUDE_RESTARTING=true
|
||||
container_name: watchtower
|
||||
command: piped-frontend piped-backend piped-proxy varnish nginx postgres watchtower
|
||||
volumes:
|
||||
piped-proxy: null
|
|
@ -1,15 +0,0 @@
|
|||
version: '3'
|
||||
|
||||
services:
|
||||
portainer:
|
||||
image: portainer/portainer-ce
|
||||
container_name: portainer
|
||||
restart: unless-stopped
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
networks:
|
||||
- proxy
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- /home/username/portainer/data:/data
|
|
@ -1,16 +0,0 @@
|
|||
version: '3'
|
||||
|
||||
services:
|
||||
reverse-proxy:
|
||||
# The official v3 Traefik docker image
|
||||
image: traefik:v3.0
|
||||
# Enables the web UI and tells Traefik to listen to docker
|
||||
command: --api.insecure=true --providers.docker
|
||||
ports:
|
||||
# The HTTP port
|
||||
- "80:80"
|
||||
# The Web UI (enabled by --api.insecure=true)
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
# So that Traefik can listen to the Docker events
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
@ -1,12 +0,0 @@
|
|||
services:
|
||||
audiobookshelf:
|
||||
image: ghcr.io/advplyr/audiobookshelf:latest
|
||||
ports:
|
||||
- 13378:80
|
||||
volumes:
|
||||
- ./audiobooks:/audiobooks
|
||||
- ./podcasts:/podcasts
|
||||
- ./config:/config
|
||||
- ./metadata:/metadata
|
||||
environment:
|
||||
- TZ=America/New_York
|
|
@ -3,8 +3,4 @@
|
|||
> [!NOTE]\
|
||||
> This is a work in progress. I will be placing configs and yaml files and docker compose files, etc in here once I get a better feel for Portainer and how it works.
|
||||
|
||||
|
||||
> [!WARNING]\
|
||||
> **I AM NO LONGER USING PORTAINER**
|
||||
>
|
||||
> Portainer, while easy to use, is not a good option once you get your feet wet. Learn how to use Docker Compose and the command line. Trust me, it will be beneficial to you in the long run.
|
||||
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
# Proxmox Configs, etc
|
||||
|
||||
> [!IMPORTANT]\
|
||||
> [!NOTE]\
|
||||
> This is a work in progress. I will be placing configs and yaml files and docker compose files, etc in here once I get a better feel for Proxmox and how it works.
|
||||
|
||||
|
||||
> [!TIP]\
|
||||
> The scripts in this folder is from a wonderful dev and his website listed at the bottom of this README
|
||||
## Video resources
|
||||
|
||||
> For proxying
|
||||
|
||||
[How to use Cloudflare Tunnel in your Homelab (even with Traefik)](https://www.youtube.com/watch?v=yMmxw-DZ5Ec)
|
||||
|
||||
|
||||
- [tteck Proxmox scripts - GitHub](https://github.com/tteck/Proxmox/)
|
||||
- [Proxmox VE Helper Scripts](https://tteck.github.io/Proxmox/)
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
# ActualBudget lxc
|
||||
|
|
@ -1 +0,0 @@
|
|||
# Cloudflared lxcs
|
|
@ -1,37 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2024 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT
|
||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||
|
||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y curl
|
||||
$STD apt-get install -y sudo
|
||||
$STD apt-get install -y mc
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Cloudflared"
|
||||
mkdir -p --mode=0755 /usr/share/keyrings
|
||||
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
||||
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg >/usr/share/keyrings/cloudflare-main.gpg
|
||||
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $VERSION main" >/etc/apt/sources.list.d/cloudflared.list
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y cloudflared
|
||||
msg_ok "Installed Cloudflared"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get autoremove
|
||||
$STD apt-get autoclean
|
||||
msg_ok "Cleaned"
|
|
@ -1 +0,0 @@
|
|||
# Flaresolverr lxc
|
|
@ -1 +0,0 @@
|
|||
# Forgejo lxc
|
|
@ -1,14 +0,0 @@
|
|||
# Grafana Script
|
||||
|
||||
> [!WARNING]\
|
||||
> Always make sure you vet the scripts you install from anywhere on the internet!
|
||||
|
||||
You can install the script directly from this link:
|
||||
|
||||
- [Proxmox VE Helper Scripts](https://tteck.github.io/Proxmox/)
|
||||
|
||||
To see how Grafana works, here are a couple of good resources:
|
||||
|
||||
- [Beautiful Dashboards with Grafana and Prometheus - Monitoring Kubernetes Tutorial | Techno Tim](https://technotim.live/posts/kube-grafana-prometheus/)
|
||||
- [NEXT LEVEL STATISTICS - Home Assistant InfluxDB and Grafana](https://www.youtube.com/watch?v=eJ-XE2tsD4U)
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2024 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT
|
||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||
|
||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y curl
|
||||
$STD apt-get install -y sudo
|
||||
$STD apt-get install -y mc
|
||||
$STD apt-get install -y gnupg
|
||||
$STD apt-get install -y apt-transport-https
|
||||
$STD apt-get install -y software-properties-common
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setting up Grafana Repository"
|
||||
wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
|
||||
sh -c 'echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" > /etc/apt/sources.list.d/grafana.list'
|
||||
msg_ok "Set up Grafana Repository"
|
||||
|
||||
msg_info "Installing Grafana"
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y grafana
|
||||
systemctl start grafana-server
|
||||
systemctl enable --now -q grafana-server.service
|
||||
msg_ok "Installed Grafana"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get autoremove
|
||||
$STD apt-get autoclean
|
||||
msg_ok "Cleaned"
|
|
@ -1 +0,0 @@
|
|||
# InfluxDB lxc
|
|
@ -1 +0,0 @@
|
|||
# Pi-hole lxc
|
|
@ -1 +0,0 @@
|
|||
# Prometheus lxc
|
|
@ -1 +0,0 @@
|
|||
# Umami lxc
|
|
@ -1 +0,0 @@
|
|||
# Wastebin lxc
|
|
@ -1 +0,0 @@
|
|||
# Whoogle lxc
|
|
@ -1,61 +0,0 @@
|
|||
# Software
|
||||
|
||||
> [!IMPORTANT]\
|
||||
> This is a work in progress. As I work with more lxc containers in Proxmox and a couple of Turnkey appliances for virtualizing certain VMs for cybersecurity, I'll list them in a table here.
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Infrastructure</th>
|
||||
<th>OS</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<img src="https://img.shields.io/badge/docker-0db7ed?style=for-the-badge&logo=docker&logoColor=white" alt="Docker">
|
||||
<img src="https://img.shields.io/badge/GitLab-FC6D26?style=for-the-badge&logo=gitlab&logoColor=white">
|
||||
<img src="https://img.shields.io/badge/Proxmox-E57000?style=for-the-badge&logo=proxmox&logoColor=white">
|
||||
<img src="https://img.shields.io/badge/k3s-FFC61C?style=for-the-badge&logo=k3s&logoColor=white">
|
||||
<img src="https://img.shields.io/badge/Nginx-009639?style=for-the-badge&logo=nginx&logoColor=white">
|
||||
<img src="https://img.shields.io/badge/Prometheus-E6522C?style=for-the-badge&logo=prometheus&logoColor=white">
|
||||
</td>
|
||||
<td valign="top" width="50%">
|
||||
<img src="https://img.shields.io/badge/mac%20os-000000?style=for-the-badge&logo=apple&logoColor=white">
|
||||
<img src="https://img.shields.io/badge/Debian-d70a53?style=for-the-badge&logo=debian&logoColor=white">
|
||||
<img src="https://img.shields.io/badge/Windows_11-0078d4?style=for-the-badge&logo=windows-11&logoColor=white">
|
||||
<img src="https://img.shields.io/badge/Ubuntu-dd4814?style=for-the-badge&logo=ubuntu&logoColor=white">
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Tools & Runners</th>
|
||||
<th>Software</th>
|
||||
<tbody>
|
||||
<td valign="top" width="50%">
|
||||
<img src="https://img.shields.io/badge/GitHub_Actions-2088FF?style=for-the-badge&logo=github-actions&logoColor=white" alt="">
|
||||
<img src="https://img.shields.io/badge/pihole-96060c?style=for-the-badge&logo=pihole&logoColor=white" alt="">
|
||||
<img src="https://img.shields.io/badge/mqtt-660006?style=for-the-badge&logo=mqtt&logoColor=white" alt="">
|
||||
<img src="https://img.shields.io/badge/Raspberry%20Pi-A22846?style=for-the-badge&logo=Raspberry%20Pi&logoColor=white" alt="">
|
||||
<img src="https://img.shields.io/badge/uptimekuma-5cdd8b?style=for-the-badge&logo=uptimekuma&logoColor=white" alt="">
|
||||
</td>
|
||||
<td valign="top" width="50%">
|
||||
<img src="https://img.shields.io/badge/Wiki%20js-1976D2?style=for-the-badge&logo=Wikidotjs&logoColor=white" alt="">
|
||||
<img src="https://img.shields.io/badge/jellyfin-00a4dc?style=for-the-badge&logo=jellyfin&logoColor=white" alt="">
|
||||
<img src="https://img.shields.io/badge/InfluxDB-22ADF6?style=for-the-badge&logo=InfluxDB&logoColor=white" alt="">
|
||||
<img src="https://img.shields.io/badge/esphome-000000?style=for-the-badge&logo=esphome&logoColor=white" alt="">
|
||||
<img src="https://img.shields.io/badge/Grafana-F2F4F9?style=for-the-badge&logo=grafana&logoColor=orange&labelColor=F2F4F9" alt="">
|
||||
<img src="https://img.shields.io/badge/Nextcloud-0082C9?style=for-the-badge&logo=Nextcloud&logoColor=white" alt="">
|
||||
<img src="https://img.shields.io/badge/wireguard-88171a?style=for-the-badge&logo=wireguard&logoColor=white" alt="">
|
||||
</td>
|
||||
</tbody>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
# Ubuntu VMs Inside of Proxmox
|
||||
|
||||
These days, I have figured out that if I need privileged access to a container, an LXC is not the best choice. For instance, if I want to add storage to a container, it is almost impossible to do so with an LXC without making the container a privleged container which comes with security implications that I don't want to manage.
|
||||
|
||||
So now I run mission-critical services in Ubuntu VMs on Proxmox. I do not use the tteck's scripts for this; I download an ISO file and upload it to storage on Proxmox and create the VM from scratch.
|
||||
|
||||
## Difficult to manage publically shared services
|
||||
|
||||
For services I want to share publicly that are a real pita to setup and run on my home server, I use [PikaPods](https://pikapods.com). Yes, it costs money, but I've been running Audiobookshelf for a month now on an initial $5 top up. It's a pittance for such a wonderful service, and each "Pod" has a different price for usage. They don't keep your data and the funds go directly to the open source developers apps you are using.
|
|
@ -1,8 +0,0 @@
|
|||
# Docker Examples
|
||||
|
||||
> [!NOTE]\
|
||||
> I installed Docker on an Ubuntu Live Server with Portainer installed for easy Docker Compose configuration
|
||||
>
|
||||
>
|
||||
|
||||
|
|
@ -1 +0,0 @@
|
|||
# You environment variables go here
|
|
@ -1,86 +0,0 @@
|
|||
---
|
||||
version: "3.4"
|
||||
|
||||
services:
|
||||
postgresql:
|
||||
image: docker.io/library/postgres:12-alpine
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
|
||||
start_period: 20s
|
||||
interval: 30s
|
||||
retries: 5
|
||||
timeout: 5s
|
||||
volumes:
|
||||
- database:/var/lib/postgresql/data
|
||||
environment:
|
||||
POSTGRES_PASSWORD: ${PG_PASS:?database password required}
|
||||
POSTGRES_USER: ${PG_USER:-authentik}
|
||||
POSTGRES_DB: ${PG_DB:-authentik}
|
||||
env_file:
|
||||
- .env
|
||||
redis:
|
||||
image: docker.io/library/redis:alpine
|
||||
command: --save 60 1 --loglevel warning
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
|
||||
start_period: 20s
|
||||
interval: 30s
|
||||
retries: 5
|
||||
timeout: 3s
|
||||
volumes:
|
||||
- redis:/data
|
||||
server:
|
||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.2.2}
|
||||
restart: unless-stopped
|
||||
command: server
|
||||
environment:
|
||||
AUTHENTIK_REDIS__HOST: redis
|
||||
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
||||
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
|
||||
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
|
||||
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
|
||||
volumes:
|
||||
- ./media:/media
|
||||
- ./custom-templates:/templates
|
||||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- "${COMPOSE_PORT_HTTP:-9000}:9000"
|
||||
- "${COMPOSE_PORT_HTTPS:-9443}:9443"
|
||||
depends_on:
|
||||
- postgresql
|
||||
- redis
|
||||
worker:
|
||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.2.2}
|
||||
restart: unless-stopped
|
||||
command: worker
|
||||
environment:
|
||||
AUTHENTIK_REDIS__HOST: redis
|
||||
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
||||
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
|
||||
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
|
||||
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
|
||||
# `user: root` and the docker socket volume are optional.
|
||||
# See more for the docker socket integration here:
|
||||
# https://goauthentik.io/docs/outposts/integrations/docker
|
||||
# Removing `user: root` also prevents the worker from fixing the permissions
|
||||
# on the mounted folders, so when removing this make sure the folders have the correct UID/GID
|
||||
# (1000:1000 by default)
|
||||
user: root
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./media:/media
|
||||
- ./certs:/certs
|
||||
- ./custom-templates:/templates
|
||||
env_file:
|
||||
- .env
|
||||
depends_on:
|
||||
- postgresql
|
||||
- redis
|
||||
volumes:
|
||||
database:
|
||||
driver: local
|
||||
redis:
|
||||
driver: local
|
|
@ -1,2 +0,0 @@
|
|||
FROM haproxy:2.3
|
||||
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
|
|
@ -1,2 +0,0 @@
|
|||
# HAProxy for Proxy Server and Load Balancer
|
||||
|
|
@ -1 +0,0 @@
|
|||
# Homepage
|
|
@ -1,92 +0,0 @@
|
|||
---
|
||||
- Repositories:
|
||||
- Homelab:
|
||||
- icon: si-github-#FFFFFF
|
||||
href: https://github.com/twhite96/homelab-config
|
||||
description: Homelab config
|
||||
- Homelab Docs:
|
||||
- icon: si-github-#FFFFFF
|
||||
href: https://github.com/twhite96/tifflabs
|
||||
description: Homelab repo
|
||||
|
||||
- Selfhosted Projects:
|
||||
- tiff labs:
|
||||
- icon: /icons/tifflabsgit.png
|
||||
href: https://tifflabs-software.org
|
||||
description: Labs software hosting
|
||||
- cyber:
|
||||
- icon: /icons/htbavatar.png
|
||||
href: https://projects.0x8c.run
|
||||
description: '0x8c project hosting'
|
||||
|
||||
- Cloud Platforms:
|
||||
- Linode:
|
||||
- icon: /icons/linode.png
|
||||
href: https://cloud.linode.com/linodes
|
||||
description: Linode
|
||||
- Hetzner:
|
||||
- icon: si-hetzner-#D50C2D
|
||||
href: https://accounts.hetzner.com/login
|
||||
description: Hetzner
|
||||
|
||||
- Hosting Platforms:
|
||||
- Vercel:
|
||||
- icon: si-vercel-#000000
|
||||
href: https://vercel.com/dashboard
|
||||
description: Vercel
|
||||
- Cloudron:
|
||||
- icon: si-cloudron-#03A9F4
|
||||
href: https://console.cloudron.io/
|
||||
description: Cloudron
|
||||
|
||||
- Documentation:
|
||||
- Docs site:
|
||||
- icon: si-materialformkdocs-#ff0000
|
||||
href: https://docs.tifflabs.org
|
||||
description: Smart home docs
|
||||
- labs.network:
|
||||
- icon: si-bookstack-#B91C1C
|
||||
href: https://presto-horn.tifflabs.org
|
||||
description: Network wiki
|
||||
|
||||
- Public Projects:
|
||||
- Homelab Config:
|
||||
- icon: /icons/tifflabs.svg
|
||||
href: https://homelab.tiff.tools
|
||||
description: Homelab Config
|
||||
- Forgejo Homelab Projects:
|
||||
- icon: si-forgejo-#FB923C
|
||||
href: https://tifflabs-software.org/explore
|
||||
description: Public personal projects
|
||||
|
||||
- Cyber Learning:
|
||||
- Hack The Box:
|
||||
- icon: si-hackthebox-#9FEF00
|
||||
href: https://academy.hackthebox.com
|
||||
description: HTB Academy
|
||||
- TryHackMe:
|
||||
- icon: si-tryhackme-#88CC15
|
||||
href: https://tryhackme.com/
|
||||
description: TryHackMe
|
||||
|
||||
- Productivity:
|
||||
- Email:
|
||||
- icon: si-protonmail-#6D4AFF
|
||||
href: https://mail.proton.me/
|
||||
description: Email
|
||||
- Calendar:
|
||||
- icon: si-protoncalendar-#50B0E9
|
||||
href: https://calendar.proton.me
|
||||
description: Calendar
|
||||
|
||||
- Public Notes and Writeups:
|
||||
- Notes:
|
||||
- icon: si-obsidian-#7C3AED
|
||||
href: https://notes.0x8c.org
|
||||
description: Public Notes
|
||||
- Wiki:
|
||||
icon: si-gitbook-#BBDDE5
|
||||
href: https://app.gitbook.com/?source=pwa
|
||||
description: Write-ups
|
||||
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
---
|
||||
- Infrastructure and Data:
|
||||
- Proxmox:
|
||||
href: {{proxmox-url}}
|
||||
icon: proxmox.svg
|
||||
description: prx-prod-2
|
||||
siteMonitor: {{proxmox-url}}
|
||||
widget:
|
||||
type: proxmox
|
||||
url: {{proxmox-url}}
|
||||
username: {{HOMEPAGE_VAR_PROXMOX_USERNAME}}
|
||||
password: {{HOMEPAGE_VAR_PROXMOX_PASSWORD}}
|
||||
|
||||
- Authentik:
|
||||
icon: authentik.png
|
||||
showStats: true
|
||||
href: {{url}}
|
||||
widget:
|
||||
type: authentik
|
||||
fields: ["users"]
|
||||
url: {{url}}
|
||||
key: {{HOMEPAGE_VAR_AUTHENTIK_KEY}}
|
||||
|
||||
- Monitoring:
|
||||
- UptimeKuma:
|
||||
icon: uptime-kuma.svg
|
||||
href: https://uptime.tifflabs.org
|
||||
widget:
|
||||
description: uptime on pve main
|
||||
fields: ["up", "down", "uptime", "incident"]
|
||||
icon: uptime-kuma.svg
|
||||
type: uptimekuma
|
||||
url: {{url}}
|
||||
slug: lab
|
||||
- Pi-hole:
|
||||
icon: pi-hole.svg
|
||||
siteMonitor: {{url}}
|
||||
widget:
|
||||
type: pihole
|
||||
fields: ["queries", "blocked", "blocked_percent", "gravity"]
|
||||
url: {{url}} # required if running v6 or higher, defaults to 5
|
||||
key: {{HOMEPAGE_VAR_PIHOLE_TOKEN}}
|
||||
- Grafana:
|
||||
icon: grafana.svg
|
||||
siteMonitor: {{url}}
|
||||
widget:
|
||||
type: grafana
|
||||
fields: ["dashboards", "datasources", "totalalerts", "alertstriggered"]
|
||||
url: {{url}}
|
||||
username: tifflabs
|
||||
password: {{HOMEPAGE_VAR_GRAFANA_PASSWORD}}
|
||||
- Tailscale:
|
||||
icon: tailscale.svg
|
||||
showStats: true
|
||||
widget:
|
||||
type: tailscale
|
||||
fields: ["address", "last_seen", "expires"]
|
||||
deviceid: {{device-id}}
|
||||
key: {{key}}
|
||||
|
||||
- Media:
|
||||
- Jellyfin:
|
||||
icon: jellyfin.svg
|
||||
description: tailnet jellyfin
|
||||
widget:
|
||||
type: jellyfin
|
||||
url: {{url}}
|
||||
fields: ["movies", "series", "episodes", "songs"]
|
||||
key: {{HOMEPAGE_VAR_JELLYFIN_KEY}}
|
||||
enableBlocks: true # optional, defaults to false
|
||||
enableNowPlaying: true # optional, defaults to true
|
||||
enableUser: true # optional, defaults to false
|
||||
showEpisodeNumber: true # optional, defaults to false
|
||||
expandOneStreamToTwoRows: false # optional, defaults to true
|
||||
- Calibre:
|
||||
icon: calibre.svg
|
||||
siteMonitor: https://books.tiffs.app
|
||||
href: 'https://books.tiffs.app'
|
||||
widget:
|
||||
type: calibreweb
|
||||
url: https://books.tiffs.app
|
||||
fields: ["books", "authors", "categories", "series"]
|
||||
username: {{username}}
|
||||
password: {{password}}
|
||||
- FreshRSS:
|
||||
icon: freshrss.svg
|
||||
description: RSS Feed
|
||||
href: https://rss.tifflabs.dev
|
||||
showStats: true
|
||||
widget:
|
||||
type: freshrss
|
||||
url: https://rss.tifflabs.dev
|
||||
fields: ["subscriptions", "unread"]
|
||||
username: {{username}}
|
||||
password: {{password}}
|
||||
|
||||
- Audiobookshelf:
|
||||
icon: audiobookshelf.svg
|
||||
siteMonitor: https://audiobooks.tiffs.app
|
||||
href: https://audiobooks.tiffs.app
|
||||
description: Audiobook Library
|
||||
showStats: true
|
||||
widget:
|
||||
type: audiobookshelf
|
||||
fields: ["podcasts", "podcastsDuration", "books", "booksDuration"]
|
||||
url: https://audiobooks.tiffs.app
|
||||
key: {{HOMEPAGE_VAR_AUDIOBOOKSHELF_KEY}}
|
|
@ -1,74 +0,0 @@
|
|||
---
|
||||
title: Dash
|
||||
headerStyle: clean
|
||||
|
||||
background:
|
||||
blur: xl
|
||||
brightness: 90
|
||||
opacity: 60
|
||||
|
||||
cardBlur: sm
|
||||
|
||||
useEqualHeights: true
|
||||
|
||||
providers:
|
||||
|
||||
|
||||
quicklaunch:
|
||||
searchDescriptions: true
|
||||
hideInternetSearch: true
|
||||
showSearchSuggestions: true
|
||||
hideVisitURL: true
|
||||
|
||||
layout:
|
||||
- Services:
|
||||
Infrastructure and Data:
|
||||
icon: proxmox.svg
|
||||
style: row
|
||||
columns: 2
|
||||
Monitoring:
|
||||
icon: grafana.svg
|
||||
style: row
|
||||
columns: 4
|
||||
Media:
|
||||
icon: jellyfin.svg
|
||||
style: row
|
||||
columns: 4
|
||||
|
||||
- Bookmarks:
|
||||
Repositories:
|
||||
icon: github.svg
|
||||
style: row
|
||||
columns: 2
|
||||
Selfhosted Projects:
|
||||
icon: codeberg.svg
|
||||
style: row
|
||||
columns: 2
|
||||
Cloud Platforms:
|
||||
icon: hetzner.svg
|
||||
style: row
|
||||
columns: 2
|
||||
Hosting Platforms:
|
||||
icon: cloudron.svg
|
||||
style: row
|
||||
columns: 2
|
||||
Documentation:
|
||||
icon: bookstack.svg
|
||||
style: row
|
||||
columns: 2
|
||||
Public Projects:
|
||||
icon: forgejo.svg
|
||||
style: row
|
||||
columns: 2
|
||||
Cyber Learning:
|
||||
icon: hackthebox.svg
|
||||
style: row
|
||||
columns: 2
|
||||
Productivity:
|
||||
icon: protonmail.svg
|
||||
style: row
|
||||
columns: 2
|
||||
Public Notes and Writeups:
|
||||
icon: obsidian.svg
|
||||
style: row
|
||||
columns: 2
|
|
@ -1,26 +0,0 @@
|
|||
---
|
||||
- resources:
|
||||
cpu: true
|
||||
memory: true
|
||||
disk: /
|
||||
|
||||
- search:
|
||||
provider: custom
|
||||
url: # whoogle # google, duckduckgo, bing, baidu, brave or custom
|
||||
focus: true
|
||||
target: _blank # One of _self, _blank, _parent or _top
|
||||
|
||||
- openweathermap:
|
||||
latitude: {{long}}
|
||||
longitude: {{lat}}
|
||||
units: imperial # or imperial
|
||||
provider: openweathermap
|
||||
cache: 5 # Time in minutes to cache API responses, to stay within limits
|
||||
format: # optional, Intl.NumberFormat options
|
||||
maximumFractionDigits: 0
|
||||
|
||||
- datetime:
|
||||
text_size: m
|
||||
format:
|
||||
timeStyle: short
|
||||
hourCycle: h12
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
services:
|
||||
homepage:
|
||||
image: ghcr.io/gethomepage/homepage:latest
|
||||
container_name: homepage-prod-1
|
||||
ports:
|
||||
- 3000:3000
|
||||
env_file:
|
||||
- ".env.example"
|
||||
volumes:
|
||||
- ./config:/app/config # Make sure your local config directory exists
|
||||
- ./images:/app/public/images
|
||||
- ./icons:/app/public/icons
|
||||
restart: unless-stopped
|
|
@ -1,76 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2024 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT
|
||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||
|
||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y curl
|
||||
$STD apt-get install -y sudo
|
||||
$STD apt-get install -y mc
|
||||
$STD apt-get install -y make
|
||||
$STD apt-get install -y g++
|
||||
$STD apt-get install -y gcc
|
||||
$STD apt-get install -y ca-certificates
|
||||
$STD apt-get install -y gnupg
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setting up Node.js Repository"
|
||||
mkdir -p /etc/apt/keyrings
|
||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
||||
msg_ok "Set up Node.js Repository"
|
||||
|
||||
msg_info "Installing Node.js"
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y nodejs
|
||||
$STD npm install -g pnpm
|
||||
msg_ok "Installed Node.js"
|
||||
|
||||
RELEASE=$(curl -s https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
msg_info "Installing Homepage v${RELEASE} (Patience)"
|
||||
wget -q https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz
|
||||
$STD tar -xzf v${RELEASE}.tar.gz
|
||||
mkdir -p /opt/homepage/config
|
||||
mv homepage-${RELEASE}/* /opt/homepage
|
||||
rm -rf homepage-${RELEASE}
|
||||
cd /opt/homepage
|
||||
cp /opt/homepage/src/skeleton/* /opt/homepage/config
|
||||
$STD pnpm install
|
||||
$STD pnpm build
|
||||
msg_ok "Installed Homepage v${RELEASE}"
|
||||
|
||||
msg_info "Creating Service"
|
||||
service_path="/etc/systemd/system/homepage.service"
|
||||
echo "[Unit]
|
||||
Description=Homepage
|
||||
After=network.target
|
||||
StartLimitIntervalSec=0
|
||||
[Service]
|
||||
Type=simple
|
||||
Restart=always
|
||||
RestartSec=1
|
||||
User=root
|
||||
WorkingDirectory=/opt/homepage/
|
||||
ExecStart=pnpm start
|
||||
[Install]
|
||||
WantedBy=multi-user.target" >$service_path
|
||||
$STD systemctl enable --now homepage
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get autoremove
|
||||
$STD apt-get autoclean
|
||||
msg_ok "Cleaned"
|
|
@ -1,166 +0,0 @@
|
|||
# Example Docker Compose config file for PhotoPrism (Linux / AMD64)
|
||||
#
|
||||
# Note:
|
||||
# - Running PhotoPrism on a server with less than 4 GB of swap space or setting a memory/swap limit can cause unexpected
|
||||
# restarts ("crashes"), for example, when the indexer temporarily needs more memory to process large files.
|
||||
# - If you install PhotoPrism on a public server outside your home network, please always run it behind a secure
|
||||
# HTTPS reverse proxy such as Traefik or Caddy. Your files and passwords will otherwise be transmitted
|
||||
# in clear text and can be intercepted by anyone, including your provider, hackers, and governments:
|
||||
# https://docs.photoprism.app/getting-started/proxies/traefik/
|
||||
#
|
||||
# Setup Guides:
|
||||
# - https://docs.photoprism.app/getting-started/docker-compose/
|
||||
# - https://docs.photoprism.app/getting-started/raspberry-pi/
|
||||
# - https://www.photoprism.app/kb/activation
|
||||
#
|
||||
# Troubleshooting Checklists:
|
||||
# - https://docs.photoprism.app/getting-started/troubleshooting/
|
||||
# - https://docs.photoprism.app/getting-started/troubleshooting/docker/
|
||||
# - https://docs.photoprism.app/getting-started/troubleshooting/mariadb/
|
||||
#
|
||||
# CLI Commands:
|
||||
# - https://docs.photoprism.app/getting-started/docker-compose/#command-line-interface
|
||||
#
|
||||
# All commands may have to be prefixed with "sudo" when not running as root.
|
||||
# This will point the home directory shortcut ~ to /root in volume mounts.
|
||||
|
||||
services:
|
||||
# traefik:
|
||||
# image: traefik:v2.11
|
||||
# restart: unless-stopped
|
||||
# ports:
|
||||
# - "80:80"
|
||||
# - "443:443"
|
||||
# volumes:
|
||||
# - "./traefik.yaml:/etc/traefik/traefik.yaml"
|
||||
# - "./traefik/data:/data"
|
||||
# - "/var/run/docker.sock:/var/run/docker.sock"
|
||||
photoprism:
|
||||
## Use photoprism/photoprism:preview for testing preview builds:
|
||||
image: photoprism/photoprism:latest
|
||||
## Don't enable automatic restarts until PhotoPrism has been properly configured and tested!
|
||||
## If the service gets stuck in a restart loop, this points to a memory, filesystem, network, or database issue:
|
||||
## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors
|
||||
# restart: unless-stopped
|
||||
stop_grace_period: 10s
|
||||
depends_on:
|
||||
- mariadb
|
||||
security_opt:
|
||||
- seccomp:unconfined
|
||||
- apparmor:unconfined
|
||||
## Server port mapping in the format "Host:Container". To use a different port, change the host port on
|
||||
## the left-hand side and keep the container port, e.g. "80:2342" (for HTTP) or "443:2342 (for HTTPS):
|
||||
ports:
|
||||
- "2342:2342"
|
||||
# labels:
|
||||
# - "traefik.http.routers.photoprism.rule=Host(`photos.tiff.ws`)"
|
||||
# - "traefik.http.routers.photoprism.tls=true"
|
||||
# - "traefik.http.routers.photoprism.tls.certresolver=myresolver"
|
||||
## Before you start the service, please check the following config options (and change them as needed):
|
||||
## https://docs.photoprism.app/getting-started/config-options/
|
||||
environment:
|
||||
PHOTOPRISM_ADMIN_USER: "admin" # admin login username
|
||||
PHOTOPRISM_ADMIN_PASSWORD: # initial admin password (8-72 characters)
|
||||
PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password)
|
||||
PHOTOPRISM_SITE_URL: # server URL in the format "http(s)://domain.name(:port)/(path)"
|
||||
PHOTOPRISM_DISABLE_TLS: "false" # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available
|
||||
PHOTOPRISM_DEFAULT_TLS: "true" # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available
|
||||
PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video)
|
||||
PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip)
|
||||
PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic
|
||||
PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality)
|
||||
PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features
|
||||
PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup
|
||||
PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server
|
||||
PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API
|
||||
PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow
|
||||
PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow)
|
||||
PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow)
|
||||
PHOTOPRISM_DISABLE_VECTORS: "false" # disables vector graphics support
|
||||
PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW images
|
||||
PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW images (reduces performance)
|
||||
PHOTOPRISM_SIDECAR_YAML: "true" # creates YAML sidecar files to back up picture metadata
|
||||
PHOTOPRISM_BACKUP_ALBUMS: "true" # creates YAML files to back up album metadata
|
||||
PHOTOPRISM_BACKUP_DATABASE: "true" # creates regular backups based on the configured schedule
|
||||
PHOTOPRISM_BACKUP_SCHEDULE: "daily" # backup SCHEDULE in cron format (e.g. "0 12 * * *" for daily at noon) or at a random time (daily, weekly)
|
||||
PHOTOPRISM_INDEX_SCHEDULE: "" # indexing SCHEDULE in cron format (e.g. "@every 3h" for every 3 hours; "" to disable)
|
||||
PHOTOPRISM_AUTO_INDEX: 300 # delay before automatically indexing files in SECONDS when uploading via WebDAV (-1 to disable)
|
||||
PHOTOPRISM_AUTO_IMPORT: -1 # delay before automatically importing files in SECONDS when uploading via WebDAV (-1 to disable)
|
||||
PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow)
|
||||
PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow)
|
||||
# PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that does not require a separate database server
|
||||
PHOTOPRISM_DATABASE_DRIVER: "mysql" # MariaDB 10.5.12+ (MySQL successor) offers significantly better performance compared to SQLite
|
||||
PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" # MariaDB database server (hostname:port)
|
||||
PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB database schema name
|
||||
PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB database user name
|
||||
PHOTOPRISM_DATABASE_PASSWORD: # MariaDB database user password
|
||||
PHOTOPRISM_SITE_CAPTION: #your caption goes here
|
||||
PHOTOPRISM_SITE_DESCRIPTION: # meta site description
|
||||
PHOTOPRISM_SITE_AUTHOR: # meta site author
|
||||
## Video Transcoding (https://docs.photoprism.app/getting-started/advanced/transcoding/):
|
||||
# PHOTOPRISM_FFMPEG_ENCODER: "software" # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi)
|
||||
# PHOTOPRISM_FFMPEG_SIZE: "1920" # video size limit in pixels (720-7680) (default: 3840)
|
||||
# PHOTOPRISM_FFMPEG_BITRATE: "32" # video bitrate limit in Mbit/s (default: 50)
|
||||
## Run/install on first startup (options: update https gpu ffmpeg tensorflow davfs clitools clean):
|
||||
# PHOTOPRISM_INIT: "https gpu tensorflow"
|
||||
## Run as a non-root user after initialization (supported: 0, 33, 50-99, 500-600, and 900-1200):
|
||||
# PHOTOPRISM_UID: 1000
|
||||
# PHOTOPRISM_GID: 1000
|
||||
# PHOTOPRISM_UMASK: 0000
|
||||
## Start as non-root user before initialization (supported: 0, 33, 50-99, 500-600, and 900-1200):
|
||||
# user: "1000:1000"
|
||||
## Share hardware devices with FFmpeg and TensorFlow (optional):
|
||||
# devices:
|
||||
# - "/dev/dri:/dev/dri" # Intel QSV
|
||||
# - "/dev/nvidia0:/dev/nvidia0" # Nvidia CUDA
|
||||
# - "/dev/nvidiactl:/dev/nvidiactl"
|
||||
# - "/dev/nvidia-modeset:/dev/nvidia-modeset"
|
||||
# - "/dev/nvidia-nvswitchctl:/dev/nvidia-nvswitchctl"
|
||||
# - "/dev/nvidia-uvm:/dev/nvidia-uvm"
|
||||
# - "/dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools"
|
||||
# - "/dev/video11:/dev/video11" # Video4Linux Video Encode Device (h264_v4l2m2m)
|
||||
working_dir: "/photoprism" # do not change or remove
|
||||
## Storage Folders: "~" is a shortcut for your home directory, "." for the current directory
|
||||
volumes:
|
||||
# "/host/folder:/photoprism/folder" # Example
|
||||
- "./photos:/photoprism/originals" # Original media files (DO NOT REMOVE)
|
||||
# - "/example/family:/photoprism/originals/family" # *Additional* media folders can be mounted like this
|
||||
- "./storage.usb:/photoprism/import" # *Optional* base folder from which files can be imported to originals
|
||||
- "./storage:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE)
|
||||
|
||||
## MariaDB Database Server (recommended)
|
||||
## see https://docs.photoprism.app/getting-started/faq/#should-i-use-sqlite-mariadb-or-mysql
|
||||
mariadb:
|
||||
image: mariadb:11
|
||||
## If MariaDB gets stuck in a restart loop, this points to a memory or filesystem issue:
|
||||
## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5s
|
||||
security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
|
||||
- seccomp:unconfined
|
||||
- apparmor:unconfined
|
||||
command: --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
|
||||
## Never store database files on an unreliable device such as a USB flash drive, an SD card, or a shared network folder:
|
||||
volumes:
|
||||
- "./database:/var/lib/mysql" # DO NOT REMOVE
|
||||
environment:
|
||||
MARIADB_AUTO_UPGRADE: "1"
|
||||
MARIADB_INITDB_SKIP_TZINFO: "1"
|
||||
MARIADB_DATABASE: "photoprism"
|
||||
MARIADB_USER: "photoprism"
|
||||
MARIADB_PASSWORD: "x!rPM.jTjcKLPuhLHdGs78A9W"
|
||||
MARIADB_ROOT_PASSWORD: "WkDdnDehFdALm*N@EUqE6e7MC"
|
||||
|
||||
## Watchtower upgrades services automatically (optional)
|
||||
## see https://docs.photoprism.app/getting-started/updates/#watchtower
|
||||
## activate via "COMPOSE_PROFILES=update docker compose up -d"
|
||||
watchtower:
|
||||
restart: unless-stopped
|
||||
image: containrrr/watchtower
|
||||
profiles: ["update"]
|
||||
environment:
|
||||
WATCHTOWER_CLEANUP: "true"
|
||||
WATCHTOWER_POLL_INTERVAL: 7200 # checks for updates every two hours
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
- "~/.docker/config.json:/config.json" # optional, for authentication if you have a Docker Hub account
|
|
@ -1,10 +0,0 @@
|
|||
# qBittorent Web Ui Install
|
||||
|
||||
> [!NOTE]\
|
||||
> This gist is taken from an article on Linux Babe which is linked in the Gist. If curious now, you can find the article here: [Linux Babe How to Install qBIttorent Web UI on Ubuntu 18.04 Desktip or Server](https://www.linuxbabe.com/ubuntu/install-qbittorrent-ubuntu-18-04-desktop-server)
|
||||
>
|
||||
>
|
||||
|
||||
|
||||
<a href="https://gist.github.com/twhite96/631d3544ce01c47a6de787f6c47af60b"> <img src="https://github-readme-stats-git-master-twhite96.vercel.app/api/gist?id=631d3544ce01c47a6de787f6c47af60b"></a>
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2024 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT
|
||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||
|
||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y curl
|
||||
$STD apt-get install -y sudo
|
||||
$STD apt-get install -y mc
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing qbittorrent-nox"
|
||||
$STD apt-get install -y qbittorrent-nox
|
||||
mkdir -p /.config/qBittorrent/
|
||||
cat <<EOF >/.config/qBittorrent/qBittorrent.conf
|
||||
[Preferences]
|
||||
WebUI\Password_PBKDF2="@ByteArray(amjeuVrF3xRbgzqWQmes5A==:XK3/Ra9jUmqUc4RwzCtrhrkQIcYczBl90DJw2rT8DFVTss4nxpoRhvyxhCf87ahVE3SzD8K9lyPdpyUCfmVsUg==)"
|
||||
WebUI\Port=8090
|
||||
WebUI\UseUPnP=false
|
||||
WebUI\Username=admin
|
||||
EOF
|
||||
msg_ok "qbittorrent-nox"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/qbittorrent-nox.service
|
||||
[Unit]
|
||||
Description=qBittorrent client
|
||||
After=network.target
|
||||
[Service]
|
||||
ExecStart=/usr/bin/qbittorrent-nox --webui-port=8090
|
||||
Restart=always
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now qbittorrent-nox
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get autoremove
|
||||
$STD apt-get autoclean
|
||||
msg_ok "Cleaned"
|
|
@ -1,3 +0,0 @@
|
|||
# *arr Apps
|
||||
|
||||
The apps you use when you want to keep track of the ISO files you get.
|
|
@ -1,28 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2024 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# License: MIT
|
||||
# https://github.com/tteck/Proxmox/raw/main/LICENSE
|
||||
|
||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y curl
|
||||
$STD apt-get install -y sudo
|
||||
$STD apt-get install -y mc
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get autoremove
|
||||
$STD apt-get autoclean
|
||||
msg_ok "Cleaned"
|