Steps
successpipeline setup3s
successsetup6s
( 1/38) Installing binaryen (129-r0)
( 2/38) Installing brotli-libs (1.2.0-r1)
( 3/38) Installing c-ares (1.34.8-r0)
( 4/38) Installing libunistring (1.4.2-r0)
( 5/38) Installing libidn2 (2.3.8-r0)
( 6/38) Installing nghttp2-libs (1.69.0-r0)
( 7/38) Installing libpsl (0.21.5-r3)
( 8/38) Installing libcurl (8.22.0-r0)
( 9/38) Installing curl (8.22.0-r0)
(10/38) Installing just (1.48.1-r0)
(11/38) Installing pkgconf (2.5.1-r0)
(12/38) Installing openssl-dev (3.5.8-r0)
(13/38) Installing openssl-libs-static (3.5.8-r0)
(14/38) Installing libffi (3.5.2-r1)
(15/38) Installing libintl (1.0-r0)
(16/38) Installing libeconf (0.8.3-r0)
(17/38) Installing libblkid (2.42.3-r1)
(18/38) Installing libmount (2.42.3-r1)
(19/38) Installing pcre2 (10.48-r0)
(20/38) Installing glib (2.88.1-r1)
(21/38) Installing conmon (2.2.1-r0)
(22/38) Installing libcap2 (2.78-r0)
(23/38) Installing json-c (0.18-r1)
(24/38) Installing libseccomp (2.6.0-r2)
(25/38) Installing crun (1.28-r0)
(26/38) Installing passt (2026.05.26-r0)
(27/38) Installing libmd (1.2.0-r0)
(28/38) Installing libbsd (0.12.2-r0)
(29/38) Installing skalibs-libs (2.15.0.0-r0)
(30/38) Installing utmps-libs (0.1.3.3-r0)
(31/38) Installing linux-pam (1.7.1-r2)
(32/38) Installing shadow-libs (4.18.0-r1)
(33/38) Installing shadow-subids (4.18.0-r1)
(34/38) Installing containers-common (0.64.2-r0)
(35/38) Installing netavark (1.17.2-r0)
(36/38) Installing aardvark-dns (1.17.1-r0)
(37/38) Installing catatonit (0.2.1-r0)
(38/38) Installing podman-remote (5.8.6-r1)
Executing busybox-1.37.0-r31.trigger
Executing glib-2.88.1-r1.trigger
OK: 316.8 MiB in 69 packages
info: downloading 2 components
info: downloading component rust-std
/tmp/trunk.tar.gz: OK
just 1.48.1
1.4.2
trunk 0.21.14
rustfmt 1.9.0-stable (48a229ceae 2026-09-01)
clippy 0.1.98 (48a229ceae 2026-09-01)
successlint1s
cargo fmt --check
cargo clippy --workspace --all-targets -- -D warnings
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.30s
warning: the following packages contain code that will be rejected by a future version of Rust: proc-macro-error2 v2.0.1
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
successtest32s
cargo test -p server -p api-types
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.21s
Running unittests src/lib.rs (/ci/cache/target/debug/deps/api_types-71e0533a99d0805e)
running 6 tests
test tests::me_round_trip ... ok
test tests::mode_wire_format_is_rw_ro ... ok
test tests::mutation_defaults_missing_fields ... ok
test tests::mutation_round_trip_skips_absent_fields ... ok
test tests::op_wire_format ... ok
test tests::root_defaults_mode_to_rw ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (/ci/cache/target/debug/deps/server-3aab4bd569046659)
running 101 tests
test archive::tests::format_metadata ... ok
test api::search::tests::name_match_needs_every_word ... ok
test api::search::tests::name_match_ignores_the_parent_path ... ok
test api::search::tests::excludes_cover_descendants_but_not_name_siblings ... ok
test auth::tests::session_cookie_shape ... ok
test archive::tests::format_parsing ... ok
test api::search::tests::query_fields_are_the_shared_constants ... ok
test assets::tests::asset_paths_outside_dist_are_rejected ... ok
test api::search::tests::join_rel_lifts_a_path_to_the_server_root ... ok
test archive::tests::build_fails_on_missing_dir ... ok
test api::files::tests::query_fields_are_the_shared_constants ... ok
test cli::tests::flags_override_defaults ... ok
test cli::tests::defaults_applied ... ok
test api::search::tests::truncation_keeps_utf8_boundary ... ok
test api::search::tests::truncation_strips_terminator ... ok
test api::search::tests::truncation_caps_length ... ok
test cli::tests::required_args_enforced ... ok
test db::tests::share_expiry_logic ... ok
test auth::tests::verify_rejects_garbage_hashes ... ok
test auth::tests::share_cookie_is_per_share_and_session_scoped ... ok
test auth::tests::parse_session_cookie_variants ... ok
test auth::tests::login_delay_grows_after_free_tries ... ok
test api::common::tests::share_query_field_is_p_share ... ok
test auth::tests::token_shapes_and_uniqueness ... ok
test db::tests::fresh_db_state ... ok
test error::tests::plain_error_body ... ok
test fs::tests::copy_file_and_dir_preserves_mtime ... ok
test fs::tests::copy_recursive_missing_source ... ok
test fs::tests::copy_refuses_into_self_and_handles_conflict ... ok
test fs::tests::detect_kind_reads_from_disk ... ok
test fs::tests::is_within_or_eq_matrix ... ok
test fs::tests::list_dir_error_cases ... ok
test fs::tests::list_dir_pages_the_sorted_listing ... ok
test fs::tests::list_dir_reports_broken_symlink_as_empty_file ... ok
test fs::tests::list_dir_reports_kinds ... ok
test fs::tests::list_dir_sorts_folders_first_then_case_insensitive ... ok
test fs::tests::magic_numbers_classify_by_content ... ok
test fs::tests::mkdir_creates_nested_dirs ... ok
test fs::tests::mkdir_rejects_conflict_and_bad_names ... ok
test error::tests::extra_object_is_merged_into_body ... ok
test error::tests::io_error_maps_to_500 ... ok
test error::tests::non_object_extra_is_ignored ... ok
test api::files::tests::publish_refuses_an_existing_target_without_overwrite ... ok
test fs::tests::remove_file_and_dir ... ok
test archive::tests::walk_is_sorted_case_insensitively ... ok
test archive::tests::tar_gz_round_trip ... ok
test fs::tests::move_file_and_dir_across_dirs ... ok
test archive::tests::tar_zst_round_trip ... ok
test fs::tests::rename_moves_file_and_dir ... ok
test archive::tests::tar_round_trip ... ok
test archive::tests::zip_round_trip ... ok
test fs::tests::rename_validates_new_name ... ok
test fs::tests::rename_conflicts_and_overwrite ... ok
test fs::tests::resolve_dir_requires_existing_directory ... ok
test fs::tests::resolve_file_targets_files ... ok
test fs::tests::resolve_path_missing_is_not_found ... ok
test fs::tests::resolve_path_rejects_parent_traversal ... ok
test fs::tests::resolve_path_traverses_inside_root ... ok
test fs::tests::resolve_root_rejects_escape_and_missing ... ok
test fs::tests::sort_keeps_folders_first_in_every_order ... ok
test fs::tests::sort_orders_by_the_chosen_key ... ok
test fs::tests::svg_is_offered_as_an_image ... ok
test fs::tests::truncated_utf8_at_the_read_boundary_is_still_text ... ok
test fs::tests::resolve_root_whole_root_and_subdir ... ok
test fs::tests::resolve_path_rejects_symlink_escape ... ok
test fs::tests::unsigned_files_fall_back_to_the_text_heuristic ... ok
test fs::tests::validate_name_accepts_simple_names ... ok
test fs::tests::move_refuses_into_self_and_conflicts ... ok
test fs::tests::resolve_root_rejects_symlink_escape ... ok
test fs::tests::validate_name_rejects_traversal_and_paths ... ok
test fs::tests::save_file_error_cases ... ok
test tests::build_app_missing_root_fails ... ok
test thumb::tests::an_edit_changes_the_cache_key ... ok
test thumb::tests::the_key_fans_out_into_a_bucket ... ok
test thumb::tests::two_writes_of_one_entry_use_different_scratch_names ... ok
test tests::build_app_root_must_be_directory ... ok
test webauthn::tests::a_browser_on_another_origin_is_refused ... ok
test thumb::tests::a_hit_refreshes_a_stale_entry_only ... ok
test webauthn::tests::a_handle_answers_once ... ok
test thumb::tests::the_sweeper_drops_only_cold_entries ... ok
test tests::build_app_custom_port_bind ... ok
test tests::build_app_ok ... ok
test fs::tests::parallel_rows_match_serial ... ok
test fs::tests::sniff_permit_never_exceeds_the_budget ... ok
test db::tests::v1_db_migrates_to_v2 ... ok
test db::tests::revoking_a_path_takes_its_descendants_only ... ok
test db::tests::app_passwords_open_one_account_and_stamp_their_use ... ok
test db::tests::setup_is_won_by_exactly_one_caller ... ok
test db::tests::sessions_lifecycle ... ok
test db::tests::the_sweep_drops_expired_shares_and_stale_unlocks ... ok
test db::tests::share_unlocks_are_bound_to_one_share ... ok
test db::tests::settings_round_trip ... ok
test webauthn::tests::a_flood_of_strangers_stays_bounded_and_spares_a_sign_in ... ok
test db::tests::an_admin_password_reset_revokes_the_app_passwords ... ok
test db::tests::shares_crud ... ok
test fs::tests::save_file_conflict_on_stale_mtime ... ok
test fs::tests::save_file_updates_content_and_returns_new_mtime ... ok
test db::tests::changing_a_password_drops_that_users_sessions ... ok
test auth::tests::password_hash_round_trip ... ok
test db::tests::user_crud_and_roots ... ok
test db::tests::admin_user_and_passwords ... ok
test result: ok. 101 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.39s
Running unittests src/main.rs (/ci/cache/target/debug/deps/filebrowser_ng-1e6ac1592f9b699b)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/api_admin.rs (/ci/cache/target/debug/deps/api_admin-56ce7294ed84d355)
running 6 tests
test settings_round_trip_visible_in_me ... ok
test lockout_guards ... ok
test update_unknown_user_is_404 ... ok
test admin_routes_require_admin ... ok
test admins_can_browse_the_server_root_read_only ... ok
test user_lifecycle ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.31s
Running tests/api_app_passwords.rs (/ci/cache/target/debug/deps/api_app_passwords-7d2cbcb9d738a5c4)
running 6 tests
test the_routes_need_a_session ... ok
test the_list_never_shows_a_secret_and_the_count_is_capped ... ok
test an_app_password_mounts_an_account_that_requires_a_passkey ... ok
test revoking_one_closes_the_mount_immediately ... ok
test an_app_password_opens_webdav_and_nothing_else ... ok
test app_passwords_are_private_to_their_account ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.32s
Running tests/api_auth.rs (/ci/cache/target/debug/deps/api_auth-3caba7df8d2bef24)
running 10 tests
test first_boot_me_reports_first_boot ... ok
test setup_validates_input ... ok
test me_requires_valid_session ... ok
test setup_creates_admin_and_sets_cookie ... ok
test logout_invalidates_session ... ok
test public_url_reaches_client ... ok
test default_root_is_validated_and_dropped_with_its_root ... ok
test root_name_is_configurable ... ok
test disabled_user_loses_session_and_cannot_login ... ok
test login_flows ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.04s
Running tests/api_dav.rs (/ci/cache/target/debug/deps/api_dav-c356169c3465e345)
running 37 tests
test a_share_mounts_at_its_own_root_without_a_login ... ok
test a_writable_share_can_be_written_and_expiry_ends_it ... ok
test an_encoded_slash_does_not_split_the_share_token ... ok
test a_session_cookie_works_instead_of_basic ... ok
test a_copy_and_a_put_to_one_path_do_not_interleave ... ok
test copy_replaces_a_symlink_instead_of_writing_through_it ... ok
test a_listing_still_shows_a_symlink_as_its_target ... ok
test a_scriptable_file_is_sandboxed_over_dav ... ok
test a_dangling_symlink_is_still_listed ... ok
test deleting_a_shared_path_over_webdav_revokes_the_share ... ok
test deleting_a_symlink_does_not_revoke_its_targets_share ... ok
test a_dangling_symlink_is_not_a_writable_destination ... ok
test a_listing_omits_dotfiles ... ok
test a_listing_escapes_entry_names ... ok
test a_browser_get_of_a_collection_returns_a_listing ... ok
test an_abandoned_lock_expires ... ok
test an_exclusive_lock_blocks_everyone_without_the_token ... ok
test a_lock_is_reported_and_its_timeout_is_capped ... ok
test concurrent_writers_leave_a_whole_file ... ok
test a_path_that_climbs_out_of_the_mount_is_not_a_server_error ... ok
test deleting_a_symlink_removes_the_link_not_its_target ... ok
test deleting_a_symlinked_directory_does_not_empty_its_target ... ok
test deleting_the_mount_point_removes_nothing ... ok
test a_read_only_root_can_still_be_copied_out_of ... ok
test locks_are_scoped_to_their_own_path ... ok
test get_and_put_round_trip_through_the_mount ... ok
test mkcol_move_copy_and_delete ... ok
test moving_a_symlinked_directory_moves_the_link ... ok
test propfind_lists_the_roots_then_their_contents ... ok
test a_read_only_root_refuses_every_write ... ok
test a_mount_cannot_leave_its_roots ... ok
test a_move_cannot_wipe_a_root_through_its_destination ... ok
test deleting_a_root_removes_nothing ... ok
test a_protected_share_asks_for_its_password_over_basic ... ok
test unauthenticated_requests_get_a_basic_challenge ... ok
test a_changed_password_locks_the_mount_out_at_once ... ok
test two_users_with_same_named_roots_do_not_share_locks ... ok
test result: ok. 37 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.81s
Running tests/api_embedded.rs (/ci/cache/target/debug/deps/api_embedded-97863c2cbcb99642)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/api_files.rs (/ci/cache/target/debug/deps/api_files-72fb2d44a7d5c03d)
running 38 tests
test editor_save_round_trip_and_conflict ... ok
test exists_check_does_not_follow_symlinked_directories_out_of_the_root ... ok
test delete_file_and_folder ... ok
test download_revalidates_with_last_modified ... ok
test a_symlink_out_of_the_root_still_cannot_be_read_or_written ... ok
test download_single_file ... ok
test archive_does_not_follow_symlinks_out_of_the_root ... ok
test an_interrupted_upload_leaves_no_scratch_file ... ok
test download_encodes_non_ascii_and_control_characters_in_filename ... ok
test content_action_serves_raw_bytes_with_mtime ... ok
test copying_onto_a_symlink_replaces_it ... ok
test list_root_sorted_folders_first ... ok
test download_folder_requires_valid_format ... ok
test listing_is_paged_in_the_requested_order ... ok
test a_dangling_symlink_can_be_deleted ... ok
test list_subdir_and_errors ... ok
test content_is_capped_at_two_mibibytes ... ok
test file_dated_before_1970_is_served ... ok
test download_honours_single_byte_ranges ... ok
test editor_save_over_two_mibibytes_is_rejected_with_the_localized_error ... ok
test deleting_a_symlink_removes_the_link_not_its_target ... ok
test copying_a_symlink_copies_what_it_points_at ... ok
test download_folder_as_all_archive_formats ... ok
test listing_reports_sniffed_kinds ... ok
test mkdir_and_rename ... ok
test move_and_copy_across_dirs ... ok
test moving_a_symlink_moves_the_link ... ok
test path_traversal_is_blocked ... ok
test preview_serves_inline_and_rejects_dirs ... ok
test renaming_a_symlink_renames_the_link ... ok
test scriptable_files_are_served_sandboxed ... ok
test revalidation_keeps_the_file_policy ... ok
test upload_does_not_clobber_a_file_created_during_the_transfer ... ok
test upload_creates_files_and_folders ... ok
test upload_does_not_follow_symlinked_directories_out_of_the_root ... ok
test exists_check_reports_targets_without_creating_anything ... ok
test read_only_root_blocks_writes_but_allows_reads ... ok
test user_cannot_touch_foreign_root ... ok
test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.21s
Running tests/api_passkeys.rs (/ci/cache/target/debug/deps/api_passkeys-68c79dc528567ec5)
running 29 tests
test a_handle_cannot_be_answered_twice_or_invented ... ok
test a_short_new_password_is_refused ... ok
test an_account_cannot_hold_more_passkeys_than_a_challenge_lists ... ok
test the_last_passkey_cannot_go_while_there_is_no_password ... ok
test requiring_both_needs_both_to_exist ... ok
test every_credential_route_needs_a_session ... ok
test an_invented_login_handle_is_refused ... ok
test registration_asks_the_authenticator_to_store_the_credential ... ok
test requiring_both_blocks_removing_either_half ... ok
test a_second_spelling_of_a_name_gives_nothing_away ... ok
test a_conditional_challenge_asks_for_autofill_mediation ... ok
test one_of_several_passkeys_can_always_go ... ok
test a_challenge_for_an_unknown_name_can_never_sign_anyone_in ... ok
test a_registration_handle_cannot_be_used_to_sign_in ... ok
test decoy_credentials_stay_the_same_between_requests ... ok
test deleting_an_account_takes_its_passkeys_with_it ... ok
test the_password_cannot_go_while_it_is_the_only_credential ... ok
test beginning_a_passkey_sign_in_never_says_whether_a_name_exists ... ok
test signing_in_works_on_a_host_passkeys_cannot_use ... ok
test removing_the_password_leaves_a_passkey_only_account ... ok
test a_wrong_password_reveals_nothing_about_the_second_factor ... ok
test a_passkey_only_account_can_set_a_password_again ... ok
test the_password_alone_never_signs_in_an_account_that_requires_both ... ok
test another_accounts_passkey_is_out_of_reach ... ok
test the_passkey_list_is_per_account_and_carries_no_key_material ... ok
test the_passkey_first_order_signs_in_only_with_the_right_password ... ok
test an_admin_password_clears_the_passkeys_and_the_requirement ... ok
test webdav_refuses_an_account_that_requires_a_passkey ... ok
test changing_the_password_ends_every_other_session ... ok
test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.54s
Running tests/api_search.rs (/ci/cache/target/debug/deps/api_search-a99325565e71d72b)
running 8 tests
test search_rejects_bad_input_and_anonymous_callers ... ok
test exclude_list_is_normalised ... ok
test name_scope_ignores_the_parent_path ... ok
test path_narrows_the_walk_to_a_subfolder ... ok
test both_scopes_stream_from_one_walk ... ok
test excluded_folders_never_appear_in_results ... ok
test backslash_paths_are_normalised_before_trimming ... ok
test hidden_and_gitignored_entries_are_searched ... ok
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.79s
Running tests/api_shares.rs (/ci/cache/target/debug/deps/api_shares-334425afcb976f47)
running 21 tests
test a_share_token_cannot_read_the_admin_listing ... ok
test share_of_a_single_file ... ok
test a_root_can_be_shared_and_keeps_a_name ... ok
test share_expiry ... ok
test share_token_is_not_the_creators_identity ... ok
test share_expiry_must_be_rfc3339 ... ok
test mutating_a_target_revokes_its_shares ... ok
test a_share_password_must_be_long_enough ... ok
test share_scopes_a_signed_in_user ... ok
test read_only_share_blocks_writes_writable_share_allows ... ok
test create_list_and_delete_shares ... ok
test unlocking_an_open_share_is_rejected ... ok
test share_folder_browsing_and_download_anonymously ... ok
test writable_shares_gated_by_setting ... ok
test share_target_validation ... ok
test read_only_root_cannot_be_shared_writably ... ok
test unlocking_a_file_share_returns_its_kind ... ok
test an_admin_can_end_a_share_the_creator_can_no_longer_reach ... ok
test a_subfolder_share_by_empty_path_is_unaffected ... ok
test an_admin_sees_every_share_with_its_creator ... ok
test a_password_locks_the_share_and_its_files ... ok
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.44s
Running tests/api_spa.rs (/ci/cache/target/debug/deps/api_spa-c8caf411f4682670)
running 1 test
test spa_fallback_and_api_guards ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/api_thumbs.rs (/ci/cache/target/debug/deps/api_thumbs-31fb3bfc083b49cd)
running 17 tests
test a_video_without_ffmpeg_caches_nothing ... ok
test a_video_gets_a_thumbnail_of_one_frame ... ok
test a_small_video_is_not_upscaled ... ok
test a_transparent_png_is_flattened_onto_white ... ok
test a_broken_image_fails_once_and_is_remembered ... ok
test the_profile_setting_round_trips ... ok
test a_share_scopes_thumbnails_to_the_shared_folder ... ok
test an_image_gets_a_webp_thumbnail ... ok
test an_image_smaller_than_the_cap_is_not_upscaled ... ok
test editing_the_file_makes_a_new_cache_entry ... ok
test concurrent_requests_for_one_file_all_get_the_thumbnail ... ok
test the_response_is_immutable ... ok
test thumbnails_are_off_without_a_cache_folder ... ok
test the_second_request_is_served_from_the_cache ... ok
test a_folder_has_no_thumbnail ... ok
test a_text_file_has_no_thumbnail ... ok
test another_users_root_is_still_out_of_reach ... ok
test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.83s
Doc-tests api_types
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests server
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.13s
warning: the following packages contain code that will be rejected by a future version of Rust: proc-macro-error2 v2.0.1
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
Running unittests src/main.rs (/ci/cache/target/debug/deps/web-27a34bed2fa8e7bc)
running 16 tests
test i18n::tests::no_duplicate_keys ... ok
test router::tests::query_pairs_round_trip ... ok
test util::tests::format_date_drops_seconds_and_zone ... ok
test util::tests::sort_spec_round_trips_through_its_stored_form ... ok
test util::tests::page_numbers_keep_the_ends_and_the_neighbours ... ok
test views::search::tests::highlight_empty_words_is_plain ... ok
test uploads::tests::chunk_respects_both_caps ... ok
test i18n::tests::tables_are_sorted ... ok
test views::search::tests::highlight_escapes_markup ... ok
test views::search::tests::highlight_handles_non_ascii ... ok
test views::search::tests::highlight_is_case_insensitive ... ok
test views::search::tests::highlight_marks_all_words ... ok
test views::search::tests::highlight_marks_hits ... ok
test views::search::tests::highlight_no_hit_is_plain ... ok
test views::shell::tests::default_root_rules ... ok
test i18n::tests::translations_cover_all_keys ... ok
test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
successbuild2m 58s
cd web && bun install --frozen-lockfile && bun run build
bun install v1.4.2 (744846f84)
+ @codemirror/lang-cpp@6.0.3
+ @codemirror/lang-css@6.3.1
+ @codemirror/lang-html@6.4.12
+ @codemirror/lang-java@6.0.2
+ @codemirror/lang-javascript@6.2.5
+ @codemirror/lang-json@6.0.2
+ @codemirror/lang-markdown@6.5.2
+ @codemirror/lang-php@6.0.2
+ @codemirror/lang-python@6.2.1
+ @codemirror/lang-rust@6.0.2
+ @codemirror/lang-sql@6.10.0
+ @codemirror/lang-xml@6.1.0
+ @codemirror/state@6.7.6
+ @codemirror/theme-one-dark@6.1.3
+ codemirror@6.0.2
39 packages installed [24.00ms]
$ bun build cm/wrapper.js --format iife --target browser --minify --outfile cm6.js
Bundled 40 modules in 16ms
cm6.js 1.0 MB (entry point)
cd web && trunk build --release
2026-09-25T18:10:55.893916Z INFO Starting trunk 0.21.14
2026-09-25T18:10:56.115557Z INFO starting build
Finished `release` profile [optimized] target(s) in 0.14s
warning: the following packages contain code that will be rejected by a future version of Rust: proc-macro-error2 v2.0.1
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
2026-09-25T18:10:56.656560Z INFO downloading wasm-bindgen version="0.2.129"
2026-09-25T18:10:57.420232Z INFO installing wasm-bindgen
2026-09-25T18:11:08.846568Z INFO applying new distribution
2026-09-25T18:11:08.846991Z INFO success
rm -rf server/dist
cp -r web/dist server/dist
cargo build --locked --release -p server --features embedded
Compiling image v0.25.10
Compiling fast_image_resize v6.1.0
Compiling webp v0.3.1
Compiling server v0.1.0 (/ci/build/project/server)
Finished `release` profile [optimized] target(s) in 2m 45s
successe2e1m 8s
Compiling digest v0.11.3
Compiling rust-embed-utils v8.12.0
Compiling sha2 v0.11.0
Compiling rust-embed-impl v8.12.0
Compiling rust-embed v8.12.0
Compiling server v0.1.0 (/ci/build/project/server)
Finished `test` profile [unoptimized + debuginfo] target(s) in 36.38s
Running unittests src/lib.rs (/ci/cache/target/debug/deps/server-420d3a8e4b88fc11)
running 100 tests
test api::search::tests::truncation_keeps_utf8_boundary ... ok
test api::search::tests::excludes_cover_descendants_but_not_name_siblings ... ok
test api::search::tests::truncation_caps_length ... ok
test api::search::tests::truncation_strips_terminator ... ok
test archive::tests::format_metadata ... ok
test api::common::tests::share_query_field_is_p_share ... ok
test archive::tests::format_parsing ... ok
test api::search::tests::join_rel_lifts_a_path_to_the_server_root ... ok
test api::search::tests::name_match_ignores_the_parent_path ... ok
test api::search::tests::name_match_needs_every_word ... ok
test api::search::tests::query_fields_are_the_shared_constants ... ok
test archive::tests::build_fails_on_missing_dir ... ok
test api::files::tests::query_fields_are_the_shared_constants ... ok
test auth::tests::session_cookie_shape ... ok
test auth::tests::login_delay_grows_after_free_tries ... ok
test auth::tests::parse_session_cookie_variants ... ok
test auth::tests::share_cookie_is_per_share_and_session_scoped ... ok
test auth::tests::verify_rejects_garbage_hashes ... ok
test api::files::tests::publish_refuses_an_existing_target_without_overwrite ... ok
test cli::tests::defaults_applied ... ok
test archive::tests::walk_is_sorted_case_insensitively ... ok
test cli::tests::flags_override_defaults ... ok
test db::tests::share_expiry_logic ... ok
test cli::tests::required_args_enforced ... ok
test archive::tests::tar_round_trip ... ok
test auth::tests::token_shapes_and_uniqueness ... ok
test error::tests::io_error_maps_to_500 ... ok
test error::tests::plain_error_body ... ok
test error::tests::extra_object_is_merged_into_body ... ok
test error::tests::non_object_extra_is_ignored ... ok
test archive::tests::tar_zst_round_trip ... ok
test archive::tests::tar_gz_round_trip ... ok
test archive::tests::zip_round_trip ... ok
test fs::tests::copy_recursive_missing_source ... ok
test fs::tests::is_within_or_eq_matrix ... ok
test fs::tests::detect_kind_reads_from_disk ... ok
test fs::tests::list_dir_error_cases ... ok
test fs::tests::magic_numbers_classify_by_content ... ok
test fs::tests::copy_refuses_into_self_and_handles_conflict ... ok
test fs::tests::list_dir_reports_broken_symlink_as_empty_file ... ok
test fs::tests::list_dir_reports_kinds ... ok
test fs::tests::copy_file_and_dir_preserves_mtime ... ok
test fs::tests::mkdir_rejects_conflict_and_bad_names ... ok
test fs::tests::list_dir_sorts_folders_first_then_case_insensitive ... ok
test fs::tests::mkdir_creates_nested_dirs ... ok
test fs::tests::move_file_and_dir_across_dirs ... ok
test fs::tests::remove_file_and_dir ... ok
test fs::tests::list_dir_pages_the_sorted_listing ... ok
test fs::tests::rename_conflicts_and_overwrite ... ok
test fs::tests::rename_validates_new_name ... ok
test fs::tests::rename_moves_file_and_dir ... ok
test fs::tests::resolve_dir_requires_existing_directory ... ok
test fs::tests::resolve_file_targets_files ... ok
test fs::tests::resolve_path_missing_is_not_found ... ok
test fs::tests::move_refuses_into_self_and_conflicts ... ok
test fs::tests::resolve_path_rejects_parent_traversal ... ok
test fs::tests::resolve_path_traverses_inside_root ... ok
test fs::tests::resolve_path_rejects_symlink_escape ... ok
test fs::tests::resolve_root_whole_root_and_subdir ... ok
test fs::tests::resolve_root_rejects_escape_and_missing ... ok
test fs::tests::resolve_root_rejects_symlink_escape ... ok
test fs::tests::sort_keeps_folders_first_in_every_order ... ok
test fs::tests::sort_orders_by_the_chosen_key ... ok
test fs::tests::save_file_error_cases ... ok
test fs::tests::svg_is_offered_as_an_image ... ok
test fs::tests::truncated_utf8_at_the_read_boundary_is_still_text ... ok
test fs::tests::unsigned_files_fall_back_to_the_text_heuristic ... ok
test fs::tests::validate_name_accepts_simple_names ... ok
test fs::tests::validate_name_rejects_traversal_and_paths ... ok
test tests::build_app_missing_root_fails ... ok
test thumb::tests::an_edit_changes_the_cache_key ... ok
test thumb::tests::the_key_fans_out_into_a_bucket ... ok
test tests::build_app_root_must_be_directory ... ok
test thumb::tests::two_writes_of_one_entry_use_different_scratch_names ... ok
test thumb::tests::a_hit_refreshes_a_stale_entry_only ... ok
test webauthn::tests::a_browser_on_another_origin_is_refused ... ok
test webauthn::tests::a_handle_answers_once ... ok
test thumb::tests::the_sweeper_drops_only_cold_entries ... ok
test db::tests::fresh_db_state ... ok
test fs::tests::parallel_rows_match_serial ... ok
test fs::tests::sniff_permit_never_exceeds_the_budget ... ok
test db::tests::setup_is_won_by_exactly_one_caller ... ok
test db::tests::share_unlocks_are_bound_to_one_share ... ok
test db::tests::revoking_a_path_takes_its_descendants_only ... ok
test db::tests::the_sweep_drops_expired_shares_and_stale_unlocks ... ok
test db::tests::app_passwords_open_one_account_and_stamp_their_use ... ok
test db::tests::settings_round_trip ... ok
test db::tests::sessions_lifecycle ... ok
test webauthn::tests::a_flood_of_strangers_stays_bounded_and_spares_a_sign_in ... ok
test tests::build_app_ok ... ok
test tests::build_app_custom_port_bind ... ok
test db::tests::v1_db_migrates_to_v2 ... ok
test db::tests::shares_crud ... ok
test db::tests::an_admin_password_reset_revokes_the_app_passwords ... ok
test fs::tests::save_file_conflict_on_stale_mtime ... ok
test fs::tests::save_file_updates_content_and_returns_new_mtime ... ok
test db::tests::changing_a_password_drops_that_users_sessions ... ok
test auth::tests::password_hash_round_trip ... ok
test db::tests::user_crud_and_roots ... ok
test db::tests::admin_user_and_passwords ... ok
test result: ok. 100 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.56s
Running unittests src/main.rs (/ci/cache/target/debug/deps/filebrowser_ng-fe0cfb48b53df242)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/api_admin.rs (/ci/cache/target/debug/deps/api_admin-b665531ed0991ac5)
running 6 tests
test update_unknown_user_is_404 ... ok
test settings_round_trip_visible_in_me ... ok
test admins_can_browse_the_server_root_read_only ... ok
test lockout_guards ... ok
test admin_routes_require_admin ... ok
test user_lifecycle ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s
Running tests/api_app_passwords.rs (/ci/cache/target/debug/deps/api_app_passwords-7e613f87322ade26)
running 6 tests
test the_routes_need_a_session ... ok
test the_list_never_shows_a_secret_and_the_count_is_capped ... ok
test an_app_password_mounts_an_account_that_requires_a_passkey ... ok
test revoking_one_closes_the_mount_immediately ... ok
test an_app_password_opens_webdav_and_nothing_else ... ok
test app_passwords_are_private_to_their_account ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.02s
Running tests/api_auth.rs (/ci/cache/target/debug/deps/api_auth-79b0201dfb22d0ed)
running 10 tests
test first_boot_me_reports_first_boot ... ok
test setup_validates_input ... ok
test setup_creates_admin_and_sets_cookie ... ok
test public_url_reaches_client ... ok
test me_requires_valid_session ... ok
test logout_invalidates_session ... ok
test default_root_is_validated_and_dropped_with_its_root ... ok
test root_name_is_configurable ... ok
test disabled_user_loses_session_and_cannot_login ... ok
test login_flows ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.02s
Running tests/api_dav.rs (/ci/cache/target/debug/deps/api_dav-92486e3254a7376b)
running 37 tests
test a_writable_share_can_be_written_and_expiry_ends_it ... ok
test a_session_cookie_works_instead_of_basic ... ok
test a_share_mounts_at_its_own_root_without_a_login ... ok
test an_encoded_slash_does_not_split_the_share_token ... ok
test a_listing_omits_dotfiles ... ok
test a_dangling_symlink_is_not_a_writable_destination ... ok
test a_dangling_symlink_is_still_listed ... ok
test a_copy_and_a_put_to_one_path_do_not_interleave ... ok
test a_path_that_climbs_out_of_the_mount_is_not_a_server_error ... ok
test a_listing_escapes_entry_names ... ok
test a_listing_still_shows_a_symlink_as_its_target ... ok
test a_browser_get_of_a_collection_returns_a_listing ... ok
test a_lock_is_reported_and_its_timeout_is_capped ... ok
test deleting_a_shared_path_over_webdav_revokes_the_share ... ok
test deleting_a_symlink_does_not_revoke_its_targets_share ... ok
test concurrent_writers_leave_a_whole_file ... ok
test deleting_a_symlink_removes_the_link_not_its_target ... ok
test copy_replaces_a_symlink_instead_of_writing_through_it ... ok
test a_scriptable_file_is_sandboxed_over_dav ... ok
test an_exclusive_lock_blocks_everyone_without_the_token ... ok
test deleting_a_symlinked_directory_does_not_empty_its_target ... ok
test a_move_cannot_wipe_a_root_through_its_destination ... ok
test a_read_only_root_can_still_be_copied_out_of ... ok
test deleting_the_mount_point_removes_nothing ... ok
test a_mount_cannot_leave_its_roots ... ok
test get_and_put_round_trip_through_the_mount ... ok
test locks_are_scoped_to_their_own_path ... ok
test an_abandoned_lock_expires ... ok
test mkcol_move_copy_and_delete ... ok
test moving_a_symlinked_directory_moves_the_link ... ok
test propfind_lists_the_roots_then_their_contents ... ok
test a_read_only_root_refuses_every_write ... ok
test a_protected_share_asks_for_its_password_over_basic ... ok
test deleting_a_root_removes_nothing ... ok
test unauthenticated_requests_get_a_basic_challenge ... ok
test a_changed_password_locks_the_mount_out_at_once ... ok
test two_users_with_same_named_roots_do_not_share_locks ... ok
test result: ok. 37 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.17s
Running tests/api_embedded.rs (/ci/cache/target/debug/deps/api_embedded-aa9b9b484a4d50e5)
running 1 test
test embedded_frontend_is_complete ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
Running tests/api_files.rs (/ci/cache/target/debug/deps/api_files-0ba8933be7d849a3)
running 38 tests
test download_encodes_non_ascii_and_control_characters_in_filename ... ok
test download_folder_as_all_archive_formats ... ok
test download_revalidates_with_last_modified ... ok
test content_is_capped_at_two_mibibytes ... ok
test a_symlink_out_of_the_root_still_cannot_be_read_or_written ... ok
test download_honours_single_byte_ranges ... ok
test deleting_a_symlink_removes_the_link_not_its_target ... ok
test list_root_sorted_folders_first ... ok
test file_dated_before_1970_is_served ... ok
test editor_save_over_two_mibibytes_is_rejected_with_the_localized_error ... ok
test content_action_serves_raw_bytes_with_mtime ... ok
test an_interrupted_upload_leaves_no_scratch_file ... ok
test copying_a_symlink_copies_what_it_points_at ... ok
test download_folder_requires_valid_format ... ok
test archive_does_not_follow_symlinks_out_of_the_root ... ok
test a_dangling_symlink_can_be_deleted ... ok
test delete_file_and_folder ... ok
test list_subdir_and_errors ... ok
test editor_save_round_trip_and_conflict ... ok
test download_single_file ... ok
test copying_onto_a_symlink_replaces_it ... ok
test exists_check_does_not_follow_symlinked_directories_out_of_the_root ... ok
test listing_is_paged_in_the_requested_order ... ok
test listing_reports_sniffed_kinds ... ok
test mkdir_and_rename ... ok
test moving_a_symlink_moves_the_link ... ok
test move_and_copy_across_dirs ... ok
test path_traversal_is_blocked ... ok
test renaming_a_symlink_renames_the_link ... ok
test preview_serves_inline_and_rejects_dirs ... ok
test revalidation_keeps_the_file_policy ... ok
test scriptable_files_are_served_sandboxed ... ok
test upload_does_not_clobber_a_file_created_during_the_transfer ... ok
test upload_creates_files_and_folders ... ok
test upload_does_not_follow_symlinked_directories_out_of_the_root ... ok
test exists_check_reports_targets_without_creating_anything ... ok
test read_only_root_blocks_writes_but_allows_reads ... ok
test user_cannot_touch_foreign_root ... ok
test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.24s
Running tests/api_passkeys.rs (/ci/cache/target/debug/deps/api_passkeys-93e576e040c3392f)
running 29 tests
test a_conditional_challenge_asks_for_autofill_mediation ... ok
test requiring_both_needs_both_to_exist ... ok
test a_second_spelling_of_a_name_gives_nothing_away ... ok
test a_handle_cannot_be_answered_twice_or_invented ... ok
test requiring_both_blocks_removing_either_half ... ok
test a_challenge_for_an_unknown_name_can_never_sign_anyone_in ... ok
test a_registration_handle_cannot_be_used_to_sign_in ... ok
test an_account_cannot_hold_more_passkeys_than_a_challenge_lists ... ok
test decoy_credentials_stay_the_same_between_requests ... ok
test a_short_new_password_is_refused ... ok
test every_credential_route_needs_a_session ... ok
test an_invented_login_handle_is_refused ... ok
test registration_asks_the_authenticator_to_store_the_credential ... ok
test one_of_several_passkeys_can_always_go ... ok
test the_last_passkey_cannot_go_while_there_is_no_password ... ok
test beginning_a_passkey_sign_in_never_says_whether_a_name_exists ... ok
test the_password_cannot_go_while_it_is_the_only_credential ... ok
test signing_in_works_on_a_host_passkeys_cannot_use ... ok
test a_wrong_password_reveals_nothing_about_the_second_factor ... ok
test deleting_an_account_takes_its_passkeys_with_it ... ok
test a_passkey_only_account_can_set_a_password_again ... ok
test removing_the_password_leaves_a_passkey_only_account ... ok
test the_password_alone_never_signs_in_an_account_that_requires_both ... ok
test another_accounts_passkey_is_out_of_reach ... ok
test the_passkey_list_is_per_account_and_carries_no_key_material ... ok
test the_passkey_first_order_signs_in_only_with_the_right_password ... ok
test webdav_refuses_an_account_that_requires_a_passkey ... ok
test changing_the_password_ends_every_other_session ... ok
test an_admin_password_clears_the_passkeys_and_the_requirement ... ok
test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.49s
Running tests/api_search.rs (/ci/cache/target/debug/deps/api_search-cad44831c1a84337)
running 8 tests
test search_rejects_bad_input_and_anonymous_callers ... ok
test exclude_list_is_normalised ... ok
test backslash_paths_are_normalised_before_trimming ... ok
test path_narrows_the_walk_to_a_subfolder ... ok
test name_scope_ignores_the_parent_path ... ok
test both_scopes_stream_from_one_walk ... ok
test hidden_and_gitignored_entries_are_searched ... ok
test excluded_folders_never_appear_in_results ... ok
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.76s
Running tests/api_shares.rs (/ci/cache/target/debug/deps/api_shares-035f1f4bf80eef5f)
running 21 tests
test create_list_and_delete_shares ... ok
test share_expiry_must_be_rfc3339 ... ok
test a_root_can_be_shared_and_keeps_a_name ... ok
test share_token_is_not_the_creators_identity ... ok
test share_of_a_single_file ... ok
test share_scopes_a_signed_in_user ... ok
test unlocking_an_open_share_is_rejected ... ok
test share_expiry ... ok
test writable_shares_gated_by_setting ... ok
test a_share_password_must_be_long_enough ... ok
test share_folder_browsing_and_download_anonymously ... ok
test share_target_validation ... ok
test mutating_a_target_revokes_its_shares ... ok
test read_only_share_blocks_writes_writable_share_allows ... ok
test a_share_token_cannot_read_the_admin_listing ... ok
test an_admin_can_end_a_share_the_creator_can_no_longer_reach ... ok
test a_subfolder_share_by_empty_path_is_unaffected ... ok
test read_only_root_cannot_be_shared_writably ... ok
test unlocking_a_file_share_returns_its_kind ... ok
test a_password_locks_the_share_and_its_files ... ok
test an_admin_sees_every_share_with_its_creator ... ok
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.46s
Running tests/api_spa.rs (/ci/cache/target/debug/deps/api_spa-fd045a57208f2455)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/api_thumbs.rs (/ci/cache/target/debug/deps/api_thumbs-822dbc0d82fd8119)
running 17 tests
test a_video_gets_a_thumbnail_of_one_frame ... ok
test a_small_video_is_not_upscaled ... ok
test a_video_without_ffmpeg_caches_nothing ... ok
test a_text_file_has_no_thumbnail ... ok
test a_transparent_png_is_flattened_onto_white ... ok
test a_broken_image_fails_once_and_is_remembered ... ok
test a_folder_has_no_thumbnail ... ok
test an_image_smaller_than_the_cap_is_not_upscaled ... ok
test the_second_request_is_served_from_the_cache ... ok
test thumbnails_are_off_without_a_cache_folder ... ok
test editing_the_file_makes_a_new_cache_entry ... ok
test the_response_is_immutable ... ok
test the_profile_setting_round_trips ... ok
test concurrent_requests_for_one_file_all_get_the_thumbnail ... ok
test a_share_scopes_thumbnails_to_the_shared_folder ... ok
test an_image_gets_a_webp_thumbnail ... ok
test another_users_root_is_still_out_of_reach ... ok
test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.06s
Doc-tests server
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
skippedrelease0s
Skipped: condition not met
successimage10s
Login Succeeded!
[2/3] STEP 1/2: FROM scratch AS prebuilt
[2/3] STEP 2/2: COPY ci-bin/filebrowser-ng /filebrowser-ng
--> b63ef7a67972
[3/3] STEP 1/9: FROM alpine:3.24
[3/3] STEP 2/9: ARG BIN_STAGE=build
--> Using cache 0b70d252b943a9e24a19b44d514e6a5fe383be1ff62f3d697a6ea400790477a5
--> 0b70d252b943
[3/3] STEP 3/9: RUN apk add --no-cache ca-certificates ffmpeg && mkdir -p /data /var/lib/filebrowser /var/cache/filebrowser
( 1/108) Installing ca-certificates (20260909-r0)
( 2/108) Installing libSvtAv1Enc (4.1.0-r0)
( 3/108) Installing aom-libs (3.14.1-r0)
( 4/108) Installing libxau (1.0.12-r0)
( 5/108) Installing libmd (1.2.0-r0)
( 6/108) Installing libbsd (0.12.2-r0)
( 7/108) Installing libxdmcp (1.1.5-r1)
( 8/108) Installing libxcb (1.17.0-r2)
( 9/108) Installing libx11 (1.8.13-r0)
( 10/108) Installing hwdata-pci (0.408-r0)
( 11/108) Installing libpciaccess (0.19-r0)
( 12/108) Installing libdrm (2.4.134-r0)
( 13/108) Installing libxext (1.3.7-r0)
( 14/108) Installing libxfixes (6.0.2-r0)
( 15/108) Installing libffi (3.5.2-r1)
( 16/108) Installing wayland-libs-client (1.25.0-r0)
( 17/108) Installing libva (2.23.0-r0)
( 18/108) Installing libvdpau (1.5-r4)
( 19/108) Installing libgcc (15.2.0-r5)
( 20/108) Installing libstdc++ (15.2.0-r5)
( 21/108) Installing libvpl (2.15.0-r1)
( 22/108) Installing ffmpeg-libavutil (8.1.2-r0)
( 23/108) Installing libdav1d (1.5.3-r0)
( 24/108) Installing brotli-libs (1.2.0-r1)
( 25/108) Installing libhwy (1.3.0-r0)
( 26/108) Installing lcms2 (2.19-r0)
( 27/108) Installing libjxl (0.11.2-r1)
( 28/108) Installing lame-libs (3.100-r5)
( 29/108) Installing opus (1.6.1-r0)
( 30/108) Installing rav1e-libs (0.8.1-r0)
( 31/108) Installing libgomp (15.2.0-r5)
( 32/108) Installing soxr (0.1.3-r7)
( 33/108) Installing ffmpeg-libswresample (8.1.2-r0)
( 34/108) Installing libogg (1.3.6-r0)
( 35/108) Installing libtheora (1.2.0-r1)
( 36/108) Installing libvorbis (1.3.7-r2)
( 37/108) Installing libvpx (1.15.2-r1)
( 38/108) Installing libsharpyuv (1.6.0-r0)
( 39/108) Installing libwebp (1.6.0-r0)
( 40/108) Installing libwebpmux (1.6.0-r0)
( 41/108) Installing x264-libs (0.164.3108-r1)
( 42/108) Installing numactl (2.0.19-r0)
( 43/108) Installing x265-libs (4.1-r0)
( 44/108) Installing xvidcore (1.3.7-r2)
( 45/108) Installing ffmpeg-libavcodec (8.1.2-r0)
( 46/108) Installing alsa-lib (1.2.15.3-r0)
( 47/108) Installing libexpat (2.8.5-r0)
( 48/108) Installing libbz2 (1.0.8-r6)
( 49/108) Installing libpng (1.6.58-r1)
( 50/108) Installing freetype (2.14.3-r0)
( 51/108) Installing fontconfig (2.17.1-r1)
( 52/108) Installing fribidi (1.0.16-r3)
( 53/108) Installing libintl (1.0-r0)
( 54/108) Installing libeconf (0.8.3-r0)
( 55/108) Installing libblkid (2.42.3-r1)
( 56/108) Installing libmount (2.42.3-r1)
( 57/108) Installing pcre2 (10.48-r0)
( 58/108) Installing glib (2.88.1-r1)
( 59/108) Installing graphite2 (1.3.14-r6)
( 60/108) Installing harfbuzz (13.2.1-r0)
( 61/108) Installing libunibreak (6.1-r0)
( 62/108) Installing libass (0.17.4-r1)
( 63/108) Installing libudfread (1.2.0-r1)
( 64/108) Installing libbluray (1.4.0-r0)
( 65/108) Installing libdvdcss (1.4.3-r0)
( 66/108) Installing libdvdread (6.1.3-r2)
( 67/108) Installing libdvdnav (6.1.1-r1)
( 68/108) Installing mpg123-libs (1.33.5-r0)
( 69/108) Installing libopenmpt (0.8.9-r0)
( 70/108) Installing cjson (1.7.19-r1)
( 71/108) Installing mbedtls3 (3.6.7-r0)
( 72/108) Installing librist (0.2.15-r0)
( 73/108) Installing libsrt (1.5.3-r1)
( 74/108) Installing libssh (0.12.2-r0)
( 75/108) Installing xz-libs (5.8.4-r0)
( 76/108) Installing libxml2 (2.13.9-r2)
( 77/108) Installing libsodium (1.0.22-r0)
( 78/108) Installing libzmq (4.3.5-r2)
( 79/108) Installing ffmpeg-libavformat (8.1.2-r0)
( 80/108) Installing serd-libs (0.32.8-r0)
( 81/108) Installing zix-libs (0.8.0-r0)
( 82/108) Installing sord-libs (0.16.22-r0)
( 83/108) Installing sratom (0.6.20-r0)
( 84/108) Installing lilv-libs (0.24.26-r1)
( 85/108) Installing libdovi (3.3.2-r0)
( 86/108) Installing spirv-tools (1.4.341.0-r0)
( 87/108) Installing glslang-libs (1.4.341.0-r0)
( 88/108) Installing shaderc (2026.1-r0)
( 89/108) Installing vulkan-loader (1.4.347-r0)
( 90/108) Installing libplacebo (7.360.1-r0)
( 91/108) Installing ffmpeg-libswscale (8.1.2-r0)
( 92/108) Installing vidstab (1.1.1-r0)
( 93/108) Installing zimg (3.0.6-r0)
( 94/108) Installing ffmpeg-libavfilter (8.1.2-r0)
( 95/108) Installing libasyncns (0.8-r5)
( 96/108) Installing dbus-libs (1.16.2-r2)
( 97/108) Installing libltdl (2.6.0-r1)
( 98/108) Installing orc (0.4.41-r0)
( 99/108) Installing libflac (1.4.3-r2)
(100/108) Installing libsndfile (1.2.2-r2)
(101/108) Installing speexdsp (1.2.1-r2)
(102/108) Installing tdb-libs (1.4.15-r1)
(103/108) Installing libpulse (17.0-r7)
(104/108) Installing libjpeg-turbo (3.1.3-r0)
(105/108) Installing json-c (0.18-r1)
(106/108) Installing v4l-utils-libs (1.32.0-r1)
(107/108) Installing ffmpeg-libavdevice (8.1.2-r0)
(108/108) Installing ffmpeg (8.1.2-r0)
Executing busybox-1.37.0-r31.trigger
Executing ca-certificates-20260909-r0.trigger
Executing glib-2.88.1-r1.trigger
OK: 135.8 MiB in 124 packages
--> 6482dc6abc9f
[3/3] STEP 4/9: COPY --from=${BIN_STAGE} /filebrowser-ng /usr/local/bin/filebrowser-ng
--> 54f136d1701c
[3/3] STEP 5/9: EXPOSE 8080
--> e9186abb53a4
[3/3] STEP 6/9: VOLUME ["/data", "/var/lib/filebrowser"]
--> f28479c9ab8f
[3/3] STEP 7/9: HEALTHCHECK --interval=30s --start-period=10s --timeout=5s --retries=3 CMD wget -qO /dev/null http://127.0.0.1:8080/ || exit 1
time="2026-09-25T20:15:11+02:00" level=warning msg="HEALTHCHECK is not supported for OCI image format and will be ignored. Must use `docker` format"
--> bebd1b7187f0
[3/3] STEP 8/9: ENTRYPOINT ["/usr/local/bin/filebrowser-ng"]
time="2026-09-25T20:15:11+02:00" level=warning msg="HEALTHCHECK is not supported for OCI image format and will be ignored. Must use `docker` format"
--> 489c9d5a7bf8
[3/3] STEP 9/9: CMD ["--root", "/data", "--db", "/var/lib/filebrowser/db.sqlite", "--bind", "0.0.0.0"]
[3/3] COMMIT forge.unix-root.de/filebrowser-ng:1bc2078a
time="2026-09-25T20:15:12+02:00" level=warning msg="HEALTHCHECK is not supported for OCI image format and will be ignored. Must use `docker` format"
--> 3d73d6420253
Successfully tagged forge.unix-root.de/filebrowser-ng:1bc2078a
3d73d6420253241b1fe54b37b503aed1c884f6308417e6a45246acacbeeb8610
Getting image source signatures
Copying blob sha256:74d401c2be7e8a1244fa3c53d6de8e86f44a6642f7eb474c59d9930ac19c7934
Copying blob sha256:74d97c428c51a828f9051a7a40a53ff1fc99e54fc30323ce36760701b0b7f711
Copying blob sha256:5f463c99542970f046e8a3172ed02b7b770249c6d2c5adea28b1c61d8d2188d9
Copying config sha256:3d73d6420253241b1fe54b37b503aed1c884f6308417e6a45246acacbeeb8610
Writing manifest to image destination
Getting image source signatures
Copying blob sha256:74d401c2be7e8a1244fa3c53d6de8e86f44a6642f7eb474c59d9930ac19c7934
Copying blob sha256:74d97c428c51a828f9051a7a40a53ff1fc99e54fc30323ce36760701b0b7f711
Copying blob sha256:5f463c99542970f046e8a3172ed02b7b770249c6d2c5adea28b1c61d8d2188d9
Copying config sha256:3d73d6420253241b1fe54b37b503aed1c884f6308417e6a45246acacbeeb8610
Writing manifest to image destination