feat: ascii readme update for architecture #291
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Validate Docker Compose Stacks | |
| on: | |
| push: | |
| branches: | |
| - "**" | |
| pull_request: | |
| branches: | |
| - "**" | |
| workflow_dispatch: | |
| jobs: | |
| validate: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| include: | |
| - name: immich | |
| path: docker-compose/immich | |
| gpu: false | |
| host_mounts: true | |
| upload_location: /tmp/immich/uploads | |
| db_data_location: /tmp/immich/postgres | |
| db_password: immich | |
| db_username: immich | |
| db_database_name: immich | |
| pihole_password: placeholder | |
| tailscale_ip: 127.0.0.1 | |
| - name: pihole | |
| path: docker-compose/pihole | |
| gpu: false | |
| host_mounts: true | |
| upload_location: /tmp/uploads-unused | |
| db_data_location: /tmp/db-unused | |
| db_password: placeholder | |
| db_username: placeholder | |
| db_database_name: placeholder | |
| pihole_password: placeholder | |
| tailscale_ip: 127.0.0.1 | |
| - name: nginx-proxy-manager | |
| path: docker-compose/nginx-proxy-manager | |
| gpu: false | |
| host_mounts: true | |
| upload_location: /tmp/uploads-unused | |
| db_data_location: /tmp/db-unused | |
| db_password: placeholder | |
| db_username: placeholder | |
| db_database_name: placeholder | |
| pihole_password: placeholder | |
| tailscale_ip: 127.0.0.1 | |
| - name: jellyfin-arr-stack | |
| path: docker-compose/jellyfin-arr-stack | |
| gpu: true | |
| host_mounts: true | |
| upload_location: /tmp/uploads-unused | |
| db_data_location: /tmp/db-unused | |
| db_password: placeholder | |
| db_username: placeholder | |
| db_database_name: placeholder | |
| pihole_password: placeholder | |
| tailscale_ip: 127.0.0.1 | |
| - name: nextcloud-aio | |
| path: docker-compose/nextcloud-aio | |
| gpu: false | |
| host_mounts: true | |
| upload_location: /tmp/uploads-unused | |
| db_data_location: /tmp/db-unused | |
| db_password: placeholder | |
| db_username: placeholder | |
| db_database_name: placeholder | |
| pihole_password: placeholder | |
| tailscale_ip: 127.0.0.1 | |
| - name: openclaw | |
| path: docker-compose/openclaw | |
| gpu: false | |
| host_mounts: true | |
| upload_location: /tmp/uploads-unused | |
| db_data_location: /tmp/db-unused | |
| db_password: placeholder | |
| db_username: placeholder | |
| db_database_name: placeholder | |
| pihole_password: placeholder | |
| tailscale_ip: 127.0.0.1 | |
| - name: actual-budget | |
| path: docker-compose/actual-budget | |
| gpu: false | |
| host_mounts: true | |
| upload_location: /tmp/uploads-unused | |
| db_data_location: /tmp/db-unused | |
| db_password: placeholder | |
| db_username: placeholder | |
| db_database_name: placeholder | |
| pihole_password: placeholder | |
| tailscale_ip: 127.0.0.1 | |
| - name: uptime-kuma | |
| path: docker-compose/uptime-kuma | |
| gpu: false | |
| host_mounts: true | |
| upload_location: /tmp/uploads-unused | |
| db_data_location: /tmp/db-unused | |
| db_password: placeholder | |
| db_username: placeholder | |
| db_database_name: placeholder | |
| pihole_password: placeholder | |
| tailscale_ip: 127.0.0.1 | |
| - name: vaultwarden | |
| path: docker-compose/vaultwarden | |
| gpu: false | |
| host_mounts: true | |
| upload_location: /tmp/uploads-unused | |
| db_data_location: /tmp/db-unused | |
| db_password: placeholder | |
| db_username: placeholder | |
| db_database_name: placeholder | |
| pihole_password: placeholder | |
| tailscale_ip: 127.0.0.1 | |
| - name: watchtower | |
| path: docker-compose/watchtower | |
| gpu: false | |
| host_mounts: true | |
| upload_location: /tmp/uploads-unused | |
| db_data_location: /tmp/db-unused | |
| db_password: placeholder | |
| db_username: placeholder | |
| db_database_name: placeholder | |
| pihole_password: placeholder | |
| tailscale_ip: 127.0.0.1 | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v3 | |
| - name: Set Up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Prepare docker-compose for ${{ matrix.name }} | |
| id: prepare-compose | |
| working-directory: ${{ matrix.path }} | |
| env: | |
| OPENCLAW_GATEWAY_TOKEN: placeholder | |
| UPLOAD_LOCATION: ${{ matrix.upload_location }} | |
| DB_DATA_LOCATION: ${{ matrix.db_data_location }} | |
| DB_PASSWORD: ${{ matrix.db_password }} | |
| DB_USERNAME: ${{ matrix.db_username }} | |
| DB_DATABASE_NAME: ${{ matrix.db_database_name }} | |
| PIHOLE_PASSWORD: ${{ matrix.pihole_password }} | |
| TAILSCALE_IP: ${{ matrix.tailscale_ip }} | |
| run: | | |
| compose_args="" | |
| if [ -f docker-compose.yml ] && grep -q "<tailscale-ip>" docker-compose.yml; then | |
| tmp_file="docker-compose.ci.yml" | |
| sed "s/<tailscale-ip>/${TAILSCALE_IP}/g" docker-compose.yml > "${tmp_file}" | |
| echo "compose_args=-f ${tmp_file}" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "compose_args=" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Validate docker-compose.yml for ${{ matrix.name }} | |
| working-directory: ${{ matrix.path }} | |
| env: | |
| OPENCLAW_GATEWAY_TOKEN: placeholder | |
| UPLOAD_LOCATION: ${{ matrix.upload_location }} | |
| DB_DATA_LOCATION: ${{ matrix.db_data_location }} | |
| DB_PASSWORD: ${{ matrix.db_password }} | |
| DB_USERNAME: ${{ matrix.db_username }} | |
| DB_DATABASE_NAME: ${{ matrix.db_database_name }} | |
| PIHOLE_PASSWORD: ${{ matrix.pihole_password }} | |
| TAILSCALE_IP: ${{ matrix.tailscale_ip }} | |
| run: docker compose ${{ steps.prepare-compose.outputs.compose_args }} config | |
| - name: Run Docker Compose (non-GPU, no host mounts) | |
| if: matrix.gpu == false && matrix.host_mounts == false | |
| working-directory: ${{ matrix.path }} | |
| env: | |
| OPENCLAW_GATEWAY_TOKEN: placeholder | |
| UPLOAD_LOCATION: ${{ matrix.upload_location }} | |
| DB_DATA_LOCATION: ${{ matrix.db_data_location }} | |
| DB_PASSWORD: ${{ matrix.db_password }} | |
| DB_USERNAME: ${{ matrix.db_username }} | |
| DB_DATABASE_NAME: ${{ matrix.db_database_name }} | |
| PIHOLE_PASSWORD: ${{ matrix.pihole_password }} | |
| TAILSCALE_IP: ${{ matrix.tailscale_ip }} | |
| run: docker compose ${{ steps.prepare-compose.outputs.compose_args }} up -d | |
| - name: Tear Down Docker Compose (non-GPU, no host mounts) | |
| if: matrix.gpu == false && matrix.host_mounts == false && always() | |
| working-directory: ${{ matrix.path }} | |
| env: | |
| OPENCLAW_GATEWAY_TOKEN: placeholder | |
| UPLOAD_LOCATION: ${{ matrix.upload_location }} | |
| DB_DATA_LOCATION: ${{ matrix.db_data_location }} | |
| DB_PASSWORD: ${{ matrix.db_password }} | |
| DB_USERNAME: ${{ matrix.db_username }} | |
| DB_DATABASE_NAME: ${{ matrix.db_database_name }} | |
| PIHOLE_PASSWORD: ${{ matrix.pihole_password }} | |
| TAILSCALE_IP: ${{ matrix.tailscale_ip }} | |
| run: docker compose ${{ steps.prepare-compose.outputs.compose_args }} down |