Phylum
Phylum is a self-hosted file storage platform with offline-first web and native clients, meant as a replacement for Google Drive, Dropbox, etc. It is licensed under GNU Affero GPL 3.0, and is intended to be forever free and non-commercial.
Phylum may be for you if you want:
- To own your data
- A file browser with selective sync
- A fast file manager with native apps - nothing more, nothing less
- To support free software without mixed-licensing or paywalls
- Something like Immich, but for files
- Something that is fully baked
Warning
This project is under very active development, and no guarantees can be made about stability and backward-compatibility. Don't even think about putting the only copy of any data that you care about.
Features
- Native clients which are designed to work well with unreliable/no internet connection (*)
- Users and Permissions
- File version history
- Remote storage backends
- Auth backends (LDAP, OIDC)
- WebDAV access
- Publicly share files/folders
*: Not yet built/tested on MacOS, iOS, and Windows.
Quick-Start
# download compose.yml
wget https://codeberg.org/shroff/phylum/raw/branch/main/compose.yml
# create a new DB password and put it into .env
echo "PHYLUM_DB_PASSWORD=$(head -c 32 /dev/urandom | md5sum | cut -d ' ' -f 1)" > .env
# Create data/config.yml
mkdir -p data && touch data/config.yml
# Spin it up and show logs
docker compose up -d && docker compose logs -f
Once the server is up and running (it may take a minute or so the first time), create a user using the CLI
docker exec -it phylum_server phylum admin user create
Finally, go to http://localhost:2448
It is highly recommended to take a look at config.defaults.yml to see a full list of configuration options.
CLI
The CLI is a powerful way to interact with and manage a locally running phylum instance. It also enables many advanced admin use-cases that are not yet possible using the app or API yet. You can run it on docker using
$ docker exec -it phylum_server phylum <cmd>
Use the help command (or leave out the command) to get a list of options
Please note that for fs operations, <path>s can have a <uuid>: prefix to make the path relative to that UUID. This also means that if you know the UUID of the resource, you can simply use <uuid>: as the path. If no <uuid>: prefix is specified then the path is relative to the root directory, or the home directory of the user if one is specified using the --user-email flag.
Help and Contributing
Reach out on Matrix at #phylum_cloud:matrix.org if you need help to get set up, or want to contribute.

