diff --git a/Docker-Swarm/portainer-agent-stack.yml b/Docker-Swarm/portainer-agent-stack.yml new file mode 100644 index 0000000..d2dac40 --- /dev/null +++ b/Docker-Swarm/portainer-agent-stack.yml @@ -0,0 +1,38 @@ +version: '3.2' + +services: + agent: + image: portainer/agent:2.19.4 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /var/lib/docker/volumes:/var/lib/docker/volumes + networks: + - agent_network + deploy: + mode: global + placement: + constraints: [node.platform.os == linux] + + portainer: + image: portainer/portainer-ce:2.19.4 + command: -H tcp://tasks.agent:9001 --tlsskipverify + ports: + - "9443:9443" + - "9000:9000" + - "8000:8000" + volumes: + - type: bind + source: /mnt/Portainer + target: /data + networks: + - agent_network + deploy: + mode: replicated + replicas: 1 + placement: + constraints: [node.role == manager] + +networks: + agent_network: + driver: overlay + attachable: true \ No newline at end of file diff --git a/Docker-Swarm/swarm-3-nodes.sh b/Docker-Swarm/swarm-3-nodes.sh index c60cd2b..57a562f 100644 --- a/Docker-Swarm/swarm-3-nodes.sh +++ b/Docker-Swarm/swarm-3-nodes.sh @@ -38,9 +38,6 @@ user=ubuntu # Interface used on remotes interface=eth0 -# Set the virtual IP address (VIP) -vip=192.168.3.50 - # Array of all manager nodes allmanagers=($manager1 $manager2 $manager3) @@ -53,12 +50,6 @@ workers=($worker1 $worker2) # Array of all all=($manager1 $worker1 $worker2) -# Array of all minus manager1 -allnomanager1=($manager2 $manager3 $worker1 $worker2) - -#Loadbalancer IP range -lbrange=192.168.3.60-192.168.3.80 - #ssh certificate name variable certName=id_rsa @@ -132,9 +123,7 @@ echo -e " \033[32;5mManager1 Completed\033[0m" managerToken=`cat manager` workerToken=`cat worker` - - -# Step 4: Connect additional worker +# Step 3: Connect additional worker for newnode in "${workers[@]}"; do ssh -tt $user@$newnode -i ~/.ssh/$certName sudo su <> /etc/fstab @@ -169,9 +158,10 @@ EOF done # OPTIONAL # -# Step 7: Add Portainer +# Step 6: Add Portainer ssh -tt $user@$manager1 -i ~/.ssh/$certName sudo su < sh -s - +``` +then servers: +``` +sudo systemctl restart k3s +``` +or agents +``` +sudo systemctl restart k3s-agent +``` + +# Upgrade Longhorn +``` +kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/longhorn.yaml +``` + +# Upgrade Metallb +1. Change version on the delete command to the version you are currently running (e.g., v0.13.11) +2. Change version on the apply to the new version (e.g., v0.13.12) +3. Ensure your Lbrange is still the one you want (check ipAddressPool.yaml) +``` +kubectl delete -f https://raw.githubusercontent.com/metallb/metallb/v0.13.11/config/manifests/metallb-native.yaml +kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.12/config/manifests/metallb-native.yaml +kubectl apply -f ipAddressPool.yaml +kubectl apply -f https://raw.githubusercontent.com/JamesTurland/JimsGarage/main/Kubernetes/RKE2/l2Advertisement.yaml +``` + +# Upgrade Kube-VIP +1. Delete the daemonset in Rancher or use kubectl delete +2. Redeploy the daemonset with updated values (check kube-vip file) +``` +kubectl delete -f kube-vip +kubectl apply -f kube-vip +``` \ No newline at end of file diff --git a/Ollama/docker-compose.yml b/Ollama/docker-compose.yml new file mode 100644 index 0000000..b503635 --- /dev/null +++ b/Ollama/docker-compose.yml @@ -0,0 +1,44 @@ +version: '3.6' + +services: + ollama: + # Uncomment below for GPU support + # deploy: + # resources: + # reservations: + # devices: + # - driver: nvidia + # count: 1 + # capabilities: + # - gpu + volumes: + - ollama:/root/.ollama + # Uncomment below to expose Ollama API outside the container stack + # ports: + # - 11434:11434 + container_name: ollama + pull_policy: always + tty: true + restart: unless-stopped + image: ollama/ollama:latest + + ollama-webui: + build: + context: . + args: + OLLAMA_API_BASE_URL: '/ollama/api' + dockerfile: Dockerfile + image: ollama-webui:latest + container_name: ollama-webui + depends_on: + - ollama + ports: + - 3000:8080 + environment: + - "OLLAMA_API_BASE_URL=http://ollama:11434/api" + extra_hosts: + - host.docker.internal:host-gateway + restart: unless-stopped + +volumes: + ollama: {} diff --git a/Ollama/readme.md b/Ollama/readme.md new file mode 100644 index 0000000..7621e5d --- /dev/null +++ b/Ollama/readme.md @@ -0,0 +1,5 @@ +1. Clone the repo from: https://github.com/ollama-webui/ollama-webui +2. Tweak the docker-compose to your liking +3. Run the container: sudo docker compose up -d + +Let it build :) \ No newline at end of file diff --git a/Pihole/docker-compose.yml b/Pihole/docker-compose.yml index 34ef122..b42f423 100644 --- a/Pihole/docker-compose.yml +++ b/Pihole/docker-compose.yml @@ -41,8 +41,7 @@ services: environment: TZ: 'Europe/London' WEBPASSWORD: 'password' - DNS1: '172.70.9.2#5053' - DNS2: 'no' + PIHOLE_DNS_: '172.70.9.2#5053' DNSMASQ_LISTENING: 'all' VIRTUAL_HOST: pihole.yourdomain.com # Volumes store your data between container upgrades diff --git a/Unifi-Controller/docker-compose.yaml b/Unifi-Controller/docker-compose.yaml new file mode 100644 index 0000000..6b09acf --- /dev/null +++ b/Unifi-Controller/docker-compose.yaml @@ -0,0 +1,62 @@ +--- +version: "2.1" +services: + unifi-network-application: + image: lscr.io/linuxserver/unifi-network-application:latest + container_name: unifi-network-application + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + - MONGO_USER=unifi + - MONGO_PASS=5nHgg3G0cH9d + - MONGO_HOST=unifi-db + - MONGO_PORT=27017 + - MONGO_DBNAME=unifi + - MEM_LIMIT=1024 #optional + - MEM_STARTUP=1024 #optional + # - MONGO_TLS= #optional + # - MONGO_AUTHSOURCE= #optional + volumes: + - /home/ubuntu/docker/unifi-controller:/config + ports: + - 8443:8443 + - 3478:3478/udp + - 10001:10001/udp + - 8080:8080 + - 1900:1900/udp #optional + - 8843:8843 #optional + - 8880:8880 #optional + - 6789:6789 #optional + - 5514:5514/udp #optional + labels: + - "traefik.enable=true" + - "traefik.http.routers.unifi.entrypoints=http" + - "traefik.http.routers.unifi.rule=Host(`unifi.jimsgarage.co.uk`)" + - "traefik.http.middlewares.unifi-https-redirect.redirectscheme.scheme=https" + - "traefik.http.routers.unifi.middlewares=unifi-https-redirect" + - "traefik.http.routers.unifi-secure.entrypoints=https" + - "traefik.http.routers.unifi-secure.rule=Host(`unifi.jimsgarage.co.uk`)" + - "traefik.http.routers.unifi-secure.tls=true" + - "traefik.http.routers.unifi-secure.service=unifi" + - "traefik.http.services.unifi.loadbalancer.server.port=8443" + - "traefik.http.services.unifi.loadbalancer.server.scheme=https" + - "traefik.docker.network=proxy" + networks: + proxy: + unifi: + restart: unless-stopped + unifi-db: + image: docker.io/mongo:4.4 + container_name: unifi-db + volumes: + - /home/ubuntu/docker/unifi-controller-db:/data/db + - /home/ubuntu/docker-compose/unifi-controller/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro + networks: + unifi: + restart: unless-stopped + +networks: + proxy: + external: true + unifi: \ No newline at end of file diff --git a/Unifi-Controller/init-mongo.js b/Unifi-Controller/init-mongo.js new file mode 100644 index 0000000..a200d9e --- /dev/null +++ b/Unifi-Controller/init-mongo.js @@ -0,0 +1,2 @@ +db.getSiblingDB("unifi").createUser({user: "unifi", pwd: "5nHgg3G0cH9d", roles: [{role: "dbOwner", db: "unifi"}]}); +db.getSiblingDB("unifi_stat").createUser({user: "unifi", pwd: "5nHgg3G0cH9d", roles: [{role: "dbOwner", db: "unifi_stat"}]}); \ No newline at end of file