diff --git a/.dockerignore b/.dockerignore
index c8e50a27..f7796e79 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,5 +1,7 @@
-*
-!docker/*
-!healthcheck.sh
-!docker_config.json
-!filebrowser
\ No newline at end of file
+.venv
+dist
+.idea
+frontend/node_modules
+frontend/dist
+filebrowser.db
+docs/index.md
\ No newline at end of file
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index c6937227..827fbfd1 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -2,4 +2,4 @@
# Unless a later match takes precedence, @o1egl will be requested for
# review when someone opens a pull request.
-* @o1egl
\ No newline at end of file
+* @o1egl @hacdias
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index b5e1e3e1..9c02689f 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -20,22 +20,32 @@ body:
render: Text
description: |
Enter the version of FileBrowser you are using.
+ validations:
+ required: true
- type: textarea
attributes:
label: Description
description: |
A clear and concise description of what the issue is about. What are you trying to do?
+ validations:
+ required: true
- type: textarea
attributes:
label: What did you expect to happen?
+ validations:
+ required: true
- type: textarea
attributes:
label: What actually happened?
+ validations:
+ required: true
- type: textarea
attributes:
label: Reproduction Steps
description: |
Tell us how to reproduce this issue. How can someone who is starting from scratch reproduce this behavior as minimally as possible?
+ validations:
+ required: true
- type: textarea
attributes:
label: Files
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 873df269..a8efcb42 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -11,5 +11,6 @@
Before submitting your PR, please indicate which issues are either fixed or closed by this PR. See [GitHub Help: Closing issues using keywords](https://help.github.com/articles/closing-issues-via-commit-messages/).
- [ ] I am aware the project is currently in maintenance-only mode. See [README](https://github.com/filebrowser/community/blob/master/README.md)
+- [ ] I am aware that translations MUST be made through [Transifex](https://app.transifex.com/file-browser/file-browser/) and that this PR is NOT a translation update
- [ ] I am making a PR against the `master` branch.
- [ ] I am sure File Browser can be successfully built. See [builds](https://github.com/filebrowser/community/blob/master/builds.md) and [development](https://github.com/filebrowser/community/blob/master/development.md).
diff --git a/.github/workflows/site-pr.yml b/.github/workflows/site-pr.yml
new file mode 100644
index 00000000..c3075c93
--- /dev/null
+++ b/.github/workflows/site-pr.yml
@@ -0,0 +1,20 @@
+name: Build Site
+
+on:
+ pull_request:
+ paths:
+ - 'www'
+ - '*.md'
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - name: Build site
+ run: make site
diff --git a/.github/workflows/site-publish.yml b/.github/workflows/site-publish.yml
new file mode 100644
index 00000000..e3618a99
--- /dev/null
+++ b/.github/workflows/site-publish.yml
@@ -0,0 +1,32 @@
+name: Build and Deploy Site
+
+on:
+ push:
+ branches:
+ - master
+
+jobs:
+ deploy:
+ permissions:
+ contents: read
+ deployments: write
+ pull-requests: write
+ runs-on: ubuntu-latest
+ timeout-minutes: 5
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - name: Build site
+ run: make site
+
+ - name: Deploy to Cloudflare Pages
+ uses: cloudflare/wrangler-action@v3
+ with:
+ apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
+ accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
+ command: pages deploy www/public --project-name=${{ secrets.CLOUDFLARE_PROJECT_NAME }}
+ gitHubToken: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.gitignore b/.gitignore
index f229b066..47f34732 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,7 @@ rice-box.go
/filebrowser
/filebrowser.exe
/dist
+.venv
.DS_Store
node_modules
diff --git a/.golangci.yml b/.golangci.yml
index 0fa292ed..901a89b8 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -1,121 +1,132 @@
-linters-settings:
- dupl:
- threshold: 100
- exhaustive:
- default-signifies-exhaustive: false
- funlen:
- lines: 100
- statements: 50
- goconst:
- min-len: 2
- min-occurrences: 2
- gocritic:
- enabled-tags:
- - diagnostic
- - experimental
- - opinionated
- - performance
- - style
- disabled-checks:
- - dupImport # https://github.com/go-critic/go-critic/issues/845
- - ifElseChain
- - octalLiteral
- - whyNoLint
- - wrapperFunc
- gocyclo:
- min-complexity: 15
- goimports:
- local-prefixes: github.com/filebrowser/filebrowser
- gomnd:
- # don't include the "operation" and "assign"
- checks:
- - argument
- - case
- - condition
- - return
- ignored-numbers:
- - '0'
- - '1'
- - '2'
- - '3'
- ignored-functions:
- - strings.SplitN
- govet:
- enable:
- - nilness
- - shadow
- lll:
- line-length: 140
- misspell:
- locale: US
- nolintlint:
- allow-unused: false # report any unused nolint directives
- require-explanation: false # require an explanation for nolint directives
- require-specific: true # require nolint directives to be specific about which linter is being skipped
+version: "2"
linters:
- # please, do not use `enable-all`: it's deprecated and will be removed soon.
- # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint
- disable-all: true
+ # inverted configuration with `default: all` and `disable` is not scalable during updates of golangci-lint
+ default: none
enable:
- bodyclose
- dogsled
- dupl
- errcheck
- errorlint
- - exportloopref
- exhaustive
- funlen
- gocheckcompilerdirectives
- gochecknoinits
- - goconst
- gocritic
- gocyclo
- godox
- - goimports
- - gomnd
- goprintffuncname
- gosec
- - gosimple
- govet
- ineffassign
- lll
- misspell
+ - mnd
- nakedret
- nolintlint
- prealloc
- revive
- rowserrcheck
- staticcheck
- - stylecheck
- testifylint
- - typecheck
- unconvert
- unparam
- unused
- whitespace
+ settings:
+ dupl:
+ threshold: 100
+ exhaustive:
+ default-signifies-exhaustive: false
+ funlen:
+ lines: 100
+ statements: 50
+ gocritic:
+ disabled-checks:
+ - dupImport # https://github.com/go-critic/go-critic/issues/845
+ - ifElseChain
+ - octalLiteral
+ - whyNoLint
+ - wrapperFunc
+ enabled-tags:
+ - diagnostic
+ - experimental
+ - opinionated
+ - performance
+ - style
+ gocyclo:
+ min-complexity: 15
+ govet:
+ enable:
+ - nilness
+ - shadow
+ lll:
+ line-length: 140
+ misspell:
+ locale: US
+ mnd:
+ # don't include the "operation" and "assign"
+ checks:
+ - argument
+ - case
+ - condition
+ - return
+ ignored-numbers:
+ - "0"
+ - "1"
+ - "2"
+ - "3"
+ - "0666"
+ - "0700"
+ - "0700"
+ ignored-functions:
+ - strings.SplitN
+ - make
+ nolintlint:
+ allow-unused: false # report any unused nolint directives
+ require-explanation: false # require an explanation for nolint directives
+ require-specific: true # require nolint directives to be specific about which linter is being skipped
+ staticcheck:
+ checks:
+ - "all"
+ - "-QF*"
+ exclusions:
+ generated: lax
+ presets:
+ - comments
+ - common-false-positives
+ - legacy
+ - std-error-handling
+ rules:
+ - linters:
+ - gochecknoinits
+ path: cmd/.*.go
+ - linters:
+ - dupl
+ - funlen
+ - gochecknoinits
+ - gocyclo
+ - lll
+ - scopelint
+ path: .*_test.go
+ - linters:
+ - misspell
+ text: "[aA]uther"
+ - linters:
+ - mnd
+ text: strconv.Parse
+ paths:
+ - frontend/
-issues:
- exclude-dirs:
- - frontend/
- exclude-rules:
- - path: cmd/.*.go
- linters:
- - gochecknoinits
- - path: .*_test.go
- linters:
- - lll
- - gochecknoinits
- - gocyclo
- - funlen
- - dupl
- - scopelint
- - text: "Auther"
- linters:
- - misspell
- - text: "strconv.Parse"
- linters:
- - gomnd
-
-run:
- timeout: 5m
\ No newline at end of file
+formatters:
+ enable:
+ - goimports
+ settings:
+ goimports:
+ local-prefixes:
+ - github.com/filebrowser/filebrowser
+ exclusions:
+ generated: lax
+ paths:
+ - frontend/
diff --git a/.goreleaser.yml b/.goreleaser.yml
index 0e0a5d65..57b7b44a 100644
--- a/.goreleaser.yml
+++ b/.goreleaser.yml
@@ -19,31 +19,30 @@ builds:
- freebsd
goarch:
- amd64
- - 386
+ - "386"
- arm
- arm64
- riscv64
goarm:
- - 5
- - 6
- - 7
+ - "5"
+ - "6"
+ - "7"
ignore:
- goos: darwin
- goarch: 386
+ goarch: "386"
- goos: freebsd
goarch: arm
archives:
- -
- name_template: "{{.Os}}-{{.Arch}}{{if .Arm}}v{{.Arm}}{{end}}-{{ .ProjectName }}"
- formats: [ 'tar.gz' ]
+ - name_template: "{{.Os}}-{{.Arch}}{{if .Arm}}v{{.Arm}}{{end}}-{{ .ProjectName }}"
+ formats: ["tar.gz"]
format_overrides:
- goos: windows
- formats: [ 'zip' ]
+ formats: ["zip"]
dockers:
- -
- dockerfile: Dockerfile
+ # Alpine docker images
+ - dockerfile: Dockerfile
use: buildx
build_flag_templates:
- "--pull"
@@ -59,10 +58,8 @@ dockers:
- "filebrowser/filebrowser:{{ .Tag }}-amd64"
- "filebrowser/filebrowser:v{{ .Major }}-amd64"
extra_files:
- - docker_config.json
- - healthcheck.sh
- -
- dockerfile: Dockerfile
+ - docker
+ - dockerfile: Dockerfile
use: buildx
build_flag_templates:
- "--pull"
@@ -78,10 +75,8 @@ dockers:
- "filebrowser/filebrowser:{{ .Tag }}-arm64"
- "filebrowser/filebrowser:v{{ .Major }}-arm64"
extra_files:
- - docker_config.json
- - healthcheck.sh
- -
- dockerfile: Dockerfile
+ - docker
+ - dockerfile: Dockerfile
use: buildx
build_flag_templates:
- "--pull"
@@ -93,15 +88,13 @@ dockers:
- "--platform=linux/arm/v6"
goos: linux
goarch: arm
- goarm: '6'
+ goarm: "6"
image_templates:
- "filebrowser/filebrowser:{{ .Tag }}-armv6"
- "filebrowser/filebrowser:v{{ .Major }}-armv6"
extra_files:
- - docker_config.json
- - healthcheck.sh
- -
- dockerfile: Dockerfile
+ - docker
+ - dockerfile: Dockerfile
use: buildx
build_flag_templates:
- "--pull"
@@ -113,16 +106,15 @@ dockers:
- "--platform=linux/arm/v7"
goos: linux
goarch: arm
- goarm: '7'
+ goarm: "7"
image_templates:
- "filebrowser/filebrowser:{{ .Tag }}-armv7"
- "filebrowser/filebrowser:v{{ .Major }}-armv7"
extra_files:
- - docker_config.json
- - healthcheck.sh
-## s6 based docker images
- -
- dockerfile: Dockerfile.s6
+ - docker
+
+ ## s6-overlay docker images
+ - dockerfile: Dockerfile.s6
use: buildx
build_flag_templates:
- "--pull"
@@ -138,10 +130,8 @@ dockers:
- "filebrowser/filebrowser:{{ .Tag }}-amd64-s6"
- "filebrowser/filebrowser:v{{ .Major }}-amd64-s6"
extra_files:
- - docker/root
- - healthcheck.sh
- -
- dockerfile: Dockerfile.s6.aarch64
+ - docker
+ - dockerfile: Dockerfile.s6
use: buildx
build_flag_templates:
- "--pull"
@@ -157,8 +147,8 @@ dockers:
- "filebrowser/filebrowser:{{ .Tag }}-arm64-s6"
- "filebrowser/filebrowser:v{{ .Major }}-arm64-s6"
extra_files:
- - docker/root
- - healthcheck.sh
+ - docker
+
docker_manifests:
- name_template: "filebrowser/filebrowser:latest"
image_templates:
@@ -175,7 +165,7 @@ docker_manifests:
- "filebrowser/filebrowser:v{{ .Major }}-amd64"
- "filebrowser/filebrowser:v{{ .Major }}-arm64"
- "filebrowser/filebrowser:v{{ .Major }}-armv7"
-## s6 image manifests
+ ## s6 image manifests
- name_template: "filebrowser/filebrowser:s6"
image_templates:
- "filebrowser/filebrowser:{{ .Tag }}-amd64-s6"
@@ -188,15 +178,20 @@ docker_manifests:
image_templates:
- "filebrowser/filebrowser:v{{ .Major }}-amd64-s6"
- "filebrowser/filebrowser:v{{ .Major }}-arm64-s6"
-brews:
+
+homebrew_casks:
- name: filebrowser
repository:
owner: filebrowser
name: homebrew-tap
- directory: Formula
- homepage: https://filebrowser.org
commit_author:
name: FileBrowser Robot
email: robot@filebrowser.org
+ homepage: https://github.com/filebrowser/filebrowser
description: File Browser is a create-your-own-cloud-kind of software where you can install it on a server, direct it to a path and then access your files through a nice web interface
- license: "MIT"
+ hooks:
+ post:
+ install: |
+ if system_command("/usr/bin/xattr", args: ["-h"]).exit_status == 0
+ system_command "/usr/bin/xattr", args: ["-dr", "com.apple.quarantine", "#{staged_path}/filebrowser"]
+ end
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2d414dcb..c804baeb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,214 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+### [2.36.3](https://github.com/filebrowser/filebrowser/compare/v2.36.2...v2.36.3) (2025-07-06)
+
+
+### Bug Fixes
+
+* log error if branding file exists but cannot be loaded ([3645b57](https://github.com/filebrowser/filebrowser/commit/3645b578cddb9fc8f25a00e0153fb600ad1b9266))
+
+### [2.36.2](https://github.com/filebrowser/filebrowser/compare/v2.36.1...v2.36.2) (2025-07-06)
+
+
+### Bug Fixes
+
+* lookup directory name if blank when downloading shared directory ([046d619](https://github.com/filebrowser/filebrowser/commit/046d6193c57b4df0e3dc583b6518b43d29d302c9))
+
+### [2.36.1](https://github.com/filebrowser/filebrowser/compare/v2.36.0...v2.36.1) (2025-07-03)
+
+
+### Bug Fixes
+
+* remove associated shares when deleting file/folder ([e99e0b3](https://github.com/filebrowser/filebrowser/commit/e99e0b3028e1c8a50e1744bb07ecc8e809bdb8e6))
+
+## [2.36.0](https://github.com/filebrowser/filebrowser/compare/v2.35.0...v2.36.0) (2025-07-02)
+
+
+### Features
+
+* update icons, remove deprecated Microsoft Tiles ([04166e8](https://github.com/filebrowser/filebrowser/commit/04166e81e52d38b1f66ba3313ccb1291c239eea2))
+
+## [2.35.0](https://github.com/filebrowser/filebrowser/compare/v2.34.2...v2.35.0) (2025-06-30)
+
+
+### Features
+
+* Long press selects item in single click mode ([8d75220](https://github.com/filebrowser/filebrowser/commit/8d7522049ced83f28f0933b55772c32e3ad04627))
+
+
+### Bug Fixes
+
+* shell value must be joined by blank space ([4403cd3](https://github.com/filebrowser/filebrowser/commit/4403cd35720dbda5a8bb1013b92582accf3317bc))
+* update documentation links ([38d0366](https://github.com/filebrowser/filebrowser/commit/38d0366acf88352b5a9a97c45837b0f865efae0b))
+
+### [2.34.2](https://github.com/filebrowser/filebrowser/compare/v2.34.1...v2.34.2) (2025-06-29)
+
+
+### Bug Fixes
+
+* mitigate unprotected shares ([2b5d6cb](https://github.com/filebrowser/filebrowser/commit/2b5d6cbb996a61a769acc56af0acc12eec2d8d8f))
+
+### [2.34.1](https://github.com/filebrowser/filebrowser/compare/v2.34.0...v2.34.1) (2025-06-29)
+
+
+### Bug Fixes
+
+* exclude to-be-moved folder from move dialog ([#5235](https://github.com/filebrowser/filebrowser/issues/5235)) ([7354eb6](https://github.com/filebrowser/filebrowser/commit/7354eb6cf966244141277c2808988855c004f908))
+* passthrough the minimum password length ([#5236](https://github.com/filebrowser/filebrowser/issues/5236)) ([bf37f88](https://github.com/filebrowser/filebrowser/commit/bf37f88c32222ad9c186482bb97338a9c9b4a93c))
+
+## [2.34.0](https://github.com/filebrowser/filebrowser/compare/v2.33.10...v2.34.0) (2025-06-29)
+
+
+### Features
+
+* Translate frontend/src/i18n/en.json in fa ([0acd69c](https://github.com/filebrowser/filebrowser/commit/0acd69c537ce2909ff62c4bb6980982524ece221))
+* Translate frontend/src/i18n/en.json in fa ([#5233](https://github.com/filebrowser/filebrowser/issues/5233)) ([09f679f](https://github.com/filebrowser/filebrowser/commit/09f679fae43398f5b87d21acc9d974d4d053392f))
+* update translations for project File Browser ([#5226](https://github.com/filebrowser/filebrowser/issues/5226)) ([a5ea2a2](https://github.com/filebrowser/filebrowser/commit/a5ea2a266bef619d1c4322266d1aa7d397d2c856))
+
+
+### Bug Fixes
+
+* abort ongoing requests when changing pages ([#3927](https://github.com/filebrowser/filebrowser/issues/3927)) ([93c4b2e](https://github.com/filebrowser/filebrowser/commit/93c4b2e03c5176da01a7e00a03c03ffcce279bc8))
+* add configurable minimum password length ([#5225](https://github.com/filebrowser/filebrowser/issues/5225)) ([464b644](https://github.com/filebrowser/filebrowser/commit/464b644adf22a2178414a6f1e4fa286276de81d2))
+* do not expose the name of the root directory ([#5224](https://github.com/filebrowser/filebrowser/issues/5224)) ([0892559](https://github.com/filebrowser/filebrowser/commit/089255997a653c284cd4249990b58bed00086c61))
+* Graceful shutdown ([8230eb7](https://github.com/filebrowser/filebrowser/commit/8230eb7ab51ccbd00b03f5b9d6964fa4aae331d4))
+
+
+### Reverts
+
+* Revert "docs: change cloudflare environment (#5231)" (#5232) ([9e273cd](https://github.com/filebrowser/filebrowser/commit/9e273cd9475d57b9500034e8b341ff8b620bcab8)), closes [#5231](https://github.com/filebrowser/filebrowser/issues/5231) [#5232](https://github.com/filebrowser/filebrowser/issues/5232)
+
+
+### Build
+
+* add an arm64 target for the site image ([#5229](https://github.com/filebrowser/filebrowser/issues/5229)) ([f5e531c](https://github.com/filebrowser/filebrowser/commit/f5e531c8ae0b9b18717e184856ace0ce19beef82))
+* bump golangci-lint to 2.1.6 ([1d494ff](https://github.com/filebrowser/filebrowser/commit/1d494ff3159ef939cfb4980ccde6f27df3e738b5))
+* **deps:** bump brace-expansion from 1.1.11 to 1.1.12 in /tools ([#5228](https://github.com/filebrowser/filebrowser/issues/5228)) ([5a07291](https://github.com/filebrowser/filebrowser/commit/5a072913062a6b2b0e5c74a02ca7710218ed3e5e))
+* **deps:** bump github.com/go-viper/mapstructure/v2 ([f32f273](https://github.com/filebrowser/filebrowser/commit/f32f27383d1fafa074f038cc873bd37b7f20ee27))
+* **deps:** bump github.com/go-viper/mapstructure/v2 in /tools ([5331969](https://github.com/filebrowser/filebrowser/commit/5331969163f5ae1fd2389f665059fc9e4a98db15))
+* publish docs to cloudflare pages ([#5230](https://github.com/filebrowser/filebrowser/issues/5230)) ([8861933](https://github.com/filebrowser/filebrowser/commit/8861933cf845b104e072f35e5f37d7c26097c9dc))
+
+### [2.33.10](https://github.com/filebrowser/filebrowser/compare/v2.33.9...v2.33.10) (2025-06-26)
+
+
+### Bug Fixes
+
+* correctly check if command is allowed when using shell ([4d830f7](https://github.com/filebrowser/filebrowser/commit/4d830f707fc4314741fd431e70c2ce50cd5a3108))
+* correctly split shell ([f84a6db](https://github.com/filebrowser/filebrowser/commit/f84a6db680b6df1c7c8f06f1816f7e4c9e963668))
+* ignore linting error ([e735491](https://github.com/filebrowser/filebrowser/commit/e735491c57b12c3b19dd2e4b570723df78f4eb44))
+
+### [2.33.9](https://github.com/filebrowser/filebrowser/compare/v2.33.8...v2.33.9) (2025-06-26)
+
+
+### Bug Fixes
+
+* check exact match on command allow list ([e2e1e49](https://github.com/filebrowser/filebrowser/commit/e2e1e4913085cca8917e0f69171dc28d3c6af1b6))
+* remove auth token from /api/command ([d5b39a1](https://github.com/filebrowser/filebrowser/commit/d5b39a14fd3fc0d1c364116b41289484df7c27b2))
+* remove unused import ([c232d41](https://github.com/filebrowser/filebrowser/commit/c232d41f903d3026ec290bbe819b6c59a933048e))
+
+### [2.33.8](https://github.com/filebrowser/filebrowser/compare/v2.33.7...v2.33.8) (2025-06-25)
+
+### [2.33.7](https://github.com/filebrowser/filebrowser/compare/v2.33.6...v2.33.7) (2025-06-25)
+
+
+### Bug Fixes
+
+* correctly parse negative boolean flags ([221451a](https://github.com/filebrowser/filebrowser/commit/221451a5179c8f139819a315b80d0ecb0e7220c3))
+* linting issues ([4bfbf33](https://github.com/filebrowser/filebrowser/commit/4bfbf332499fc8aea5f6df6aae1efa0de918d1ae))
+* linting issues ([e74c958](https://github.com/filebrowser/filebrowser/commit/e74c95886226c0ee429af1860eed21dd1f8601aa))
+
+### [2.33.6](https://github.com/filebrowser/filebrowser/compare/v2.33.5...v2.33.6) (2025-06-24)
+
+
+### Bug Fixes
+
+* remove incorrect default for password flag ([23bd8f6](https://github.com/filebrowser/filebrowser/commit/23bd8f67155081d707d4799393d3b1e2bebeaa34))
+
+### [2.33.5](https://github.com/filebrowser/filebrowser/compare/v2.33.4...v2.33.5) (2025-06-24)
+
+
+### Features
+
+* update languages for project File Browser ([#5190](https://github.com/filebrowser/filebrowser/issues/5190)) ([f330764](https://github.com/filebrowser/filebrowser/commit/f33076462a133935ca97fb6c7345303fe350e167))
+
+
+### Bug Fixes
+
+* actually register the czech language ([#5189](https://github.com/filebrowser/filebrowser/issues/5189)) ([0268506](https://github.com/filebrowser/filebrowser/commit/0268506f80d33d2d31e38055e12530241d27a11b))
+
+### [2.33.4](https://github.com/filebrowser/filebrowser/compare/v2.33.3...v2.33.4) (2025-06-22)
+
+
+### Features
+
+* translation updates for project File Browser ([#5179](https://github.com/filebrowser/filebrowser/issues/5179)) ([f714e71](https://github.com/filebrowser/filebrowser/commit/f714e71a356c2301f394d651c9b6c467440508e3))
+
+### [2.33.3](https://github.com/filebrowser/filebrowser/compare/v2.33.2...v2.33.3) (2025-06-22)
+
+
+### Bug Fixes
+
+* keep command behavior in Dockerfile ([7c0c782](https://github.com/filebrowser/filebrowser/commit/7c0c7820efbbed2f0499353cc76ecb85d00ff7c3))
+* update search hotkey in help prompt ([#5178](https://github.com/filebrowser/filebrowser/issues/5178)) ([2741616](https://github.com/filebrowser/filebrowser/commit/2741616473636d40b7e9f14c9906ada08d328c3c))
+
+### [2.33.2](https://github.com/filebrowser/filebrowser/compare/v2.33.1...v2.33.2) (2025-06-21)
+
+
+### Bug Fixes
+
+* create user dir on signup ([0ca8059](https://github.com/filebrowser/filebrowser/commit/0ca8059d8dea4fe079146471ce4f24acc96021f2))
+
+### [2.33.1](https://github.com/filebrowser/filebrowser/compare/v2.33.0...v2.33.1) (2025-06-21)
+
+
+### Bug Fixes
+
+* downloadUrl of file preview ([#3728](https://github.com/filebrowser/filebrowser/issues/3728)) ([8a14018](https://github.com/filebrowser/filebrowser/commit/8a14018861fe581672bbd27cdc3ae5691f70a108))
+* remove auth query parameter from download and preview links ([cbb7124](https://github.com/filebrowser/filebrowser/commit/cbb712484d3bdabc033acaf3b696ef4f5865813d))
+* search uses ctrl+shift+f instead of hijacking browser's ctrl+f ([#4638](https://github.com/filebrowser/filebrowser/issues/4638)) ([a02b297](https://github.com/filebrowser/filebrowser/commit/a02b2972ebde2a58806ad1377bad46e748b63166))
+
+## [2.33.0](https://github.com/filebrowser/filebrowser/compare/v2.32.3...v2.33.0) (2025-06-18)
+
+
+### Features
+
+* improved docker image volumes and permissions ([#5160](https://github.com/filebrowser/filebrowser/issues/5160)) ([2e26393](https://github.com/filebrowser/filebrowser/commit/2e26393a022df0eaa9e08727407aba8b997aa728))
+
+### [2.32.3](https://github.com/filebrowser/filebrowser/compare/v2.32.2...v2.32.3) (2025-06-17)
+
+### [2.32.2](https://github.com/filebrowser/filebrowser/compare/v2.32.1...v2.32.2) (2025-06-17)
+
+
+### Features
+
+* updated for project File Browser ([#5159](https://github.com/filebrowser/filebrowser/issues/5159)) ([c34c0af](https://github.com/filebrowser/filebrowser/commit/c34c0afecf3242b16ad5d5584cd90a6ad323361c))
+
+### [2.32.1](https://github.com/filebrowser/filebrowser/compare/v2.32.0...v2.32.1) (2025-06-16)
+
+
+### Features
+
+* add Vietnamese translation ([#3840](https://github.com/filebrowser/filebrowser/issues/3840)) ([56b80b6](https://github.com/filebrowser/filebrowser/commit/56b80b6d9b4710538765ba7df5da1f03898f6b81))
+* improve pt-br translations with new keys and refinements ([#4903](https://github.com/filebrowser/filebrowser/issues/4903)) ([a882fb6](https://github.com/filebrowser/filebrowser/commit/a882fb6c85ab6ccc845ed0bf3908d8e5e60ce346))
+* update translation ko.json ([#3852](https://github.com/filebrowser/filebrowser/issues/3852)) ([d9ebd65](https://github.com/filebrowser/filebrowser/commit/d9ebd65ffcf9b2166fec708d51849796d12b16e0))
+
+
+### Bug Fixes
+
+* err shadowing lint ([c606a01](https://github.com/filebrowser/filebrowser/commit/c606a01a2d20932fb32ee896234d57631f8c47e4))
+* generate random admin password on quick setup ([a46acba](https://github.com/filebrowser/filebrowser/commit/a46acba5f92ee044661880d6ae349e289d984328)), closes [#3646](https://github.com/filebrowser/filebrowser/issues/3646)
+* imports lint ([54b91b8](https://github.com/filebrowser/filebrowser/commit/54b91b8ff0b8ee1f02f72425ab97d27a5d942fc3))
+* set videojs locale ([#3742](https://github.com/filebrowser/filebrowser/issues/3742)) ([71a8f56](https://github.com/filebrowser/filebrowser/commit/71a8f5662c207e3cd4ee714a5b5a961121f510cd))
+
+
+### Build
+
+* **deps-dev:** bump vite from 6.0.11 to 6.1.6 in /frontend ([#3886](https://github.com/filebrowser/filebrowser/issues/3886)) ([5355629](https://github.com/filebrowser/filebrowser/commit/5355629fd1e7bd85ee3222fca22da899ba23ea95))
+* **deps:** bump golang.org/x/crypto from 0.31.0 to 0.35.0 ([#3865](https://github.com/filebrowser/filebrowser/issues/3865)) ([0ba9505](https://github.com/filebrowser/filebrowser/commit/0ba9505a19cb369653fc9f8260dc02fcc6587629))
+* **deps:** bump golang.org/x/net from 0.33.0 to 0.38.0 ([#3869](https://github.com/filebrowser/filebrowser/issues/3869)) ([cfea84f](https://github.com/filebrowser/filebrowser/commit/cfea84fd5e7ec9c1d2366293e5db12baaa4e3a81))
+* **deps:** bump vue-i18n from 11.0.1 to 11.1.2 in /frontend ([#3786](https://github.com/filebrowser/filebrowser/issues/3786)) ([35d1c09](https://github.com/filebrowser/filebrowser/commit/35d1c092434b80b22c89a614a02122e9f5965b39))
+
## [2.32.0](https://github.com/filebrowser/filebrowser/compare/v2.31.2...v2.32.0) (2025-01-31)
diff --git a/CODE-OF-CONDUCT.md b/CODE-OF-CONDUCT.md
new file mode 100644
index 00000000..28bdc607
--- /dev/null
+++ b/CODE-OF-CONDUCT.md
@@ -0,0 +1,46 @@
+# Code of Conduct
+
+## Contributor Covenant Code of Conduct
+
+### Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
+
+### Our Standards
+
+Examples of behavior that contributes to creating a positive environment include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a professional setting
+
+### Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
+
+### Scope
+
+This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
+
+### Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at hacdias@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
+
+### Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.4, available at [https://contributor-covenant.org/version/1/4](https://contributor-covenant.org/version/1/4).
+
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..1cfc8a92
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,91 @@
+# Contributing
+
+If you're interested in contributing to this project, this is the best place to start. Before contributing to this project, please take a bit of time to read our [Code of Conduct](code-of-conduct.md). Also, note that this project is open-source and licensed under [Apache License 2.0](LICENSE).
+
+## Project Structure
+
+The backend side of the application is written in [Go](https://golang.org/), while the frontend (located on a subdirectory of the same name) is written in [Vue.js](https://vuejs.org/). Due to the tight coupling required by some features, basic knowledge of both Go and Vue.js is recommended.
+
+* Learn Go: [https://github.com/golang/go/wiki/Learn](https://github.com/golang/go/wiki/Learn)
+* Learn Vue.js: [https://vuejs.org/guide/introduction.html](https://vuejs.org/guide/introduction.html)
+
+We encourage you to use git to manage your fork. To clone the main repository, just run:
+
+```bash
+git clone https://github.com/filebrowser/filebrowser
+```
+
+## Build
+
+### Frontend
+
+We are using [Node.js](https://nodejs.org/en/) on the frontend to manage the build process. The steps to build it are:
+
+```bash
+# From the root of the repo, go to frontend/
+cd frontend
+
+# Install the dependencies
+pnpm install
+
+# Build the frontend
+pnpm run build
+```
+
+This will install the dependencies and build the frontend so you can then embed it into the Go app. Although, if you want to play with it, you'll get bored of building it after every change you do. So, you can run the command below to watch for changes:
+
+```bash
+pnpm run dev
+```
+
+### Backend
+
+First of all, you need to download the required dependencies. We are using the built-in `go mod` tool for dependency management. To get the modules, run:
+
+```bash
+go mod download
+```
+
+The magic of File Browser is that the static assets are bundled into the final binary. For that, we use [Go embed.FS](https://golang.org/pkg/embed/). The files from `frontend/dist` will be embedded during the build process.
+
+To build File Browser is just like any other Go program:
+
+```bash
+go build
+```
+
+To create a development build use the "dev" tag, this way the content inside the frontend folder will not be embedded in the binary but will be reloaded at every change:
+
+```bash
+go build -tags dev
+```
+
+## Translations
+
+Translations are managed on Transifex, which is an online website where everyone can contribute and translate strings for our project. It automatically syncs with the main language file \(in English\) and,, for you to contribute, you just need to:
+
+1. Go to our Transifex web page: [app.transifex.com/file-browser/file-browser](https://app.transifex.com/file-browser/file-browser/)
+2. Click on **Join the project** and pick your language. We'll accept you as soon as possible. If you're language is not on the list, please request it via the interface.
+
+Translations are automatically pushed to GitHub via an integration.
+
+## Authentication Provider
+
+To build a new authentication provider, you need to implement the [Auther interface](https://github.com/filebrowser/filebrowser/blob/master/auth/auth.go), whose method will be called on the login page after the user has submitted their login data.
+
+```go
+// Auther is the authentication interface.
+type Auther interface {
+ // Auth is called to authenticate a request.
+ Auth(r *http.Request, s *users.Storage, root string) (*users.User, error)
+}
+```
+
+After implementing the interface you should:
+
+1. Add it to [`auth` directory](https://github.com/filebrowser/filebrowser/blob/master/auth).
+2. Add it to the [configuration parser](https://github.com/filebrowser/filebrowser/blob/master/cmd/config.go) for the CLI.
+3. Add it to the [`authBackend.Get`](https://github.com/filebrowser/filebrowser/blob/master/storage/bolt/auth.go).
+
+If you need to add more flags, please update the function `addConfigFlags`.
+
diff --git a/Dockerfile b/Dockerfile
index 40a91a06..0e64f120 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,19 +1,32 @@
-FROM alpine:latest
-RUN apk --update add ca-certificates \
- mailcap \
- curl \
- jq
+FROM alpine:3.22
-COPY healthcheck.sh /healthcheck.sh
-RUN chmod +x /healthcheck.sh # Make the script executable
+RUN apk update && \
+ apk --no-cache add ca-certificates mailcap curl jq tini
-HEALTHCHECK --start-period=2s --interval=5s --timeout=3s \
- CMD /healthcheck.sh || exit 1
+# Make user and create necessary directories
+ENV UID=1000
+ENV GID=1000
+
+RUN addgroup -g $GID user && \
+ adduser -D -u $UID -G user user && \
+ mkdir -p /config /database /srv && \
+ chown -R user:user /config /database /srv
+
+# Copy files and set permissions
+COPY filebrowser /bin/filebrowser
+COPY docker/common/ /
+COPY docker/alpine/ /
+
+RUN chown -R user:user /bin/filebrowser /defaults healthcheck.sh init.sh
+
+# Define healthcheck script
+HEALTHCHECK --start-period=2s --interval=5s --timeout=3s CMD /healthcheck.sh
+
+# Set the user, volumes and exposed ports
+USER user
+
+VOLUME /srv /config /database
-VOLUME /srv
EXPOSE 80
-COPY docker_config.json /.filebrowser.json
-COPY filebrowser /filebrowser
-
-ENTRYPOINT [ "/filebrowser" ]
\ No newline at end of file
+ENTRYPOINT [ "tini", "--", "/init.sh", "filebrowser", "--config", "/config/settings.json" ]
diff --git a/Dockerfile.s6 b/Dockerfile.s6
index 609a2634..cb34cbd1 100644
--- a/Dockerfile.s6
+++ b/Dockerfile.s6
@@ -1,21 +1,23 @@
-FROM ghcr.io/linuxserver/baseimage-alpine:3.20
+FROM ghcr.io/linuxserver/baseimage-alpine:3.22
-RUN apk --update add ca-certificates \
- mailcap \
- curl \
- jq
+RUN apk update && \
+ apk --no-cache add ca-certificates mailcap curl jq
-COPY healthcheck.sh /healthcheck.sh
-RUN chmod +x /healthcheck.sh # Make the script executable
+# Make user and create necessary directories
+RUN mkdir -p /config /database /srv && \
+ chown -R abc:abc /config /database /srv
-HEALTHCHECK --start-period=2s --interval=5s --timeout=3s \
- CMD /healthcheck.sh || exit 1
+# Copy files and set permissions
+COPY filebrowser /bin/filebrowser
+COPY docker/common/ /
+COPY docker/s6/ /
-# copy local files
-COPY docker/root/ /
-RUN ln -s /config/settings.json /.filebrowser.json
-COPY filebrowser /usr/bin/filebrowser
+RUN chown -R abc:abc /bin/filebrowser /defaults healthcheck.sh
-# ports and volumes
+# Define healthcheck script
+HEALTHCHECK --start-period=2s --interval=5s --timeout=3s CMD /healthcheck.sh
+
+# Set the volumes and exposed ports
VOLUME /srv /config /database
+
EXPOSE 80
diff --git a/Dockerfile.s6.aarch64 b/Dockerfile.s6.aarch64
deleted file mode 100644
index 1e62391e..00000000
--- a/Dockerfile.s6.aarch64
+++ /dev/null
@@ -1,21 +0,0 @@
-FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.20
-
-RUN apk --update add ca-certificates \
- mailcap \
- curl \
- jq
-
-COPY healthcheck.sh /healthcheck.sh
-RUN chmod +x /healthcheck.sh # Make the script executable
-
-HEALTHCHECK --start-period=2s --interval=5s --timeout=3s \
- CMD /healthcheck.sh || exit 1
-
-# copy local files
-COPY docker/root/ /
-RUN ln -s /config/settings.json /.filebrowser.json
-COPY filebrowser /usr/bin/filebrowser
-
-# ports and volumes
-VOLUME /srv /config /database
-EXPOSE 80
diff --git a/LICENSE b/LICENSE
index 6011a2a4..c8db89a2 100644
--- a/LICENSE
+++ b/LICENSE
@@ -187,7 +187,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
- Copyright 2018 File Browser contributors
+ Copyright 2018 File Browser Contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/Makefile b/Makefile
index 8b2eebfd..10ec3ea9 100644
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,14 @@ include tools.mk
LDFLAGS += -X "$(MODULE)/version.Version=$(VERSION)" -X "$(MODULE)/version.CommitSHA=$(VERSION_HASH)"
+SITE_DOCKER_FLAGS = \
+ -v $(CURDIR)/www:/docs \
+ -v $(CURDIR)/LICENSE:/docs/docs/LICENSE \
+ -v $(CURDIR)/SECURITY.md:/docs/docs/security.md \
+ -v $(CURDIR)/CHANGELOG.md:/docs/docs/changelog.md \
+ -v $(CURDIR)/CODE-OF-CONDUCT.md:/docs/docs/code-of-conduct.md \
+ -v $(CURDIR)/CONTRIBUTING.md:/docs/docs/contributing.md
+
## Build:
.PHONY: build
@@ -53,6 +61,17 @@ clean: clean-tools ## Clean
bump-version: $(standard-version) ## Bump app version
$Q ./scripts/bump_version.sh
+.PHONY: site
+site: ## Build site
+ @rm -rf www/public
+ docker build -f www/Dockerfile --progress=plain -t filebrowser.site www
+ docker run --rm $(SITE_DOCKER_FLAGS) filebrowser.site build -d "public"
+
+.PHONY: site-serve
+site-serve: ## Serve site for development
+ docker build -f www/Dockerfile --progress=plain -t filebrowser.site www
+ docker run --rm -it -p 8000:8000 $(SITE_DOCKER_FLAGS) filebrowser.site
+
## Help:
help: ## Show this help
@echo ''
diff --git a/README.md b/README.md
index d49de48e..94ec1cef 100644
--- a/README.md
+++ b/README.md
@@ -2,15 +2,19 @@