Block a user
depot (latest)
Published 2026-08-26 09:39:45 -04:00 by flan
Installation
docker pull git.arch.fyi/flan/depot:latestsha256:ea39c3dff174f0ab2b4f269805232d97beadd9c00b329a446beed46b8f8f42cb
Images
| Digest | OS / Arch | Size |
|---|---|---|
| faf68d006e | linux/amd64 | 929 MiB |
Image Layers ( linux/amd64)
| # debian.sh --arch 'amd64' out/ 'bookworm' '@1785715200' |
| ENV DEBIAN_FRONTEND=noninteractive |
| RUN /bin/sh -c (grep -rl 'Components:' /etc/apt/sources.list.d/ 2>/dev/null | xargs -r sed -i 's/Components: main/Components: main contrib non-free non-free-firmware/' ; sed -i 's/ main$/ main contrib non-free non-free-firmware/' /etc/apt/sources.list 2>/dev/null || true) ; dpkg --add-architecture i386 && apt-get update && apt-get install -y --no-install-recommends wine wine32 wine64 xvfb openbox xdotool imagemagick x11-utils x11-apps p7zip-full p7zip-rar unzip zip rsync openssh-client python3 python3-venv curl ca-certificates innoextract unshield yara clamav procps findutils coreutils sed grep util-linux iproute2 && rm -rf /var/lib/apt/lists/* # buildkit |
| RUN /bin/sh -c freshclam --quiet --stdout || true; chmod -R a+rX /var/lib/clamav && printf 'X5O!P%%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/eicar.com && clamscan --no-summary /tmp/eicar.com 2>&1 | grep -q 'Eicar-Test-Signature FOUND' && rm -f /tmp/eicar.com && echo "clamav: signatures loaded and detection verified ($(du -sh /var/lib/clamav | cut -f1))" # buildkit |
| COPY requirements.txt requirements.lock /opt/depot/ # buildkit |
| RUN /bin/sh -c python3 -m venv /opt/venv && /opt/venv/bin/pip install --no-cache-dir --require-hashes -r /opt/depot/requirements.lock && /opt/venv/bin/python -c "import cheroot, cryptography, yaml, defusedxml; print('deps ok')" # buildkit |
| ENV PATH=/opt/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| RUN /bin/sh -c mkdir -p /opt/ssl11 && cd /tmp && { curl -fsSL -o l.deb "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u8_amd64.deb" || curl -fsSL -o l.deb "https://snapshot.debian.org/archive/debian-security/20260615T025018Z/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u8_amd64.deb"; } && echo "dcc68a543de6cb955a57077b66dcdb15f61d1e31e072f2c6cc4082c37da1b00d l.deb" | sha256sum -c - && dpkg-deb -x l.deb x && cp x/usr/lib/x86_64-linux-gnu/libssl.so.1.1 x/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /opt/ssl11/ && rm -rf x l.deb # buildkit |
| RUN /bin/sh -c mkdir -p /opt/redist-cache && curl -sL -o /opt/redist-cache/vcredist_2008_x86.exe "https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe" && echo "8742bcbf24ef328a72d2a27b693cc7071e38d3bb4b9b44dec42aa3d2c8d61d92 /opt/redist-cache/vcredist_2008_x86.exe" | sha256sum -c - # buildkit |
| RUN /bin/sh -c innoextract --version && command -v unshield && apt-get update && apt-get install -y --no-install-recommends dolphin-emu && rm -rf /var/lib/apt/lists/* && test -x /usr/games/dolphin-tool # buildkit |
| RUN /bin/sh -c dpkg-query -W -f='${Package}\t${Version}\t${Architecture}\n' | sort > /opt/depot-packages.txt && printf 'recorded %s packages\n' "$(wc -l < /opt/depot-packages.txt)" # buildkit |
| COPY depot/ /opt/depot/depot/ # buildkit |
| COPY assets/ /opt/depot/assets/ # buildkit |
| COPY code/ /opt/depot/code/ # buildkit |
| COPY docker/arr-probe.sh docker/db-snapshot.sh docker/depot.sh docker/entrypoint.sh docker/go-observer.sh docker/migrate.sh docker/midclt /opt/depot/docker/ # buildkit |
| COPY Dockerfile docker-compose.yml build.sh lock-requirements.sh check-gates.sh CHANGELOG.md README.md /opt/depot/ # buildkit |
| COPY docs/INCIDENT.md docs/PORT-GO.md docs/FILE-TYPES.md /opt/depot/docs/ # buildkit |
| COPY docs/contracts/ /opt/depot/docs/contracts/ # buildkit |
| COPY packaging/AppRun packaging/build-appimage.sh /opt/depot/packaging/ # buildkit |
| COPY .gitea/workflows/release.yml .gitea/workflows/ci.yml .gitea/workflows/go.yml /opt/depot/.gitea/workflows/ # buildkit |
| COPY .github/workflows/ci.yml /opt/depot/.github/workflows/ # buildkit |
| COPY /out/ /opt/depot/bin/ # buildkit |
| COPY go/build-static.sh go/check-static.sh go/check-cleanroom.sh go/proof-db.py /opt/depot/go/ # buildkit |
| COPY go/internal/ /opt/depot/go/internal/ # buildkit |
| COPY go/cmd/ /opt/depot/go/cmd/ # buildkit |
| RUN /bin/sh -c chmod -R a+rX /opt/depot && chmod a+rx /opt/depot/docker/* /opt/depot/depot/*.sh /opt/depot/code/*.sh /opt/depot/code/wizard/*.sh 2>/dev/null || true # buildkit |
| RUN /bin/sh -c set -e; for f in /opt/depot/docker/entrypoint.sh /opt/depot/docker/depot.sh /opt/depot/depot/depot-lib.sh; do su -s /bin/sh -c "test -r $f && test -x $f" nobody || { echo "FATAL: $f is not readable+executable by a non-root user"; ls -l "$f"; exit 1; }; done; echo "entrypoint is readable and executable by a non-root user" # buildkit |
| RUN /bin/sh -c cd /opt/depot && python3 -m py_compile depot/*.py && python3 -c "import importlib.util,sys,glob,os; sys.path.insert(0,'depot'); [importlib.util.spec_from_file_location('m'+str(i),f).loader.exec_module(importlib.util.module_from_spec(importlib.util.spec_from_file_location('m'+str(i),f))) for i,f in enumerate(sorted(glob.glob('depot/*.py'))) if os.path.basename(f) not in ('sorter.py','pc-pipeline.py','clean-names.py','verify-roms.py','switch-manifest.py','wishlist.py','linux_games.py','pc_supplements.py','gog_normalize.py','dashboard.py')]" && python3 depot/tests/test_classifiers.py && python3 depot/tests/test_nus.py && python3 depot/tests/test_names.py && python3 depot/tests/test_linux_games.py && python3 depot/tests/test_gog_normalize.py && python3 depot/tests/test_gamelang.py && python3 depot/tests/test_freearc_extract.py && python3 depot/tests/test_db.py && python3 depot/tests/test_connection_contract.py && python3 depot/tests/test_systems.py && python3 depot/tests/test_index.py && python3 depot/tests/test_api.py && python3 depot/tests/test_lifecycle.py && python3 depot/tests/test_acquire.py && python3 depot/tests/test_download_clients.py && python3 depot/tests/test_client_shape_errors.py && python3 depot/tests/test_integrations.py && python3 depot/tests/test_console_media.py && python3 depot/tests/test_dedup.py && python3 depot/tests/test_scheduler.py && python3 depot/tests/test_maintenance_chain_visibility.py && python3 depot/tests/test_no_dangling_imports.py && python3 depot/tests/test_oracle_before_delete.py && python3 depot/tests/test_scheduler_commands_resolve.py && python3 depot/tests/test_scheduler_go_targets.py && python3 depot/tests/test_go_binaries_launched.py && python3 depot/tests/test_steam_ids.py && python3 depot/tests/test_metrics.py && python3 depot/tests/test_metric_has_samples.py && python3 depot/tests/test_verify.py && python3 depot/tests/test_verify_roms.py && python3 depot/tests/test_scripts_run.py && python3 depot/tests/test_download_state.py && python3 depot/tests/test_go_rung_guards.py && python3 depot/tests/test_scan_gate_fails_closed.py && python3 depot/tests/test_supervisor_alarm.py && python3 depot/tests/test_entrypoint_verbs_resolve.py && python3 depot/tests/test_wizard_gui.py && python3 depot/tests/test_size_cap.py && python3 depot/tests/test_stranded_sources.py && python3 depot/tests/test_pc_installed.py && python3 depot/tests/test_alias_exchange.py && python3 depot/tests/test_ui.py && python3 depot/tests/test_i18n.py && python3 depot/tests/test_console_art.py && python3 depot/tests/test_collections.py && python3 depot/tests/test_catalogue.py && python3 depot/tests/test_artwork.py && python3 depot/tests/test_igdb_artwork.py && python3 depot/tests/test_cover_card.py && python3 depot/tests/test_store_capsule_shape.py && python3 depot/tests/test_titles.py && python3 depot/tests/test_tags.py && python3 depot/tests/test_supplements.py && python3 depot/tests/test_supplement_decline.py && python3 depot/tests/test_ps4_meta.py && python3 depot/tests/test_switch_supplements.py && python3 depot/tests/test_http_perf.py && python3 depot/tests/test_paging.py && python3 depot/tests/test_query_ceilings.py && python3 depot/tests/test_search_index.py && python3 depot/tests/test_stream.py && python3 depot/tests/test_stats.py && python3 depot/tests/test_css_collisions.py && python3 depot/tests/test_bios_check.py && python3 depot/tests/test_bios_acquire.py && python3 depot/tests/test_manuals.py && python3 depot/tests/test_api_ui_contract.py && python3 depot/tests/test_users.py && python3 depot/tests/test_requests.py && python3 depot/tests/test_import_lists.py && python3 depot/tests/test_owned_rows.py && python3 depot/tests/test_owned_page.py && python3 depot/tests/test_profile_dialog.py && python3 depot/tests/test_identify.py && python3 depot/tests/test_runtime_python.py && python3 depot/tests/test_indexer_politeness.py && python3 depot/tests/test_health.py && python3 depot/tests/test_corrections_bulk.py && python3 depot/tests/test_tags_import.py && python3 depot/tests/test_custom_formats.py && python3 depot/tests/test_profiles.py && python3 depot/tests/test_naming.py && python3 depot/tests/test_recycle.py && python3 depot/tests/test_library_import.py && python3 depot/tests/test_relabel.py && python3 depot/tests/test_pwenc.py && python3 depot/tests/test_backup.py && python3 depot/tests/test_pending.py && python3 depot/tests/test_scheduler_commands.py && python3 depot/tests/test_connect.py && python3 depot/tests/test_ical.py && python3 depot/tests/test_history.py && python3 depot/tests/test_updates.py && python3 depot/tests/test_setup.py && python3 depot/tests/test_formats.py && python3 depot/tests/test_library_paths.py && python3 depot/tests/test_roots.py && python3 depot/tests/test_standalone.py && python3 depot/tests/test_security.py && python3 depot/tests/test_invites.py && python3 depot/tests/test_indexer_parse.py && python3 depot/tests/test_indexer_defs.py && python3 depot/tests/test_def_sources.py && python3 depot/tests/test_arr_app.py && python3 depot/tests/test_arr_client.py && python3 depot/tests/test_trash_sync.py && python3 depot/tests/test_rescue_grabs.py && python3 depot/tests/test_config_gate.py && python3 depot/tests/test_confine_nesting.py && python3 depot/tests/test_direct_sources.py && python3 depot/tests/test_url_sources.py && python3 depot/tests/test_direct_sets.py && python3 depot/tests/test_auto_supplements.py && python3 depot/tests/test_media_mgmt.py && python3 depot/tests/test_add_flow.py && python3 depot/tests/test_clickthrough.py && python3 depot/tests/test_game_meta.py && python3 depot/tests/test_mobile.py && python3 depot/tests/test_release_console.py && python3 depot/tests/test_parse.py && python3 depot/tests/test_cutoff_unmet.py && python3 depot/tests/test_upgrade_same_game.py && python3 depot/tests/test_requires_local.py && python3 depot/tests/test_per_title_language.py && python3 depot/tests/test_request_rating.py && python3 depot/tests/test_file_misfiled.py && python3 depot/tests/test_release_calendar.py && python3 depot/tests/test_signing.py && python3 depot/tests/test_vendored.py && python3 depot/tests/test_scope_claims.py && python3 depot/tests/test_appimage.py && python3 depot/tests/test_steam_hashed_capsule.py && python3 depot/tests/test_split_default.py && python3 depot/tests/test_moved_not_removed.py && python3 depot/tests/test_proxy_health.py && python3 depot/tests/test_store_portrait.py && python3 depot/tests/test_scan_reach.py && python3 depot/tests/test_files_memo.py && python3 depot/tests/test_scan_signals.py && python3 depot/tests/test_reinstall.py && python3 depot/tests/test_view_switch.py && python3 depot/tests/test_identity.py && python3 depot/tests/test_dead_controls.py && python3 depot/tests/test_clickthrough_faults.py && python3 depot/tests/test_missing_chip.py && python3 depot/tests/test_unicode_keys.py && python3 depot/tests/test_announces.py && python3 depot/tests/test_pc_source_identity.py && python3 depot/tests/test_installed_lookup_folds.py && python3 depot/tests/test_positive_evidence.py && python3 depot/tests/test_installed_authority.py && python3 depot/tests/test_sources_manual.py && python3 depot/tests/test_known_bad.py && python3 depot/tests/test_bios_grab_loop.py && python3 depot/tests/test_quiet_task_logs.py && python3 depot/tests/test_pipeline_events.py && python3 depot/tests/test_extract_reports.py && python3 depot/tests/test_idle_backoff.py && python3 depot/tests/test_manifest_write_only.py && python3 depot/tests/test_tool_handoff.py && python3 depot/tests/test_stage_reporting.py && python3 depot/tests/test_search_backoff.py && python3 depot/tests/test_sort_triggers_index.py && python3 depot/tests/test_sort_exit_code.py && python3 depot/tests/test_place_source.py && python3 depot/tests/test_extract_batch.py && python3 depot/tests/test_low_space.py && python3 depot/tests/test_give_up_cap.py && python3 depot/tests/test_src_signature.py && python3 depot/tests/test_cycle_lock.py && python3 depot/tests/test_match_key_agrees.py && python3 depot/tests/test_schema_contract.py && python3 depot/tests/test_api_contract.py && python3 depot/tests/test_api_surface.py && python3 depot/tests/test_api_methods.py && python3 depot/tests/test_consumer_contract.py && python3 depot/tests/test_self_published.py && python3 depot/tests/test_grab_fail_cap.py && python3 depot/tests/test_download_type_visible.py && python3 depot/tests/test_go_dependencies.py && python3 depot/tests/test_tmpdirs_cleaned.py && python3 depot/tests/test_changelog_sane.py && python3 depot/tests/test_changelog_released_frozen.py && python3 depot/tests/test_image_gate_complete.py && python3 depot/tests/test_metric_parity.py && python3 depot/tests/test_divergence_ledger.py && python3 depot/tests/test_differential_gate.py && python3 depot/tests/test_pending_go_tests.py && python3 depot/tests/test_bios_harvest.py && python3 depot/tests/test_definition_protocol.py && python3 depot/tests/test_disc_check.py && python3 depot/tests/test_extract_per_archive.py && python3 depot/tests/test_js_modules.py && python3 depot/tests/test_namefold.py && python3 depot/tests/test_go_static.py && python3 depot/tests/test_go_seams.py && python3 depot/tests/test_route_progress.py && python3 depot/tests/test_rpcs3_drive_has_space.py && python3 depot/tests/test_go_python_oracle.py && python3 depot/tests/test_one_table.py && python3 depot/tests/test_platform_hint.py && python3 depot/tests/test_port_differential.py && python3 depot/tests/test_differential_harness.py && python3 depot/tests/test_provider_not_a_store.py && python3 depot/tests/test_queued_install_guard.py && python3 depot/tests/test_source_protocol.py && python3 depot/tests/test_stage_summary_last.py && python3 depot/tests/test_titlekey_wants.py && python3 depot/tests/test_xbox_xiso.py && bash depot/tests/smoke.sh # buildkit |
| ARG DEPOT_VERSION=0.310.0 |
| ARG DEPOT_SHA=7a730da3 |
| RUN |2 DEPOT_VERSION=0.310.0 DEPOT_SHA=7a730da3 /bin/sh -c chmod -R a+rX /opt/depot/bin /opt/depot/go && python3 /opt/depot/go/proof-db.py /tmp/depot-proof.db >/dev/null && bash /opt/depot/go/check-static.sh /opt/depot/bin /tmp/depot-proof.db && su -s /bin/sh -c "/opt/depot/bin/depot-differential --version" nobody >/dev/null && su -s /bin/sh -c "/opt/depot/bin/depot-go --version" nobody >/dev/null && echo "the Go binaries are executable by a non-root user" && rm -f /tmp/depot-proof.db # buildkit |
| ENV REDIST_CACHE=/opt/redist-cache DEPOT_LIB=/data/games DEPOT_QBIT=/data/downloads DEPOT_DATA=/data/games/_unsorted DEPOT_CONFIG=/config DEPOT_STATE=/state DEPOT_HELPERS=/opt/depot/depot DEPOT_ASSETS=/opt/depot/assets DEPOT_VERSION=0.310.0 DEPOT_SHA=7a730da3 DEPOT_BIND=0.0.0.0 |
| RUN |2 DEPOT_VERSION=0.310.0 DEPOT_SHA=7a730da3 /bin/sh -c install -d -m 1777 /home/depot && chmod -R a+rwX /opt/redist-cache # buildkit |
| ENV HOME=/home/depot |
| USER 1000:1000 |
| ENTRYPOINT ["/opt/depot/docker/entrypoint.sh"] |