Install
ThirtyFile runs in Docker. Pick one of the two ways below; both take about a minute.
Before you start
Install Docker on the computer or server that will hold the files. Nothing else is needed.
Option 1: docker run
docker run -d --name thirtyfile --restart unless-stopped \
-p 8080:8080 \
-v /srv/thirtyfile/data:/data \
-v /srv/thirtyfile/storage:/storage \
-e THIRTYFILE_ADMIN_PASSWORD='choose-a-password' \
ghcr.io/thirtyfile/thirtyfile:latest
Images from v0.6.0 onward are also available on Docker Hub. Use thirtyfile/thirtyfile:0.6 in the command above to stay on that release line. With Compose, replace ghcr.io/thirtyfile/thirtyfile with thirtyfile/thirtyfile on the image: line, keeping a tag that exists on Docker Hub and your existing volumes. Earlier releases remain available on GHCR.
| Part | What it does |
|---|---|
-p 8080:8080 | The port the site is reached on. For port 80, write -p 80:8080 |
-v /srv/thirtyfile/data:/data | Where accounts and settings are kept, so they survive updates |
-v /srv/thirtyfile/storage:/storage | Where your files are kept. Can be another disk or a NAS mount |
THIRTYFILE_ADMIN_PASSWORD | The password of the first account. Replace choose-a-password with your own: that example is ignored like a missing one. Optional: without it, a random one is written to the log |
Option 2: Docker Compose
Download the ready-made compose.yaml into an empty folder and start it from there:
curl -fLO https://github.com/ThirtyFile/ThirtyFile/releases/latest/download/compose.yaml
docker compose up -d
Accounts and settings are kept in the data folder and your files in the storage folder, both next to compose.yaml. The files there are ordinary files in ordinary folders, one for each space (Where the files are). To keep your files on another disk or a NAS, change ./storage in compose.yaml to that path.
data and storage to the user it runs as (id 1000, THIRTYFILE_RUN_AS) when the folder belongs to someone else, including everything inside. When you point storage at an existing folder that other programs or people use, their files change owner too. Use an empty folder, or set THIRTYFILE_RUN_AS to the owner the folder already has. To reach a NAS share through a group instead, add the group with --group-add 2001 (group_add: in compose.yaml): ThirtyFile keeps it after switching user.The ready-made compose.yaml runs the container with a read-only root filesystem, every Linux capability dropped except the four needed to hand over the folders and switch user, and no-new-privileges. On Kubernetes, or anywhere the container can't start as root, run it as the user directly (--user 1000:1000, or runAsUser: 1000 and runAsGroup: 1000) and make sure the volumes belong to that user; ThirtyFile then skips the handover.
To choose the admin password yourself, put it in a file named .env in the same folder before the first start:
THIRTYFILE_ADMIN_PASSWORD=choose-a-password
Sign in
- Open
http://localhost:8080. From another computer, use the server's address instead oflocalhost. - Click anywhere on the lock screen, then sign in as admin with the password you chose.
- Open the account menu at the bottom left and choose Change password.
docker logs thirtyfile 2>&1 | grep password.Stop and start
docker stop thirtyfile
docker start thirtyfile
With Docker Compose, use docker compose stop and docker compose start in the folder of compose.yaml.