diff --git a/.env.sample b/.env.sample new file mode 100644 index 0000000..74271a5 --- /dev/null +++ b/.env.sample @@ -0,0 +1,52 @@ +UID=1000 +GID=1000 + +GEMINI_API_KEY= +MET_API_USER_AGENT= +VAPID_SUBJECT= +VAPID_PRIVATE_KEY_BASE64= +VAPID_PUBLIC_KEY_BASE64= + +GITEA_DATABASE_PASSWORD= +GITEA_DATABASE_USER= +GITEA_DATABASE_NAME= +GITEA_RUNNER_REGISTRATION_TOKEN= + +BESZEL_SSH_PUBLIC_KEY= + +CALCOM_TELEMETRY_DISABLED=1 +CALCOM_NEXT_PUBLIC_LICENSE_CONSENT=accept +CALCOM_NEXT_PUBLIC_WEBAPP_URL= +CALCOM_NEXT_PUBLIC_API_V2_URL= +CALCOM_NEXTAUTH_SECRET= +CALCOM_CALENDSO_ENCRYPTION_KEY= +CALCOM_DATABASE_USER= +CALCOM_DATABASE_NAME= +CALCOM_DATABASE_PASSWORD= +CALCOM_EMAIL_SERVER_HOST= +CALCOM_EMAIL_SERVER_PORT= +CALCOM_EMAIL_SERVER_USER= +CALCOM_EMAIL_SERVER_PASSWORD= +CALCOM_EMAIL_FROM= +CALCOM_EMAIL_FROM_NAME= +CALCOM_DAILY_API_KEY= + +GROQ_API_KEY= +GOOGLE_MAPS_API_KEY= +GOOGLE_URL_SIGNING_SECRET= +BESZEL_HOST= +BESZEL_EMAIL= +BESZEL_PASSWORD= +KIOKU_HOST= +KIOKU_PORT= +MQTT_HOST= +MQTT_PORT= +MQTT_USERNAME= +MQTT_PASSWORD= + +WEATHER_LAT= +WEATHER_LON= +ADP_SERVICE_ID= +ADP_TEAM_ID= +ADP_KEY_ID= +ADP_KEY_PATH= diff --git a/cron/backup.sh b/cron/backup.sh index dcb5470..f02fc97 100755 --- a/cron/backup.sh +++ b/cron/backup.sh @@ -8,7 +8,7 @@ GITEA_CONTAINER_ID=$(docker ps -qf 'name=^gitea$') if [ ! -f "/tmp/gitea-backup.zip" ]; then echo "Dumping Gitea backup..." - docker exec -u git -it -w /tmp $GITEA_CONTAINER_ID bash -c '/usr/local/bin/gitea dump --file gitea-backup.zip -c /etc/gitea/app.ini' + docker exec -u git -w /tmp $GITEA_CONTAINER_ID bash -c 'rm -f /tmp/gitea-backup.zip && /usr/local/bin/gitea dump --file gitea-backup.zip -c /etc/gitea/app.ini' docker cp $GITEA_CONTAINER_ID:/tmp/gitea-backup.zip /tmp/gitea-backup.zip echo "Gitea backup dumped to /tmp/gitea-backup.zip!" fi diff --git a/docker-compose.yml b/docker-compose.yml index 5368c13..2eb0e10 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,6 +3,13 @@ networks: beszel: 7am: website: + calcom: + adguardhome: + zigbee2mqtt: + mosquitto: + iris: + fileone_convex: + eva: services: 7am: @@ -38,7 +45,7 @@ services: - website gitea: - image: docker.gitea.com/gitea:1.23.7-rootless + image: docker.gitea.com/gitea:1.24.3-rootless container_name: gitea environment: GITEA__database__DB_TYPE: postgres @@ -56,11 +63,11 @@ services: - /etc/localtime:/etc/localtime:ro ports: - "127.0.0.1:3000:3000" - - "127.0.0.1:2222:2222" + - "127.0.0.1:2222:22" depends_on: - gitea_db act_runner: - image: docker.io/gitea/act_runner:0.2.11 + image: docker.io/gitea/act_runner:0.2.12 environment: CONFIG_FILE: /data/config.yaml GITEA_INSTANCE_URL: http://gitea:3000 @@ -68,9 +75,12 @@ services: GITEA_RUNNER_NAME: helian_runner volumes: - ./act_runner/data:/data + - ./act_runner/data:/config.yaml - /var/run/docker.sock:/var/run/docker.sock networks: - gitea + depends_on: + - gitea gitea_db: image: docker.io/library/postgres:14 container_name: gitea_db @@ -89,7 +99,7 @@ services: container_name: beszel restart: unless-stopped ports: - - "127.0.0.1:8090:8090" + - "8090:8090" volumes: - ./beszel/data:/beszel_data networks: @@ -106,3 +116,232 @@ services: environment: LISTEN: 45876 KEY: $BESZEL_SSH_PUBLIC_KEY + + calcom: + image: calcom.docker.scarf.sh/calcom/cal.com + build: + context: ./calcom-docker + dockerfile: Dockerfile + args: + NEXT_PUBLIC_WEBAPP_URL: ${CALCOM_NEXT_PUBLIC_WEBAPP_URL} + NEXT_PUBLIC_API_V2_URL: ${CALCOM_NEXT_PUBLIC_API_V2_URL} + NEXT_PUBLIC_LICENSE_CONSENT: ${CALCOM_NEXT_PUBLIC_LICENSE_CONSENT} + CALCOM_TELEMETRY_DISABLED: ${CALCOM_TELEMETRY_DISABLED} + NEXTAUTH_SECRET: ${CALCOM_NEXTAUTH_SECRET} + CALENDSO_ENCRYPTION_KEY: ${CALCOM_CALENDSO_ENCRYPTION_KEY} + DATABASE_URL: postgresql://${CALCOM_DATABASE_USER}:${CALCOM_DATABASE_PASSWORD}@calcom_db:5432/${CALCOM_DATABASE_NAME} + DATABASE_DIRECT_URL: postgresql://${CALCOM_DATABASE_USER}:${CALCOM_DATABASE_PASSWORD}@calcom_db:5432/${CALCOM_DATABASE_NAME} + environment: + DATABASE_URL: postgresql://${CALCOM_DATABASE_USER}:${CALCOM_DATABASE_PASSWORD}@calcom_db:5432/${CALCOM_DATABASE_NAME} + DATABASE_DIRECT_URL: postgresql://${CALCOM_DATABASE_USER}:${CALCOM_DATABASE_PASSWORD}@calcom_db:5432/${CALCOM_DATABASE_NAME} + NEXTAUTH_SECRET: ${CALCOM_NEXTAUTH_SECRET} + CALENDSO_ENCRYPTION_KEY: ${CALCOM_CALENDSO_ENCRYPTION_KEY} + EMAIL_SERVER_HOST: ${CALCOM_EMAIL_SERVER_HOST} + EMAIL_SERVER_PORT: ${CALCOM_EMAIL_SERVER_PORT} + EMAIL_SERVER_USER: ${CALCOM_EMAIL_SERVER_USER} + EMAIL_SERVER_PASSWORD: ${CALCOM_EMAIL_SERVER_PASSWORD} + EMAIL_FROM: ${CALCOM_EMAIL_FROM} + EMAIL_FROM_NAME: ${CALCOM_EMAIL_FROM_NAME} + DAILY_API_KEY: ${CALCOM_DAILY_API_KEY} + ports: + - "127.0.0.1:3001:3000" + networks: + - calcom + depends_on: + - calcom_db + calcom_db: + image: postgres + restart: always + volumes: + - ./calcom_data/postgres:/var/lib/postgresql/data + environment: + POSTGRES_USER: $CALCOM_DATABASE_USER + POSTGRES_PASSWORD: $CALCOM_DATABASE_PASSWORD + POSTGRES_DB: $CALCOM_DATABASE_NAME + networks: + - calcom + + adguardhome: + image: adguard/adguardhome + container_name: adguardhome + ports: + - 53:53/tcp + - 53:53/udp + - 784:784/udp + - 853:853/tcp + - 3002:3000/tcp + - 81:81/tcp + - 443:443/tcp + volumes: + - ./adguardhome/workdir:/opt/adguardhome/work + - ./adguardhome/confdir:/opt/adguardhome/conf + restart: unless-stopped + networks: + - adguardhome + + mosquitto: + container_name: mosquitto + image: eclipse-mosquitto:2.0.22-openssl + user: 1000:1000 + volumes: + - ./mosquitto/certs:/mosquitto/config/certs + - ./mosquitto/config:/mosquitto/config + - ./mosquitto/data:/mosquitto/data + - ./mosquitto/log:/mosquitto/log + ports: + - 1883:1883 + networks: + - mosquitto + + zigbee2mqtt: + container_name: zigbee2mqtt + image: ghcr.io/koenkk/zigbee2mqtt + restart: unless-stopped + volumes: + - ./zigbee2mqtt/data:/app/data + - /run/udev:/run/udev:ro + ports: + # Frontend port + - 3003:8080 + environment: + - TZ=Europe/London + devices: + - /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_547c47c89b74ef11bfadca8c8fcc3fa0-if00-port0:/dev/ttyACM0 + networks: + - zigbee2mqtt + - mosquitto + depends_on: + - mosquitto + + iris_server: + container_name: iris_server + image: cr.nym.sh/iris-server:latest + restart: unless-stopped + ports: + - 8081:8000 + environment: + GROQ_API_KEY: $GROQ_API_KEY + GOOGLE_MAPS_API_KEY: $GOOGLE_MAPS_API_KEY + GOOGLE_URL_SIGNING_SECRET: $GOOGLE_URL_SIGNING_SECRET + BESZEL_HOST: $BESZEL_HOST + BESZEL_EMAIL: $BESZEL_EMAIL + BESZEL_PASSWORD: $BESZEL_PASSWORD + KIOKU_HOST: $KIOKU_HOST + KIOKU_PORT: $KIOKU_PORT + MQTT_HOST: $MQTT_HOST + MQTT_PORT: $MQTT_PORT + MQTT_USERNAME: $MQTT_USERNAME + MQTT_PASSWORD: $MQTT_PASSWORD + networks: + - iris + - beszel + nexus_dashboard: + container_name: nexus_dashboard + image: cr.nym.sh/nexus-dashboard:latest + restart: unless-stopped + ports: + - 3004:80 + networks: + - iris + depends_on: + - iris_server + + fileone_dev_backend: + # Change this to :${REV} if you want to pin to a specific version + image: ghcr.io/get-convex/convex-backend:latest + stop_grace_period: 10s + stop_signal: SIGINT + ports: + - "${PORT:-3210}:3210" + - "${SITE_PROXY_PORT:-3211}:3211" + volumes: + - ./fileone/data:/convex/data + environment: + - INSTANCE_NAME + - INSTANCE_SECRET + - CONVEX_RELEASE_VERSION_DEV + - ACTIONS_USER_TIMEOUT_SECS + - CONVEX_CLOUD_ORIGIN=${FILEONE_CONVEX_CLOUD_ORIGIN:-http://127.0.0.1:${PORT:-3210}} + - CONVEX_SITE_ORIGIN=${FILEONE_CONVEX_SITE_ORIGIN:-http://127.0.0.1:${SITE_PROXY_PORT:-3211}} + - DATABASE_URL + - DISABLE_BEACON + - REDACT_LOGS_TO_CLIENT + - DO_NOT_REQUIRE_SSL + - POSTGRES_URL + - MYSQL_URL + - RUST_LOG=${RUST_LOG:-info} + - RUST_BACKTRACE + - AWS_REGION + - AWS_ACCESS_KEY_ID + - AWS_SECRET_ACCESS_KEY + - AWS_SESSION_TOKEN + - AWS_S3_FORCE_PATH_STYLE + - AWS_S3_DISABLE_SSE + - AWS_S3_DISABLE_CHECKSUMS + - S3_STORAGE_EXPORTS_BUCKET + - S3_STORAGE_SNAPSHOT_IMPORTS_BUCKET + - S3_STORAGE_MODULES_BUCKET + - S3_STORAGE_FILES_BUCKET + - S3_STORAGE_SEARCH_BUCKET + - S3_ENDPOINT_URL + healthcheck: + test: curl -f http://localhost:3210/version + interval: 5s + start_period: 10s + networks: + - fileone_convex + + fileone_convex_dashboard: + # Change this to :${REV} if you want to pin to a specific version + image: ghcr.io/get-convex/convex-dashboard:latest + stop_grace_period: 10s + stop_signal: SIGINT + ports: + - "${DASHBOARD_PORT:-6791}:6791" + environment: + - NEXT_PUBLIC_DEPLOYMENT_URL=${FILEONE_CONVEX_DEPLOYMENT_URL:-http://127.0.0.1:${PORT:-3210}} + depends_on: + fileone_dev_backend: + condition: service_healthy + networks: + - fileone_convex + + homebridge: + image: homebridge/homebridge:latest + restart: always + network_mode: host + volumes: + - ./homebridge:/homebridge + logging: + driver: json-file + options: + max-size: "10mb" + max-file: "1" + + eva: + container_name: eva + image: cr.nym.sh/kennethnym/eva:main-3af86d8 + restart: unless-stopped + ports: + - 8082:8000 + environment: + - WEATHER_LAT + - WEATHER_LON + - ADP_SERVICE_ID + - ADP_TEAM_ID + - ADP_KEY_ID + - ADP_KEY_PATH + - GEMINI_API_KEY + - BESZEL_HOST + - BESZEL_EMAIL + - BESZEL_PASSWORD + - MQTT_HOST + - MQTT_PORT + - MQTT_USERNAME + - MQTT_PASSWORD + networks: + - eva + - beszel + - mosquitto + volumes: + - ./eva/adp_auth_key.p8:/app/apps/backend/adp_auth_key.p8