diff --git a/assets/Friday, 26 Jul 2024 19:06:55.png b/assets/Friday, 26 Jul 2024 19:06:55.png new file mode 100644 index 0000000..4caa8b1 Binary files /dev/null and b/assets/Friday, 26 Jul 2024 19:06:55.png differ diff --git a/assets/Saturday, 27 Jul 2024 16:05:06.png b/assets/Saturday, 27 Jul 2024 16:05:06.png new file mode 100644 index 0000000..8d1f79d Binary files /dev/null and b/assets/Saturday, 27 Jul 2024 16:05:06.png differ diff --git a/assets/Wednesday, 24 Jul 2024 19:03:21.png b/assets/Wednesday, 24 Jul 2024 19:03:21.png new file mode 100644 index 0000000..295842a Binary files /dev/null and b/assets/Wednesday, 24 Jul 2024 19:03:21.png differ diff --git a/assets/Wednesday, 24 Jul 2024 19:03:36.png b/assets/Wednesday, 24 Jul 2024 19:03:36.png new file mode 100644 index 0000000..c21b7d1 Binary files /dev/null and b/assets/Wednesday, 24 Jul 2024 19:03:36.png differ diff --git a/assets/Wednesday, 24 Jul 2024 19:03:52.png b/assets/Wednesday, 24 Jul 2024 19:03:52.png new file mode 100644 index 0000000..ac6dab0 Binary files /dev/null and b/assets/Wednesday, 24 Jul 2024 19:03:52.png differ diff --git a/assets/Wednesday, 24 Jul 2024 19:04:06.png b/assets/Wednesday, 24 Jul 2024 19:04:06.png new file mode 100644 index 0000000..b5bb551 Binary files /dev/null and b/assets/Wednesday, 24 Jul 2024 19:04:06.png differ diff --git a/assets/audobookshelf.png b/assets/audobookshelf.png new file mode 100644 index 0000000..c193884 Binary files /dev/null and b/assets/audobookshelf.png differ diff --git a/assets/bookstack.png b/assets/bookstack.png new file mode 100644 index 0000000..976a928 Binary files /dev/null and b/assets/bookstack.png differ diff --git a/assets/freshrss.png b/assets/freshrss.png new file mode 100644 index 0000000..723e023 Binary files /dev/null and b/assets/freshrss.png differ diff --git a/assets/grafana.png b/assets/grafana.png new file mode 100644 index 0000000..e0905e9 Binary files /dev/null and b/assets/grafana.png differ diff --git a/assets/pihole.png b/assets/pihole.png new file mode 100644 index 0000000..d8bd859 Binary files /dev/null and b/assets/pihole.png differ diff --git a/lxc/gitea/README.md b/lxc/gitea/README.md deleted file mode 100644 index b8960c5..0000000 --- a/lxc/gitea/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Self-hosted Gitea - -I self-host Gitea for personal and private projects. I have a couple of orgs on there where I can share projects, however most of the stuff I do there is just for me if and until I want to share those on GitHub. - -You can find my config over at [app.ini](app.ini). \ No newline at end of file diff --git a/lxc/gitea/app.ini b/lxc/gitea/app.ini deleted file mode 100644 index 64ca8c4..0000000 --- a/lxc/gitea/app.ini +++ /dev/null @@ -1,67 +0,0 @@ - -RUN_MODE = prod - -[database] -NAME = # dbname -USER = # dbname -PASSWD = # password -LOG_SQL = false -DB_TYPE = # usually sql -HOST = # host ip -SCHEMA = -SSL_MODE = disable -PATH = /home/git/data/gitea.db - -[server] - -PROTOCOL = unix -ROOT_URL = # or your own domain -HTTP_ADDR = /home/git/run/gitea.sock -UNIX_SOCKET_PERMISSION = 666 -APP_DATA_PATH = /home/git/data -DISABLE_SSH = false -SSH_PORT = 22 -LFS_START_SERVER = true -LFS_JWT_SECRET = # token -OFFLINE_MODE = false - -[markup.restructuredtext] -ENABLED = true -FILE_EXTENSIONS = .rst -RENDER_COMMAND = rst2html -IS_INPUT_FILE = false -ALLOW_ONLY_EXTERNAL_REGISTRATION = false -ENABLE_CAPTCHA = false -REQUIRE_SIGNIN_VIEW = false -DEFAULT_KEEP_EMAIL_PRIVATE = true -DEFAULT_ALLOW_CREATE_ORGANIZATION = true -WORK_PATH = /home/ -NO_REPLY_ADDRESS = noreply@ - -[openid] -ENABLE_OPENID_SIGNUP = true - -[cron.update_checker] -ENABLED = false - -[session] -PROVIDER = file - -[log] -MODE = console -LEVEL = info -ROOT_PATH = /home/git/log - -[repository.pull-request] -DEFAULT_MERGE_STYLE = merge - -[repository.signing] -DEFAULT_TRUST_MODEL = committer - -[security] -INSTALL_LOCK = true -INTERNAL_TOKEN = #token -PASSWORD_HASH_ALGO = # algo - -[oauth2] -JWT_SECRET = # token \ No newline at end of file diff --git a/pikapods/audiobookshelf/docker-compose.yaml b/pikapods/audiobookshelf/docker-compose.yaml new file mode 100644 index 0000000..e84a662 --- /dev/null +++ b/pikapods/audiobookshelf/docker-compose.yaml @@ -0,0 +1,12 @@ +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 \ No newline at end of file diff --git a/portainer/README.md b/portainer/README.md index 67fdcfb..5c0c257 100644 --- a/portainer/README.md +++ b/portainer/README.md @@ -3,4 +3,8 @@ > [!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. \ No newline at end of file diff --git a/proxmox/actualbudget/README.md b/proxmox/actualbudget/README.md new file mode 100644 index 0000000..d8d0c6c --- /dev/null +++ b/proxmox/actualbudget/README.md @@ -0,0 +1,2 @@ +# ActualBudget lxc + diff --git a/proxmox/cloudflared/README.md b/proxmox/cloudflared/README.md index e69de29..72b9cea 100644 --- a/proxmox/cloudflared/README.md +++ b/proxmox/cloudflared/README.md @@ -0,0 +1 @@ +# Cloudflared lxcs \ No newline at end of file diff --git a/proxmox/flaresolverr/README.md b/proxmox/flaresolverr/README.md new file mode 100644 index 0000000..84f8403 --- /dev/null +++ b/proxmox/flaresolverr/README.md @@ -0,0 +1 @@ +# Flaresolverr lxc \ No newline at end of file diff --git a/proxmox/forgejo/README.md b/proxmox/forgejo/README.md new file mode 100644 index 0000000..8c78f2c --- /dev/null +++ b/proxmox/forgejo/README.md @@ -0,0 +1 @@ +# Forgejo lxc \ No newline at end of file diff --git a/proxmox/influxdb/README.md b/proxmox/influxdb/README.md new file mode 100644 index 0000000..8df731c --- /dev/null +++ b/proxmox/influxdb/README.md @@ -0,0 +1 @@ +# InfluxDB lxc \ No newline at end of file diff --git a/proxmox/pihole/README.md b/proxmox/pihole/README.md new file mode 100644 index 0000000..44308e1 --- /dev/null +++ b/proxmox/pihole/README.md @@ -0,0 +1 @@ +# Pi-hole lxc \ No newline at end of file diff --git a/proxmox/prometheus/README.md b/proxmox/prometheus/README.md new file mode 100644 index 0000000..fb4fd07 --- /dev/null +++ b/proxmox/prometheus/README.md @@ -0,0 +1 @@ +# Prometheus lxc \ No newline at end of file diff --git a/proxmox/ubuntu/docker/homepage/icons/htbavatar.png b/proxmox/ubuntu/docker/homepage/icons/htbavatar.png deleted file mode 100644 index b3336b4..0000000 Binary files a/proxmox/ubuntu/docker/homepage/icons/htbavatar.png and /dev/null differ diff --git a/proxmox/ubuntu/docker/homepage/icons/labsn.svg b/proxmox/ubuntu/docker/homepage/icons/labsn.svg deleted file mode 100644 index 0c057a8..0000000 --- a/proxmox/ubuntu/docker/homepage/icons/labsn.svg +++ /dev/null @@ -1,340 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/proxmox/ubuntu/docker/homepage/icons/linode-icon.svg b/proxmox/ubuntu/docker/homepage/icons/linode-icon.svg deleted file mode 100644 index 248a199..0000000 --- a/proxmox/ubuntu/docker/homepage/icons/linode-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/proxmox/ubuntu/docker/homepage/icons/linode.png b/proxmox/ubuntu/docker/homepage/icons/linode.png deleted file mode 100644 index 888479b..0000000 Binary files a/proxmox/ubuntu/docker/homepage/icons/linode.png and /dev/null differ diff --git a/proxmox/ubuntu/docker/homepage/icons/materialformkdocs.svg b/proxmox/ubuntu/docker/homepage/icons/materialformkdocs.svg deleted file mode 100644 index ba7047b..0000000 --- a/proxmox/ubuntu/docker/homepage/icons/materialformkdocs.svg +++ /dev/null @@ -1 +0,0 @@ -Material for MkDocs \ No newline at end of file diff --git a/proxmox/ubuntu/docker/homepage/icons/tcm-logo.png b/proxmox/ubuntu/docker/homepage/icons/tcm-logo.png deleted file mode 100644 index 3dbb741..0000000 Binary files a/proxmox/ubuntu/docker/homepage/icons/tcm-logo.png and /dev/null differ diff --git a/proxmox/ubuntu/docker/homepage/icons/tcm-logo.svg b/proxmox/ubuntu/docker/homepage/icons/tcm-logo.svg deleted file mode 100644 index aa2b4c7..0000000 --- a/proxmox/ubuntu/docker/homepage/icons/tcm-logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - tcm-logo - - - - \ No newline at end of file diff --git a/proxmox/ubuntu/docker/homepage/icons/tifflabs.svg b/proxmox/ubuntu/docker/homepage/icons/tifflabs.svg deleted file mode 100644 index e0c2d17..0000000 --- a/proxmox/ubuntu/docker/homepage/icons/tifflabs.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - 1 - - - - \ No newline at end of file diff --git a/proxmox/ubuntu/docker/homepage/icons/tifflabsgit.png b/proxmox/ubuntu/docker/homepage/icons/tifflabsgit.png deleted file mode 100644 index a50eb98..0000000 Binary files a/proxmox/ubuntu/docker/homepage/icons/tifflabsgit.png and /dev/null differ diff --git a/proxmox/umami/README.md b/proxmox/umami/README.md new file mode 100644 index 0000000..0e2bc1a --- /dev/null +++ b/proxmox/umami/README.md @@ -0,0 +1 @@ +# Umami lxc \ No newline at end of file diff --git a/proxmox/wastebin/README.md b/proxmox/wastebin/README.md new file mode 100644 index 0000000..097566a --- /dev/null +++ b/proxmox/wastebin/README.md @@ -0,0 +1 @@ +# Wastebin lxc \ No newline at end of file diff --git a/proxmox/whoogle/README.md b/proxmox/whoogle/README.md new file mode 100644 index 0000000..a5bfbe3 --- /dev/null +++ b/proxmox/whoogle/README.md @@ -0,0 +1 @@ +# Whoogle lxc diff --git a/proxmox/wikijs/README.md b/proxmox/wikijs/README.md deleted file mode 100644 index 532e8fa..0000000 --- a/proxmox/wikijs/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Wiki.js 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/) \ No newline at end of file diff --git a/proxmox/wikijs/wiki-js.sh b/proxmox/wikijs/wiki-js.sh deleted file mode 100644 index 48a10ee..0000000 --- a/proxmox/wikijs/wiki-js.sh +++ /dev/null @@ -1,83 +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 git -$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 -msg_ok "Installed Node.js" - -msg_info "Installing Wiki.js" -mkdir -p /opt/wikijs -cd /opt/wikijs -$STD wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz -tar xzf wiki-js.tar.gz -rm wiki-js.tar.gz - -cat </opt/wikijs/config.yml -bindIP: 0.0.0.0 -port: 3000 -db: - type: sqlite - storage: /opt/wikijs/db.sqlite -logLevel: info -logFormat: default -dataPath: /opt/wikijs/data -bodyParserLimit: 5mb -EOF -$STD npm rebuild sqlite3 -msg_ok "Installed Wiki.js" - -msg_info "Creating Service" -service_path="/etc/systemd/system/wikijs.service" - -echo "[Unit] -Description=Wiki.js -After=network.target - -[Service] -Type=simple -ExecStart=/usr/bin/node server -Restart=always -User=root -Environment=NODE_ENV=production -WorkingDirectory=/opt/wikijs - -[Install] -WantedBy=multi-user.target" >$service_path -$STD systemctl enable --now wikijs -msg_ok "Created Service" - -motd_ssh -customize - -msg_info "Cleaning up" -$STD apt-get autoremove -$STD apt-get autoclean -msg_ok "Cleaned" \ No newline at end of file diff --git a/ubuntu/README.md b/ubuntu/README.md new file mode 100644 index 0000000..eca6821 --- /dev/null +++ b/ubuntu/README.md @@ -0,0 +1,9 @@ +# 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. \ No newline at end of file diff --git a/proxmox/ubuntu/docker/README.md b/ubuntu/docker/README.md similarity index 100% rename from proxmox/ubuntu/docker/README.md rename to ubuntu/docker/README.md diff --git a/ubuntu/docker/authentik/.env.example b/ubuntu/docker/authentik/.env.example new file mode 100644 index 0000000..763c07e --- /dev/null +++ b/ubuntu/docker/authentik/.env.example @@ -0,0 +1 @@ +# You environment variables go here \ No newline at end of file diff --git a/ubuntu/docker/authentik/docker-compose.yml b/ubuntu/docker/authentik/docker-compose.yml new file mode 100644 index 0000000..572be32 --- /dev/null +++ b/ubuntu/docker/authentik/docker-compose.yml @@ -0,0 +1,86 @@ +--- +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 diff --git a/proxmox/ubuntu/docker/haproxy/Dockerfile b/ubuntu/docker/haproxy/Dockerfile similarity index 100% rename from proxmox/ubuntu/docker/haproxy/Dockerfile rename to ubuntu/docker/haproxy/Dockerfile diff --git a/proxmox/ubuntu/docker/haproxy/README.md b/ubuntu/docker/haproxy/README.md similarity index 100% rename from proxmox/ubuntu/docker/haproxy/README.md rename to ubuntu/docker/haproxy/README.md diff --git a/proxmox/ubuntu/docker/homepage/README.md b/ubuntu/docker/homepage/README.md similarity index 100% rename from proxmox/ubuntu/docker/homepage/README.md rename to ubuntu/docker/homepage/README.md diff --git a/proxmox/ubuntu/docker/homepage/config/bookmarks.yaml b/ubuntu/docker/homepage/config/bookmarks.yaml similarity index 96% rename from proxmox/ubuntu/docker/homepage/config/bookmarks.yaml rename to ubuntu/docker/homepage/config/bookmarks.yaml index 3645fec..bc68588 100644 --- a/proxmox/ubuntu/docker/homepage/config/bookmarks.yaml +++ b/ubuntu/docker/homepage/config/bookmarks.yaml @@ -36,7 +36,7 @@ description: Vercel - Cloudron: - icon: si-cloudron-#03A9F4 - href: https://console.cloudron.io/#/cloudron/94ea2702-ac33-4b80-a81a-b4af56df058e + href: https://console.cloudron.io/ description: Cloudron - Documentation: diff --git a/proxmox/ubuntu/docker/homepage/config/custom.css b/ubuntu/docker/homepage/config/custom.css similarity index 100% rename from proxmox/ubuntu/docker/homepage/config/custom.css rename to ubuntu/docker/homepage/config/custom.css diff --git a/proxmox/ubuntu/docker/homepage/config/custom.js b/ubuntu/docker/homepage/config/custom.js similarity index 100% rename from proxmox/ubuntu/docker/homepage/config/custom.js rename to ubuntu/docker/homepage/config/custom.js diff --git a/proxmox/ubuntu/docker/homepage/config/docker.yaml b/ubuntu/docker/homepage/config/docker.yaml similarity index 100% rename from proxmox/ubuntu/docker/homepage/config/docker.yaml rename to ubuntu/docker/homepage/config/docker.yaml diff --git a/proxmox/ubuntu/docker/homepage/config/kubernetes.yaml b/ubuntu/docker/homepage/config/kubernetes.yaml similarity index 100% rename from proxmox/ubuntu/docker/homepage/config/kubernetes.yaml rename to ubuntu/docker/homepage/config/kubernetes.yaml diff --git a/proxmox/ubuntu/docker/homepage/config/services.yaml b/ubuntu/docker/homepage/config/services.yaml similarity index 100% rename from proxmox/ubuntu/docker/homepage/config/services.yaml rename to ubuntu/docker/homepage/config/services.yaml diff --git a/proxmox/ubuntu/docker/homepage/config/settings.yaml b/ubuntu/docker/homepage/config/settings.yaml similarity index 100% rename from proxmox/ubuntu/docker/homepage/config/settings.yaml rename to ubuntu/docker/homepage/config/settings.yaml diff --git a/proxmox/ubuntu/docker/homepage/config/widgets.yaml b/ubuntu/docker/homepage/config/widgets.yaml similarity index 100% rename from proxmox/ubuntu/docker/homepage/config/widgets.yaml rename to ubuntu/docker/homepage/config/widgets.yaml diff --git a/proxmox/ubuntu/docker/homepage/docker-compose.yaml b/ubuntu/docker/homepage/docker-compose.yaml similarity index 100% rename from proxmox/ubuntu/docker/homepage/docker-compose.yaml rename to ubuntu/docker/homepage/docker-compose.yaml diff --git a/proxmox/ubuntu/docker/homepage/homepage.sh b/ubuntu/docker/homepage/homepage.sh similarity index 100% rename from proxmox/ubuntu/docker/homepage/homepage.sh rename to ubuntu/docker/homepage/homepage.sh diff --git a/ubuntu/docker/photoprism/docker-compose.yml b/ubuntu/docker/photoprism/docker-compose.yml new file mode 100644 index 0000000..b591d24 --- /dev/null +++ b/ubuntu/docker/photoprism/docker-compose.yml @@ -0,0 +1,166 @@ +# 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 diff --git a/ubuntu/docker/qbittorrent/README.md b/ubuntu/docker/qbittorrent/README.md new file mode 100644 index 0000000..5e6ad6c --- /dev/null +++ b/ubuntu/docker/qbittorrent/README.md @@ -0,0 +1,10 @@ +# 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) +> +> + + + + diff --git a/proxmox/qbittorrent/qbittorrent.sh b/ubuntu/docker/qbittorrent/qbittorrent.sh similarity index 100% rename from proxmox/qbittorrent/qbittorrent.sh rename to ubuntu/docker/qbittorrent/qbittorrent.sh diff --git a/ubuntu/servarr/README.md b/ubuntu/servarr/README.md new file mode 100644 index 0000000..cbd0ff7 --- /dev/null +++ b/ubuntu/servarr/README.md @@ -0,0 +1,3 @@ +# *arr Apps + +The apps you use when you want to keep track of the ISO files you get. \ No newline at end of file diff --git a/proxmox/ubuntu/ubuntu.sh b/ubuntu/ubuntu.sh similarity index 100% rename from proxmox/ubuntu/ubuntu.sh rename to ubuntu/ubuntu.sh diff --git a/lxc/README.md b/vps/README.md similarity index 100% rename from lxc/README.md rename to vps/README.md diff --git a/proxmox/qbittorrent/README.md b/vps/server-1/README.md similarity index 100% rename from proxmox/qbittorrent/README.md rename to vps/server-1/README.md diff --git a/proxmox/ubuntu/README.md b/vps/server-1/coolify/README.md similarity index 100% rename from proxmox/ubuntu/README.md rename to vps/server-1/coolify/README.md diff --git a/vps/server-2/README.md b/vps/server-2/README.md new file mode 100644 index 0000000..e69de29 diff --git a/vps/server-2/docker/README.md b/vps/server-2/docker/README.md new file mode 100644 index 0000000..e69de29