[Quadlet] DefaultDependencies=false [Unit] Description=ezBookkeeping After=network-online.target Wants=network-online.target [Container] Image=docker.io/mayswind/ezbookkeeping:{{ version['containers']['ezbookkeeping'] }} ContainerName=ezbookkeeping HostName=ezbookkeeping PublishPort={{ services['ezbookkeeping']['ports']['http'] }}:8080/tcp Volume=%h/data/containers/ezbookkeeping/data:/data:rw Volume=%h/containers/ezbookkeeping/ssl:/etc/ssl/ezbookkeeping:ro # General Environment="TZ=Asia/Seoul" Environment="EBK_SERVER_DOMAIN={{ services['ezbookkeeping']['domain']['public'] }}.{{ domain['public'] }}" Environment="EBK_SERVER_ROOT_URL=https://{{ services['ezbookkeeping']['domain']['public'] }}.{{ domain['public'] }}/" Environment="EBK_LOG_MODE=console" # Database Environment="EBK_DATABASE_TYPE=postgres" Environment="EBK_DATABASE_HOST={{ services['postgresql']['domain'] }}.{{ domain['internal'] }}:{{ services['postgresql']['ports']['tcp'] }}" Environment="EBK_DATABASE_NAME=ezbookkeeping_db" Environment="EBK_DATABASE_USER=ezbookkeeping" Secret=EBK_DATABASE_PASSWD,type=env Environment="EBK_DATABASE_SSL_MODE=verify-full" Environment="PGSSLROOTCERT=/etc/ssl/ezbookkeeping/{{ root_cert_filename }}" # OIDC Environment="EBK_AUTH_ENABLE_OAUTH2_AUTH=true" Environment="EBK_AUTH_OAUTH2_PROVIDER=oidc" Environment="EBK_AUTH_OAUTH2_CLIENT_ID=ezbookkeeping" Secret=EBK_AUTH_OAUTH2_CLIENT_SECRET,type=env Environment="EBK_AUTH_OAUTH2_USE_PKCE=true" Environment="EBK_AUTH_OIDC_PROVIDER_BASE_URL=https://{{ services['authelia']['domain'] }}.{{ domain['public'] }}" Environment="EBK_AUTH_ENABLE_OIDC_DISPLAY_NAME=true" Environment="EBK_AUTH_OIDC_CUSTOM_DISPLAY_NAME=Authelia" # Registration / auth policy Environment="EBK_AUTH_ENABLE_INTERNAL_AUTH=false" Environment="EBK_USER_ENABLE_REGISTER=true" Environment="EBK_AUTH_OAUTH2_AUTO_REGISTER=true" # AI / MCP disabled by default Environment="EBK_MCP_ENABLE_MCP=false" Environment="EBK_LLM_TRANSACTION_FROM_AI_IMAGE_RECOGNITION=false" [Service] ExecStartPre=/usr/bin/nc -zv {{ services['postgresql']['domain'] }}.{{ domain['internal'] }} {{ services['postgresql']['ports']['tcp'] }} Restart=always RestartSec=10s TimeoutStopSec=120 [Install] WantedBy=default.target