Reorganize into by-container and monolith folders.
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 5.5 MiB After Width: | Height: | Size: 5.5 MiB |
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 293 KiB After Width: | Height: | Size: 293 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 5.4 MiB After Width: | Height: | Size: 5.4 MiB |
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 1.7 MiB |
Before Width: | Height: | Size: 262 KiB After Width: | Height: | Size: 262 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
38
containers/nordvpn/docker-compose.yml.NORDLYNX
Normal 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
@ -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
|
46
monolith/docker-compose.yml
Normal 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
@ -0,0 +1,3 @@
|
|||||||
|
acme.json
|
||||||
|
traefik.toml
|
||||||
|
traefik-dynamic.toml
|
18
monolith/traefik/traefik-dynamic.toml.BLANKED
Normal 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"
|
||||||
|
|
41
monolith/traefik/traefik.toml.BLANKED
Normal 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"
|
||||||
|
|
@ -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
|
|
||||||
|
|