diff --git a/Makefile b/containers/Makefile similarity index 100% rename from Makefile rename to containers/Makefile diff --git a/code-server/.gitignore b/containers/code-server/.gitignore similarity index 100% rename from code-server/.gitignore rename to containers/code-server/.gitignore diff --git a/code-server/README.md b/containers/code-server/README.md similarity index 100% rename from code-server/README.md rename to containers/code-server/README.md diff --git a/code-server/docker-compose.yml.blanked b/containers/code-server/docker-compose.yml.blanked similarity index 100% rename from code-server/docker-compose.yml.blanked rename to containers/code-server/docker-compose.yml.blanked diff --git a/covid19/.gitignore b/containers/covid19/.gitignore similarity index 100% rename from covid19/.gitignore rename to containers/covid19/.gitignore diff --git a/covid19/README.md b/containers/covid19/README.md similarity index 100% rename from covid19/README.md rename to containers/covid19/README.md diff --git a/covid19/docker-compose.yml.blanked b/containers/covid19/docker-compose.yml.blanked similarity index 100% rename from covid19/docker-compose.yml.blanked rename to containers/covid19/docker-compose.yml.blanked diff --git a/gitea/.gitignore b/containers/gitea/.gitignore similarity index 100% rename from gitea/.gitignore rename to containers/gitea/.gitignore diff --git a/gitea/README.md b/containers/gitea/README.md similarity index 100% rename from gitea/README.md rename to containers/gitea/README.md diff --git a/gitea/docker-compose.yml.blanked b/containers/gitea/docker-compose.yml.blanked similarity index 100% rename from gitea/docker-compose.yml.blanked rename to containers/gitea/docker-compose.yml.blanked diff --git a/grafana/.gitignore b/containers/grafana/.gitignore similarity index 100% rename from grafana/.gitignore rename to containers/grafana/.gitignore diff --git a/grafana/README.md b/containers/grafana/README.md similarity index 100% rename from grafana/README.md rename to containers/grafana/README.md diff --git a/grafana/docker-compose.yml.blanked b/containers/grafana/docker-compose.yml.blanked similarity index 100% rename from grafana/docker-compose.yml.blanked rename to containers/grafana/docker-compose.yml.blanked diff --git a/grafana/grafana.ini b/containers/grafana/grafana.ini similarity index 100% rename from grafana/grafana.ini rename to containers/grafana/grafana.ini diff --git a/grafana/prometheus.yml b/containers/grafana/prometheus.yml similarity index 100% rename from grafana/prometheus.yml rename to containers/grafana/prometheus.yml diff --git a/homepage/.gitignore b/containers/homepage/.gitignore similarity index 100% rename from homepage/.gitignore rename to containers/homepage/.gitignore diff --git a/homepage/Dockerfile b/containers/homepage/Dockerfile similarity index 100% rename from homepage/Dockerfile rename to containers/homepage/Dockerfile diff --git a/homepage/README.md b/containers/homepage/README.md similarity index 100% rename from homepage/README.md rename to containers/homepage/README.md diff --git a/homepage/docker-compose.yml.blanked b/containers/homepage/docker-compose.yml.blanked similarity index 100% rename from homepage/docker-compose.yml.blanked rename to containers/homepage/docker-compose.yml.blanked diff --git a/homepage/nginx/nginx.conf b/containers/homepage/nginx/nginx.conf similarity index 100% rename from homepage/nginx/nginx.conf rename to containers/homepage/nginx/nginx.conf diff --git a/homepage/website/about.html b/containers/homepage/website/about.html similarity index 100% rename from homepage/website/about.html rename to containers/homepage/website/about.html diff --git a/homepage/website/index.html b/containers/homepage/website/index.html similarity index 100% rename from homepage/website/index.html rename to containers/homepage/website/index.html diff --git a/homepage/website/script.js b/containers/homepage/website/script.js similarity index 100% rename from homepage/website/script.js rename to containers/homepage/website/script.js diff --git a/homepage/website/services.html b/containers/homepage/website/services.html similarity index 100% rename from homepage/website/services.html rename to containers/homepage/website/services.html diff --git a/homepage/website/static/about/mount-olomana.jpg b/containers/homepage/website/static/about/mount-olomana.jpg similarity index 100% rename from homepage/website/static/about/mount-olomana.jpg rename to containers/homepage/website/static/about/mount-olomana.jpg diff --git a/homepage/website/static/about/olomana.jpg b/containers/homepage/website/static/about/olomana.jpg similarity index 100% rename from homepage/website/static/about/olomana.jpg rename to containers/homepage/website/static/about/olomana.jpg diff --git a/homepage/website/static/about/whitney.jpg b/containers/homepage/website/static/about/whitney.jpg similarity index 100% rename from homepage/website/static/about/whitney.jpg rename to containers/homepage/website/static/about/whitney.jpg diff --git a/homepage/website/static/favicon.ico b/containers/homepage/website/static/favicon.ico similarity index 100% rename from homepage/website/static/favicon.ico rename to containers/homepage/website/static/favicon.ico diff --git a/homepage/website/static/services/code-server.png b/containers/homepage/website/static/services/code-server.png similarity index 100% rename from homepage/website/static/services/code-server.png rename to containers/homepage/website/static/services/code-server.png diff --git a/homepage/website/static/services/covid-tracker.png b/containers/homepage/website/static/services/covid-tracker.png similarity index 100% rename from homepage/website/static/services/covid-tracker.png rename to containers/homepage/website/static/services/covid-tracker.png diff --git a/homepage/website/static/services/discord.png b/containers/homepage/website/static/services/discord.png similarity index 100% rename from homepage/website/static/services/discord.png rename to containers/homepage/website/static/services/discord.png diff --git a/homepage/website/static/services/gitea.png b/containers/homepage/website/static/services/gitea.png similarity index 100% rename from homepage/website/static/services/gitea.png rename to containers/homepage/website/static/services/gitea.png diff --git a/homepage/website/static/services/minecraft.png b/containers/homepage/website/static/services/minecraft.png similarity index 100% rename from homepage/website/static/services/minecraft.png rename to containers/homepage/website/static/services/minecraft.png diff --git a/homepage/website/static/services/photoprism.png b/containers/homepage/website/static/services/photoprism.png similarity index 100% rename from homepage/website/static/services/photoprism.png rename to containers/homepage/website/static/services/photoprism.png diff --git a/homepage/website/static/services/plex.png b/containers/homepage/website/static/services/plex.png similarity index 100% rename from homepage/website/static/services/plex.png rename to containers/homepage/website/static/services/plex.png diff --git a/homepage/website/static/services/recipes.png b/containers/homepage/website/static/services/recipes.png similarity index 100% rename from homepage/website/static/services/recipes.png rename to containers/homepage/website/static/services/recipes.png diff --git a/homepage/website/styles.css b/containers/homepage/website/styles.css similarity index 100% rename from homepage/website/styles.css rename to containers/homepage/website/styles.css diff --git a/jenkins/.gitignore b/containers/jenkins/.gitignore similarity index 100% rename from jenkins/.gitignore rename to containers/jenkins/.gitignore diff --git a/jenkins/README.md b/containers/jenkins/README.md similarity index 100% rename from jenkins/README.md rename to containers/jenkins/README.md diff --git a/jenkins/docker-compose.yml.blanked b/containers/jenkins/docker-compose.yml.blanked similarity index 100% rename from jenkins/docker-compose.yml.blanked rename to containers/jenkins/docker-compose.yml.blanked diff --git a/metube/.gitignore b/containers/metube/.gitignore similarity index 100% rename from metube/.gitignore rename to containers/metube/.gitignore diff --git a/metube/README.md b/containers/metube/README.md similarity index 100% rename from metube/README.md rename to containers/metube/README.md diff --git a/metube/docker-compose.yml.blanked b/containers/metube/docker-compose.yml.blanked similarity index 100% rename from metube/docker-compose.yml.blanked rename to containers/metube/docker-compose.yml.blanked diff --git a/minecraft/.gitignore b/containers/minecraft/.gitignore similarity index 100% rename from minecraft/.gitignore rename to containers/minecraft/.gitignore diff --git a/minecraft/README.md b/containers/minecraft/README.md similarity index 100% rename from minecraft/README.md rename to containers/minecraft/README.md diff --git a/minecraft/docker-compose.yml.blanked b/containers/minecraft/docker-compose.yml.blanked similarity index 100% rename from minecraft/docker-compose.yml.blanked rename to containers/minecraft/docker-compose.yml.blanked diff --git a/monica/.gitignore b/containers/monica/.gitignore similarity index 100% rename from monica/.gitignore rename to containers/monica/.gitignore diff --git a/monica/README.md b/containers/monica/README.md similarity index 100% rename from monica/README.md rename to containers/monica/README.md diff --git a/monica/docker-compose.yml.blanked b/containers/monica/docker-compose.yml.blanked similarity index 100% rename from monica/docker-compose.yml.blanked rename to containers/monica/docker-compose.yml.blanked diff --git a/nordvpn/.gitignore b/containers/nordvpn/.gitignore similarity index 100% rename from nordvpn/.gitignore rename to containers/nordvpn/.gitignore diff --git a/nordvpn/README.md b/containers/nordvpn/README.md similarity index 100% rename from nordvpn/README.md rename to containers/nordvpn/README.md diff --git a/containers/nordvpn/docker-compose.yml.NORDLYNX b/containers/nordvpn/docker-compose.yml.NORDLYNX new file mode 100644 index 0000000..b1c5e3a --- /dev/null +++ b/containers/nordvpn/docker-compose.yml.NORDLYNX @@ -0,0 +1,38 @@ +version: "3" + +services: + nordlynx: + image: ghcr.io/bubuntux/nordlynx:latest + container_name: nordlynx + restart: unless-stopped + cap_add: + - NET_ADMIN + environment: + - TOKEN=e9f2ab4999032b61f29845afdc0067aa389827546411b4891ff0ec4368ab6cc1 + - PRIVATE_KEY=mDnVa4EMbnlSF8Sg/i657hf+NRyWQxQjKTwkImD/HWE= + - NET_LOCAL=192.168.1.0/24 + - TZ=America/Los_Angeles + - QUERY=filters\[country_id\]=202 + ports: + - "8888:8888" + labels: + - traefik.enable=false + + qb: + image: ghcr.io/linuxserver/qbittorrent:latest + container_name: qb + restart: unless-stopped + network_mode: service:nordlynx + environment: + - PUID=1000 + - PGID=1000 + - WEBUI_PORT=8888 + volumes: + - /data/write/qb/appdata/config:/config + - /data/write/qb/downloads:/downloads + - ./plugins:/plugins + depends_on: + - nordlynx + labels: + - traefik.enable=false + diff --git a/nordvpn/docker-compose.yml.blanked b/containers/nordvpn/docker-compose.yml.blanked similarity index 100% rename from nordvpn/docker-compose.yml.blanked rename to containers/nordvpn/docker-compose.yml.blanked diff --git a/photoprism/.gitignore b/containers/photoprism/.gitignore similarity index 100% rename from photoprism/.gitignore rename to containers/photoprism/.gitignore diff --git a/photoprism/README.md b/containers/photoprism/README.md similarity index 100% rename from photoprism/README.md rename to containers/photoprism/README.md diff --git a/photoprism/docker-compose.yml.blanked b/containers/photoprism/docker-compose.yml.blanked similarity index 100% rename from photoprism/docker-compose.yml.blanked rename to containers/photoprism/docker-compose.yml.blanked diff --git a/plex/.gitignore b/containers/plex/.gitignore similarity index 100% rename from plex/.gitignore rename to containers/plex/.gitignore diff --git a/plex/README.md b/containers/plex/README.md similarity index 100% rename from plex/README.md rename to containers/plex/README.md diff --git a/plex/docker-compose.yml.blanked b/containers/plex/docker-compose.yml.blanked similarity index 100% rename from plex/docker-compose.yml.blanked rename to containers/plex/docker-compose.yml.blanked diff --git a/portainer/.gitignore b/containers/portainer/.gitignore similarity index 100% rename from portainer/.gitignore rename to containers/portainer/.gitignore diff --git a/portainer/README.md b/containers/portainer/README.md similarity index 100% rename from portainer/README.md rename to containers/portainer/README.md diff --git a/portainer/docker-compose.yml.blanked b/containers/portainer/docker-compose.yml.blanked similarity index 100% rename from portainer/docker-compose.yml.blanked rename to containers/portainer/docker-compose.yml.blanked diff --git a/traefik/.gitignore b/containers/traefik/.gitignore similarity index 100% rename from traefik/.gitignore rename to containers/traefik/.gitignore diff --git a/traefik/README.md b/containers/traefik/README.md similarity index 100% rename from traefik/README.md rename to containers/traefik/README.md diff --git a/traefik/docker-compose.yml.blanked b/containers/traefik/docker-compose.yml.blanked similarity index 100% rename from traefik/docker-compose.yml.blanked rename to containers/traefik/docker-compose.yml.blanked diff --git a/traefik/step1-docker-compose.yml b/containers/traefik/step1-docker-compose.yml similarity index 100% rename from traefik/step1-docker-compose.yml rename to containers/traefik/step1-docker-compose.yml diff --git a/traefik/step2-docker-compose.yml b/containers/traefik/step2-docker-compose.yml similarity index 100% rename from traefik/step2-docker-compose.yml rename to containers/traefik/step2-docker-compose.yml diff --git a/traefik/step3-docker-compose.yml b/containers/traefik/step3-docker-compose.yml similarity index 100% rename from traefik/step3-docker-compose.yml rename to containers/traefik/step3-docker-compose.yml diff --git a/traefik/step4-docker-compose.yml b/containers/traefik/step4-docker-compose.yml similarity index 100% rename from traefik/step4-docker-compose.yml rename to containers/traefik/step4-docker-compose.yml diff --git a/traefik/step5-docker-compose.yml b/containers/traefik/step5-docker-compose.yml similarity index 100% rename from traefik/step5-docker-compose.yml rename to containers/traefik/step5-docker-compose.yml diff --git a/traefik/step5-traefik-dynamic.toml b/containers/traefik/step5-traefik-dynamic.toml similarity index 100% rename from traefik/step5-traefik-dynamic.toml rename to containers/traefik/step5-traefik-dynamic.toml diff --git a/traefik/step5-traefik.toml b/containers/traefik/step5-traefik.toml similarity index 100% rename from traefik/step5-traefik.toml rename to containers/traefik/step5-traefik.toml diff --git a/traefik/traefik-dynamic.toml.blanked b/containers/traefik/traefik-dynamic.toml.blanked similarity index 100% rename from traefik/traefik-dynamic.toml.blanked rename to containers/traefik/traefik-dynamic.toml.blanked diff --git a/traefik/traefik.toml.BLANKED b/containers/traefik/traefik.toml.BLANKED similarity index 100% rename from traefik/traefik.toml.BLANKED rename to containers/traefik/traefik.toml.BLANKED diff --git a/monolith/README.md b/monolith/README.md new file mode 100644 index 0000000..b9d7331 --- /dev/null +++ b/monolith/README.md @@ -0,0 +1,46 @@ +# Olomana - All in One +This is the one-dockerfile version of olomana containing the stable "production" containers. +Better than going module by module but don't let that stop you. +Run everything with a simple `docker-compose down && docker system prune && docker-compose up -d` +Run one thing with a simple `docker-compose up serviceName` + +## Setup + +### Traefik + +#### Instructions + +##### Files +Create/Fill in the following files in a `traefik/` directory under this one using the provided templates: +- `traefik.toml` +- `traefik-dynamic.toml`. + +The file `traefik/acme.json` will be generated on first run. Make sure it eventually gets permission code 600. You might need to create a blank file before the first run. + +##### Volumes +Mount each of these files into the container, including the docker socket: +- `/var/run/docker.sock:/var/run/docker.sock:ro` +- `./traefik/traefik.toml:/etc/traefik/traefik.toml` +- `./traefik/traefik-dynamic.toml:/etc/traefik/dynamic/traefik-dynamic.toml` +- `./traefik/acme.json:/etc/acme.json` + +#### References +https://doc.traefik.io/traefik/getting-started/quick-start/ +https://doc.traefik.io/traefik/user-guides/docker-compose/basic-example/ + +### Code-Server + +#### Instructions + +##### Volumes +Mount the persistant storage somewhere. +- `/pwspool/software/code-server/config:/config` + +##### Metadata +Re-roll hashed passwords. + +#### References +https://docs.linuxserver.io/images/docker-code-server/ +https://coder.com/docs/code-server/latest/install#docker +https://hub.docker.com/r/linuxserver/code-server +https://github.com/coder/code-server/blob/main/docs/FAQ.md#can-i-store-my-password-hashed diff --git a/monolith/docker-compose.yml b/monolith/docker-compose.yml new file mode 100644 index 0000000..f72f10d --- /dev/null +++ b/monolith/docker-compose.yml @@ -0,0 +1,46 @@ +version: "3" + +networks: + traefik: + driver: bridge + name: traefik + +services: + traefik: + image: traefik:latest + container_name: traefik + restart: unless-stopped + networks: + - traefik + ports: + - "80:80" + - "8080:8080" + - "443:443" + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - ./traefik.toml:/etc/traefik/traefik.toml + - ./traefik-dynamic.toml:/etc/traefik/dynamic/traefik-dynamic.toml + - ./acme.json:/etc/acme.json + + code-server: + image: lscr.io/linuxserver/code-server:latest + container_name: code-server + restart: unless-stopped + networks: + - traefik + volumes: + - /pwspool/software/code-server/config:/config + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + - HASHED_PASSWORD=$$argon2i$$v=19$$m=4096,t=3,p=1$$o70PqzdDrUvzijIN+Nd+uw$$8wsBelBomYLsaKFelBAf+v8KqpS7TMsfFvmouarbehg + - SUDO_PASSWORD_HASH=$$argon2i$$v=19$$m=4096,t=3,p=1$$o70PqzdDrUvzijIN+Nd+uw$$8wsBelBomYLsaKFelBAf+v8KqpS7TMsfFvmouarbehg + - PROXY_DOMAIN=code.whitney.rip + - DEFAULT_WORKSPACE=/config/workspace + labels: + - traefik.http.routers.code.rule=Host(`code.whitney.rip`) + - traefik.http.routers.code.tls=true + - traefik.http.routers.code.tls.certresolver=lets-encrypt + - traefik.http.services.code.loadbalancer.server.port=8443 + diff --git a/monolith/traefik/.gitignore b/monolith/traefik/.gitignore new file mode 100644 index 0000000..8736ec4 --- /dev/null +++ b/monolith/traefik/.gitignore @@ -0,0 +1,3 @@ +acme.json +traefik.toml +traefik-dynamic.toml diff --git a/monolith/traefik/traefik-dynamic.toml.BLANKED b/monolith/traefik/traefik-dynamic.toml.BLANKED new file mode 100644 index 0000000..3dd15ca --- /dev/null +++ b/monolith/traefik/traefik-dynamic.toml.BLANKED @@ -0,0 +1,18 @@ +# Whitney Traefik Dynamic Config + +[http.middlewares] + [http.middlewares.redirect-to-www.redirectRegex] + regex = "^https?://example.com(.*)" + replacement = "http://www.example.com$${1}" + permanent = true + [http.middlewares.simpleAuth.basicAuth] + users = ["olomana:HASHED_PASSWORD_HERE"] + +[http.routers.api] + rule = "Host(`monitor.example.rip`)" + entrypoints = "websecure" + middlewares = ["simpleAuth"] + service = "api@internal" + [http.routers.api.tls] + certResolver = "lets-encrypt" + diff --git a/monolith/traefik/traefik.toml.BLANKED b/monolith/traefik/traefik.toml.BLANKED new file mode 100644 index 0000000..e4d9f82 --- /dev/null +++ b/monolith/traefik/traefik.toml.BLANKED @@ -0,0 +1,41 @@ +# Whitney Traefik Static Config +[global] + checkNewVersion = true + sendAnonymousUsage = false + +[entryPoints] + [entryPoints.web] + address = ":80" + [entryPoints.web.http.redirections.entryPoint] + to = "websecure" + scheme = "https" + [entryPoints.websecure] + address = ":443" + +[api] + dashboard = true + +[file] + watch = true + +[certificatesResolvers.lets-encrypt.acme] + email = "your-email@example.com" + storage = "/etc/acme.json" + # Use LetsEncrypt Staging Server + # caServer: "https://acme-staging-v02.api.letsencrypt.org/directory" + # Use LetsEncrypt Prod Server + caServer = "https://acme-v02.api.letsencrypt.org/directory" + [certificatesResolvers.lets-encrypt.acme.tlsChallenge] + +[providers] + [providers.docker] + watch = true + network = "traefik" + [providers.file] + directory = "/etc/traefik/dynamic/" + filename = "traefik-dynamic.toml" + watch = true + +[log] + level = "info" + diff --git a/traefik/docker-compose.yml b/traefik/docker-compose.yml deleted file mode 100644 index 9a36ea7..0000000 --- a/traefik/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -version: "3" - -networks: - traefik-network: - -services: - traefik: - image: traefik:latest - container_name: traefik - restart: unless-stopped - networks: - - traefik-network - ports: - - "80:80" - - "8080:8080" - - "443:443" - volumes: - - /var/run/docker.sock:/var/run/docker.sock:ro - - ./traefik.toml:/etc/traefik/traefik.toml - - ./traefik-dynamic.toml:/etc/traefik/dynamic/traefik-dynamic.toml - - ./acme.json:/etc/acme.json -