diff --git a/compose/core/tinyauth/.env b/compose/core/tinyauth/.env new file mode 100644 index 0000000..dc20b36 --- /dev/null +++ b/compose/core/tinyauth/.env @@ -0,0 +1,7 @@ +TZ=America/Los_Angeles +PUID=1000 +PGID=1000 + +MYSQL_DATABASE=librenms +MYSQL_USER=librenms +MYSQL_PASSWORD=asupersecretpassword diff --git a/compose/core/tinyauth/compose.yaml b/compose/core/tinyauth/compose.yaml new file mode 100644 index 0000000..7bf1b89 --- /dev/null +++ b/compose/core/tinyauth/compose.yaml @@ -0,0 +1,54 @@ +services: + traefik: + container_name: traefik + image: traefik:v3.3 + command: --api.insecure=true --providers.docker + ports: + - 80:80 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + + whoami: + container_name: whoami + image: traefik/whoami:latest + labels: + traefik.enable: true + traefik.http.routers.whoami.rule: Host(`whoami.example.com`) + traefik.http.routers.whoami.middlewares: tinyauth + + tinyauth-frontend: + container_name: tinyauth-frontend + build: + context: . + dockerfile: frontend/Dockerfile.dev + volumes: + - ./frontend/src:/frontend/src + ports: + - 5173:5173 + labels: + traefik.enable: true + traefik.http.routers.tinyauth.rule: Host(`tinyauth.example.com`) + + tinyauth-backend: + container_name: tinyauth-backend + build: + context: . + dockerfile: Dockerfile.dev + args: + - VERSION=development + - COMMIT_HASH=development + - BUILD_TIMESTAMP=000-00-00T00:00:00Z + env_file: .env + volumes: + - ./internal:/tinyauth/internal + - ./cmd:/tinyauth/cmd + - ./main.go:/tinyauth/main.go + - /var/run/docker.sock:/var/run/docker.sock + - ./data:/data + ports: + - 3000:3000 + - 4000:4000 + labels: + traefik.enable: true + traefik.http.middlewares.tinyauth.forwardauth.address: http://tinyauth-backend:3000/api/auth/traefik + diff --git a/compose/media/frontend/immich/.env b/compose/media/frontend/immich/.env new file mode 100644 index 0000000..46d8baa --- /dev/null +++ b/compose/media/frontend/immich/.env @@ -0,0 +1,22 @@ +# You can find documentation for all the supported env variables at https://docs.immich.app/install/environment-variables + +# The location where your uploaded files are stored +UPLOAD_LOCATION=./library + +# The location where your database files are stored. Network shares are not supported for the database +DB_DATA_LOCATION=./postgres + +# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List +TZ=America/Los_Angeles + +# The Immich version to use. You can pin this to a specific version like "v1.71.0" +IMMICH_VERSION=V2.1.0 + +# Connection secret for postgres. You should change it to a random password +# Please use only the characters `A-Za-z0-9`, without special characters or spaces +#DB_PASSWORD=postgres + +# The values below this line do not need to be changed +################################################################################### +DB_USERNAME=postgres +DB_DATABASE_NAME=immich diff --git a/compose/media/frontend/immich/docker-compose.yml b/compose/media/frontend/immich/docker-compose.yml new file mode 100644 index 0000000..ade846b --- /dev/null +++ b/compose/media/frontend/immich/docker-compose.yml @@ -0,0 +1,75 @@ +# +# WARNING: To install Immich, follow our guide: https://docs.immich.app/install/docker-compose +# +# Make sure to use the docker-compose.yml of the current release: +# +# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml +# https://docs.immich.app/install/docker-compose/ +# +# The compose file on main may not be compatible with the latest release. + +name: immich + +services: + immich-server: + container_name: immich_server + image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + # extends: + # file: hwaccel.transcoding.yml + # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding + volumes: + # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file + - ${UPLOAD_LOCATION}:/data + - /etc/localtime:/etc/localtime:ro + env_file: + - .env + ports: + - '2283:2283' + depends_on: + - redis + - database + restart: always + healthcheck: + disable: false + + immich-machine-learning: + container_name: immich_machine_learning + # For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag. + # Example tag: ${IMMICH_VERSION:-release}-cuda + image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} + # extends: # uncomment this section for hardware acceleration - see https://docs.immich.app/features/ml-hardware-acceleration + # file: hwaccel.ml.yml + # service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable + volumes: + - model-cache:/cache + env_file: + - .env + restart: always + healthcheck: + disable: false + + redis: + container_name: immich_redis + image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571 + healthcheck: + test: redis-cli ping || exit 1 + restart: always + + database: + container_name: immich_postgres + image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23 + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + POSTGRES_INITDB_ARGS: '--data-checksums' + # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs + # DB_STORAGE_TYPE: 'HDD' + volumes: + # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file + - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + shm_size: 128mb + restart: always + +volumes: + model-cache: diff --git a/compose/media/frontend/jellyfin/compose.yaml b/compose/media/frontend/jellyfin/compose.yaml new file mode 100644 index 0000000..ba01880 --- /dev/null +++ b/compose/media/frontend/jellyfin/compose.yaml @@ -0,0 +1,42 @@ +# Compose Docs: +# https://jellyfin.org/docs/general/installation/container/?method=docker-compose +# Transcoding Docs +# https://jellyfin.org/docs/general/post-install/transcoding/hardware-acceleration/nvidia +services: + jellyfin: + image: jellyfin/jellyfin + container_name: jellyfin + user: uid:gid + ports: + - 8096:8096/tcp + - 7359:7359/udp + volumes: + - /path/to/config:/config + - /path/to/cache:/cache + - type: bind + source: /path/to/media + target: /media + - type: bind + source: /path/to/media2 + target: /media2 + read_only: true + # Optional - extra fonts to be used during transcoding with subtitle burn-in + - type: bind + source: /path/to/fonts + target: /usr/local/share/fonts/custom + read_only: true + restart: 'unless-stopped' + # Optional - alternative address used for autodiscovery + environment: + - JELLYFIN_PublishedServerUrl=http://example.com + # Optional - may be necessary for docker healthcheck to pass if running in host network mode + extra_hosts: + - 'host.docker.internal:host-gateway' + runtime: nvidia + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] diff --git a/compose/media/frontend/jellyseer/compose.yml b/compose/media/frontend/jellyseer/compose.yml index 401818b..9ed27d3 100644 --- a/compose/media/frontend/jellyseer/compose.yml +++ b/compose/media/frontend/jellyseer/compose.yml @@ -1,11 +1,14 @@ +# https://hub.docker.com/r/fallenbagel/jellyseerr services: - jellyseer: - image: - container_name: jellyseer - restart: unless-stopped - # ports: - # - ":" - # volumes: - # - ./data:/data - # environment: - # - VARIABLE=value + jellyseerr: + image: fallenbagel/jellyseerr:latest + container_name: jellyseerr + environment: + - LOG_LEVEL=debug + - TZ=America/Los_Angeles + ports: + - 8002:5055 + volumes: + - /path/to/appdata/config:/app/config + restart: unless-stopped + diff --git a/compose/services/FreshRSS/compose.yml b/compose/services/FreshRSS/compose.yml index f57eebf..bc45db0 100644 --- a/compose/services/FreshRSS/compose.yml +++ b/compose/services/FreshRSS/compose.yml @@ -1,11 +1,14 @@ +# https://docs.linuxserver.io/images/docker-freshrss/ +--- services: - FreshRSS: - image: - container_name: FreshRSS + freshrss: + image: lscr.io/linuxserver/freshrss:latest + container_name: freshrss + environment: + - PUID=1000 + - PGID=1000 + volumes: + - /path/to/freshrss/config:/config + ports: + - 8000:80 restart: unless-stopped - # ports: - # - ":" - # volumes: - # - ./data:/data - # environment: - # - VARIABLE=value diff --git a/compose/services/calibre-web/compose.yml b/compose/services/calibre-web/compose.yml index 72c513e..8316c4b 100644 --- a/compose/services/calibre-web/compose.yml +++ b/compose/services/calibre-web/compose.yml @@ -1,11 +1,19 @@ +# https://hub.docker.com/r/linuxserver/calibre-web +--- services: calibre-web: - image: + image: lscr.io/linuxserver/calibre-web:latest container_name: calibre-web + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + - DOCKER_MODS=linuxserver/mods:universal-calibre #optional + - OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional + volumes: + - /path/to/calibre-web/data:/config + - /path/to/calibre/library:/books + ports: + - 8002:8083 restart: unless-stopped - # ports: - # - ":" - # volumes: - # - ./data:/data - # environment: - # - VARIABLE=value + diff --git a/compose/services/linkwarden/.env b/compose/services/linkwarden/.env new file mode 100644 index 0000000..97d0c92 --- /dev/null +++ b/compose/services/linkwarden/.env @@ -0,0 +1,473 @@ +NEXTAUTH_URL=http://localhost:3000/api/v1/auth +NEXTAUTH_SECRET= + +# Manual installation database settings +# Example: DATABASE_URL=postgresql://user:password@localhost:5432/linkwarden +DATABASE_URL= + +# Docker installation database settings +POSTGRES_PASSWORD= + +# Additional Optional Settings +PAGINATION_TAKE_COUNT= +STORAGE_FOLDER= +AUTOSCROLL_TIMEOUT= +NEXT_PUBLIC_DISABLE_REGISTRATION= +NEXT_PUBLIC_CREDENTIALS_ENABLED= +DISABLE_NEW_SSO_USERS= +MAX_LINKS_PER_USER= +ARCHIVE_TAKE_COUNT= +BROWSER_TIMEOUT= +IGNORE_UNAUTHORIZED_CA= +IGNORE_HTTPS_ERRORS= +IGNORE_URL_SIZE_LIMIT= +NEXT_PUBLIC_DEMO= +NEXT_PUBLIC_DEMO_USERNAME= +NEXT_PUBLIC_DEMO_PASSWORD= +NEXT_PUBLIC_ADMIN= +NEXT_PUBLIC_MAX_FILE_BUFFER= +PDF_MAX_BUFFER= +SCREENSHOT_MAX_BUFFER= +READABILITY_MAX_BUFFER= +PREVIEW_MAX_BUFFER= +MONOLITH_MAX_BUFFER= +MONOLITH_CUSTOM_OPTIONS= +IMPORT_LIMIT= +PLAYWRIGHT_LAUNCH_OPTIONS_EXECUTABLE_PATH= +PLAYWRIGHT_WS_URL= +MAX_WORKERS= +DISABLE_PRESERVATION= +NEXT_PUBLIC_RSS_POLLING_INTERVAL_MINUTES= +RSS_SUBSCRIPTION_LIMIT_PER_USER= +TEXT_CONTENT_LIMIT= +SEARCH_FILTER_LIMIT= +INDEX_TAKE_COUNT= +MEILI_TIMEOUT= + +# AI Settings +NEXT_PUBLIC_OLLAMA_ENDPOINT_URL= +OLLAMA_MODEL= + +# https://ai-sdk.dev/providers/openai-compatible-providers +OPENAI_API_KEY= +OPENAI_MODEL= +# Optional: Set a custom OpenAI base URL and name (for third-party providers) +CUSTOM_OPENAI_BASE_URL= +CUSTOM_OPENAI_NAME= + +# https://sdk.vercel.ai/providers/ai-sdk-providers/azure +AZURE_API_KEY= +AZURE_RESOURCE_NAME= +AZURE_MODEL= + +# https://sdk.vercel.ai/providers/ai-sdk-providers/anthropic +ANTHROPIC_API_KEY= +ANTHROPIC_MODEL= + +# https://github.com/OpenRouterTeam/ai-sdk-provider +OPENROUTER_API_KEY= +OPENROUTER_MODEL= + +# https://ai-sdk.dev/providers/ai-sdk-providers/perplexity +PERPLEXITY_API_KEY= +PERPLEXITY_MODEL= + +# MeiliSearch Settings +MEILI_HOST= +MEILI_MASTER_KEY= + +# AWS S3 Settings +SPACES_KEY= +SPACES_SECRET= +SPACES_ENDPOINT= +SPACES_BUCKET_NAME= +SPACES_REGION= +SPACES_FORCE_PATH_STYLE= + +# SMTP Settings +NEXT_PUBLIC_EMAIL_PROVIDER= +EMAIL_FROM= +EMAIL_SERVER= +BASE_URL= + +# Proxy settings +PROXY= +PROXY_USERNAME= +PROXY_PASSWORD= +PROXY_BYPASS= + +# PDF archive settings +PDF_MARGIN_TOP= +PDF_MARGIN_BOTTOM= + +################# +# SSO Providers # +################# + +# 42 School +NEXT_PUBLIC_FORTYTWO_ENABLED= +FORTYTWO_CUSTOM_NAME= +FORTYTWO_CLIENT_ID= +FORTYTWO_CLIENT_SECRET= + +# Apple +NEXT_PUBLIC_APPLE_ENABLED= +APPLE_CUSTOM_NAME= +APPLE_ID= +APPLE_SECRET= + +# Atlassian +NEXT_PUBLIC_ATLASSIAN_ENABLED= +ATLASSIAN_CUSTOM_NAME= +ATLASSIAN_CLIENT_ID= +ATLASSIAN_CLIENT_SECRET= +ATLASSIAN_SCOPE= + +# Auth0 +NEXT_PUBLIC_AUTH0_ENABLED= +AUTH0_CUSTOM_NAME= +AUTH0_ISSUER= +AUTH0_CLIENT_SECRET= +AUTH0_CLIENT_ID= + +# Authelia +NEXT_PUBLIC_AUTHELIA_ENABLED="" +AUTHELIA_CLIENT_ID="" +AUTHELIA_CLIENT_SECRET="" +AUTHELIA_WELLKNOWN_URL="" + +# Authentik +NEXT_PUBLIC_AUTHENTIK_ENABLED= +AUTHENTIK_CUSTOM_NAME= +AUTHENTIK_ISSUER= +AUTHENTIK_CLIENT_ID= +AUTHENTIK_CLIENT_SECRET= + +# Azure AD B2C +NEXT_PUBLIC_AZURE_AD_B2C_ENABLED= +AZURE_AD_B2C_TENANT_NAME= +AZURE_AD_B2C_CLIENT_ID= +AZURE_AD_B2C_CLIENT_SECRET= +AZURE_AD_B2C_PRIMARY_USER_FLOW= + +# Azure AD +NEXT_PUBLIC_AZURE_AD_ENABLED= +AZURE_AD_CLIENT_ID= +AZURE_AD_CLIENT_SECRET= +AZURE_AD_TENANT_ID= + +# Battle.net +NEXT_PUBLIC_BATTLENET_ENABLED= +BATTLENET_CUSTOM_NAME= +BATTLENET_CLIENT_ID= +BATTLENET_CLIENT_SECRET= +BATTLENET_ISSUER= + +# Box +NEXT_PUBLIC_BOX_ENABLED= +BOX_CUSTOM_NAME= +BOX_CLIENT_ID= +BOX_CLIENT_SECRET= + +# Bungie +NEXT_PUBLIC_BUNGIE_ENABLED= +BUNGIE_CUSTOM_NAME= +BUNGIE_CLIENT_ID= +BUNGIE_CLIENT_SECRET= +BUNGIE_API_KEY= + +# Cognito +NEXT_PUBLIC_COGNITO_ENABLED= +COGNITO_CUSTOM_NAME= +COGNITO_CLIENT_ID= +COGNITO_CLIENT_SECRET= +COGNITO_ISSUER= + +# Coinbase +NEXT_PUBLIC_COINBASE_ENABLED= +COINBASE_CUSTOM_NAME= +COINBASE_CLIENT_ID= +COINBASE_CLIENT_SECRET= + +# Discord +NEXT_PUBLIC_DISCORD_ENABLED= +DISCORD_CUSTOM_NAME= +DISCORD_CLIENT_ID= +DISCORD_CLIENT_SECRET= + +# Dropbox +NEXT_PUBLIC_DROPBOX_ENABLED= +DROPBOX_CUSTOM_NAME= +DROPBOX_CLIENT_ID= +DROPBOX_CLIENT_SECRET= + +# DuendeIndentityServer6 +NEXT_PUBLIC_DUENDE_IDS6_ENABLED= +DUENDE_IDS6_CUSTOM_NAME= +DUENDE_IDS6_CLIENT_ID= +DUENDE_IDS6_CLIENT_SECRET= +DUENDE_IDS6_ISSUER= + +# EVE Online +NEXT_PUBLIC_EVEONLINE_ENABLED= +EVEONLINE_CUSTOM_NAME= +EVEONLINE_CLIENT_ID= +EVEONLINE_CLIENT_SECRET= + +# Facebook +NEXT_PUBLIC_FACEBOOK_ENABLED= +FACEBOOK_CUSTOM_NAME= +FACEBOOK_CLIENT_ID= +FACEBOOK_CLIENT_SECRET= + +# FACEIT +NEXT_PUBLIC_FACEIT_ENABLED= +FACEIT_CUSTOM_NAME= +FACEIT_CLIENT_ID= +FACEIT_CLIENT_SECRET= + +# Foursquare +NEXT_PUBLIC_FOURSQUARE_ENABLED= +FOURSQUARE_CUSTOM_NAME= +FOURSQUARE_CLIENT_ID= +FOURSQUARE_CLIENT_SECRET= +FOURSQUARE_APIVERSION= + +# Freshbooks +NEXT_PUBLIC_FRESHBOOKS_ENABLED= +FRESHBOOKS_CUSTOM_NAME= +FRESHBOOKS_CLIENT_ID= +FRESHBOOKS_CLIENT_SECRET= + +# FusionAuth +NEXT_PUBLIC_FUSIONAUTH_ENABLED= +FUSIONAUTH_CUSTOM_NAME= +FUSIONAUTH_CLIENT_ID= +FUSIONAUTH_CLIENT_SECRET= +FUSIONAUTH_ISSUER= +FUSIONAUTH_TENANT_ID= + +# GitHub +NEXT_PUBLIC_GITHUB_ENABLED= +GITHUB_CUSTOM_NAME= +GITHUB_ID= +GITHUB_SECRET= + +# GitLab +NEXT_PUBLIC_GITLAB_ENABLED= +GITLAB_CUSTOM_NAME= +GITLAB_CLIENT_ID= +GITLAB_CLIENT_SECRET= +GITLAB_AUTH_URL= + +# Google +NEXT_PUBLIC_GOOGLE_ENABLED= +GOOGLE_CUSTOM_NAME= +GOOGLE_CLIENT_ID= +GOOGLE_CLIENT_SECRET= + +# HubSpot +NEXT_PUBLIC_HUBSPOT_ENABLED= +HUBSPOT_CUSTOM_NAME= +HUBSPOT_CLIENT_ID= +HUBSPOT_CLIENT_SECRET= + +# IdentityServer4 +NEXT_PUBLIC_IDS4_ENABLED= +IDS4_CUSTOM_NAME= +IDS4_CLIENT_ID= +IDS4_CLIENT_SECRET= +IDS4_ISSUER= + +# Kakao +NEXT_PUBLIC_KAKAO_ENABLED= +KAKAO_CUSTOM_NAME= +KAKAO_CLIENT_ID= +KAKAO_CLIENT_SECRET= + +# Keycloak +NEXT_PUBLIC_KEYCLOAK_ENABLED= +KEYCLOAK_CUSTOM_NAME= +KEYCLOAK_ISSUER= +KEYCLOAK_CLIENT_ID= +KEYCLOAK_CLIENT_SECRET= + +# LINE +NEXT_PUBLIC_LINE_ENABLED= +LINE_CUSTOM_NAME= +LINE_CLIENT_ID= +LINE_CLIENT_SECRET= + +# LinkedIn +NEXT_PUBLIC_LINKEDIN_ENABLED= +LINKEDIN_CUSTOM_NAME= +LINKEDIN_CLIENT_ID= +LINKEDIN_CLIENT_SECRET= + +# Mailchimp +NEXT_PUBLIC_MAILCHIMP_ENABLED= +MAILCHIMP_CUSTOM_NAME= +MAILCHIMP_CLIENT_ID= +MAILCHIMP_CLIENT_SECRET= + +# Mail.ru +NEXT_PUBLIC_MAILRU_ENABLED= +MAILRU_CUSTOM_NAME= +MAILRU_CLIENT_ID= +MAILRU_CLIENT_SECRET= + +# Naver +NEXT_PUBLIC_NAVER_ENABLED= +NAVER_CUSTOM_NAME= +NAVER_CLIENT_ID= +NAVER_CLIENT_SECRET= + +# Netlify +NEXT_PUBLIC_NETLIFY_ENABLED= +NETLIFY_CUSTOM_NAME= +NETLIFY_CLIENT_ID= +NETLIFY_CLIENT_SECRET= + +# Okta +NEXT_PUBLIC_OKTA_ENABLED= +OKTA_CUSTOM_NAME= +OKTA_CLIENT_ID= +OKTA_CLIENT_SECRET= +OKTA_ISSUER= + +# OneLogin +NEXT_PUBLIC_ONELOGIN_ENABLED= +ONELOGIN_CUSTOM_NAME= +ONELOGIN_CLIENT_ID= +ONELOGIN_CLIENT_SECRET= +ONELOGIN_ISSUER= + +# Osso +NEXT_PUBLIC_OSSO_ENABLED= +OSSO_CUSTOM_NAME= +OSSO_CLIENT_ID= +OSSO_CLIENT_SECRET= +OSSO_ISSUER= + +# osu! +NEXT_PUBLIC_OSU_ENABLED= +OSU_CUSTOM_NAME= +OSU_CLIENT_ID= +OSU_CLIENT_SECRET= + +# Patreon +NEXT_PUBLIC_PATREON_ENABLED= +PATREON_CUSTOM_NAME= +PATREON_CLIENT_ID= +PATREON_CLIENT_SECRET= + +# Pinterest +NEXT_PUBLIC_PINTEREST_ENABLED= +PINTEREST_CUSTOM_NAME= +PINTEREST_CLIENT_ID= +PINTEREST_CLIENT_SECRET= + +# Pipedrive +NEXT_PUBLIC_PIPEDRIVE_ENABLED= +PIPEDRIVE_CUSTOM_NAME= +PIPEDRIVE_CLIENT_ID= +PIPEDRIVE_CLIENT_SECRET= + +# Reddit +NEXT_PUBLIC_REDDIT_ENABLED= +REDDIT_CUSTOM_NAME= +REDDIT_CLIENT_ID= +REDDIT_CLIENT_SECRET= + +# Salesforce +NEXT_PUBLIC_SALESFORCE_ENABLED= +SALESFORCE_CUSTOM_NAME= +SALESFORCE_CLIENT_ID= +SALESFORCE_CLIENT_SECRET= + +# Slack +NEXT_PUBLIC_SLACK_ENABLED= +SLACK_CUSTOM_NAME= +SLACK_CLIENT_ID= +SLACK_CLIENT_SECRET= + +# Spotify +NEXT_PUBLIC_SPOTIFY_ENABLED= +SPOTIFY_CUSTOM_NAME= +SPOTIFY_CLIENT_ID= +SPOTIFY_CLIENT_SECRET= + +# Strava +NEXT_PUBLIC_STRAVA_ENABLED= +STRAVA_CUSTOM_NAME= +STRAVA_CLIENT_ID= +STRAVA_CLIENT_SECRET= + +# Synology +NEXT_PUBLIC_SYNOLOGY_ENABLED= +SYNOLOGY_CUSTOM_NAME= +SYNOLOGY_CLIENT_ID= +SYNOLOGY_CLIENT_SECRET= +SYNOLOGY_WELLKNOWN_URL= + +# Todoist +NEXT_PUBLIC_TODOIST_ENABLED= +TODOIST_CUSTOM_NAME= +TODOIST_CLIENT_ID= +TODOIST_CLIENT_SECRET= + +# Twitch +NEXT_PUBLIC_TWITCH_ENABLED= +TWITCH_CUSTOM_NAME= +TWITCH_CLIENT_ID= +TWITCH_CLIENT_SECRET= + +# United Effects +NEXT_PUBLIC_UNITED_EFFECTS_ENABLED= +UNITED_EFFECTS_CUSTOM_NAME= +UNITED_EFFECTS_CLIENT_ID= +UNITED_EFFECTS_CLIENT_SECRET= +UNITED_EFFECTS_ISSUER= + +# VK +NEXT_PUBLIC_VK_ENABLED= +VK_CUSTOM_NAME= +VK_CLIENT_ID= +VK_CLIENT_SECRET= + +# Wikimedia +NEXT_PUBLIC_WIKIMEDIA_ENABLED= +WIKIMEDIA_CUSTOM_NAME= +WIKIMEDIA_CLIENT_ID= +WIKIMEDIA_CLIENT_SECRET= + +# Wordpress.com +NEXT_PUBLIC_WORDPRESS_ENABLED= +WORDPRESS_CUSTOM_NAME= +WORDPRESS_CLIENT_ID= +WORDPRESS_CLIENT_SECRET= + +# Yandex +NEXT_PUBLIC_YANDEX_ENABLED= +YANDEX_CUSTOM_NAME= +YANDEX_CLIENT_ID= +YANDEX_CLIENT_SECRET= + +# Zitadel +NEXT_PUBLIC_ZITADEL_ENABLED= +ZITADEL_CUSTOM_NAME= +ZITADEL_CLIENT_ID= +ZITADEL_CLIENT_SECRET= +ZITADEL_ISSUER= + +# Zoho +NEXT_PUBLIC_ZOHO_ENABLED= +ZOHO_CUSTOM_NAME= +ZOHO_CLIENT_ID= +ZOHO_CLIENT_SECRET= + +# Zoom +NEXT_PUBLIC_ZOOM_ENABLED= +ZOOM_CUSTOM_NAME= +ZOOM_CLIENT_ID= +ZOOM_CLIENT_SECRET= diff --git a/compose/services/linkwarden/compose.yaml b/compose/services/linkwarden/compose.yaml new file mode 100644 index 0000000..5e97376 --- /dev/null +++ b/compose/services/linkwarden/compose.yaml @@ -0,0 +1,29 @@ +# https://docs.linkwarden.app/self-hosting/installation +services: + postgres: + image: postgres:16-alpine + env_file: .env + restart: always + volumes: + - ./pgdata:/var/lib/postgresql/data + linkwarden: + env_file: .env + environment: + - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres + restart: always + # build: . # uncomment to build from source + image: ghcr.io/linkwarden/linkwarden:latest # comment to build from source + ports: + - 3000:3000 + volumes: + - ./data:/data/data + depends_on: + - postgres + - meilisearch + meilisearch: + image: getmeili/meilisearch:v1.12.8 + restart: always + env_file: + - .env + volumes: + - ./meili_data:/meili_data diff --git a/compose/services/linkwarden/compose.yml b/compose/services/linkwarden/compose.yml deleted file mode 100644 index be3a5fc..0000000 --- a/compose/services/linkwarden/compose.yml +++ /dev/null @@ -1,11 +0,0 @@ -services: - linkwarden: - image: - container_name: linkwarden - restart: unless-stopped - # ports: - # - ":" - # volumes: - # - ./data:/data - # environment: - # - VARIABLE=value diff --git a/compose/services/lubelogger/compose.yml b/compose/services/lubelogger/compose.yml index 46141a2..0d1111d 100644 --- a/compose/services/lubelogger/compose.yml +++ b/compose/services/lubelogger/compose.yml @@ -1,11 +1,15 @@ +--- + services: - lubelogger: - image: - container_name: lubelogger + app: + image: ghcr.io/hargata/lubelogger:latest restart: unless-stopped - # ports: - # - ":" - # volumes: - # - ./data:/data - # environment: - # - VARIABLE=value + volumes: + - data:/App/data + - keys:/root/.aspnet/DataProtection-Keys + ports: + - 8007:8080 + +volumes: + data: + keys: diff --git a/compose/services/vikunja/compose.yml b/compose/services/vikunja/compose.yml index bcab5d8..e18b7f3 100644 --- a/compose/services/vikunja/compose.yml +++ b/compose/services/vikunja/compose.yml @@ -1,11 +1,32 @@ +# https://vikunja.io/docs/full-docker-example/#example-without-any-proxy services: vikunja: - image: - container_name: vikunja + image: vikunja/vikunja + environment: + VIKUNJA_SERVICE_PUBLICURL: http:// + VIKUNJA_DATABASE_HOST: db + VIKUNJA_DATABASE_PASSWORD: changeme + VIKUNJA_DATABASE_TYPE: postgres + VIKUNJA_DATABASE_USER: vikunja + VIKUNJA_DATABASE_DATABASE: vikunja + VIKUNJA_SERVICE_JWTSECRET: + ports: + - 3456:3456 + volumes: + - ./files:/app/vikunja/files + depends_on: + db: + condition: service_healthy restart: unless-stopped - # ports: - # - ":" - # volumes: - # - ./data:/data - # environment: - # - VARIABLE=value + db: + image: postgres:18 + environment: + POSTGRES_PASSWORD: changeme + POSTGRES_USER: vikunja + volumes: + - ./db:/var/lib/postgresql/data + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "pg_isready -h localhost -U $$POSTGRES_USER"] + interval: 2s + start_period: 30s