From c1400b8110273283f509d576d58592a89dd793a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Krop=C3=A1=C4=8Dek?= Date: Mon, 15 Apr 2024 13:05:56 +0200 Subject: [PATCH] adding firefly --- inventory.py | 2 +- services/firefly/.env.example | 148 ++++++++++++++++++++++++++++ services/firefly/.importer.env | 60 +++++++++++ services/firefly/docker-compose.yml | 55 +++++++++++ 4 files changed, 264 insertions(+), 1 deletion(-) create mode 100644 services/firefly/.env.example create mode 100644 services/firefly/.importer.env create mode 100644 services/firefly/docker-compose.yml diff --git a/inventory.py b/inventory.py index 8f2bca8..49b153f 100644 --- a/inventory.py +++ b/inventory.py @@ -15,7 +15,7 @@ servers = [ "ssh_user": "root", "web_server": True, "services": [ - "nginx", "immich", "nodered" + "nginx", "immich", "nodered", "firefly" ] } ) diff --git a/services/firefly/.env.example b/services/firefly/.env.example new file mode 100644 index 0000000..886d376 --- /dev/null +++ b/services/firefly/.env.example @@ -0,0 +1,148 @@ +APP_ENV=production +APP_DEBUG=false +SITE_OWNER=kropikuba@gmail.com +APP_URL= +HOST= +# Must be 32 characters +APP_KEY= + +DEFAULT_LANGUAGE=en_US +DEFAULT_LOCALE=equal + +TZ=Europe/Prague + +TRUSTED_PROXIES=** + +# Also available are 'syslog', 'errorlog' and 'stdout' which will log to the system itself. +# A rotating log option is 'daily', creates 5 files that (surprise) rotate. +# A cool option is 'papertrail' for cloud logging +# Default setting 'stack' will log to 'daily' and to 'stdout' at the same time. +LOG_CHANNEL=stack +APP_LOG_LEVEL=notice +AUDIT_LOG_LEVEL=emergency +AUDIT_LOG_CHANNEL= + +PAPERTRAIL_HOST= +PAPERTRAIL_PORT= + +# Use "pgsql" for PostgreSQL +# Use "mysql" for MySQL and MariaDB. +# Use "sqlite" for SQLite. +DB_CONNECTION=mysql +DB_HOST=db +DB_PORT=3306 +DB_DATABASE=firefly +DB_USERNAME=firefly +DB_PASSWORD=eu0ecaSileengoyoh2ohlohthi8thoo6 +DB_SOCKET= + +# MySQL supports SSL. You can configure it here. +# If you use Docker or similar, you can set these variables from a file by appending them with _FILE +MYSQL_USE_SSL=false +MYSQL_SSL_VERIFY_SERVER_CERT=true +# You need to set at least of these options +MYSQL_SSL_CAPATH=/etc/ssl/certs/ +MYSQL_SSL_CA= +MYSQL_SSL_CERT= +MYSQL_SSL_KEY= +MYSQL_SSL_CIPHER= + +# PostgreSQL supports SSL. You can configure it here. +# If you use Docker or similar, you can set these variables from a file by appending them with _FILE +PGSQL_SSL_MODE=prefer +PGSQL_SSL_ROOT_CERT=null +PGSQL_SSL_CERT=null +PGSQL_SSL_KEY=null +PGSQL_SSL_CRL_FILE=null +PGSQL_SCHEMA=public + +CACHE_DRIVER=file +SESSION_DRIVER=file +# If you set either of the options above to 'redis', you might want to update these settings too +# REDIS_PORT_FILE to set the value from a file instead of from an environment variable +REDIS_SCHEME=tcp +# use only when using 'unix' for REDIS_SCHEME. Leave empty otherwise. +REDIS_PATH= +# use only when using 'tcp' or 'http' for REDIS_SCHEME. Leave empty otherwise. +REDIS_HOST=127.0.0.1 +REDIS_PORT=6379 +# Use only with Redis 6+ with proper ACL set. Leave empty otherwise. +REDIS_USERNAME= +REDIS_PASSWORD= +# always use quotes and make sure redis db "0" and "1" exists. Otherwise change accordingly. +REDIS_DB="0" +REDIS_CACHE_DB="1" + +# Setting samesite to "strict" may give you trouble logging in. +COOKIE_PATH="/" +COOKIE_DOMAIN= +COOKIE_SECURE=false +COOKIE_SAMESITE=lax + +# If you want Firefly III to email you, update these settings +# For instructions, see: https://docs.firefly-iii.org/how-to/firefly-iii/advanced/notifications/#email +# If you use Docker or similar, you can set these variables from a file by appending them with _FILE +MAIL_MAILER=log +MAIL_HOST=null +MAIL_PORT=2525 +MAIL_FROM=changeme@example.com +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_SENDMAIL_COMMAND= + +MAILGUN_DOMAIN= +MAILGUN_SECRET= +MAILGUN_ENDPOINT=api.mailgun.net +MANDRILL_SECRET= +SPARKPOST_SECRET= + +SEND_ERROR_MESSAGE=true +SEND_REPORT_JOURNALS=true +ENABLE_EXTERNAL_MAP=false +ENABLE_EXCHANGE_RATES=false +ENABLE_EXTERNAL_RATES=false +MAP_DEFAULT_LAT=51.983333 +MAP_DEFAULT_LONG=5.916667 +MAP_DEFAULT_ZOOM=6 + +VALID_URL_PROTOCOLS= + +AUTHENTICATION_GUARD=web +AUTHENTICATION_GUARD_HEADER=REMOTE_USER +AUTHENTICATION_GUARD_EMAIL= +PASSPORT_PRIVATE_KEY= +PASSPORT_PUBLIC_KEY= +CUSTOM_LOGOUT_URL= + +DISABLE_FRAME_HEADER=false +DISABLE_CSP_HEADER=false +TRACKER_SITE_ID= +TRACKER_URL= +ALLOW_WEBHOOKS=false + +STATIC_CRON_TOKEN=aequ4hahL3cha7ahphoh0quu0ainoo7f + +DKR_BUILD_LOCALE=false +DKR_CHECK_SQLITE=true +DKR_RUN_MIGRATION=true +DKR_RUN_UPGRADE=true +DKR_RUN_VERIFY=true +DKR_RUN_REPORT=true + +DKR_RUN_PASSPORT_INSTALL=true + +# Leave the following configuration vars as is. +# Unless you like to tinker and know what you're doing. +APP_NAME=FireflyIII +BROADCAST_DRIVER=log +QUEUE_DRIVER=sync +CACHE_PREFIX=firefly +PUSHER_KEY= +IPINFO_TOKEN= +PUSHER_SECRET= +PUSHER_ID= +DEMO_USERNAME= +DEMO_PASSWORD= + +FIREFLY_III_LAYOUT=v1 diff --git a/services/firefly/.importer.env b/services/firefly/.importer.env new file mode 100644 index 0000000..f4d318d --- /dev/null +++ b/services/firefly/.importer.env @@ -0,0 +1,60 @@ +USE_CACHE=false +IGNORE_DUPLICATE_ERRORS=false + +AUTO_IMPORT_SECRET= +CAN_POST_AUTOIMPORT=false +CAN_POST_FILES=false + +IMPORT_DIR_ALLOWLIST= + +FALLBACK_IN_DIR=false + +VERIFY_TLS_SECURITY=true + +JSON_CONFIGURATION_DIR= + +CONNECTION_TIMEOUT=31.41 + +APP_ENV=local +APP_DEBUG=false + +LOG_CHANNEL=stack +LOG_RETURN_JSON=false +LOG_LEVEL=debug +TRUSTED_PROXIES=** +TZ=Europe/Prague + +ASSET_URL= +ENABLE_MAIL_REPORT=false +EXPECT_SECURE_URL=true + +MAIL_MAILER= +MAIL_DESTINATION=noreply@example.com +MAIL_FROM_ADDRESS=noreply@example.com +MAIL_HOST=smtp.mailtrap.io +MAIL_PORT=2525 +MAIL_USERNAME=username +MAIL_PASSWORD=password +MAIL_ENCRYPTION=null + +MAILGUN_DOMAIN= +MAILGUN_SECRET= +MAILGUN_ENDPOINT= +POSTMARK_TOKEN= + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 +IS_EXTERNAL=false + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +# always use quotes +REDIS_DB="0" +REDIS_CACHE_DB="1" + +APP_NAME=DataImporter \ No newline at end of file diff --git a/services/firefly/docker-compose.yml b/services/firefly/docker-compose.yml new file mode 100644 index 0000000..5f08425 --- /dev/null +++ b/services/firefly/docker-compose.yml @@ -0,0 +1,55 @@ +networks: + traefik-net: + external: true + name: traefik-net + +volumes: + firefly_upload: + firefly_db: + +services: + firefly: + image: fireflyiii/core:latest + volumes: + - firefly_upload:/var/www/html/storage/upload + env_file: .env + networks: + - traefik-net + - default + depends_on: + - db + deploy: + labels: + - traefik.enable=true + - traefik.docker.network=traefik-net + - traefik.http.routers.firefly.rule=Host(`${HOST}`) + - traefik.http.routers.firefly.entrypoints=${ENTRYPOINTS:-websecure} + - traefik.http.routers.firefly.tls.certresolver=le + - traefik.http.services.firefly.loadbalancer.server.port=8080 + db: + image: mariadb:lts + environment: + - MYSQL_PASSWORD=${DB_PASSWORD} + - MYSQL_DATABASE=${DB_DATABASE} + - MYSQL_USER=${DB_USERNAME} + - MYSQL_RANDOM_ROOT_PASSWORD=true + volumes: + - firefly_db:/var/lib/mysql + cron: + image: alpine + restart: always + command: sh -c "echo \"0 3 * * * wget -qO- http://firefly:8080/api/v1/cron/${STATIC_CRON_TOKEN}\" | crontab - && crond -f -L /dev/stdout" + +# TODO: WIP +# importer: +# image: fireflyiii/data-importer:latest +# env_file: +# - .importer.env +# environment: +# - FIREFLY_III_URL=http://firefly +# - VANITY_URL=https://${HOST} +# depends_on: +# - firefly +# networks: +# - traefik-net +# - default