commit 50e236383706fc1df528fd3267d8354e950d7b37 Author: fxequals Date: Wed Feb 11 11:17:40 2026 -0500 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dbe9c82 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vscode/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..31288e7 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# docker-compose + +Collection of my personal docker-compose files \ No newline at end of file diff --git a/TEMPLATE-docker-compose.yml b/TEMPLATE-docker-compose.yml new file mode 100644 index 0000000..92d1eb0 --- /dev/null +++ b/TEMPLATE-docker-compose.yml @@ -0,0 +1,41 @@ +--- + +# +# +# Created by +# ↳ https://link.to.github + +services: + : + image: # creator/image_name:latest + container_name: + restart: unless-stopped + + networks: + - proxy +# ports: +# - 80:80 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro +# - /path/to/host:path/in/container +# - unique_volume_name:/path/in/container + +# labels: +# - 'enabled=true' + +networks: + proxy: + external: true +# ip_address: 127.0.0.1 + +# volumes: +# unique_volume_name: +# driver: local + +# Documentation available at https://link.to.docs \ No newline at end of file diff --git a/commits.md b/commits.md new file mode 100644 index 0000000..b7da3ef --- /dev/null +++ b/commits.md @@ -0,0 +1,40 @@ +# 📝 Commit Messages + +We follow the [Conventional Commits](https://www.conventionalcommits.org/) guideline for commit messages. +This helps keep our history clean and makes changelogs easier to generate. + +# Format + +``` +(optional scope): +``` + +# Examples + +``` +feat(auth): add OAuth2 login +fix(ui): patch crash on empty input +docs(readme): update installation instructions +``` + +# Common Types + +* **feat:** a new feature (may bump MINOR version) +* **fix:** a bug fix (may bump PATCH version) +* **docs:** documentation only +* **style:** formatting, whitespace, etc. +* **refactor:** code changes without behavior change +* **test:** add or update tests +* **chore:** maintenance (CI, build, tooling, assets) + +👉 If your change introduces a **breaking change**, mark it with `!` or add a footer: + +``` +feat(api)!: remove legacy endpoint + +BREAKING CHANGE: old /v1 endpoints were removed +``` + +--- + +⚠️ **Note:** This is a guideline, not a strict rule. If you forget, no worries — just try to follow the format when you can \ No newline at end of file diff --git a/emerald-theory/adguard/ad-guard.yml b/emerald-theory/adguard/ad-guard.yml new file mode 100644 index 0000000..51484c2 --- /dev/null +++ b/emerald-theory/adguard/ad-guard.yml @@ -0,0 +1,35 @@ +--- + +# AdGuard +# Privacy focused DNS server +# Created by AdGuard Team +# ↳ https://github.com/adguardteam + +services: + adguard: + image: adguard/adguardhome:latest + container_name: adguard + restart: unless-stopped + + networks: + - proxy + ports: + - 53:53/tcp + - 53:53/udp + - 853:853 # DNS over QUIC + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/adguard/data:/opt/adguardhome/work + - /home/fxequals/docker/adguard:/opt/adguardhome/conf + +networks: + proxy: + external: true + +# Documentation available at https://adguard.com/kb/adguard-for-windows/admins-documentation/ \ No newline at end of file diff --git a/emerald-theory/arcane-preview-version-1/arcane-preview.yml b/emerald-theory/arcane-preview-version-1/arcane-preview.yml new file mode 100644 index 0000000..6d61301 --- /dev/null +++ b/emerald-theory/arcane-preview-version-1/arcane-preview.yml @@ -0,0 +1,34 @@ +--- +# Preview of Arcane 1.0 + +services: + arcane: + image: ghcr.io/ofkm/arcane:1.0-preview + container_name: arcane + restart: unless-stopped + networks: + - proxy + +# ports: +# - 3552:3552 + + environment: + PUID: 1000 + PGID: 1000 + ENVIRONMENT: production + ENCRYPTION_KEY: ${ENCRYPTION_KEY} + DATABASE_URL: 'file:data/arcane.db?_pragma=journal_mode(WAL)&_pragma=busy_timeout(2500)&_txlock=immediate' # Quotes for Dockge nonsense + JWT_SECRET: ${JWT_SECRET} + + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/arcane/data:/app/data + - /opt/dockge:/app/data/projects + +networks: + proxy: + external: true + +# Documentation available at https://arcane.ofkm.dev/ \ No newline at end of file diff --git a/emerald-theory/arcane-preview-version-1/arcane.env b/emerald-theory/arcane-preview-version-1/arcane.env new file mode 100644 index 0000000..b9bc6ae --- /dev/null +++ b/emerald-theory/arcane-preview-version-1/arcane.env @@ -0,0 +1,2 @@ +ENCRYPTION_KEY= +JWT_SECRET= \ No newline at end of file diff --git a/emerald-theory/arcane-registry.json b/emerald-theory/arcane-registry.json new file mode 100644 index 0000000..7283e57 --- /dev/null +++ b/emerald-theory/arcane-registry.json @@ -0,0 +1,111 @@ +{ + "$schema": "https://templates.arcane.ofkm.dev/schema.json", + "author": "fxequals", + "description": "Docker App Templates", + "name": "emerald-theory", + "templates": [ + { + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/adguard/ad-guard.yml", + "description": "DNS Server", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/emerald-theory/adguard", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/adguard/ad-guard.env", + "id": "adguard", + "name": "AdGuard", + "tags": [ + "dns", + "webfilter" + ], + "version": "1.0.0" + }, + { + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/arcane/arcane.yml", + "description": "Web based Docker GUI", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/emerald-theory/arcane/", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/arcane/arcane.env", + "id": "arcane", + "name": "Arcane", + "tags": [ + "identity", + "2fa", + "access" + ], + "version": "1.0.0" + }, + { + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/arcane-preview-version-1/arcane-preview.yml", + "description": "Web based Docker GUI 1.0 preview", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/emerald-theory/arcane-preview-version-1/", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/arcane-preview-version-1/arcane.env", + "id": "arcane-preview", + "name": "Arcane 1.0 Preview", + "tags": [ + "docker-management", + "web-based" + ], + "version": "1.0.0" + }, + { + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/authentik/authentik.yml", + "description": "2FA access & authorization", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/emerald-theory/authentik/", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/authentik/authentik.env", + "id": "authentik", + "name": "Authentik", + "tags": [ + "identity", + "2fa", + "access" + ], + "version": "1.0.0" + }, + { + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/chevereto/chevereto.yml", + "description": "Imgur clone", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/emerald-theory/chevereto/", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/chevereto/chevereto.env", + "id": "chevereto", + "name": "Chevereto", + "tags": [ + "image-upload" + ], + "version": "1.0.0" + }, + { + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/hugo/hugo.yml", + "description": "Static Site Generator", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/emerald-theory/hugo/", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/adguard/hugo.env", + "id": "hugo", + "name": "Hugo", + "tags": [ + "identity", + "2fa", + "access" + ], + "version": "1.0.0" + }, + { + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/n8n/n8n.yaml", + "description": "Automation System", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/emerald-theory/n8n/", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/emerald-theory/n8n/n8n.env", + "id": "n8n", + "name": "n8n", + "tags": [ + "identity", + "2fa", + "access" + ], + "version": "1.0.0" + } + ], + "url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/emerald-theory", + "version": "1.0.0" +} \ No newline at end of file diff --git a/emerald-theory/arcane/arcane.env b/emerald-theory/arcane/arcane.env new file mode 100644 index 0000000..b9bc6ae --- /dev/null +++ b/emerald-theory/arcane/arcane.env @@ -0,0 +1,2 @@ +ENCRYPTION_KEY= +JWT_SECRET= \ No newline at end of file diff --git a/emerald-theory/arcane/arcane.yml b/emerald-theory/arcane/arcane.yml new file mode 100644 index 0000000..858c28e --- /dev/null +++ b/emerald-theory/arcane/arcane.yml @@ -0,0 +1,46 @@ +--- + +# Arcane +# Modern Docker Web UI +# Created by Kyle Mendell +# ↳ https://github.com/getarcaneapp/arcane + +services: + arcane: + image: ghcr.io/getarcaneapp/arcane + container_name: arcane + restart: unless-stopped + + networks: + - proxy +# ports: +# - 3552:3552 + + environment: + PUID: 1000 + PGID: 1000 + APP_URL: https://arcane.mydigitalfix.com + ENCRYPTION_KEY: ${ENCRYPTION_KEY} + JWT_SECRET: ${JWT_SECRET} + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /var/run/docker.sock:/var/run/docker.sock + - /home/fxequals/docker/arcane/data:/app/data + - /opt/dockge:/opt/dockge # This maps existing Dockge stacks and lets Arcane manage them, otherwise /host/path/to/projects:/app/data/projects + + upgrader: + image: ghcr.io/getarcaneapp/arcane:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + entrypoint: ['/app/arcane'] + command: ['upgrade', '--auto'] + profiles: + - tools + +networks: + proxy: + external: true + +# Documentation available at https://getarcane.app/docs \ No newline at end of file diff --git a/emerald-theory/arcane/wpsit arcane.yaml b/emerald-theory/arcane/wpsit arcane.yaml new file mode 100644 index 0000000..34265ae --- /dev/null +++ b/emerald-theory/arcane/wpsit arcane.yaml @@ -0,0 +1,46 @@ +--- + +# Arcane +# Modern Docker GUI Manager +# Created by Kyle Mendell +# ↳ https://github.com/getarcaneapp/arcane + +services: + arcane: + image: ghcr.io/getarcaneapp/arcane + container_name: arcane + restart: unless-stopped + + networks: + - proxy +# ports: +# - 3552:3552 + + environment: + PUID: 1000 + PGID: 1000 + APP_URL: https://arcane.wpsit.org + ENCRYPTION_KEY: ${ENCRYPTION_KEY} + JWT_SECRET: ${JWT_SECRET} + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /var/run/docker.sock:/var/run/docker.sock + - /home/wpsit/docker/arcane/data:/app/data + - /opt/dockge:/opt/dockge # This maps existing Dockge stacks and lets Arcane manage them, otherwise /host/path/to/projects:/app/data/projects + + upgrader: + image: ghcr.io/getarcaneapp/arcane:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + entrypoint: ['/app/arcane'] + command: ['upgrade', '--auto'] + profiles: + - tools + +networks: + proxy: + external: true + +# Documentation available at https://getarcane.app/docs \ No newline at end of file diff --git a/emerald-theory/authentik/README.md b/emerald-theory/authentik/README.md new file mode 100644 index 0000000..7c466c6 --- /dev/null +++ b/emerald-theory/authentik/README.md @@ -0,0 +1,191 @@ +# **Authentik Overview** + +Authentik is an open-source Identity Provider (IdP) that allows users to self-host authentication and single sign-on (SSO) + +[GitHub Repository](https://github.com/goauthentik/authentik) +[Official Documentation](https://docs.goauthentik.io/docs) +# **Pre-Install** + +## Dependencies +- None +## Generate PG_PASS for .env +- `openssl rand -base64 36` +## Generate AUTHENTIK_SECRET_KEY for .env +- `openssl rand -base64 60` +## Create Volume Folders +- certs +- custom-templates +- database +- media +- redis +## Create a .env file +```docker +AUTHENTIK_PORT_HTTP=9000 +AUTHENTIK_PORT_HTTPS=9443 +PG_PASS= +AUTHENTIK_SECRET_KEY= +AUTHENTIK_ERROR_REPORTING__ENABLED=true +AUTHENTIK_EMAIL__HOST= +AUTHENTIK_EMAIL__PORT=25 +AUTHENTIK_EMAIL__USERNAME= +AUTHENTIK_EMAIL__PASSWORD= +AUTHENTIK_EMAIL__USE_TLS=true +AUTHENTIK_EMAIL__USE_SSL=false +AUTHENTIK_EMAIL__TIMEOUT=10 +AUTHENTIK_EMAIL__FROM= +``` + +# **Post-Install** + +> **⚠️ WARNING** +> Wait a few minutes before attempting to connect for the first time. All servers need to show as **Healthy** in Dockge + +Go to http://your-server-ip:9000/if/flow/initial-setup/ +- Create a unique email and password for admin account +- Don't use your primary email address for this account as it will conflict when you register yourself as a user + +# **NGINX Proxy Manager** + +## Details +- **Domain Names:** auth.ignitedinspirations.net +- **Scheme:** http +- **Forward Hostname / IP:** 172.18.1.10 +- **Forward Port:** 9443 +- **Cache Assets:** True +- **Block Common Exploits:** True +- **Websockets Support:** True +- **Access Lists:** Publicly Accessible +## Custom Locations +- None +## SSL +- **SSL Certificate:** Let's Encrypt +- **Force SSL:** True +- **HTTP/2 Support:** True +- **HSTS Enabled:** False +- **HSTS Subdomains:** False + +## Advanced +The following code needs to be entered into the **Custom Nginx Configuration** in order to have Authentik protect this app +```NGINX +# Increase buffer size for large headers +# This is needed only if you get 'upstream sent too big header while reading response +# header from upstream' error when trying to access an application protected by goauthentik +proxy_buffers 8 16k; +proxy_buffer_size 32k; + +location / { + # Put your proxy_pass to your application here + proxy_pass $forward_scheme://$server:$port; + + # authentik-specific config + auth_request /outpost.goauthentik.io/auth/nginx; + error_page 401 = @goauthentik_proxy_signin; + auth_request_set $auth_cookie $upstream_http_set_cookie; + add_header Set-Cookie $auth_cookie; + + # translate headers from the outposts back to the actual upstream + auth_request_set $authentik_username $upstream_http_x_authentik_username; + auth_request_set $authentik_groups $upstream_http_x_authentik_groups; + auth_request_set $authentik_email $upstream_http_x_authentik_email; + auth_request_set $authentik_name $upstream_http_x_authentik_name; + auth_request_set $authentik_uid $upstream_http_x_authentik_uid; + + proxy_set_header X-authentik-username $authentik_username; + proxy_set_header X-authentik-groups $authentik_groups; + proxy_set_header X-authentik-email $authentik_email; + proxy_set_header X-authentik-name $authentik_name; + proxy_set_header X-authentik-uid $authentik_uid; +} + +# all requests to /outpost.goauthentik.io must be accessible without authentication +location /outpost.goauthentik.io { + proxy_pass https://:9443/outpost.goauthentik.io; + # ensure the host of this vserver matches your external URL you've configured + # in authentik + proxy_set_header Host $host; + proxy_set_header X-Original-URL $scheme://$http_host$request_uri; + add_header Set-Cookie $auth_cookie; + auth_request_set $auth_cookie $upstream_http_set_cookie; + + # required for POST requests to work + proxy_pass_request_body off; + proxy_set_header Content-Length ""; +} + +# Special location for when the /auth endpoint returns a 401, +# redirect to the /start URL which initiates SSO +location @goauthentik_proxy_signin { + internal; + add_header Set-Cookie $auth_cookie; + return 302 /outpost.goauthentik.io/start?rd=$request_uri; + # For domain level, use the below error_page to redirect to your authentik server with the full redirect path + # return 302 https://authentik-server:9443/outpost.goauthentik.io/start?rd=$scheme://$http_host$request_uri; +} +``` + +> **Note** +> If you are using Portainer to manage your Docker environment, you need to specify the ENV_FILE name to be `stacks.env` + +Edit the IP address in `proxy_pass` above and make sure it matches the one you specify in the Authentik docker-compose file + +# **Authentik** + +## Create Google OAuth2 token +1) Go to [Official Documentation](https://support.google.com/cloud/answer/6158849?hl=en) and follow steps there + - Make note of the Client ID and Client Secret +2) Add `https://your-authentik-domain-name/source/oauth/callback/google` to list of Authorized redirect URI +## Add Google SSO Support +[Official Documentation](https://docs.goauthentik.io/docs/users-sources/sources/social-logins/google/cloud/) +1) Click on **Directory** and then click on **Federation & Social login** +2) Click on **Create** +3) Click on **Google OAuth Source** and click **Next** +4) Enter Google for the **Name** +5) The **Slug** will automatically be filled +6) Enter your Client ID and Client Secret generated when creating Google OAuth2 token +7) Click **Finish** +## Add Google as a Login Source +[Official Documentation](https://docs.goauthentik.io/docs/users-sources/sources/#add-sources-to-default-login-page) +1) Click on **Flow and Stages** then click on **Stages** +2) Find the `default-authentication-identification` stage and click on the Edit button +3) Under **Source settings** click on `google` and then click on `>` to add it +## Add User to Directory +1) Navigate to **Directory** then click on **Users** +2) Enter your email address for the **Username** +3) Enter your full name for **Name** +4) Set **User type** to **Internal** +5) Enter your email address for **Email** +6) Click **Create** +## Add User to Admin Group +1) Navigate to **Directory** then click on **Groups** +2) Click on `authentik Admins` +3) Click on **Users** tab +4) Click on **Add existing user** +5) Click on `+` then select your account and click **Add** +6) Click **Add** +## Set New Users to Inactive by Default +1) Click on **Flow and Stages** then click on **Stages** +2) Find the `default-source-enrollment-write` stage and click the Edit button +3) Toggle the **Create users as inactive** to On +## Create Application & Provider +1) Click on **Create with Wizard** +2) Enter the Application's Name + - This will automatically fill the **Slug** name +3) Do not enter a Group Name +4) Set **Policy engine mode** to `any` and click **Next** +5) Select **Proxy Provider** and click **Next** +6) **Name** will automatically be filled in +7) Select `default-provider-authorization-explicit-consent` for **Authorization Flow** +8) Click on **Forward auth (single application)** +9) Enter the **External host** name and click **Next** + - This is generally the proxy hostname (ex. https://docker.mysite.com) +10) Skip **Policy/User/Group Bindings** step and click **Next** +11) Click **Close** +## Add Application to Outpost +1) Click on **Application** then click on **Outposts** +2) Find the `authentik Embedded Outpost` and click the Edit button on the right +3) Click on the application under the **Available Applications** and then click on the `>` button +4) Click on **Update** +# **Additional Information** +--- +> **⚠️ WARNING** +> If you are using Portainer to manage your Docker environment, you need to specify the ENV_FILE name to be `stacks.env` diff --git a/emerald-theory/authentik/authentik.env b/emerald-theory/authentik/authentik.env new file mode 100644 index 0000000..dfeb890 --- /dev/null +++ b/emerald-theory/authentik/authentik.env @@ -0,0 +1,13 @@ +AUTHENTIK_PORT_HTTP=9000 +AUTHENTIK_PORT_HTTPS=9443 +PG_PASS= # <-- openssl rand -base64 36 | tr -d '\n' +AUTHENTIK_SECRET_KEY= # <-- openssl rand -base64 36 | tr -d '\n' +AUTHENTIK_ERROR_REPORTING__ENABLED=true +AUTHENTIK_EMAIL__HOST= +AUTHENTIK_EMAIL__PORT= +AUTHENTIK_EMAIL__USERNAME= +AUTHENTIK_EMAIL__PASSWORD= +AUTHENTIK_EMAIL__USE_TLS=true +AUTHENTIK_EMAIL__USE_SSL=false +AUTHENTIK_EMAIL__TIMEOUT=10 +AUTHENTIK_EMAIL__FROM= \ No newline at end of file diff --git a/emerald-theory/authentik/authentik.yml b/emerald-theory/authentik/authentik.yml new file mode 100644 index 0000000..2d6a9d6 --- /dev/null +++ b/emerald-theory/authentik/authentik.yml @@ -0,0 +1,132 @@ +--- + +# Authentik +# 2FA for web apps +# Created by Authentik Security, LLC +# ↳ https://github.com/goauthentik/authentik + +services: + authentik-postgresql: + image: docker.io/library/postgres:12-alpine + container_name: authentik-postgresql + restart: unless-stopped + + networks: + - proxy + + healthcheck: + test: + - CMD-SHELL + - pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER} + start_period: 20s + interval: 30s + retries: 5 + timeout: 5s + + volumes: + - /home/fxequals/docker/authentik/database:/var/lib/postgresql/data + + environment: + PUID: 1000 + PGID: 1000 + POSTGRES_PASSWORD: ${PG_PASS:?database password required} + POSTGRES_USER: ${PG_USER:-authentik} + POSTGRES_DB: ${PG_DB:-authentik} + + env_file: + - .env + + authentik-redis: + image: docker.io/library/redis:alpine + container_name: authentik-redis + command: --save 60 1 --loglevel warning + restart: unless-stopped + + networks: + - proxy + + healthcheck: + test: + - CMD-SHELL + - redis-cli ping | grep PONG + start_period: 20s + interval: 30s + retries: 5 + timeout: 3s + + volumes: + - /home/fxequals/docker/authentik/redis:/data + + environment: + PUID: 1000 + PGID: 1000 + + authentik-server: + image: ghcr.io/goauthentik/server:latest + command: server + container_name: authentik-server + restart: unless-stopped + + networks: + proxy: + ipv4_address: 172.18.1.10 + + ports: + - 9000:9000 # Remove after putting Authentik behind NGINX + - 9443:9443 # Remove after putting Authentik behind NGINX + + environment: + PUID: 1000 + PGID: 1000 + AUTHENTIK_REDIS__HOST: authentik-redis + AUTHENTIK_POSTGRESQL__HOST: authentik-postgresql + AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} + AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} + AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} + + volumes: + - /home/fxequals/docker/authentik/media:/media + - /home/fxequals/docker/authentik/custom-templates:/templates + + env_file: + - .env + + depends_on: + - authentik-postgresql + - authentik-redis + + authentik-worker: + image: ghcr.io/goauthentik/server:latest + restart: unless-stopped + container_name: authentik-worker + command: worker + + networks: + - proxy + + environment: + PUID: 1000 + PGID: 1000 + AUTHENTIK_REDIS__HOST: authentik-redis + AUTHENTIK_POSTGRESQL__HOST: authentik-postgresql + AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} + AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} + AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} + + volumes: + - /home/fxequals/docker/authentik/media:/media + - /home/fxequals/docker/authentik/certs:/certs + - /home/fxequals/docker/authentik/custom-templates:/templates + + env_file: + - .env + + depends_on: + - authentik-postgresql + - authentik-redis + +networks: + proxy: + external: true + +# Documentation available at https://docs.goauthentik.io/docs/install-config/install/docker-compose \ No newline at end of file diff --git a/emerald-theory/chevereto/chevereto.env b/emerald-theory/chevereto/chevereto.env new file mode 100644 index 0000000..da0721c --- /dev/null +++ b/emerald-theory/chevereto/chevereto.env @@ -0,0 +1 @@ +DB_PASSWORD= \ No newline at end of file diff --git a/emerald-theory/chevereto/chevereto.yml b/emerald-theory/chevereto/chevereto.yml new file mode 100644 index 0000000..25ec59a --- /dev/null +++ b/emerald-theory/chevereto/chevereto.yml @@ -0,0 +1,77 @@ +--- + +# Chevereto +# Self-hosted Imgur clone +# Created by +# ↳ https://github.com/chevereto/docker + +services: + chevereto-db: + image: mariadb:jammy + container_name: chevereto-db + restart: unless-stopped + healthcheck: + test: ["CMD", "healthcheck.sh", "--su-mysql", "--connect"] + interval: 10s + timeout: 5s + retries: 3 + + networks: + - proxy +# ports: +# - 80:80 + + environment: + PUID: 1000 + PGID: 1000 + MYSQL_ROOT_PASSWORD: ${DB_ROOTPASSWORD} + MYSQL_DATABASE: chevereto + MYSQL_USER: chevereto + MYSQL_PASSWORD: ${DB_PASSWORD} + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - chevereto-database:/var/lib/mysql + + chevereto-server: + image: chevereto/chevereto:latest + container_name: chevereto-server + restart: unless-stopped + + networks: + - proxy +# ports: +# - 80:80 + + environment: + PUID: 1000 + PGID: 1000 + CHEVERETO_DB_HOST: chevereto-db + CHEVERETO_DB_USER: chevereto + CHEVERETO_DB_PASS: ${DB_PASSWORD} + CHEVERETO_DB_PORT: 3306 + CHEVERETO_DB_NAME: chevereto + CHEVERETO_HOSTNAME: photos.ignitedinspirations.net + CHEVERETO_HOSTNAME_PATH: / + CHEVERETO_HTTPS: 1 + CHEVERETO_MAX_POST_SIZE: 1G + CHEVERETO_MAX_UPLOAD_SIZE: 1G + CHEVERETO_SERVICING: server + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - chevereto-storage:/var/www/html/images/ + - chevereto-app:/var/www/html/ + +volumes: + database: + storage: + app: + +networks: + proxy: + external: true + +# Documentation available at https://v4-docs.chevereto.com/#install \ No newline at end of file diff --git a/emerald-theory/hugo/hugo.env b/emerald-theory/hugo/hugo.env new file mode 100644 index 0000000..e69de29 diff --git a/emerald-theory/hugo/hugo.yml b/emerald-theory/hugo/hugo.yml new file mode 100644 index 0000000..67cb645 --- /dev/null +++ b/emerald-theory/hugo/hugo.yml @@ -0,0 +1,32 @@ +--- + +# Hugo +# Static Site Generator +# Created by Hugo +# ↳ https://github.com/gohugoio/hugo + +services: + hugo: + image: ghcr.io/gohugoio/hugo:latest + container_name: hugo + restart: unless-stopped + + networks: + - proxy +# ports: +# - 80:80 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/hugo/website:/src + +networks: + proxy: + external: true + +# Documentation available at https://gohugo.io/documentation \ No newline at end of file diff --git a/emerald-theory/n8n/n8n.env b/emerald-theory/n8n/n8n.env new file mode 100644 index 0000000..fe88302 --- /dev/null +++ b/emerald-theory/n8n/n8n.env @@ -0,0 +1,3 @@ +DOMAIN_NAME= +SUBDOMAIN= +GENERIC_TIMEZONE=America/New_York \ No newline at end of file diff --git a/emerald-theory/n8n/n8n.yaml b/emerald-theory/n8n/n8n.yaml new file mode 100644 index 0000000..c4c343e --- /dev/null +++ b/emerald-theory/n8n/n8n.yaml @@ -0,0 +1,39 @@ +--- + +# n8n +# Event Automation +# Created by +# ↳ https://github.com/n8n-io/n8n + +services: + n8n: + image: docker.n8n.io/n8nio/n8n:latest + container_name: n8n + restart: unless-stopped + + networks: + - proxy +# ports: +# - 5678:5678 + + environment: + PUID: 1000 + PGID: 1000 + N8N_HOST: ${SUBDOMAIN}.${DOMAIN_NAME} + N8N_PORT: 5678 + N8N_PROTOCOL: https + NODE_ENV: production + WEBHOOK_URL: https://${SUBDOMAIN}.${DOMAIN_NAME}/ + GENERIC_TIMEZONE: ${GENERIC_TIMEZONE} + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/n8n/data:/home/node/.n8n + - /home/fxequals/docker/n8n/files:/files + +networks: + proxy: + external: true + +# Documentation available at https://docs.n8n.io/ \ No newline at end of file diff --git a/emerald-theory/wiki-js/README.md b/emerald-theory/wiki-js/README.md new file mode 100644 index 0000000..4bba659 --- /dev/null +++ b/emerald-theory/wiki-js/README.md @@ -0,0 +1 @@ +# Overview \ No newline at end of file diff --git a/emerald-theory/wiki-js/wiki-js.env b/emerald-theory/wiki-js/wiki-js.env new file mode 100644 index 0000000..26ef50d --- /dev/null +++ b/emerald-theory/wiki-js/wiki-js.env @@ -0,0 +1,2 @@ +DB_USER= +DB_PASS= \ No newline at end of file diff --git a/emerald-theory/wiki-js/wiki-js.yml b/emerald-theory/wiki-js/wiki-js.yml new file mode 100644 index 0000000..fa145bb --- /dev/null +++ b/emerald-theory/wiki-js/wiki-js.yml @@ -0,0 +1,44 @@ +services: + wiki-js-server: + image: ghcr.io/requarks/wiki:2 + container_name: wiki-js-server + restart: unless-stopped + depends_on: + - wiki-js-database + networks: + - proxy + # ports: + # - 80:80 + + environment: + PUID: 1000 + PGID: 1000 + DB_TYPE: postgres + DB_HOST: wiki-js-database + DB_PORT: 5432 + DB_USER: ${DB_USER} + DB_PASS: ${DB_PASS} + DB_NAME: wiki + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + wiki-js-database: + image: postgres:15-alpine + container_name: wiki-js-database + restart: unless-stopped + networks: + - proxy + # ports: + # - 3000:3000 + + environment: + POSTGRES_PASSWORD: ${DB_PASS} + POSTGRES_USER: ${DB_USER} + POSTGRES_DB: wiki + volumes: + - /home/fxequals/docker/wiki-js/database:/var/lib/postgresql/data +networks: + proxy: + external: true + +# Documentation available at https://docs.requarks.io/ diff --git a/obsidian-logic/_UNUSED/dockge/docker-compose.yml b/obsidian-logic/_UNUSED/dockge/docker-compose.yml new file mode 100644 index 0000000..b6f7989 --- /dev/null +++ b/obsidian-logic/_UNUSED/dockge/docker-compose.yml @@ -0,0 +1,35 @@ +--- + +# Dockge +# Modern docker-compose file manager +# Created by louislam +# ↳ https://github.com/louislam/dockge + +services: + dockge: + image: louislam/dockge:latest + container_name: dockge + restart: unless-stopped + + networks: + - proxy +# ports: +# - 5001:5001 + + environment: + PUID: 1000 + PGID: 1000 + DOCKGE_STACKS_DIR: "/opt/dockge/stacks" + + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /opt/dockge/stacks:/opt/dockge/stacks + - ./data:/app/data + +networks: + proxy: + external: true + +# Documentation available at https://github.com/louislam/dockge \ No newline at end of file diff --git a/obsidian-logic/_UNUSED/uptime-kuma/docker-compose.yml b/obsidian-logic/_UNUSED/uptime-kuma/docker-compose.yml new file mode 100644 index 0000000..7d5958e --- /dev/null +++ b/obsidian-logic/_UNUSED/uptime-kuma/docker-compose.yml @@ -0,0 +1,32 @@ +--- + +# Uptime Kuma +# Web based status monitoring +# Created by Louise Lam +# ↳ https://github.com/louislam/uptime-kuma + +services: + uptime-kuma: + image: louislam/uptime-kuma:latest + container_name: uptime-kuma + restart: unless-stopped + + networks: + - proxy +# ports: +# - 3001:3001 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/uptime-kuma/data:/app/data + +networks: + proxy: + external: true + +# Documentation available at https://github.com/louislam/uptime-kuma/wiki \ No newline at end of file diff --git a/obsidian-logic/arcane-registry.json b/obsidian-logic/arcane-registry.json new file mode 100644 index 0000000..7f248b6 --- /dev/null +++ b/obsidian-logic/arcane-registry.json @@ -0,0 +1,186 @@ +{ + "$schema": "https://raw.githubusercontent.com/getarcaneapp/templates/refs/heads/main/schema.json", + "name": "obsidian-logic", + "description": "docker apps for obsidian-logic", + "version": "1.0.0", + "author": "fxequals", + "url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic", + "templates": [ + { + "id": "authentik", + "name": "Authentik", + "description": "2FA access & authorization", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/authentik/authentik.yml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/authentik/authentik.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/authentik/", + "tags": ["identity", "2fa", "access"] + }, + { + "id": "dozzle", + "name": "Dozzle", + "description": "Docker Logs Web GUI", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/dozzle/dozzle.yml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/dozzle/dozzle.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/dozzle/", + "tags": ["gui", "logs", "docker"] + }, + { + "id": "fresh-rss", + "name": "FreshRSS", + "description": "RSS Feed Aggregation", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/fresh-rss/fresh-rss.yaml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/fresh-rss/fresh-rss.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/fresh-rss/", + "tags": ["rss", "feeds", "aggregiator"] + }, + { + "id": "fulltext-rss", + "name": "Full-Text RSS", + "description": "RSS Feed Article Expansion", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/fulltext-rss/fulltext-rss.yaml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/fulltext-rss/fulltext-rss.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/fulltext-rss/", + "tags": ["feeds", "text", "rss"] + }, + { + "id": "gitea", + "name": "Gitea", + "description": "Github Alternative", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/gitea/gitea.yaml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/gitea/gitea.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/gitea/", + "tags": ["code", "repository", "github"] + }, + { + "id": "goaccess", + "name": "GoAccess", + "description": "NGINX Log Visualizer", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/goaccess/goaccess.yaml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/goaccess/goaccess.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/goaccess/", + "tags": ["nginx", "logs", "visualizer"] + }, + { + "id": "homepage", + "name": "Homepage", + "description": "Dashboard for Services", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/homepage/homepage.yaml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/homepage/homepage.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/homepage/", + "tags": ["bookmarks", "landing-page", "dashboard"] + }, + { + "id": "nginx-proxy-manager", + "name": "NGINX Proxy Manager", + "description": "Reverse Proxy for Web Services", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/nginx-proxy-manager/nginx-proxy-manager.yaml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/nginx-proxy-manager/nginx-proxy-manager.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/nginx-proxy-manager/", + "tags": ["web", "reverse-proxy", "proxy"] + }, + { + "id": "privatebin", + "name": "Privatebin", + "description": "Zero Knowledge Messaging", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/privatebin/privatebin.yaml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/privatebin/privatebin.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/privatebin/", + "tags": ["web", "reverse-proxy", "proxy"] + }, + { + "id": "remotely", + "name": "Remotely", + "description": "Remote Access Services", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/remotely/remotely.yaml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/remotely/remotely.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/remotely/", + "tags": ["access", "web", "remote"] + }, + { + "id": "shlinks", + "name": "Shlinks", + "description": "URL Shortening Service", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/shlinks/shlinks.yaml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/shlinks/shlinks.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/shlinks/", + "tags": ["url", "shortener", "service"] + }, + { + "id": "spdf", + "name": "sPDF", + "description": "Various PDF Tools", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/spdf/spdf.yaml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/spdf/spdf.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/spdf/", + "tags": ["pdf", "web", "tools"] + }, + { + "id": "vaultwarden", + "name": "VaultWarden", + "description": "Password Manager", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/vaultwarden/vaultwarden.yaml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/vaultwarden/vaultwarden.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/vaultwarden/", + "tags": ["password", "manager", "bitwarden"] + }, + { + "id": "watchtower", + "name": "WatchTower", + "description": "Auto Docker Image Updater", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/watchtower/watchtower.yaml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/watchtower/watchtower.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/watchtower/", + "tags": ["updater", "images", "docker"] + }, + { + "id": "wordpress", + "name": "WordPress", + "description": "Hosted CMS Website", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/wordpress/wordpress.yaml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/wordpress/wordpress.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/wordpress/", + "tags": ["web", "website", "cms"] + }, + { + "id": "romm", + "name": "RomM", + "description": "Web GUI for managing and playing Roms", + "version": "1.0.0", + "author": "fxequals", + "compose_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/romm/romm.yml", + "env_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/raw/branch/main/obsidian-logic/romm/romm.env", + "documentation_url": "https://gitea.mydigitalfix.com/fxequals/docker-compose/src/branch/main/obsidian-logic/romm/", + "tags": ["roms", "gui", "web-based"] + } + ] +} \ No newline at end of file diff --git a/obsidian-logic/arcane/README.md b/obsidian-logic/arcane/README.md new file mode 100644 index 0000000..dd8488e --- /dev/null +++ b/obsidian-logic/arcane/README.md @@ -0,0 +1,3 @@ +# Overview + +On first run, default user is `arcane` and password is `arcane-admin` \ No newline at end of file diff --git a/obsidian-logic/arcane/arcane.env b/obsidian-logic/arcane/arcane.env new file mode 100644 index 0000000..b9bc6ae --- /dev/null +++ b/obsidian-logic/arcane/arcane.env @@ -0,0 +1,2 @@ +ENCRYPTION_KEY= +JWT_SECRET= \ No newline at end of file diff --git a/obsidian-logic/arcane/arcane.yml b/obsidian-logic/arcane/arcane.yml new file mode 100644 index 0000000..c4ef428 --- /dev/null +++ b/obsidian-logic/arcane/arcane.yml @@ -0,0 +1,49 @@ +--- + +# Arcane +# Modern Docker Web UI +# Created by arcane +# ↳ https://github.com/getarcaneapp/arcane + +services: + arcane: + image: ghcr.io/getarcaneapp/arcane + container_name: arcane + restart: unless-stopped + + networks: + - proxy + # ports: + # - 3552:3552 + + environment: + PUID: 1000 + PGID: 1000 + APP_URL: https://arcane.mydigitalfix.com + ENCRYPTION_KEY: ${ENCRYPTION_KEY} + JWT_SECRET: ${JWT_SECRET} + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /var/run/docker.sock:/var/run/docker.sock + - /home/fxequals/docker/arcane/data:/app/data + - /opt/dockge:/opt/dockge # This maps existing Dockge stacks and lets Arcane manage them, otherwise /host/path/to/projects:/app/data/projects + + upgrader: + image: ghcr.io/getarcaneapp/arcane:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + entrypoint: + - /app/arcane + command: + - upgrade + - --auto + profiles: + - tools + +networks: + proxy: + external: true + +# Documentation available at https://getarcane.app/docs \ No newline at end of file diff --git a/obsidian-logic/authentik/authentik.env b/obsidian-logic/authentik/authentik.env new file mode 100644 index 0000000..d458fb6 --- /dev/null +++ b/obsidian-logic/authentik/authentik.env @@ -0,0 +1,13 @@ +AUTHENTIK_PORT_HTTP=9000 +AUTHENTIK_PORT_HTTPS=9443 +PG_PASS= +AUTHENTIK_SECRET_KEY= +AUTHENTIK_ERROR_REPORTING__ENABLED=true +AUTHENTIK_EMAIL__HOST= +AUTHENTIK_EMAIL__PORT=25 +AUTHENTIK_EMAIL__USERNAME= +AUTHENTIK_EMAIL__PASSWORD= +AUTHENTIK_EMAIL__USE_TLS=true +AUTHENTIK_EMAIL__USE_SSL=false +AUTHENTIK_EMAIL__TIMEOUT=10 +AUTHENTIK_EMAIL__FROM= \ No newline at end of file diff --git a/obsidian-logic/authentik/authentik.yml b/obsidian-logic/authentik/authentik.yml new file mode 100644 index 0000000..2d6a9d6 --- /dev/null +++ b/obsidian-logic/authentik/authentik.yml @@ -0,0 +1,132 @@ +--- + +# Authentik +# 2FA for web apps +# Created by Authentik Security, LLC +# ↳ https://github.com/goauthentik/authentik + +services: + authentik-postgresql: + image: docker.io/library/postgres:12-alpine + container_name: authentik-postgresql + restart: unless-stopped + + networks: + - proxy + + healthcheck: + test: + - CMD-SHELL + - pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER} + start_period: 20s + interval: 30s + retries: 5 + timeout: 5s + + volumes: + - /home/fxequals/docker/authentik/database:/var/lib/postgresql/data + + environment: + PUID: 1000 + PGID: 1000 + POSTGRES_PASSWORD: ${PG_PASS:?database password required} + POSTGRES_USER: ${PG_USER:-authentik} + POSTGRES_DB: ${PG_DB:-authentik} + + env_file: + - .env + + authentik-redis: + image: docker.io/library/redis:alpine + container_name: authentik-redis + command: --save 60 1 --loglevel warning + restart: unless-stopped + + networks: + - proxy + + healthcheck: + test: + - CMD-SHELL + - redis-cli ping | grep PONG + start_period: 20s + interval: 30s + retries: 5 + timeout: 3s + + volumes: + - /home/fxequals/docker/authentik/redis:/data + + environment: + PUID: 1000 + PGID: 1000 + + authentik-server: + image: ghcr.io/goauthentik/server:latest + command: server + container_name: authentik-server + restart: unless-stopped + + networks: + proxy: + ipv4_address: 172.18.1.10 + + ports: + - 9000:9000 # Remove after putting Authentik behind NGINX + - 9443:9443 # Remove after putting Authentik behind NGINX + + environment: + PUID: 1000 + PGID: 1000 + AUTHENTIK_REDIS__HOST: authentik-redis + AUTHENTIK_POSTGRESQL__HOST: authentik-postgresql + AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} + AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} + AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} + + volumes: + - /home/fxequals/docker/authentik/media:/media + - /home/fxequals/docker/authentik/custom-templates:/templates + + env_file: + - .env + + depends_on: + - authentik-postgresql + - authentik-redis + + authentik-worker: + image: ghcr.io/goauthentik/server:latest + restart: unless-stopped + container_name: authentik-worker + command: worker + + networks: + - proxy + + environment: + PUID: 1000 + PGID: 1000 + AUTHENTIK_REDIS__HOST: authentik-redis + AUTHENTIK_POSTGRESQL__HOST: authentik-postgresql + AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} + AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} + AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} + + volumes: + - /home/fxequals/docker/authentik/media:/media + - /home/fxequals/docker/authentik/certs:/certs + - /home/fxequals/docker/authentik/custom-templates:/templates + + env_file: + - .env + + depends_on: + - authentik-postgresql + - authentik-redis + +networks: + proxy: + external: true + +# Documentation available at https://docs.goauthentik.io/docs/install-config/install/docker-compose \ No newline at end of file diff --git a/obsidian-logic/dozzle/dozzle.env b/obsidian-logic/dozzle/dozzle.env new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/dozzle/dozzle.yml b/obsidian-logic/dozzle/dozzle.yml new file mode 100644 index 0000000..ddab101 --- /dev/null +++ b/obsidian-logic/dozzle/dozzle.yml @@ -0,0 +1,32 @@ +--- + +# Dozzle +# Log viewer for Docker containers +# Created by amir20 +# ↳ https://github.com/amir20/dozzle + +services: + dozzle: + image: amir20/dozzle:latest + container_name: dozzle + restart: unless-stopped + + networks: + - proxy +# ports: +# - 8080:8080 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /var/run/docker.sock:/var/run/docker.sock + +networks: + proxy: + external: true + +# Documentation available at https://dozzle.dev/ \ No newline at end of file diff --git a/obsidian-logic/emulator-js/emulator-js.env b/obsidian-logic/emulator-js/emulator-js.env new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/emulator-js/emulator-js.yml b/obsidian-logic/emulator-js/emulator-js.yml new file mode 100644 index 0000000..770d954 --- /dev/null +++ b/obsidian-logic/emulator-js/emulator-js.yml @@ -0,0 +1,35 @@ +--- + +# EmulatorJS +# Retro game emulation in the web browser +# Created by michael-j-green +# ↳ https://github.com/EmulatorJS/EmulatorJS + +services: + emulator-js: + image: lscr.io/linuxserver/emulatorjs:latest + container_name: emulator-js + restart: unless-stopped + + networks: + - proxy +# ports: +# - 80:80 +# - 3000:3000 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/emulator-js/config:/config + - /home/fxequals/docker/emulator-js/data:/data + - /home/fxequals/docker/emulator-js/ + +networks: + proxy: + external: true + +# Documentation available at https://emulatorjs.org/docs \ No newline at end of file diff --git a/obsidian-logic/fresh-rss/fresh-rss.env b/obsidian-logic/fresh-rss/fresh-rss.env new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/fresh-rss/fresh-rss.yml b/obsidian-logic/fresh-rss/fresh-rss.yml new file mode 100644 index 0000000..6d1d325 --- /dev/null +++ b/obsidian-logic/fresh-rss/fresh-rss.yml @@ -0,0 +1,34 @@ +--- + +# FreshRSS +# An RSS aggregator app +# Created by +# ↳ https://github.com/FreshRSS/FreshRSS + +services: + fresh-rss: + image: freshrss/freshrss:latest + container_name: fresh-rss + restart: unless-stopped + + networks: + - proxy +# ports: +# - 80:80 + + environment: + PUID: 1000 + PGID: 1000 + CRON_MIN: '13,43' # Specifies Feed Update Time + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/fresh-rss/data:/var/www/FreshRSS/data + - /home/fxequals/docker/fresh-rss/extensions:/var/www/FreshRss/extensions + +networks: + proxy: + external: true + +# Documentation available at https://freshrss.github.io/FreshRSS/en/admins/01_Index.html \ No newline at end of file diff --git a/obsidian-logic/fulltext-rss/fulltext-rss.env b/obsidian-logic/fulltext-rss/fulltext-rss.env new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/fulltext-rss/fulltext-rss.yml b/obsidian-logic/fulltext-rss/fulltext-rss.yml new file mode 100644 index 0000000..9ba9094 --- /dev/null +++ b/obsidian-logic/fulltext-rss/fulltext-rss.yml @@ -0,0 +1,32 @@ +--- + +# Full Text RSS +# Converts RSS feed snipits into full text articles +# Created by Five Filters +# ↳ https://github.com/heussd/fivefilters-full-text-rss-docker + +services: + full-text-rss: + image: heussd/fivefilters-full-text-rss:latest + container_name: full-text-rss + restart: unless-stopped + + networks: + - proxy +# ports: +# - 80:80 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/full-text-rss/cache:/var/www/html/cache/rss + +networks: + proxy: + external: true + +# Documentation available at https://github.com/heussd/fivefilters-full-text-rss-docker \ No newline at end of file diff --git a/obsidian-logic/gitea/gitea.env b/obsidian-logic/gitea/gitea.env new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/gitea/gitea.yml b/obsidian-logic/gitea/gitea.yml new file mode 100644 index 0000000..da70879 --- /dev/null +++ b/obsidian-logic/gitea/gitea.yml @@ -0,0 +1,33 @@ +--- + +# Gitea +# Open-source Github alternative +# Gitea +# ↳ https://github.com/go-gitea/gitea + +services: + gitea: + image: gitea/gitea:latest + container_name: gitea + restart: unless-stopped + + networks: + - proxy +# ports: +# - 22:22 +# - 3000:3000 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/gitea:/data + +networks: + proxy: + external: true + +# Documentation available at https://docs.gitea.com/ \ No newline at end of file diff --git a/obsidian-logic/goaccess/goaccess.env b/obsidian-logic/goaccess/goaccess.env new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/goaccess/goaccess.yml b/obsidian-logic/goaccess/goaccess.yml new file mode 100644 index 0000000..1c5c7b8 --- /dev/null +++ b/obsidian-logic/goaccess/goaccess.yml @@ -0,0 +1,34 @@ +--- + +# GoAccess +# Web based log visualizer for NGINX Proxy Manager +# Created by xavierh +# ↳ https://github.com/xavier-hernandez/goaccess-for-nginxproxymanager + +services: + goaccess: + image: xavierh/goaccess-for-nginxproxymanager:latest + container_name: goaccess + restart: unless-stopped + + networks: + - proxy +# ports: +# - 7880:7880 + + environment: + PUID: 1000 + PGID: 1000 + HTML_REFRESH: 5 + EXCLUDE_IPS: '172.18.0.1' + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/nginx/data/logs:/opt/log + +networks: + proxy: + external: true + +# Documentation available at https://goaccess.io/man \ No newline at end of file diff --git a/obsidian-logic/homepage/docker-compose.yml b/obsidian-logic/homepage/docker-compose.yml new file mode 100644 index 0000000..9414594 --- /dev/null +++ b/obsidian-logic/homepage/docker-compose.yml @@ -0,0 +1,33 @@ +--- + +# Homepage +# A dashboard for your self-hosted environment +# Created by +# ↳ https://github.com/gethomepage/homepage + +services: + homepage: + image: ghcr.io/gethomepage/homepage:latest + container_name: homepage + restart: unless-stopped + + networks: + - proxy +# ports: +# - 3000:3000 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/homepage/config:/app/config + - /home/fxequals/docker/homepage/images:/app/public/images + +networks: + proxy: + external: true + +# Documentation available at https://gethomepage.dev/ \ No newline at end of file diff --git a/obsidian-logic/it-tools/it-tools.env b/obsidian-logic/it-tools/it-tools.env new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/it-tools/it-tools.yml b/obsidian-logic/it-tools/it-tools.yml new file mode 100644 index 0000000..48131c1 --- /dev/null +++ b/obsidian-logic/it-tools/it-tools.yml @@ -0,0 +1,31 @@ +--- + +# IT Tools +# Collection of various IT tools +# Created by CorentinTh +# ↳ https://github.com/CorentinTh/it-tools + +services: + it-tools: + image: corentinth/it-tools:latest + container_name: it-tools + restart: unless-stopped + + networks: + - proxy +# ports: +# - 80:80 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + +networks: + proxy: + external: true + +# Documentation available at https://github.com/CorentinTh/it-tools \ No newline at end of file diff --git a/obsidian-logic/matrix/homeserver.yaml b/obsidian-logic/matrix/homeserver.yaml new file mode 100644 index 0000000..1ba2fcb --- /dev/null +++ b/obsidian-logic/matrix/homeserver.yaml @@ -0,0 +1,54 @@ +# Configuration file for Synapse. +# +# This is a YAML file: see [1] for a quick introduction. Note in particular +# that *indentation is important*: all the elements of a list or dictionary +# should have the same indentation. +# +# [1] https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html +# +# For more information on how to configure Synapse, including a complete accounting of +# each option, go to docs/usage/configuration/config_documentation.md or +# https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html +server_name: "mydigitalfix.com" +pid_file: /data/homeserver.pid +listeners: + - port: 8008 + resources: + - compress: false + names: + - client + - federation + tls: false + type: http + x_forwarded: true +database: + name: psycopg2 + txn_limit: 10000 + args: + user: synapse + password: + database: synapse + host: synapse-db + port: 5432 + cp_min: 5 + cp_max: 10 +log_config: "/data/mydigitalfix.log.config" +media_store_path: /data/media_store +registration_shared_secret: +report_stats: true +macaroon_secret_key: +form_secret: +signing_key_path: "/data/mydigitalfix.signing.key" +trusted_key_servers: + - server_name: "matrix.org" +turn_uris: + - "turn:matrix.mydigitalfix:3478?transport=udp" + - "turn:matrix.mydigitalfix:3478?transport=tcp" + - "turns:matrix.mydigitalfix:3478?transport=udp" + - "turns:matrix.mydigitalfix:3478?transport=tcp" +turn_shared_secret: +turn_user_lifetime: 86400000 +turn_allow_guests: False + + +# vim:ft=yaml \ No newline at end of file diff --git a/obsidian-logic/matrix/matrix.env b/obsidian-logic/matrix/matrix.env new file mode 100644 index 0000000..795f3af --- /dev/null +++ b/obsidian-logic/matrix/matrix.env @@ -0,0 +1 @@ +POSTGRES_PASSWORD= \ No newline at end of file diff --git a/obsidian-logic/matrix/matrix.yml b/obsidian-logic/matrix/matrix.yml new file mode 100644 index 0000000..9989859 --- /dev/null +++ b/obsidian-logic/matrix/matrix.yml @@ -0,0 +1,111 @@ +--- + +# Matrix +# Privacy focused messaging platform +# Created by matrix.org +# ↳ https://github.com/matrix-org + +services: + synapse: + image: docker.io/matrixdotorg/synapse:latest + container_name: matrix-synapse + restart: unless-stopped + depends_on: + - synapse_db + + networks: + - proxy + + environment: + SYNAPSE_CONFIG_PATH: "/data/homeserver.yaml" + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - synapse-data:/data + + synapse_db: + image: docker.io/postgres:17.5 + container_name: matrix-db + restart: unless-stopped + + networks: + - proxy + + environment: + POSTGRES_USER: "synapse" + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C" + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - synapse-db:/var/lib/postgresql/data + + nginx: + image: nginx:stable + container_name: matrix-web + restart: "always" + + networks: + - proxy +# ports: +# - 80:80 +# - 443:443 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - matrix-nginx:/etc/nginx/conf.d + + coturn: + image: instrumentisto/coturn:latest + container_name: matrix-coturn + restart: unless-stopped + + networks: + - proxy +# ports: +# - 49160-49200:49160-49200/udp +# - 3478:3478 +# - 5349:5349 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - matrix-coturn:/etc/coturn + + element: + image: vectorim/element-web:latest + container_name: matrix-element + restart: unless-stopped + + networks: + - proxy + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - matrix-element:/app + +networks: + proxy: + external: true + +volumes: + synapse-data: + driver: local + + synapse-db: + driver: local + + matrix-nginx: + driver: local + + matrix-element: + driver: local + + matrix-coturn: + driver: local + +# Documentation available at https://matrix.org/docs/chat_basics/matrix-for-im/ \ No newline at end of file diff --git a/obsidian-logic/matrix/turnserver.conf b/obsidian-logic/matrix/turnserver.conf new file mode 100644 index 0000000..dbb953c --- /dev/null +++ b/obsidian-logic/matrix/turnserver.conf @@ -0,0 +1,11 @@ +use-auth-secret +static-auth-secret= +realm=matrix.mydigitalfix.com +listening-port=3478 +tls-listening-port=5349 +min-port=49160 +max-port=49200 +verbose +allow-loopback-peers +cli-password= +external-ip=97.107.140.166 \ No newline at end of file diff --git a/obsidian-logic/nginx-proxy-manager/nginx-proxy-manager.env b/obsidian-logic/nginx-proxy-manager/nginx-proxy-manager.env new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/nginx-proxy-manager/nginx-proxy-manager.yml b/obsidian-logic/nginx-proxy-manager/nginx-proxy-manager.yml new file mode 100644 index 0000000..9b68ec1 --- /dev/null +++ b/obsidian-logic/nginx-proxy-manager/nginx-proxy-manager.yml @@ -0,0 +1,35 @@ +--- + +# NGINX Proxy Manager +# A reverse proxy for web apps +# Created by Igor Sysoev +# ↳ https://github.com/nginx/nginx + +services: + nginx: + image: jc21/nginx-proxy-manager:latest + container_name: nginx-proxy-manager + restart: unless-stopped + + networks: + - proxy + ports: + - 80:80 + - 443:443 +# - 81:81 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/nginx/data:/data + - /home/fxequals/docker/nginx/letsencrypt:/etc/letsencrypt + +networks: + proxy: + external: true + +# Documentation available at https://nginxproxymanager.com/guide/ \ No newline at end of file diff --git a/obsidian-logic/privatebin/privatebin.env b/obsidian-logic/privatebin/privatebin.env new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/privatebin/privatebin.yml b/obsidian-logic/privatebin/privatebin.yml new file mode 100644 index 0000000..8d964e2 --- /dev/null +++ b/obsidian-logic/privatebin/privatebin.yml @@ -0,0 +1,32 @@ +--- + +# PrivateBin +# An opensource Pastebin zero-knowledge server +# Created by Pastebin +# ↳ https://github.com/PrivateBin/PrivateBin + +services: + privatebin: + image: privatebin/nginx-fpm-alpine:latest + container_name: privatebin + restart: unless-stopped + + networks: + - proxy +# ports: +# - 8080:8080 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/privatebin/data:/srv/data # sudo chown 65534:82 on host folder + +networks: + proxy: + external: true + +# Documentation available at https://github.com/PrivateBin/docker-nginx-fpm-alpine \ No newline at end of file diff --git a/obsidian-logic/remotely/remotely.env b/obsidian-logic/remotely/remotely.env new file mode 100644 index 0000000..233f145 --- /dev/null +++ b/obsidian-logic/remotely/remotely.env @@ -0,0 +1 @@ +DOCKERGW= \ No newline at end of file diff --git a/obsidian-logic/remotely/remotely.yml b/obsidian-logic/remotely/remotely.yml new file mode 100644 index 0000000..f0290de --- /dev/null +++ b/obsidian-logic/remotely/remotely.yml @@ -0,0 +1,37 @@ +--- + +# Remotely +# Web based remote access and support +# Created by ? +# ↳ https://github.com/immense/Remotely + +services: + remotely: + image: immybot/remotely:latest + container_name: remotely + restart: unless-stopped + + networks: + - proxy +# ports: +# - 5000:5000 + + environment: + PUID: 1000 + PGID: 1000 + ASPNETCORE_ENVIRONMENT: 'Production' + ASPNETCORE_HTTP_PORTS: 5000 + Remotely_ApplicationOptions__DbProvider: 'SQLite' + Remotely_ApplicationOptions__DockerGateway: ${DOCKER_GW} + Remotely_ConnectionStrings__SQLite=Data Source: /app/AppData/Remotely.db + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/remotely/data:/app/AppData + +networks: + proxy: + external: true + +# Documentation available at https://github.com/immense/Remotely \ No newline at end of file diff --git a/obsidian-logic/romm/config.yml b/obsidian-logic/romm/config.yml new file mode 100644 index 0000000..b656ba6 --- /dev/null +++ b/obsidian-logic/romm/config.yml @@ -0,0 +1,129 @@ +# This is a generic example of a configuration file +# Rename this file to `config.yml`, copy it to a `config` folder, and mount that folder as per the docker-compose.example.yml +# Only uncomment the lines you want to use/modify, or add new ones where needed + +exclude: + # Exclude platforms to be scanned + platforms: [] # ['my_excluded_platform_1', 'my_excluded_platform_2'] + + # Exclude roms or parts of roms to be scanned + roms: + # Single file games section. + # Will not apply to files that are in sub-folders (multi-disc roms, games with updates, DLC, patches, etc.) + single_file: + # Exclude all files with certain extensions to be scanned + extensions: [] # ['xml', 'txt'] + + # Exclude matched file names to be scanned. + # Supports unix filename pattern matching + # Can also exclude files by extension + names: [] # ['info.txt', '._*', '*.nfo'] + + # Multi files games section + # Will apply to files that are in sub-folders (multi-disc roms, games with updates, DLC, patches, etc.) + multi_file: + # Exclude matched 'folder' names to be scanned (RomM identifies folders as multi file games) + names: [] # ['my_multi_file_game', 'DLC'] + + # Exclude files within sub-folders. + parts: + # Exclude matched file names to be scanned from multi file roms + # Keep in mind that RomM doesn't scan folders inside multi files games, + # so there is no need to exclude folders from inside of multi files games. + names: [] # ['data.xml', '._*'] # Supports unix filename pattern matching + + # Exclude all files with certain extensions to be scanned from multi file roms + extensions: [] # ['xml', 'txt'] + +system: + # Asociate different platform names to your current file system platform names + # [your custom platform folder name]: [RomM platform name] + # In this example if you have a 'gc' folder, RomM will treat it like the 'ngc' folder and if you have a 'psx' folder, RomM will treat it like the 'ps' folder + platforms: {} # { gc: 'ngc', psx: 'ps' } + + # Asociate one platform to it's main version + versions: {} # { naomi: 'arcade' } + +# The folder name where your roms are located +filesystem: {} # { roms_folder: 'roms' } For example if your folder structure is /home/user/library/roms_folder + +# scan: +# # Metadata priority during scans +# priority: +# # Below are the default priority values used +# metadata: # Top-level metadata source priority +# - "igdb" # IGDB (highest priority) +# - "moby" # MobyGames +# - "ss" # Screenscraper +# - "ra" # RetroAchievements +# - "launchbox" # Launchbox +# - "gamelist" # ES-DE gamelist.xml +# - "hasheous" # Hasheous +# - "flashpoint" # Flashpoint Project +# - "hltb" # HowLongToBeat (lowest priority) +# artwork: # Cover art and screenshots +# - "igdb" # IGDB +# - "moby" # MobyGames +# - "ss" # Screenscraper +# - "ra" # RetroAchievements +# - "launchbox" # Launchbox +# - "gamelist" # ES-DE gamelist.xml +# - "hasheous" # Hasheous +# - "flashpoint" # Flashpoint Project +# - "hltb" # HowLongToBeat +# region: # Used by IGDB and ScreenScraper for regional variants +# - "us" +# - "wor" +# - "ss" +# - "eu" +# - "jp" +# language: # Used by ScreenScraper for descriptions +# - "en" +# - "fr" +# # Media assets to download +# # Only used by Screenscraper and ES-DE gamelist.xml +# media: +# # Used as alternative cover art +# - box2d # Normal cover art (always enabled) +# - box3d # 3D box art +# - miximage # Mixed image of multiple media +# - physical # Disc, cartridge, etc. +# # Added to the screenshots carousel +# - screenshot # Screenshot (enabled by default) +# - title_screen # Title screen +# - fanart # User uploaded artwork +# # Bezel displayed around the emulatorjs window +# - bezel +# # Manual in PDF format +# - manual # Manual (enabled by default) +# # Gameplay video +# - video # Video (warning: large file size) +# # Media used for batocera gamelist.xml export +# - box2d_back # Back cover art +# - logo # Transparent logo +# # Other media assets (might be used in the future) +# - marquee # Custom marquee + +EmulatorJS per-core options +emulatorjs: + debug: true # Available options will be logged to the browser console + cache_limit: null # Cache limit per ROM (in bytes) + settings: + parallel_n64: # Use the exact core name + vsync: disabled + snes9x: + snes9x_region: ntsc + default: # These settings apply to all cores + fps: show + controls: # https://emulatorjs.org/docs4devs/control-mapping/ + snes9x: + 0: # Player 1 + 0: # A MAPPING FOR EACH BUTTON MUST BE SET! + value: x # Mapping for keyboard + value2: BUTTON_2 # Mapping for connected controller + 1: + value: + value2: + 1: # Player 2 + 2: # Player 3 + 3: # Player 4 diff --git a/obsidian-logic/romm/romm.env b/obsidian-logic/romm/romm.env new file mode 100644 index 0000000..690096b --- /dev/null +++ b/obsidian-logic/romm/romm.env @@ -0,0 +1,12 @@ +DB_ROOTPWD= +DB_HOST= +DB_NAME= +DB_USER= +DB_PASSWD= +ROMM_AUTH_SECRET_KEY= +RETROACHIEVEMENTS_API_KEY= +STEAMGRIDDB_API_KEY= +IGDB_CLIENT_ID= +IGDB_CLIENT_SECRET= +SCREENSCRAPER_USER= +SCREENSCRAPER_PASSWORD= \ No newline at end of file diff --git a/obsidian-logic/romm/romm.yml b/obsidian-logic/romm/romm.yml new file mode 100644 index 0000000..7553c76 --- /dev/null +++ b/obsidian-logic/romm/romm.yml @@ -0,0 +1,77 @@ +--- + +# RomM +# Web based rom player and manager +# Created by gantoine +# ↳ https://github.com/rommapp/romm + +services: + romm: + image: rommapp/romm:latest + container_name: romm + restart: unless-stopped + + networks: + - proxy +# ports: +# - 8080:8080 + + environment: + PUID: 1000 + PGID: 1000 + DB_HOST: romm-db + DB_NAME: ${DB_NAME} + DB_USER: ${DB_USER} + DB_PASSWD: ${DB_PASSWORD} + ROMM_AUTH_SECRET_KEY: ${ROMM_AUTH_SECRET_KEY} + SCREENSCRAPER_USER: ${SCREENSCRAPER_USER} + SCREENSCRAPER_PASSWORD: ${SCREENSCRAPER_PASSWORD} + RETROACHIEVEMENTS_API_KEY: ${RETROACHIEVEMENTS_API_KEY} + STEAMGRIDDB_API_KEY: ${STEAMGRIDDB_API_KEY} + IGDB_CLIENT_ID: ${IGDB_CLIENT_ID} + IGDB_CLIENT_SECRET: ${IGDB_CLIENT_SECRET} + HASHEOUS_API_ENABLED: true + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/romm/romm_resources:/romm/resources + - /home/fxequals/docker/romm/romm_redis:/redis-data + - /home/fxequals/docker/romm/roms:/romm/library + - /home/fxequals/docker/romm:/romm/config + - /home/fxequals/docker/romm/assets:/romm/assets + + romm-db: + image: mariadb:latest + container_name: romm-db + restart: unless-stopped + + networks: + - proxy + + environment: + MARIADB_ROOT_PASSWORD: ${DB_ROOTPWD} + MARIADB_DATABASE: ${DB_NAME} + MARIADB_USER: ${DB_USER} + MARIADB_PASSWORD: ${DB_PASSWORD} + + volumes: + - mysql_data:/var/lib/mysql + + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + start_period: 30s + start_interval: 10s + interval: 10s + timeout: 5s + retries: 5 + +networks: + proxy: + external: true + +volumes: + mysql_data: + driver: local + +# Documentation available at https://docs.romm.app/latest/ \ No newline at end of file diff --git a/obsidian-logic/searx/searx.env b/obsidian-logic/searx/searx.env new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/searx/searx.yml b/obsidian-logic/searx/searx.yml new file mode 100644 index 0000000..1403334 --- /dev/null +++ b/obsidian-logic/searx/searx.yml @@ -0,0 +1,61 @@ +--- + +# SearXNG +# Privacy Focused Search Engine +# Created by Searxng +# ↳ https://github.com/searxng/searxng + +services: + searxng-server: + image: docker.io/searxng/searxng:latest + container_name: searxng + restart: unless-stopped + + networks: + - search +# ports: +# - 8080:8080 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/searxng/search:/etc/searxng:rw + + searxng-redis: + image: docker.io/valkey/valkey:8-alpine + container_name: redis + restart: unless-stopped + command: valkey-server --save 30 1 --loglevel warning + + networks: + - search + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /home/fxequals/docker/searsng/redis:/data + + cap_drop: + - ALL + cap_add: + - SETGID + - SETUID + - DAC_OVERRIDE + + logging: + driver: "json-file" + options: + max-size: "1m" + max-file: "1" + +networks: + search: + external: true + +# Documentation available at https://docs.searxng.org/ \ No newline at end of file diff --git a/obsidian-logic/shlinks/shlinks.env b/obsidian-logic/shlinks/shlinks.env new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/shlinks/shlinks.yml b/obsidian-logic/shlinks/shlinks.yml new file mode 100644 index 0000000..59cd6cc --- /dev/null +++ b/obsidian-logic/shlinks/shlinks.yml @@ -0,0 +1,57 @@ +--- + +# Shlink +# Web link URL shortener +# Created by Alejandro Celaya +# ↳ https://github.com/shlinkio/shlink + +services: + shlink-server: + image: ghcr.io/shlinkio/shlink:latest + container_name: shlink + restart: unless-stopped + + networks: + - proxy +# ports: +# - 8080:8080 + + environment: + PUID: 1000 + PGID: 1000 + DEFAULT_DOMAIN: 'links.mydomain.net' + IS_HTTPS_ENABLED: false + GEOLITE_LICENSE_KEY: ${GEO_KEY} + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/shlink/data:/data + + shlink-web-client: + image: ghcr.io/shlinkio/shlink-web-client:latest + container_name: shlink-web-client + restart: unless-stopped + + networks: + - proxy + + environment: + PUID: 1000 + PGID: 1000 + SHLINK_SERVER_URL: 'https://shlinks.mydomain.net' +# SHLINK_SERVER_API_KEY: <--- See Notes + +networks: + proxy: + external: true + +# Documentation available at https://shlink.io/documentation/install-docker-image/ + +# Notes +# +# Create and start container +# Run docker exec -it shlink api-key:generate +# Copy key and go to Servers - Manage Servers - Click 3 dot menu - Edit +# Paste API key +# \ No newline at end of file diff --git a/obsidian-logic/spdf/spdf.env b/obsidian-logic/spdf/spdf.env new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/spdf/spdf.yml b/obsidian-logic/spdf/spdf.yml new file mode 100644 index 0000000..b1821f3 --- /dev/null +++ b/obsidian-logic/spdf/spdf.yml @@ -0,0 +1,32 @@ +--- + +# sPDF +# Self-hosted suite of PDF tools +# Created by Stirling PDF +# ↳ https://github.com/Stirling-Tools/Stirling-PDF + +services: + spdf: + image: frooodle/s-pdf:latest + container_name: spdf + restart: unless-stopped + + networks: + - proxy +# ports: +# - 8080:8080 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/spdf/configs:/configs + +networks: + proxy: + external: true + +# Documentation available at https://hub.docker.com/r/stirlingtools/stirling-pdf \ No newline at end of file diff --git a/obsidian-logic/vaultwarden/vaultwarden.env b/obsidian-logic/vaultwarden/vaultwarden.env new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/vaultwarden/vaultwarden.yml b/obsidian-logic/vaultwarden/vaultwarden.yml new file mode 100644 index 0000000..5b10abb --- /dev/null +++ b/obsidian-logic/vaultwarden/vaultwarden.yml @@ -0,0 +1,32 @@ +--- + +# Vaultwarden +# Open-source Bitwarden password manager +# Created by Daniel García +# ↳ https://github.com/dani-garcia/vaultwarden + +services: + vaultwarden: + image: vaultwarden/server:latest + container_name: vaultwarden + restart: unless-stopped + + networks: + - proxy +# ports: +# - 80:80 + + environment: + PUID: 1000 + PGID: 1000 + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/vaultwarden/data:/data + +networks: + proxy: + external: true + +# Documentation available at https://github.com/dani-garcia/vaultwarden/wiki \ No newline at end of file diff --git a/obsidian-logic/watchtower/README.md b/obsidian-logic/watchtower/README.md new file mode 100644 index 0000000..e69de29 diff --git a/obsidian-logic/watchtower/watchtower.env b/obsidian-logic/watchtower/watchtower.env new file mode 100644 index 0000000..b668c30 --- /dev/null +++ b/obsidian-logic/watchtower/watchtower.env @@ -0,0 +1,8 @@ +WATCHTOWER_NOTIFICATION_EMAIL_FROM= +WATCHTOWER_NOTIFICATION_EMAIL_TO= +WATCHTOWER_NOTIFICATION_EMAIL_SERVER= +WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=25 +WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER= +WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD= +WATCHTOWER_NOTIFICATION_EMAIL_DELAY=3 +WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG= \ No newline at end of file diff --git a/obsidian-logic/watchtower/watchtower.yml b/obsidian-logic/watchtower/watchtower.yml new file mode 100644 index 0000000..96455b2 --- /dev/null +++ b/obsidian-logic/watchtower/watchtower.yml @@ -0,0 +1,40 @@ +--- + +# Watchtower +# Docker Image Updater & Notifications +# Created by containrrr +# ↳ https://github.com/containrrr/watchtower + +services: + watchtower: + image: containrrr/watchtower:latest + container_name: watchtower + restart: unless-stopped + + networks: + - proxy + + environment: + PUID: 1000 + PGID: 1000 + WATCHTOWER_MONITOR_ONLY: true + WATCHTOWER_NOTIFICATIONS: email + WATCHTOWER_NOTIFICATION_EMAIL_FROM: ${WATCHTOWER_NOTIFICATION_EMAIL_FROM} + WATCHTOWER_NOTIFICATION_EMAIL_TO: ${WATCHTOWER_NOTIFICATION_EMAIL_TO} + WATCHTOWER_NOTIFICATION_EMAIL_SERVER: ${WATCHTOWER_NOTIFICATION_EMAIL_SERVER} + WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT: ${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT} + WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER: ${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER} + WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD: ${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD} + WATCHTOWER_NOTIFICATION_EMAIL_DELAY: 3 + WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG: ${WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG} + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /var/run/docker.sock:/var/run/docker.sock + +networks: + proxy: + external: true + +# Documentation available at https://containrrr.dev/watchtower/ \ No newline at end of file diff --git a/obsidian-logic/wordpress/wordpress.env b/obsidian-logic/wordpress/wordpress.env new file mode 100644 index 0000000..5961f32 --- /dev/null +++ b/obsidian-logic/wordpress/wordpress.env @@ -0,0 +1,3 @@ +DB_USER= +DB_PASS= +DB_ROOT= \ No newline at end of file diff --git a/obsidian-logic/wordpress/wordpress.yml b/obsidian-logic/wordpress/wordpress.yml new file mode 100644 index 0000000..24c742a --- /dev/null +++ b/obsidian-logic/wordpress/wordpress.yml @@ -0,0 +1,69 @@ +--- + +# WordPress +# Content Management System +# Created by WordPress Foundation +# ↳ https://github.com/WordPress + +services: + wordpress: + image: docker.io/bitnami/wordpress:latest + container_name: wordpress-server + restart: unless-stopped + depends_on: + - wordpress-mariadb + + networks: + - proxy +# ports: +# - 80:80 +# - 443:443 + + environment: + PUID: 1000 + PGID: 1000 + WORDPRESS_DATABASE_HOST: 'wordpress-mariadb' + WORDPRESS_DATABASE_USER: ${DB_USER} + WORDPRESS_DATABASE_PASSWORD: ${DB_PASS} + WORDPRESS_DATABASE_PORT_NUMBER: 3306 + WORDPRESS_DATABASE_NAME: 'wordpress' + WORDPRESS_USERNAME: ${WP_USER} + WORDPRESS_PASSWORD: ${WP_PASS} + WORDPRESS_EMAIL: ${WP_EMAIL} + WORDPRESS_FIRSTNAME: ${WP_FNAME} + WORDPRESS_LASTNAME: ${WP_LNAME} + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/wordpress/data:/bitnami/wordpress # sudo chown 1001 on host folder + + wordpress-mariadb: + image: docker.io/bitnami/mariadb:latest + container_name: wordpress-mariadb + restart: unless-stopped + + networks: + - proxy +# ports: +# - 3306:3306 + + environment: + PUID: 1000 + PGID: 1000 + ALLOW_EMPTY_PASSWORD: no + MARIADB_USER: ${DB_USER} + MARIADB_PASSWORD: ${DB_PASS} + MARIADB_DATABASE: wordpress + MARIADB_ROOT_PASSWORD: ${DB_ROOT} + + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + - /home/fxequals/docker/wordpress/database:/bitnami/mariadb # sudo chown 1001 on host folder + +networks: + proxy: + external: true + +# Documentation available at https://wordpress.com/support/ \ No newline at end of file