diff --git a/.github/workflows/serve-filemanager.yml b/.github/workflows/serve-filemanager.yml
new file mode 100644
index 0000000..fad7893
--- /dev/null
+++ b/.github/workflows/serve-filemanager.yml
@@ -0,0 +1,66 @@
+name: Streamlit example workflow
+
+on:
+ push:
+ paths:
+ - "serve-filemanager/**"
+ workflow_dispatch:
+ inputs:
+ logLevel:
+ description: 'Log level'
+ required: true
+ default: 'warning'
+ type: choice
+ options:
+ - info
+ - warning
+ - debug
+ tags:
+ description: 'Manual run'
+ required: false
+ type: boolean
+
+
+jobs:
+ push:
+ if: |
+ github.ref == 'refs/heads/main' &&
+ github.repository == 'scilifelabdatacentre/serve-images'
+ runs-on: ubuntu-latest
+ concurrency:
+ group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
+ cancel-in-progress: true
+ permissions:
+ contents: read
+ packages: write
+
+ steps:
+ - name: 'Checkout github action'
+ uses: actions/checkout@main
+
+ - name: Docker meta
+ id: meta
+ uses: docker/metadata-action@v4
+ with:
+ images: ghcr.io/scilifelabdatacentre/serve-filemanager
+ tags: |
+ type=raw,value={{date 'YYMMDD-HHmm' tz='Europe/Stockholm'}}
+
+ - name: 'Login to GHCR'
+ uses: docker/login-action@v1
+ with:
+ registry: ghcr.io
+ username: ${{github.actor}}
+ password: ${{secrets.GITHUB_TOKEN}}
+
+ - name: Publish image to GHCR
+ uses: docker/build-push-action@v3
+ with:
+ file: ./examples/streamlit/Dockerfile
+ context: ./examples/streamlit
+ push: true
+ build-args: version=${{ github.ref_name }}
+ tags: |
+ ${{ steps.meta.outputs.tags }}
+ ghcr.io/scilifelabdatacentre/serve-filemanager:latest
+ labels: ${{ steps.meta.outputs.labels }}
diff --git a/serve-filemanager/Dockerfile b/serve-filemanager/Dockerfile
new file mode 100644
index 0000000..de2c2aa
--- /dev/null
+++ b/serve-filemanager/Dockerfile
@@ -0,0 +1,17 @@
+FROM filebrowser/filebrowser
+
+ARG USER=serve
+ARG HOME=/home/$USER
+
+COPY filebrowser.json /.filebrowser.json
+
+COPY startup.sh /usr/local/bin/startup.sh
+RUN apk update \
+ && adduser -D -u 1000 -g 1000 -h $HOME $USER \
+ && chmod +x /usr/local/bin/startup.sh \
+ && rm -rf /var/lib/apt/lists/*
+
+COPY branding/ $HOME/branding
+
+USER $USER
+ENTRYPOINT [ "/usr/local/bin/startup.sh" ]
diff --git a/serve-filemanager/branding/custom.css b/serve-filemanager/branding/custom.css
new file mode 100644
index 0000000..8cca3e1
--- /dev/null
+++ b/serve-filemanager/branding/custom.css
@@ -0,0 +1,14 @@
+:root{
+ --serve-lime: #a7c947;
+ --bs-body-color-rgb: rgb(33, 37, 41);
+}
+
+.button {
+ background: var(--serve-lime);
+ color: black
+}
+
+.button:hover {
+ background-color: var(--serve-lime);
+ box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), .15) !important;
+}
\ No newline at end of file
diff --git a/serve-filemanager/branding/img/icons/android-chrome-192x192.png b/serve-filemanager/branding/img/icons/android-chrome-192x192.png
new file mode 100644
index 0000000..61316fb
Binary files /dev/null and b/serve-filemanager/branding/img/icons/android-chrome-192x192.png differ
diff --git a/serve-filemanager/branding/img/icons/android-chrome-512x512.png b/serve-filemanager/branding/img/icons/android-chrome-512x512.png
new file mode 100644
index 0000000..f276373
Binary files /dev/null and b/serve-filemanager/branding/img/icons/android-chrome-512x512.png differ
diff --git a/serve-filemanager/branding/img/icons/apple-touch-icon.png b/serve-filemanager/branding/img/icons/apple-touch-icon.png
new file mode 100644
index 0000000..5e137ee
Binary files /dev/null and b/serve-filemanager/branding/img/icons/apple-touch-icon.png differ
diff --git a/serve-filemanager/branding/img/icons/browserconfig.xml b/serve-filemanager/branding/img/icons/browserconfig.xml
new file mode 100644
index 0000000..b3930d0
--- /dev/null
+++ b/serve-filemanager/branding/img/icons/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #da532c
+
+
+
diff --git a/serve-filemanager/branding/img/icons/favicon-16x16.png b/serve-filemanager/branding/img/icons/favicon-16x16.png
new file mode 100644
index 0000000..040ad18
Binary files /dev/null and b/serve-filemanager/branding/img/icons/favicon-16x16.png differ
diff --git a/serve-filemanager/branding/img/icons/favicon-32x32.png b/serve-filemanager/branding/img/icons/favicon-32x32.png
new file mode 100644
index 0000000..8c69cfb
Binary files /dev/null and b/serve-filemanager/branding/img/icons/favicon-32x32.png differ
diff --git a/serve-filemanager/branding/img/icons/favicon.ico b/serve-filemanager/branding/img/icons/favicon.ico
new file mode 100644
index 0000000..3e3b3f7
Binary files /dev/null and b/serve-filemanager/branding/img/icons/favicon.ico differ
diff --git a/serve-filemanager/branding/img/icons/mstile-144x144.png b/serve-filemanager/branding/img/icons/mstile-144x144.png
new file mode 100644
index 0000000..ad7516a
Binary files /dev/null and b/serve-filemanager/branding/img/icons/mstile-144x144.png differ
diff --git a/serve-filemanager/branding/img/icons/mstile-150x150.png b/serve-filemanager/branding/img/icons/mstile-150x150.png
new file mode 100644
index 0000000..70c031f
Binary files /dev/null and b/serve-filemanager/branding/img/icons/mstile-150x150.png differ
diff --git a/serve-filemanager/branding/img/icons/mstile-310x150.png b/serve-filemanager/branding/img/icons/mstile-310x150.png
new file mode 100644
index 0000000..b067212
Binary files /dev/null and b/serve-filemanager/branding/img/icons/mstile-310x150.png differ
diff --git a/serve-filemanager/branding/img/icons/mstile-310x310.png b/serve-filemanager/branding/img/icons/mstile-310x310.png
new file mode 100644
index 0000000..02e4388
Binary files /dev/null and b/serve-filemanager/branding/img/icons/mstile-310x310.png differ
diff --git a/serve-filemanager/branding/img/icons/mstile-70x70.png b/serve-filemanager/branding/img/icons/mstile-70x70.png
new file mode 100644
index 0000000..47654eb
Binary files /dev/null and b/serve-filemanager/branding/img/icons/mstile-70x70.png differ
diff --git a/serve-filemanager/branding/img/icons/safari-pinned-tab.svg b/serve-filemanager/branding/img/icons/safari-pinned-tab.svg
new file mode 100644
index 0000000..0c8b4a5
--- /dev/null
+++ b/serve-filemanager/branding/img/icons/safari-pinned-tab.svg
@@ -0,0 +1,29 @@
+
+
+
diff --git a/serve-filemanager/branding/img/icons/site.webmanifest b/serve-filemanager/branding/img/icons/site.webmanifest
new file mode 100644
index 0000000..b20abb7
--- /dev/null
+++ b/serve-filemanager/branding/img/icons/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
diff --git a/serve-filemanager/branding/img/logo.svg b/serve-filemanager/branding/img/logo.svg
new file mode 100644
index 0000000..eedc614
--- /dev/null
+++ b/serve-filemanager/branding/img/logo.svg
@@ -0,0 +1,24 @@
+
+
+
\ No newline at end of file
diff --git a/serve-filemanager/filebrowser.json b/serve-filemanager/filebrowser.json
new file mode 100644
index 0000000..ff30256
--- /dev/null
+++ b/serve-filemanager/filebrowser.json
@@ -0,0 +1,8 @@
+{
+ "port": 8080,
+ "baseURL": "",
+ "address": "",
+ "log": "stdout",
+ "database": "/home/serve/database.db",
+ "root": "/srv"
+ }
\ No newline at end of file
diff --git a/serve-filemanager/startup.sh b/serve-filemanager/startup.sh
new file mode 100644
index 0000000..c45cb0d
--- /dev/null
+++ b/serve-filemanager/startup.sh
@@ -0,0 +1,7 @@
+#!/bin/ash
+
+/filebrowser config init
+/filebrowser users add $FB_USERNAME $FB_PASSWORD
+/filebrowser config set --branding.name "Serve File Manager" --branding.files "/home/serve/branding" --branding.disableExternal
+/filebrowser config set --auth.method=noauth
+/filebrowser