Reorganize into by-container and monolith folders.

This commit is contained in:
whitney 2024-08-07 16:42:11 -07:00
parent 2f1deb81b9
commit 8f65ee046b
80 changed files with 192 additions and 22 deletions

View File

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

Before

Width:  |  Height:  |  Size: 5.5 MiB

After

Width:  |  Height:  |  Size: 5.5 MiB

View File

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

Before

Width:  |  Height:  |  Size: 293 KiB

After

Width:  |  Height:  |  Size: 293 KiB

View File

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 5.4 MiB

After

Width:  |  Height:  |  Size: 5.4 MiB

View File

Before

Width:  |  Height:  |  Size: 1.7 MiB

After

Width:  |  Height:  |  Size: 1.7 MiB

View File

Before

Width:  |  Height:  |  Size: 262 KiB

After

Width:  |  Height:  |  Size: 262 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -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

46
monolith/README.md Normal file
View File

@ -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

View File

@ -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

3
monolith/traefik/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
acme.json
traefik.toml
traefik-dynamic.toml

View File

@ -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"

View File

@ -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"

View File

@ -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